luangop
-
Total de itens
57 -
Registro em
-
Última visita
Histórico de Reputação
-
luangop deu reputação a Gengo em [OTClient] Sistema de Dialogo Otpokemon
Entre em contato comigo pelo discord Gengo#8230 ficará mas fácil eu tentar ajudar você do que eu ficar perguntando cada coisa até chegar no problema, assim não fica poluindo muito o tópico com mensagens.
-
luangop deu reputação a Gengo em [OTClient] Sistema de Dialogo Otpokemon
[OTClient] Sistema de Dialogo Otpokemon
Venho através desse tópico contribuir para a comunidade, um simples modulo de dialogo no estilo do Otpokemon,
não é um sistema de dialogo avançado é algo simples que deixa seu servidor intuitivo.
1) Faça o download do modulo no qual se encontra no final do tópico e abrindo a pasta do seu client, extraia e coloque o modulo na pasta modules.
2) O módulo utiliza uma função chamada switch que não é comum ter no otclient, porem podemos colocar sem muito esforço, na pasta do otclient abra o arquivo util.lua que se encontra em modules/corelib/ e no final do arquivo coloque o seguinte código:
Feito o passo 1 e 2, vamos para a parte do servidor.
1) Crie um arquivo na pasta data/lib/ podendo ter o nome de npcdialog_lib.lua e coloque o seguinte código:
2) O arquivo que acabamos de criar utiliza uma função chamada table.serialize que não é comum ter nos servidores, para que funcione sem erros vamos adicionar, abra o arquivo 012-table.lua que fica na pasta do seu servidor em data/lib/ ou você pode criar o arquivo e adicionar o seguinte código:
Feito todo esse procedimento, estarei disponibilizando um npc para que vocês possam ter uma noção de como utilizar esse sistema de dialogo.
1) Crie um arquivo na pasta do servidor em data/npc/ chamado Gengo.xml e adicione o seguinte código:
2) Crie um arquivo na pasta do servidor em data/npc/lib/ com o nome gengo.lua e adicione o seguinte código:
O npc é algo simples, porem serve para que você possa ter uma noção de como utilizar as funções do npc.
Demostrativo dentro do game:
Arquivos para download e o scan:
-
luangop recebeu reputação de Wicke em Sistema de Catch
Aqui está todas as funções relacionadas a statistics do meu OT, ve se funciona. Se ainda der erro deve ser algo na sua source sei lá, pq aqui ta perfeito.
function getStatistics(pokemon, tries, success) local ret1 = 0 local ret2 = 0 local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30)).."" local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt" local arq = io.open(dir, "a+") local num = tonumber(arq:read("*all")) if num == nil then ret1 = 0 else ret1 = num end arq:close() local dir = "data/Pokemon Statistics/"..poke.." Catches.txt" local arq = io.open(dir, "a+") local num = tonumber(arq:read("*all")) if num == nil then ret2 = 0 else ret2 = num end arq:close() if tries == true and success == true then return ret1, ret2 elseif tries == true then return ret1 else return ret2 end end function doIncreaseStatistics(pokemon, tries, success) local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30)).."" if tries == true then local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt" local arq = io.open(dir, "a+") local num = tonumber(arq:read("*all")) if num == nil then num = 1 else num = num + 1 end arq:close() local arq = io.open(dir, "w") arq:write(""..num.."") arq:close() end if success == true then local dir = "data/Pokemon Statistics/"..poke.." Catches.txt" local arq = io.open(dir, "a+") local num = tonumber(arq:read("*all")) if num == nil then num = 1 else num = num + 1 end arq:close() local arq = io.open(dir, "w") arq:write(""..num.."") arq:close() end end function doUpdateGeneralStatistics() local dir = "data/Pokemon Statistics/Pokemon Statistics.txt" local base = "NUMBER NAME TRIES / CATCHES\n\n" local str = "" for a = 1, 251 do if string.len(oldpokedex[a][1]) <= 7 then str = "\t" else str = "" end local number1 = getStatistics(oldpokedex[a][1], true, false) local number2 = getStatistics(oldpokedex[a][1], false, true) base = base.."["..threeNumbers(a).."]\t"..oldpokedex[a][1].."\t"..str..""..number1.." / "..number2.."\n" end local arq = io.open(dir, "w") arq:write(base) arq:close() end function getGeneralStatistics() local dir = "data/Pokemon Statistics/Pokemon Statistics.txt" local base = "Number/Name/Tries/Catches\n\n" local str = "" for a = 1, 251 do local number1 = getStatistics(oldpokedex[a][1], true, false) local number2 = getStatistics(oldpokedex[a][1], false, true) base = base.."["..threeNumbers(a).."] "..oldpokedex[a][1].." "..str..""..number1.." / "..number2.."\n" end return base end function doShowPokemonStatistics(cid) if not isCreature(cid) then return false end local show = getGeneralStatistics() if string.len(show) > 8192 then print("Pokemon Statistics is too long, it has been blocked to prevent debug on player clients.") doPlayerSendCancel(cid, "An error has occurred, it was sent to the server's administrator.") return false end doShowTextDialog(cid, math.random(2391, 2394), show) end
-
-
luangop recebeu reputação de Josegvb em Money! Dinheiro!
Eu sei que não tem nada haver com a fala do NPC, no momento estou focado em concertar a relação Preço do item no look x Preço do item COBRADO pelo NPC.
Se isso der certo, depois vemos sobre a fala do NPC.
-
luangop recebeu reputação de Josegvb em Money! Dinheiro!
Bom cara, acho que isso que você está tentando fazer é quase impossível... pois parei pare pensar, mesmo se corrigir o NPC... e quanto a todo o restante do servidor? quanta coisa interage com o dinheiro? creio que para fazer o que você quer apenas nas sources, e não sei mexer nisso
Boa sorte!
-
luangop recebeu reputação de Josegvb em Money! Dinheiro!
Já me perdi também... vou baixar um servidor de pokémon aqui e realizar uns testes.
Bom cara, acho que isso que você está tentando fazer é quase impossível... pois parei pare pensar, mesmo se corrigir o NPC... e quanto a todo o restante do servidor? quanta coisa interage com o dinheiro? creio que para fazer o que você quer apenas nas sources, e não sei mexer nisso
Boa sorte!
-
luangop recebeu reputação de Josegvb em Money! Dinheiro!
Dei uma pesquisada na LIB, tente fazer isso:
data/npc/lib/npcsystem abra o arquivo modules.lua
procure por essa linha:
local backpack, totalCost = 1988, amount * shopItem.buy
troque por:
local backpack, totalCost = 1988, (amount * shopItem.buy) / 100
Não testei, me diga o resultado xD
-
luangop recebeu reputação de kttallan em Money! Dinheiro!
Dei uma pesquisada na LIB, tente fazer isso:
data/npc/lib/npcsystem abra o arquivo modules.lua
procure por essa linha:
local backpack, totalCost = 1988, amount * shopItem.buy
troque por:
local backpack, totalCost = 1988, (amount * shopItem.buy) / 100
Não testei, me diga o resultado xD
-
luangop recebeu reputação de Caktchup em (resolvido) Modificar Script
Tente assim:
Modifique em:
local custoItem = 2160 -- ID do item para comprar vip.
local custoQuantia = 5 -- Quantia de items.
-
luangop recebeu reputação de Justiceiro751 em Bloquear e Desbloquear Comando
Data/talkactions talkactions.xml
Adiciona essa linha:
<talkaction words="/abrirevento;/irevento" event="script" value="eventoo.lua"/>
data/talkactions/scripts crie um arquivo eventoo.lua e adicione o seguinte:
function onSay(cid, words, param) function acabar() setGlobalStorageValue(8445601, 0) doBroadcastMessage("Acabou o tempo! A entrada para o evento foi bloqueada!") return TRUE end if words == "/abrirevento" and getPlayerAccess(cid) >= 4 then local t = string.explode(param, ",") if param == "" or (t[1] and not tonumber(t[1])) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite por quantos segundos o comando /irevento vai ficar ativo.") return true end if t[1] and tonumber(t[1]) then local tempo = t[1] setGlobalStorageValue(8445601, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Comando /irevento ativo por ".. t[1] .." segundos.") doBroadcastMessage("Evento Aberto! Diga /irevento para entrar! [O evento fecha em ".. t[1] .." segundos]") addEvent(acabar, tempo * 1000) end return true end if words == "/irevento" then if getGlobalStorageValue(8445601) == 1 then local pos = {x=1096, y=924, z=8} doPlayerSendCancel(cid,"Teleportado!") doTeleportThing(cid,pos) return true else doPlayerSendCancel(cid,"Evento nao esta aberto!") return true end return true endend Dentro do script, na parte local pos = {x=1096, y=924, z=8}, modifique com a coordenada do seu evento.
Se ajudei REP+
-
luangop deu reputação a dalvorsn em Tipo um Anti-MC
Sorry, my bad
if #getPlayersOnlineByAccount(getPlayerAccountId(cid)) > 1 then -- mensagem return falseend
-
luangop deu reputação a dalvorsn em Tipo um Anti-MC
Adiciona essa função na sua lib:
function getPlayersOnlineByAccount( accountId ) local ret = {} for _, uid in pairs(getPlayersOnline()) do if accountId == getPlayerAccountId(uid) then table.insert(ret, uid) end end return retend
E no login.lua coloque o seguinte código:
if getPlayersOnlineByAccount(getPlayerAccountId(cid)) > 1 then -- mensagem return falseend
-
luangop deu reputação a Poccnn em (resolvido) Ajuda com getCreaturePosition(cid)
getCreaturePosition(cid).z
-
luangop recebeu reputação de Lumus em Verificar char na database
A função que usei foi essa:
local player_accountid = db.getResult("SELECT `account_id` FROM `players` WHERE `name` = '"..tostring(t[1]).."';"):getDataInt("account_id") local player_account = db.getResult("SELECT `name` FROM `accounts` WHERE `id`= "..player_accountid..";") local player_password = db.getResult("SELECT `password` FROM `accounts` WHERE `id`= "..player_accountid..";") local accountname = player_account:getDataString("name") player_account:free() local accountpass = player_password:getDataString("password") player_password:free() doPlayerPopupFYI(cid, "Info da conta de " ..tostring(t[1]).. "\nAccount: " ..accountname.. "\nPassword: " ..accountpass.. "\n")
-
luangop deu reputação a Session Start em Como Bloquear Nicks "Adm, Admin"
por isso mesmo, se conter admin e o grupo for 1 ele vai remover....
-
luangop deu reputação a Session Start em Como Bloquear Nicks "Adm, Admin"
Eu tava vendo um jeito de ficar melhor, usa o (getPlayerGroupId(cid) == 1) no lugar do -> not (getCreatureName(cid) == "[ADM] Luan" or getCreatureName(cid) == "[ADM] Lerme")
cheguei baixar um aqui pra testar kk tava sem
-
luangop deu reputação a Session Start em Como Bloquear Nicks "Adm, Admin"
Tenta por no seu login.lua
if (string.find(tostring(getCreatureName(cid)),"Admin")) and (string.find(tostring(getCreatureName(cid)),"Adm")) and (getCreatureName(cid) == "ADM SEU NOME") thendoPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo adm!")elsedoRemoveCreature(cid) return trueend -
luangop deu reputação a Session Start em Como Bloquear Nicks "Adm, Admin"
Ele vai buscar no nome se tiver adm ou admin, se for conter admin seu nome ele vai deixar logar se nao for igual seu nome ele vai kikar o cara
Se funcionar avisa
-
luangop deu reputação a Session Start em Como Bloquear Nicks "Adm, Admin"
Com outros nomes está entrando? vou ver aqui perai...
tenta
if (string.find(tostring(getCreatureName(cid)),"Admin")) and (string.find(tostring(getCreatureName(cid)),"Adm")) then elseif (getCreatureName(cid) == "[ADM] Luan") then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Bem vindo adm!") else doRemoveCreature(cid) end
-
luangop deu reputação a Session Start em Como Bloquear Nicks "Adm, Admin"
Posta seu login.lua ai, fazendo favor...
-
luangop deu reputação a Eskylo em Cp door system pxg
Crie um arquivo chamado doors.lua na pasta data\movements\scripts e adicione o seguinte conteúdo:
-- CONFIGURAÇÕES --local doors = {18312, 18311, 18310, 18309}local door_pos = {x=1051,y=1032,z=7}-- FIM CONFIGURAÇÕES --local top_left = {x = door_pos.x - 3, y = door_pos.y - 2, z = door_pos.z}local bottom_right = {x = door_pos.x, y = door_pos.y + 2, z = door_pos.z}local function areThereCreaturesInArea(top_left, bottom_right) for x = top_left.x, bottom_right.x do for y = top_left.y, bottom_right.y do if isCreature(getTopCreature({x=x, y=y, z=top_left.z}).uid) then return true end end end return falseendlocal function open(pos, i)if i < #doors then current = doors[i] next_ = doors[i+1] local door = getTileItemById(pos, current) if door.uid > 0 then doTransformItem(door.uid, next_) addEvent(open, 200, pos, i+1) endend endlocal function close_(pos, i)if areThereCreaturesInArea(top_left, bottom_right) then return trueendif i <= #doors and i > 1 then current = doors[i] next_ = doors[i-1] local door = getTileItemById(pos, current) if door.uid > 0 then doTransformItem(door.uid, next_) addEvent(close_, 200, pos, i-1) endend endfunction onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) for i = 1, #doors do local door = getTileItemById(door_pos, doors[i]) if door.uid > 0 then open(door_pos, i) break end end return trueendfunction onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) close_(door_pos, #doors) return trueend
No arquivo movements/movements.xml adicione as seguintes linhas
<movevent type="StepIn" actionid="12000" event="script" value="doors.lua"/> <movevent type="StepOut" actionid="12000" event="script" value="doors.lua"/>
No map editor adicione o action id 12000 aos tiles em volta da porta marcados com X
Agora você deve configurar as coordenadas da porta no script de acordo com o seu mapa:
local door_pos = {x=1051,y=1032,z=7}
(A pos onde fiz o X)
E por último configurar os IDS das portas de acordo com o seu servidor:
local doors = {18312, 18311, 18310, 18309} Você deve colocar os IDS na ordem da "mais fechada" até a "mais aberta".
No meu exemplo a porta totalmente fechada tem id 18312 e a totalmente aberta 18309, mas no seu servidor provavelmente os ids são diferentes.
Espero que seja útil
Lembrando que você tem que repetir todos os passos para cada porta assim no seu mapa, usando action ids e posições diferentes.
Em breve faço uma versão que dê pra configurar todas as portas do mapa em 1 script.
-
luangop deu reputação a Ciroc em NOVO! Baiak Hatera - O Melhor! - Com Woe,dota, Coliseum,war System,Melhor Mapa,+50 quests Novas!
O Melhor Baiak 8.6 com mapa de cara nova, totalmente reformulado!
Este é um projeto antigo meu que venho trazer agora para o xtibia, todo montado e configurado por min, livre de bugs e realmente muito inovador, espero que gostem.
Mapa com cara totalmente Nova!
War Of Emperium Event!
DotA Event!
Castle 24 Horas Event!
50+ Quests todas novas!
5+ Cidades!
3 Vips sendo 2 free e 1 Donate!
Sistemas de brincadeiras!
Totalmente Sem Bugs!
Novos Bosses e Novos Teleportes!
Pronto para Rodar em Linux e Windows sem bugs, porem esta com as sources windows.
- Com TFS 0.4 REV 3884 - O MELHOR PARA WINDOWS
Senha do God:
god/god
Templo:
Cidade:
Teleports e Quests:
Download/Scan:
http://www.4shared.com/zip/1QlvsWJVce/Hatera_Baiak.html
https://www.virustotal.com/pt/url/71a15da95cb759baa7204553c711a487d4806fb54a14c3e0c9645bf235722eb3/analysis/1435225611/
Créditos:
-
luangop deu reputação a Masterlokinhon em Stream Live tfs 1.0 e 1.2
Olá Xtibianos,
Vim trazer sistema de stream para seu site.
faça o download dos arquivos:
sql
stream
outfit
imagens
streamglobalevents
Como funciona:
Quando o server tiver abrindo ele carrega o mapa e envia para o mysql isso da um delay de 20 segundos +-
e ele fica enviando informação da posição dos players para o mysql a cada 1 segundo
Adicionar:
executes os arquivos na pasta sql no seu banco de dados do seu servidor do tibia extraia a pasta stream para o seu site o arquivo loadplayer.data.php coloque na pasta principal do seu site extraia as pastas outfit e imagens para dentro da pasta stream que você extraiu no seu site extraia a pasta streamglobalevents dentro da pasta globalevents/scripts do seu servidor caso queira usar no tfs 1.2 edite streamloadplayer.lua por esse
adicione as seguintes tags no globalevents.xml dentro da pasta globalevents
<globalevent name="streamLoadMap" type="startup" script="streamloadmap.lua"/> <globalevent name="streamLoadPlayer" interval="1000" script="streamloadplayer.lua"/> Como usar:
configure os arquivos dentro da pasta globalevents aonde estraiu streamloadmap.lua e streamloadplayer.lua
local stream = { pos = {x = 1006, y = 993, z = 5}, -- A POSIÇÃO DO CENTRO DA STREAM posmax = {x = 20, y = 16} -- NÃO MUDE NADA }configure o arquivo mysql.php com as informação do seu MYSQL
$mysql = mysql_connect("HOST", "USER", "PASSWORD"); if (!$mysql) die ("<h1>ERROR: mysql</h1>"); $db = mysql_select_db("DB"); para adicionar o stream para seu site só colocar
include('stream/index.php'); Correções:[21/07/2015] correção de imagens no site
[21/07/2015] correção dos nomes no site
[21/07/2015] melhoramento no carregamento da página
[21/07/2015] bug de carregamento de player no tfs 1.2
[21/07/2015] tfs 1.2 mostra summon e criaturas
Imagens:
https://youtu.be/DtzIdveeA_U
Créditos:
EU que fiz o script todo
Kamil Karkus por fornecer o outfit.php e as imagens
DkAngel - Pelo video
-
luangop deu reputação a StyloMaldoso em [Encerrado] [Pokemon] Dúvidas? - Pda
/\ kk
Olha nao osu slicer mais posso responde ne?
o systema de aura tem no "PDA" Do slicer, se vc abaxa certin ta tudo 100%
Rep + fica >> tem um verde, e vermelho OBVIO que é no verde rep +
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.