Ir para conteúdo

Yan Oliveira

Moderador
  • Total de itens

    2187
  • Registro em

  • Última visita

  • Dias Ganhos

    57

Tudo que Yan Oliveira postou

  1. Como está o arquivo XML? Provavelmente você não colocou a propriedade summonable como '1': <flag summonable="1"/> Mas é bom fazer o que o red X falou, na dúvida, copia o arquivo de outro monster que já funciona e substitui pelo novo. Mas seria bom informar qual era o problema e qual foi a solução, para que outras pessoas com os mesmos problemas no futuro consigam ver a solução.
  2. Yan Oliveira

    Vault

    Substitua o código por: function onUse(cid, item, fromPosition, itemEx, toPosition) local cidMoney = getPlayerMoney(cid) local vaultmoney = getItemAttribute(itemEx.uid, "money") if (getItemAttribute(itemEx.uid, "money") == 0) then doSetItemAttribute(itemEx.uid, "money", cidMoney) if getPlayerMoney(cid) >= 1000000 and getPlayerMoney(cid) < 10000000 then item = doPlayerAddItem(cid, 7896, 1) doItemSetAttribute(item, "money", cidMoney) elseif getPlayerMoney(cid) >= 10000000 and getPlayerMoney(cid) < 100000000 then item = doPlayerAddItem(cid, 7897, 1) doItemSetAttribute(item, "money", cidMoney) elseif getPlayerMoney(cid) >= 100000000 and getPlayerMoney(cid) <= 2000000000 then item2 = doPlayerAddItem(cid, 7898, 1) doItemSetAttribute(item2, "money", cidMoney) end doPlayerRemoveMoney(cid, cidMoney) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Voce depositou "..cidMoney.." dolares!") else item2 = doPlayerAddItem(cid, 7895, 1) doItemSetAttribute(item2, "money", 0) doPlayerAddMoney(cid, vaultmoney) end doPlayerRemoveItem(cid, itemEx, 1) doRemoveItem(itemEx.uid, 1) return true end Otimizei o código, porque tinha muita repetição nos blocos condicionais
  3. A função setCallback tem dois parâmetros: combat:setCallback(key, function) Mas eu não estou passando quatro parâmetros, estou passando a função createSpellExplosition como parâmetro. No código C++ essa função é um parâmetro. Sobre a forma como quer o script, eu entendi. E no GIF o efeito está saindo em CIRCLE 5X5 de forma aleatória, mas está dando dano quando muda a coordenada? Ou só está dando dano na primeira posição que a spell foi executada?
  4. Realmente faltou um "then" após um if e também coloquei a área errada. Substitui o código por: local function createSpellExplosion(creature, combat, variant, count) local caster = Creature(creature) if not caster or combat == nil then return true end if count > 0 then if count < 5 and (math.random(0, 1) == 0) then count = count + 1 else combat:execute(caster, variant) end addEvent(createSpellExplosion, math.random(1000, 4000), caster:getId(), combat, variant, count - 1) else return true end end local combat = Combat() combat:setFormula(COMBAT_FORMULA_DAMAGE, -100, 0, -100, 0) combat:setArea(createCombatArea(AREA_CIRCLE5X5)) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT) combat:setCallback(CALLBACK_PARAM_TARGETTILE, "createSpellExplosion") function onCastSpell(creature, variant, isHotkey) return createSpellExplosion(creature, combat, variant, count) end
  5. Isso acontece porque você definiu uma posição, mas não está atualizando, então o efeito fica estático naquela coordenada. Substitua seu código por: function createSpellExplosion(creature, combat, variant, count) local caster = Creature(creature) if not caster or combat == nil then return true end if count > 0 if count < 5 and (math.random(0, 1) == 0) then count = count + 1 else caster:getPosition():sendMagicEffect(CONST_ME_HITBYFIRE) end combat:execute(caster, variant) addEvent(createSpellExplosion, math.random(1000, 4000), caster:getId(), combat, variant, count - 1) else return true end end local combat = Combat() combat:setFormula(COMBAT_FORMULA_DAMAGE, -100, 0, -100, 0) combat:setArea(createCombatArea(CONST_ME_EXPLOSIONHIT)) combat:setCallback(CALLBACK_PARAM_TARGETTILE, "createSpellExplosion") function onCastSpell(creature, variant, isHotkey) return createSpellExplosion(creature, combat, variant, count) end
  6. Tópico movido para OFF-Topic > Barzinho do Éks > Papo Cabeça.
  7. Tópico movido para OTServ > Suporte > Clients. Já testou esse script em outro Client? Esse problema só acontece nesse OTClient específico que você está usando?
  8. Quando você diz dinheiro do bank, seria o Balance do player que fica no banco de dados, certo?
  9. Yan Oliveira

    Shinobi Online

    Tópico movido para OTServ > Pedidos > Datapacks. Informe mais detalhes da base que você deseja encontrar.
  10. Que bom! A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
  11. Deu certo? Conseguiu resolver seu problema?
  12. Sabe dizer se essa base é baseada no Pokémon Dash Advanced ou Pokémon Dash? Porque a maioria dos poketibias usam normalmente um dos três seguintes arquivos para adicionar ataque para pokémon summon (player): Data/Lib/Configuration.lua Data/Lib/Moves.lua Data/Spells/Scripts
  13. Yan Oliveira

    [AJUDA] goback

    Posta o código desses dois arquivos: data/lib/004-database.lua e data/lib/056-SecuritySystem.lua.
  14. @jiuer7845 Usuário banido devido a ser um bot, e fazer somente posts contendo spams e vírus.
  15. Yan Oliveira

    [AJUDA] goback

    Você precisa postar o código do Goback.lua.
  16. Que bom que ajudou! De nada! Sobre reutilizar o código, pelo que você falou da para reutilizar sim, vai precisar alterar as configurações como outro valor de storage, coordenadas e etc, mas a estrutura é a mesma. Mas em caso de dúvida, crie um tópico que iremos te ajudar. A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
  17. Mas como assim usar esse script em outra quest? Se for um evento similar, da sim, desde que mude o actionid/uniqueid no actions.xml. Mas é melhor fazer uma verificação para cada script, esse negócio de ficar reusando código na maioria das vezes é ruim, porque é um script que faz uma coisa e está sendo usado para outra coisa diferente, e depois para fazer manutenção é ruim. Se for só a verificação, pode usar sim, mas se for usar o script inteiro em outra quest, não recomendo, nesse caso é melhor criar um tópico aqui no fórum. Sobre o código, troque por esse: local storage = 54789 -- STORAGE local storage_time_minutes = 30 -- TEMPO EM MINUTOS PARA PODER CLICAR NA ALAVANCA PARA FAZER NOVAMENTE local text = "There are players doing the quest. You need to wait " .. storage_time_minutes .. " minutes to do this mission again." function onUse(cid, item, frompos, item2, topos) if item.uid == 3054 then if item.itemid == 1945 then player1pos = {x = 1865, y = 1921, z = 9, stackpos = 253} player1 = getThingfromPos(player1pos) player2pos = {x = 1866, y = 1921, z = 9, stackpos = 253} player2 = getThingfromPos(player2pos) player3pos = {x = 1867, y = 1921, z = 9, stackpos = 253} player3 = getThingfromPos(player3pos) player4pos = {x = 1868, y = 1921, z = 9, stackpos = 253} player4 = getThingfromPos(player4pos) if getGlobalStorageValue(storage) > os.time() then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text) doPlayerSendTextMessage(player1.uid, MESSAGE_STATUS_CONSOLE_BLUE, text) doPlayerSendTextMessage(player2.uid, MESSAGE_STATUS_CONSOLE_BLUE, text) doPlayerSendTextMessage(player3.uid, MESSAGE_STATUS_CONSOLE_BLUE, text) doPlayerSendTextMessage(player4.uid, MESSAGE_STATUS_CONSOLE_BLUE, text) return true end if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then player1level = getPlayerLevel(player1.uid) player2level = getPlayerLevel(player2.uid) player3level = getPlayerLevel(player3.uid) player4level = getPlayerLevel(player4.uid) questlevel = 100 if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then queststatus1 = getPlayerStorageValue(player1.uid, 6026) queststatus2 = getPlayerStorageValue(player2.uid, 6026) queststatus3 = getPlayerStorageValue(player3.uid, 6026) queststatus4 = getPlayerStorageValue(player4.uid, 6026) if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then demon1pos = {x = 1919, y = 1927, z = 12} demon2pos = {x = 1920, y = 1927, z = 12} demon3pos = {x = 1918, y = 1917, z = 12} demon4pos = {x = 1909, y = 1915, z = 12} demon5pos = {x = 1876, y = 1918, z = 11} demon6pos = {x = 1868, y = 1918, z = 12} doSummonCreature("Demon", demon1pos) doSummonCreature("Demon", demon2pos) doSummonCreature("Demon", demon3pos) doSummonCreature("Demon", demon4pos) doSummonCreature("Demon", demon5pos) doSummonCreature("Demon", demon6pos) nplayer1pos = {x = 1879, y = 1944, z = 10} nplayer2pos = {x = 1879, y = 1944, z = 10} nplayer3pos = {x = 1879, y = 1944, z = 10} nplayer4pos = {x = 1879, y = 1944, z = 10} doSendMagicEffect(player1pos, 2) doSendMagicEffect(player2pos, 2) doSendMagicEffect(player3pos, 2) doSendMagicEffect(player4pos, 2) doTeleportThing(player1.uid, nplayer1pos) doTeleportThing(player2.uid, nplayer2pos) doTeleportThing(player3.uid, nplayer3pos) doTeleportThing(player4.uid, nplayer4pos) doSendMagicEffect(nplayer1pos, 10) doSendMagicEffect(nplayer2pos, 10) doSendMagicEffect(nplayer3pos, 10) doSendMagicEffect(nplayer4pos, 10) doTransformItem(item.uid, item.itemid + 0) setGlobalStorageValue(storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE GLOBAL PARA NÃO PUXAREM A ALAVANCA ENQUANTO ESTIVEREM FAZENDO A QUEST else doPlayerSendCancel(cid, "Sorry, not possible.") end else doPlayerSendCancel(cid, "Sorry, not possible.") end else doPlayerSendCancel(cid, "Sorry, not possible.") end elseif item.itemid == 1945 then if getPlayerAccess(cid) == 3 then doTransformItem(item.uid, item.itemid - 1) else doPlayerSendCancel(cid, "Sorry, not possible.") end end end return true end Coloquei storage global e mudei o tempo de espera de 15 para 30 miuntos. Teste e veja se é isso que quer.
  18. Entendi, tem duas opções, a primeira é colocar uma storage global porque não tem como colocar storage em itens, apenas em players e monstros. E a segunda opção é fazer uma verificação na área onde acontece esse evento, e se tiver players, não poder puxar a alavanca, pois assim é uma forma de não precisar usar storage global. Sua versão de TFS é 1.0 mesmo? Se for, é mais fácil de trabalhar.
  19. Pelo que entendi, você quer apenas que coloque um tempo para conseguirem fazer novamente essa missão. Não alterei nada no código, apenas formatei porque estava muito mal formatado, e adicionei o exhaust. Troque o código por esse: local storage = 54789 -- STORAGE local storage_time_minutes = 15 -- TEMPO EM MINUTOS PARA PODER CLICAR NA ALAVANCA PARA FAZER NOVAMENTE local text = "There is someone need to wait " .. storage_time_minutes .. " minutes to do this mission again." function onUse(cid, item, frompos, item2, topos) if item.uid == 3054 then if item.itemid == 1945 then player1pos = {x = 1865, y = 1921, z = 9, stackpos = 253} player1 = getThingfromPos(player1pos) player2pos = {x = 1866, y = 1921, z = 9, stackpos = 253} player2 = getThingfromPos(player2pos) player3pos = {x = 1867, y = 1921, z = 9, stackpos = 253} player3 = getThingfromPos(player3pos) player4pos = {x = 1868, y = 1921, z = 9, stackpos = 253} player4 = getThingfromPos(player4pos) if getPlayerStorageValue(cid, storage) > os.time() or getPlayerStorageValue(player1.uid, storage) > os.time() or getPlayerStorageValue(player2.uid, storage) > os.time() or getPlayerStorageValue(player3.uid, storage) > os.time() or getPlayerStorageValue(player4.uid, storage) > os.time() then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text) doPlayerSendTextMessage(player1.uid, MESSAGE_STATUS_CONSOLE_BLUE, text) doPlayerSendTextMessage(player2.uid, MESSAGE_STATUS_CONSOLE_BLUE, text) doPlayerSendTextMessage(player3.uid, MESSAGE_STATUS_CONSOLE_BLUE, text) doPlayerSendTextMessage(player4.uid, MESSAGE_STATUS_CONSOLE_BLUE, text) return true end if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then player1level = getPlayerLevel(player1.uid) player2level = getPlayerLevel(player2.uid) player3level = getPlayerLevel(player3.uid) player4level = getPlayerLevel(player4.uid) questlevel = 100 if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then queststatus1 = getPlayerStorageValue(player1.uid, 6026) queststatus2 = getPlayerStorageValue(player2.uid, 6026) queststatus3 = getPlayerStorageValue(player3.uid, 6026) queststatus4 = getPlayerStorageValue(player4.uid, 6026) if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then demon1pos = {x = 1919, y = 1927, z = 12} demon2pos = {x = 1920, y = 1927, z = 12} demon3pos = {x = 1918, y = 1917, z = 12} demon4pos = {x = 1909, y = 1915, z = 12} demon5pos = {x = 1876, y = 1918, z = 11} demon6pos = {x = 1868, y = 1918, z = 12} doSummonCreature("Demon", demon1pos) doSummonCreature("Demon", demon2pos) doSummonCreature("Demon", demon3pos) doSummonCreature("Demon", demon4pos) doSummonCreature("Demon", demon5pos) doSummonCreature("Demon", demon6pos) nplayer1pos = {x = 1879, y = 1944, z = 10} nplayer2pos = {x = 1879, y = 1944, z = 10} nplayer3pos = {x = 1879, y = 1944, z = 10} nplayer4pos = {x = 1879, y = 1944, z = 10} doSendMagicEffect(player1pos, 2) doSendMagicEffect(player2pos, 2) doSendMagicEffect(player3pos, 2) doSendMagicEffect(player4pos, 2) doTeleportThing(player1.uid, nplayer1pos) doTeleportThing(player2.uid, nplayer2pos) doTeleportThing(player3.uid, nplayer3pos) doTeleportThing(player4.uid, nplayer4pos) doSendMagicEffect(nplayer1pos, 10) doSendMagicEffect(nplayer2pos, 10) doSendMagicEffect(nplayer3pos, 10) doSendMagicEffect(nplayer4pos, 10) doTransformItem(item.uid, item.itemid + 0) setPlayerStorageValue(cid, storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE NO PLAYER QUE PUXOU ALAVANCA PARA ADICIONAR UM CONTADOR PARA REFAZER NOVAMENTE setPlayerStorageValue(player1.uid, storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE NO PLAYER1 PARA ADICIONAR UM CONTADOR PARA REFAZER NOVAMENTE setPlayerStorageValue(player2.uid, storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE NO PLAYER2 PARA ADICIONAR UM CONTADOR PARA REFAZER NOVAMENTE setPlayerStorageValue(player3.uid, storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE NO PLAYER3 PARA ADICIONAR UM CONTADOR PARA REFAZER NOVAMENTE setPlayerStorageValue(player4.uid, storage, os.time() + (storage_time_minutes * 60)) -- ADICIONA STORAGE NO PLAYER4 PARA ADICIONAR UM CONTADOR PARA REFAZER NOVAMENTE else doPlayerSendCancel(cid, "Sorry, not possible.") end else doPlayerSendCancel(cid, "Sorry, not possible.") end else doPlayerSendCancel(cid, "Sorry, not possible.") end elseif item.itemid == 1945 then if getPlayerAccess(cid) == 3 then doTransformItem(item.uid, item.itemid - 1) else doPlayerSendCancel(cid, "Sorry, not possible.") end end end return true end Como você não informou o tempo desejado, eu coloquei o tempo em minutos e coloquei um valor genérico, coloquei 15 minutos. Se quiser alterar o tempo, só mudar o valor na variável storage_time_minutes. Eu coloquei para adicionar um exhaust para todos os 5 players (pelo que entendi, são 5, pois um puxa a alavanca e outros 4 ficam posicionados). Então, após concluírem esse evento, os 5 receberão o exhaust. Teste, e veja se é isso que quer.
  20. Muito bom! Obrigado por compartilhar essa informação! Vai ajudar outras pessoas interessadas nesse sistema futuramente. A questão neste tópico de suporte foi respondida e/ou o autor do tópico resolveu o problema. Este tópico está fechado e foi movido para Suporte - Resolvidos. Se você tiver outras dúvidas, crie um novo tópico.
  21. Esse Quickloot seria um sistema? Se for, precisa postar o código para te ajudar.
  22. Esse erro é porque provavelmente não tem verificação de se o pokémon atacante tem master, e o código deve estar sempre pegando um master. Você precisa postar o código para conseguir te ajudar.
  23. Pelo que você falou em outro tópico, você está usando uma base com TFS 0.3.6, e esse tópico é um pedido para TFS 1.2, por isso não funciona no seu servidor, porque a estrutura do código é diferente. Caso ainda queira um script como esse, crie um tópico para sua dúvida referente a versão correta da sua TFS. O pedido neste tópico de foi atendido e/ou o autor do tópico resolveu sua duvida. Este tópico está fechado e foi movido para Pedidos - Resolvidos. Se você tiver outros pedidos, crie um novo tópico.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...