Ir para conteúdo

luangop

Membro
  • Registro em

  • Última visita

Tudo que luangop postou

  1. function onSay(cid, words, param, channel) local file = io.open('data/logs/logs.txt','a') file:write("Dia: "..os.date("%d").."/"..os.date("%m").."/"..os.date("%Y").." Hora: "..os.date("%X").." :::: ".. getPlayerNameByGUID(cid) .." usou o comando ".. words .."\n") file:close() if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") local ret = RETURNVALUE_NOERROR local pos = getCreaturePosition(cid) local id = tonumber(t[1]) if(not id) then id = getItemIdByName(t[1], false) if(not id) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item wich such name does not exists.") return true end end local amount = 100 if(t[2]) then amount = t[2] end local item = doCreateItemEx(id, amount) if(t[3] and getBooleanFromString(t[3])) then if(t[4] and getBooleanFromString(t[4])) then pos = getCreatureLookPosition(cid) end ret = doTileAddItemEx(pos, item) else ret = doPlayerAddItemEx(cid, item, true) end if(ret ~= RETURNVALUE_NOERROR) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Couldn't add item: " .. t[1]) return true end doDecayItem(item) if(not isPlayerGhost(cid)) then doSendMagicEffect(pos, 87) end return true end Logo após o function onSay
  2. Então você terá de adicionar uma função em todos os seus scripts. Em cada script de talkaction que queira registrar o uso, adicione isso: local file = io.open('data/logs/logs.txt','a') file:write("Dia: "..os.date("%d").."/"..os.date("%m").."/"..os.date("%Y").." Hora: "..os.date("%X").." :::: ".. getPlayerNameByGUID(cid) .." usou o comando ".. words .."\n") file:close() Essa é a forma que conheço, porém será criado apenas um arquivo, onde ficará o log de todos os players.
  3. Então na sua pasta logs já deve estar salvando cada comando feito.
  4. Basta no talkactions.xml adicionar a tag log="yes" Por exemplo: <talkaction words="/clean" access="3" event="script" value="clean.lua"/> Ficaria: <talkaction log="yes" words="/clean" access="3" event="script" value="clean.lua"/>
  5. luangop postou uma resposta no tópico em Suporte Tibia OTServer
    Todo servidor de poketibia já tem algum script de box, poste algum aqui que a gente te ajuda a modificar a seu gosto! Né, pior que tem servidor que é por attribute, outros é por action (1 item para cada poke), ai os cara faz pedido e não especifica a base usada... ai complica.
  6. Eu já havia modificado este mesmo script para meu servidor. Segue o script: lvlaura é o nível da aura, na quest da primeira aura ponha setPlayerStorageValue(cid, 8445682, 1) Quest da segunda aura, coloque setPlayerStorageValue(cid, 8445682, 2) e assim por diante. Obs: Na minha versão eu já corrigi os erros que dava no distro quando algum player relogava com a aura ligada. Obs²: Eu configurei para curar tanto hp quanto mana, em mesma quantia. Obs³: Eu corrigi o erro que fazia a aura curar a qualquer momento, e não somente quando completava uma volta no personagem. -- CONFIGURAÇÕES lvlaura = 8445682 aurastr = 8445680 estr = 8445681 tempo = 1310 function efeitosAura(i,tm,cid) if isPlayer(cid) and getPlayerStorageValue(cid, aurastr)== 2 then if getPlayerStorageValue(cid, lvlaura) == 1 then -- aura level 1 porcentagem = 25 -- chance de curar em cada volta da aura quantheal = 6 -- porcentagem do hp máximo que cada cura irá curar tipoaura = 12 -- efeito da aura /x efeitocura = 43 --efeito quando a cura chega ao player /z elseif getPlayerStorageValue(cid, lvlaura) == 2 then -- aura level 2 porcentagem = 30 -- chance de curar em cada volta da aura quantheal = 8 -- porcentagem do hp máximo que cada cura irá curar tipoaura = 28 -- efeito da aura /x efeitocura = 43 --efeito quando a cura chega ao player /z elseif getPlayerStorageValue(cid, lvlaura) == 3 then -- aura level 3 porcentagem = 35 -- chance de curar em cada volta da aura quantheal = 10 -- porcentagem do hp máximo que cada cura irá curar tipoaura = 30 -- efeito da aura /x efeitocura = 39 --efeito quando a cura chega ao player /z elseif getPlayerStorageValue(cid, lvlaura) == 4 then -- aura level 4 porcentagem = 40 -- chance de curar em cada volta da aura quantheal = 12 -- porcentagem do hp máximo que cada cura irá curar tipoaura = 31 -- efeito da aura /x efeitocura = 38 --efeito quando a cura chega ao player /z end if(isCreature(cid)) then local atual = getCreaturePosition(cid) local posaura = { {x=(atual.x)-1, y=(atual.y)-1, z=atual.z}, {x=atual.x, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=(atual.y)-1, z=atual.z}, {x=(atual.x)+1, y=atual.y, z=atual.z}, {x=(atual.x)+1, y=(atual.y)+1, z=atual.z}, {x=atual.x, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=(atual.y)+1, z=atual.z}, {x=(atual.x)-1, y=atual.y, z=atual.z}, } if i == 1 then local chances = math.random(1, 100) if(chances<=porcentagem and (getCreatureHealth(cid)<getCreatureMaxHealth(cid) or getCreatureMana(cid)<getCreatureMaxMana(cid))) then local hpheal = (getCreatureMaxHealth(cid)/100) * quantheal local mpheal = (getCreatureMaxMana(cid)/100) * quantheal doCreatureAddHealth(cid, hpheal) doCreatureAddMana(cid, mpheal) if(i<=8 and i>1) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, atual, tipoaura) else doSendDistanceShoot({x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end end if(i==8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[1].x, y=posaura[1].y, z=posaura[1].z}, tipoaura) elseif(i<8) then doSendDistanceShoot({x=posaura[i].x, y=posaura[i].y, z=posaura[i].z}, {x=posaura[i+1].x, y=posaura[i+1].y, z=posaura[i+1].z}, tipoaura) end if(i<=8) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) elseif(i>8) then return efeitosAura(1,0,cid) else return TRUE end else return TRUE end return true end end -- Função principal function onSay(cid, words, param, channel) if getPlayerStorageValue(cid, lvlaura) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[AURA SYSTEM] Você não possui aura.") return true end if(param=="on") then if getPlayerStorageValue(cid, estr) > os.time() then doPlayerSendCancel(cid, "Espere "..(getPlayerStorageValue(cid, estr) - os.time()).." segundos para poder habilitar aura novamente.") else if(getPlayerStorageValue(cid, aurastr)==2) then doPlayerSendCancel(cid,"Sua aura já está habilitada.") elseif(getPlayerStorageValue(cid, aurastr)==-1) then doPlayerSendCancel(cid,"Aura ligada!") setPlayerStorageValue(cid, aurastr, 2) efeitosAura(1,tempo/8,cid) end end elseif(param=="off") then if(getPlayerStorageValue(cid, aurastr)==2) then setPlayerStorageValue(cid, estr, os.time()+2) setPlayerStorageValue(cid, aurastr, -1) doPlayerSendCancel(cid,"Aura desligada!") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Digite '!aura on' para ligar sua aura, e '!aura off' para desligá-la.") end return TRUE end
  7. Nossa, sofri agora kkk Depois de várias tentativas frustradas, consegui da seguinte maneira:
  8. E a coordenada ta batendo certinho do lugar que vc esta com o script? Daqui algumas horas eu testo aqui.
  9. Cara não estou entendendo o que se passa na sua cabeça, pra vc botar isso: local pos1 = {x=932}, y=1039, z=7} Não se fecha dentro do array, deixa assim: local pos1 = {x=932, y=1039, z=7}
  10. Poste o script como está ai no seu servidor.
  11. Tem certeza que botou o script corretamente, sem deixar nada que já estava no arquivo? Pois o erro não fez sentido algum. local pos1 = {x=932], y=1039, z=7} Pq você botou esse ']'? kkk tira isso local pos1 = {x=932, y=1039, z=7}
  12. luangop postou uma resposta no tópico em Suporte Tibia OTServer
    Cara, especifique rsrs Oque esta moeda 113 deveria fazer?
  13. luangop postou uma resposta no tópico em Suporte Tibia OTServer
    Man, vc ta fazendo algo errado e.e Pois o erro continua sendo o mesmo, sempre na linha 32. Revise bem se está botando o script no lugar certo.
  14. luangop postou uma resposta no tópico em Suporte Tibia OTServer
    Tenta assim então: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local shopWindow = {} local moeda = 113 local t = {[11778] = {price = 90}, [11779] = {price = 90}, [11780] = {price = 90}, [11781] = {price = 90}, [7380] = {price = 8}, [7408] = {price = 8}, [2431] = {price = 8}, [7402] = {price = 8}, [7869] = {price = 6}, [2388] = {price = 6}, [2659] = {price = 6}, [8931] = {price = 10}, [8931] = {price = 15}, [11786] = {price = 5}, [11787] = {price = 25}, [11788] = {price = 50}, [11789] = {price = 110}} local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and not doPlayerRemoveItem(cid, moeda, t[item].price) then selfSay("you dont have"..t[item].price.." "..getItemNameById(moeda), cid) else doPlayerAddItem(cid, item) selfSay("Here your item!", cid) end return true end if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then for var, ret in pairs(t) do table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)}) end openShopWindow(cid, shopWindow, onBuy, onSell) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  15. luangop postou uma resposta no tópico em Suporte Tibia OTServer
    Você botou o script q mandei? Pois deu erro na mesma linha (32) sendo que removi comentários do script, diminuindo o tanto de linhas.
  16. Tente assim: (Obs: Não testei.) local pos1 = {x=500, y=550, z=7} local pos2 = {x=500, y=550, z=7} local pos3 = {x=500, y=550, z=7} local pos4 = {x=500, y=550, z=7} local pos5 = {x=500, y=550, z=7} local config1 = { -- config da pos 1 price = 30, -- Quantidade de items necessário para comprar. count = 1, -- Quantidade que irá vender. item = 666, -- ID do item que vai vender. need = 9971, -- ID do item necessário. alavancaStr = 3332, -- Storage para salvar e checar o tempo (tempo para o usar o comando de novo) time = 5 -- Tempo de espera para usar novamente } local config2 = { -- config da pos 2 price = 30, -- Quantidade de items necessário para comprar. count = 1, -- Quantidade que irá vender. item = 666, -- ID do item que vai vender. need = 9971, -- ID do item necessário. alavancaStr = 3332, -- Storage para salvar e checar o tempo (tempo para o usar o comando de novo) time = 5 -- Tempo de espera para usar novamente } local config3 = { -- config da pos 3 price = 30, -- Quantidade de items necessário para comprar. count = 1, -- Quantidade que irá vender. item = 666, -- ID do item que vai vender. need = 9971, -- ID do item necessário. alavancaStr = 3332, -- Storage para salvar e checar o tempo (tempo para o usar o comando de novo) time = 5 -- Tempo de espera para usar novamente } local config4 = { -- config da pos 4 price = 30, -- Quantidade de items necessário para comprar. count = 1, -- Quantidade que irá vender. item = 666, -- ID do item que vai vender. need = 9971, -- ID do item necessário. alavancaStr = 3332, -- Storage para salvar e checar o tempo (tempo para o usar o comando de novo) time = 5 -- Tempo de espera para usar novamente } local config5 = { -- config da pos 5 price = 30, -- Quantidade de items necessário para comprar. count = 1, -- Quantidade que irá vender. item = 666, -- ID do item que vai vender. need = 9971, -- ID do item necessário. alavancaStr = 3332, -- Storage para salvar e checar o tempo (tempo para o usar o comando de novo) time = 5 -- Tempo de espera para usar novamente } function onSay(cid, words, param, channel) if getCreaturePosition(cid) ~= pos1 and getCreaturePosition(cid) ~= pos2 and getCreaturePosition(cid) ~= pos3 and getCreaturePosition(cid) ~= pos4 and getCreaturePosition(cid) ~= pos5 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Lugar inadequado para usar o comando.") return true end if getCreaturePosition(cid) == pos1 then local config = config1 elseif getCreaturePosition(cid) == pos2 then local config = config2 elseif getCreaturePosition(cid) == pos3 then local config = config3 elseif getCreaturePosition(cid) == pos4 then local config = config4 elseif getCreaturePosition(cid) == pos5 then local config = config5 end if getPlayerItemCount(cid, config.need) >= config.price then if getPlayerStorageValue(cid, config.alavancaStr) <= os.time() then doPlayerRemoveItem(cid, config.need, config.price) doPlayerAddItem(cid, config.item, config.count) setPlayerStorageValue(cid, config.alavancaStr, config.time + os.time()) doCreatureSay(cid, "Você comprou ".. config.count .." ".. getItemNameById(config.item) ..".", TALKTYPE_MONSTER) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Espere ".. getPlayerStorageValue(cid, config.alavancaStr) - os.time() .." segundos para comprar novamente.") return true end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem ".. config.price .." ".. getItemNameById(config.need) ..".") return true end end
  17. luangop postou uma resposta no tópico em Suporte Tibia OTServer
    Estranho, não vi nada de errado... Mas tente assim: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local shopWindow = {} local moeda = 113 -- ID da moeda local t = { [11778] = {price = 90}, -- [ITEM ID PARA VENDER] = {QNTO CUSTARÁ} [11779] = {price = 90}, [11780] = {price = 90}, [11781] = {price = 90}, [7380] = {price = 8}, [7408] = {price = 8}, [2431] = {price = 8}, [7402] = {price = 8}, [7869] = {price = 6}, [2388] = {price = 6}, [2659] = {price = 6}, [8931] = {price = 10}, [8931] = {price = 15}, [11786] = {price = 5}, [11787] = {price = 25}, [11788] = {price = 50}, [11789] = {price = 110} } local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and not doPlayerRemoveItem(cid, moeda, t[item].price) then selfSay("you dont have"..t[item].price.." "..getItemNameById(moeda), cid) else doPlayerAddItem(cid, item) selfSay("Here your item!", cid) end return true end if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then for var, ret in pairs(t) do table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)}) end openShopWindow(cid, shopWindow, onBuy, onSell) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Obs: Qual é seu servidor? Te vejo direto por aqui pedindo ajuda, já te ajudei algumas vezes fiquei curioso rs.
  18. function onSay(cid, words, param) local ppos = getCreaturePosition(cid) local pos1 = {x = 1313, y = 1120, z = 7} local pos2 = {x = 1373, y = 1161, z = 9} if ppos.x > pos1.x and ppos.x < pos2.x and ppos.y > pos1.y and ppos.y < pos2.y and ppos.z >= pos1.z and ppos.z <= pos2.z then return true end pos = {x=1057, y=1046, z=7} doSendMagicEffect(getPlayerPosition(cid),19) doPlayerSendCancel(cid,"Teleportado!") doTeleportThing(cid,pos) end Você fez errado, no tibia o andar mais alto é o número menor, e o andar mais baixo é o número maior.
  19. poste o script como vc configurou.
  20. com 2 andares: function onSay(cid, words, param) local ppos = getCreaturePosition(cid) local pos1 = {x = 0, y = 0, z = 0} local pos2 = {x = 0, y = 0, z = 0} if ppos.x > pos1.x and ppos.x < pos2.x and ppos.y > pos1.y and ppos.y < pos2.y and ppos.z >= pos1.z and ppos.z <= pos2.z then return true end pos = {x=1057, y=1046, z=7} doSendMagicEffect(getPlayerPosition(cid),19) doPlayerSendCancel(cid,"Teleportado!") doTeleportThing(cid,pos) end Com 2 ou mais andares, no pos1 ponha o Z do andar mais acima, e no pos2 ponha o Z do andar mais abaixo.
  21. No script do comando que os players usam pra sair da prisão, adicione o seguinte logo após o "function onSay(cid...." local ppos = getCreaturePosition(cid) local pos1 = {x = 0, y = 0, z = 0} local pos2 = {x = 0, y = 0, z = 0} if ppos.x > pos1.x and ppos.x < pos2.x and ppos.y > pos1.y and ppos.y < pos2.y and ppos.z == pos1.z then return true end Explicando: em pos1 você coloca a coordenada do canto superior esquerdo da prisão, e em pos2 você bota a coordenada do canto inferior direito da prisão. Vai uma print auto-explicativa: Se tiver mais de um comando que teletransporta o player, adicione a função em todos. O mesmo faça com os action scripts dos items que teletransportam o player, caso haja.
  22. luangop postou uma resposta no tópico em Suporte Tibia OTServer
    Poste seu script da quest normal, que eu adiciono a função de aparecer a mensagem.
  23. O script está certo, creio que o problema seja a sprite que não está devidamente alinhada. Mas se quiser tentar realinhar a aura por script (não garanto nada que irá funcionar), tente assim: local tab = { [9] = {effect = 27}, -- [vocationID] = {effect = Number} [10] = {effect = 28}, [11] = {effect = 29}, [12] = {effect = 30} } local delay = 3 -- tempo do efeito da aura em segundos function ariseAura(cid) local pos = getThingPos(cid) doSendMagicEffect({x=pos.x+1, y=pos.y, z=pos.z}, tab[getPlayerVocation(cid)].effect) addEvent(ariseAura, delay * 1000, cid) return true end function onLogin(cid) if tab[getPlayerVocation(cid)] then ariseAura(cid) end return true end Obs: Tente aprender a utilizar o CODE da próxima vez que for postar um script.
  24. Número alto demais cara, poe algo do tipo 43200, que ja seria 30 dias.

Informação Importante

Confirmação de Termo