-
Total de itens
2221 -
Registro em
-
Última visita
-
Dias Ganhos
60
Tudo que Yan Oliveira postou
-
Você precisa postar o código do Goback.lua.
-
[Resolvido] Alguem poderia por exausted na lavanca desse script pra mim por favor??
pergunta respondeu ao Diogo83 de Yan Oliveira em Resolvidos
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. -
[Resolvido] Alguem poderia por exausted na lavanca desse script pra mim por favor??
pergunta respondeu ao Diogo83 de Yan Oliveira em Resolvidos
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. -
[Resolvido] Alguem poderia por exausted na lavanca desse script pra mim por favor??
pergunta respondeu ao Diogo83 de Yan Oliveira em Resolvidos
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. -
[Resolvido] Alguem poderia por exausted na lavanca desse script pra mim por favor??
pergunta respondeu ao Diogo83 de Yan Oliveira em Resolvidos
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. -
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.
-
Esse Quickloot seria um sistema? Se for, precisa postar o código para te ajudar.
-
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.
-
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.
-
Poste o seu movements.xml, preciso ver se já existe um script para cada um desses dois itens, e se já existir, terei que mexer neles para conseguir fazer o que você pediu, se não, posso fazer um script novo.
-
Procura de entendidos em script/otclient pra um projeto ambicioso
tópico respondeu ao pedromax78 de Yan Oliveira em Formação de Equipes
Tópico movido para área de Formação de Equipes. @pedromax78 Favor, alterar o título do tópico de acordo com o seu projeto. Darei prazo de 48 horas para alterar, senão eu mesmo irei alterar o título. -
[Resolvido] ajuda converter para 1.2 versao 1098 tibia
pergunta respondeu ao Dilooow de Yan Oliveira em Resolvidos
De nada! Mas, eu não entendi, você pediu script de migração de 0.3.6 para 1.2, sendo que você estava usando uma base 0.3.6. Aí não vai funcionar mesmo amigo. Também foi corrigido um erro de coordenada na tabela dos monstros. 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. -
Primeiramente vá no Remere's Map Editor e adicione o seguinte uniqueid em todos os tiles da área desejada onde terá essa verificação de Soul : 19457 (Se esse uniqueid já estiver em uso, coloque outro). Agora vá em Data/Movements/Scripts e crie o arquivo tile_soul.lua e adicione o código: local soul_needed = 10 -- TOTAL DE SOUL QUE SERÁ REMOVIDO function onStepIn(cid, item, position, fromPosition) if not cid then return true end if getPlayerSoul(cid) < soul_needed then doPlayerSendCancel(cid, "You cannot access this area.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need to have " .. soul_needed .. (soul_needed > 1 and " souls" or " soul") .. " to access this area.") doTeleportThing(cid, fromPosition) else doPlayerAddSoul(cid, -soul_needed) doPlayerSendCancel(cid, "You lost " .. soul_needed .. (soul_needed > 1 and " souls." or " soul.")) end return true end Agora abra o movements.xml e adicione a tag: <movevent event="StepIn" uniqueid="19457" script="tile_soul.lua" /> Se usou outro uniqueid, mude o valor na tag xml. Teste e veja se vai dar erro.
-
[Resolvido] ajuda converter para 1.2 versao 1098 tibia
pergunta respondeu ao Dilooow de Yan Oliveira em Resolvidos
Cara, mas a versão do seu TFS é 1.2, 0.3.6 ou 0.4? -
[Resolvido] [PEDIDO] Scripts de spawn no mapa
pergunta respondeu ao rafersiq de Yan Oliveira em Resolvidos
De nada! Na próxima vez, coloque a resposta que resolveu seu problema como a melhor resposta para ajudar e facilitar outras pessoas com essa mesma dúvida no futuro. Dessa vez vou colocar para você. 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. -
Para negar entrada de players que carregam certos itens, precisa primeiramente adicionar uniqueid nos tiles da área no Remere's Map Editor. Então, abra o RME, vá na área desejada, e adicione o seguinte uniqueid para os tiles dentro da área: 18848 (certifique-se de que esse uniqueid já não está em uso, senão use outro). Após fazer isso, vá em Data/Movements/Scripts e crie o arquivo tile_access_item.lua e adicione o código dentro: -- ID DOS ITENS QUE VAI NEGAR O ACESSO DO PLAYER SE ELE CARREGAR NA BAG -- local items = { 2160, 2162, 15000, } function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end local items_forbidden = {} for _, value in ipairs(items) do if getPlayerItemById(value, true) then table.insert(items_forbidden, value) end end if #items_forbidden > 0 then local items_name = "" for _, value in ipairs(items_forbidden) do items_name = items_name ~= "" and getItemNameById(value) or (items_name .. "\n" .. getItemNameById(value)) end doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "You cannot enter here") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You cannot enter here holding the following itens: " .. items_name .. ".") end return true end Na tabela items coloque todos os id dos itens que se o player carregar ele não terá acesso à área. Agora abra o movements.xml e adicione a tag: <movevent type="StepIn" uniqueid="18848" event="script" value="tile_access_item.lua"/> Tem que colocar o uniqueid que colocou nos tiles no RME. Agora, sobre Fly/Ride/Surf eu preciso que você coloque seu order.lua da pasta actions para entender como trabalham com essas habilidades no seu servidor, pois, dependendo da base, é diferente a forma como fizeram o script.
-
Alguem poderia colocar para mim um empurrão nessa spell?
pergunta respondeu ao Sugismundo de Yan Oliveira em Scripts
E qual seria o critério e condição para que alvos não sejam afetados pelo empurrão? -
[Resolvido] ajuda converter para 1.2 versao 1098 tibia
pergunta respondeu ao Dilooow de Yan Oliveira em Resolvidos
Olhando o tópico agora eu entendi, e era o que eu imaginei, precisa somente do onStepIn, e não do onStepOut como você colocou no seu. E você também não copiou o código completo, faltou pegar o começo do arquivo onde contém a função principal onStepIn(cid, item, position, fromPosition). A questão é, o tile que você vai usar para isso, é exclusivamente só para isso ou você vai usar um tile que já usa em outra parte do mapa? Porque se for usar um tile que já está em uso no mapa, aí vai ter que trabalhar com uniqueid, porque se trabalhar com itemid, toda vez que alguém pisar nesse tile, independente da coordenada no mapa, vai cair na trap. Mas por via das dúvidas, vamos trabalhar com uniqueid. Primeiramente vai no Remere's Map Editor, e procura esse local onde vão ficar as traps no tile, e adicione o seguinte uniqueid para todos os tiles: 19737 (certifique-se de que esse uniqueid já não está sendo usado, se tiver, coloca outro valor). Agora, vai em Data/Movements/Scripts e crie o arquivo tile_trap.lua (ou outro nome de sua preferência) e adicione o seguinte código dentro: local storage = 14678 -- n mexa local time_summon = 1 -- tempo em minutos local seconds_remove = 30 -- TEMPO EM SEGUNDOS PARA REMOVER O MONSTRO local monsters = { {"cyclops", Position(157, 35, 7)}, {"Demon", Position(161, 38, 7)}, {"Hydra", Position(155, 38, 7)}, {"Dragon", Position(160, 39, 7)}, } function onStepIn(cid, item, position, fromPosition) if not cid or Game.getStorageValue(storage) >= os.time() then return true end local monster_random = math.random(1, #monsters) -- PARA VER QUAL MONSTRO VAI PEGAR DA TABELA ALEATORIAMENTE local monster = Game.createMonster(monsters[monster_random][1], monsters[monster_random][2]) -- CRIA O MONSTRO ALEATÓRIO if not monster then return true end cid:say("Oh my God, it's a trap!") -- REMOVE O MONSTRO -- addEvent(function() if monster then monster:remove() end end, seconds_remove * 1000) Game.setStorageValue(storage, os.time() + time_summon * 60) -- SÓ VAI CONTABILIZAR APÓS O MONSTRO SER DERROTADO OU REMOVIDO return true end Agora abre o movements.xml e adicione a tag: <movevent event="StepIn" uniqueid="19737" script="tile_trap.lua" /> Está pronto! Só testar. -
[Resolvido] ajuda converter para 1.2 versao 1098 tibia
pergunta respondeu ao Dilooow de Yan Oliveira em Resolvidos
Esse erro não tem haver com o código que eu fiz a conversão. Esse erro é que não foi encontrado o script summontile.lua no StepIn e StepOut porque provavelmente o script inteiro do arquivo é o que você passou no post e eu fiz a conversão para TFS 1.2, e como eu havia falado, está incompleto. Ou seja, como não tem as funções StepIn e StepOut, está dando erro ao carregar o arquivo no XML. Como que esse movements é para funcionar? Ao pisar em um tile (id específico) ou tile com uniqueid é para summonar os monstros? Porque, pelo que entendi, o que você quer só precisa de StepIn. -
Eu melhorei seu código, organizei e também deixei toda fala do player em minúscula para ficar mais fácil a verificação. Substitua o código por esse: 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 msg = string.lower(msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local storage_done = 77777 -- STORAGE PARA NÃO REPETIR A TASK local task = { ["ADM do Tibia"] = {{"Fire Devil", 50}, {"Demon", 6}}, } if msgcontains(msg, 'task') then if getPlayerStorageValue(storage_done) > 0 then selfSay("Você já concluiu minha task.", cid) return true end local sto = getMyTaskSto(cid, getNpcCid()) if isMyTaskComplete(cid, getNpcCid()) then selfSay("Muito bem , vc nos ajudou msm ,pegue seu bonus por terminar a task !!", cid) doPlayerAddExperience(cid, 2000000) --premio doPlayerAddItem(cid, 11447, 10) doPlayerAddItem(cid, 12244, 5) doPlayerAddItem(cid, 2159, 20) setPlayerStorageValue(cid, sto, -1) setPlayerStorageValue(cid, storage_done, 1) talkState[talkUser] = 0 return true else selfSay("Prazer sou o ADM desse mundo ,jah que es forte e ta aki ,que tal pegar essa task de matar {50 Fire Devil and 5 Demon}, voce aceita?", cid) talkState[talkUser] = 2 end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then if getMyTaskSto(cid, getNpcCid()) ~= -1 then selfSay("Voce jah pegou minha task , agr va temina-la", cid) talkState[talkUser] = 0 return true end local sto = getFreeTaskStorage(cid) if sto == -1 then selfSay("You can't catch more tasks! You are already with the maximum of "..(maxTasks).." tasks!", cid) talkState[talkUser] = 0 return true end selfSay("OK rapaiz... Va matar esses monstros ,e nao se preocupe cmg , eu pego sua task no final!!", cid) setStorageArray(cid, sto, task) talkState[talkUser] = 0 return true end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) O código está muito confuso, e como tem funções que trabalham com storage, pode ser que esteja vinculada à outros códigos, então não mexi. No caso, adicionei uma storage a mais só para finalizar a task e verificar. Se quiser, posso refazer essa task para você, mas nesse caso vai ter que criar um outro tópico para isso em Pedidos de Script. Teste esse script e veja se vai dar erro.
-
preciso de ajuda para corrigir erros na distro
pergunta respondeu ao Jpzera de Yan Oliveira em Scripts
Primeiramente, coloque o código dentro de spoiler ou códigos para ficar mais organizado e fácil de visualizar. A causa dos erros (mesmo que o 3 seja em outro script) é que os códigos em questão estão tentando fazer uma chamada global para a função hasTile() e seu servidor não tem essa função (método). Provavelmente você pegou esses scripts de algum lugar, e nesses scripts tem algumas funções no seu servidor. Poste o script que eu dou uma olhada. Seu servidor é TFS 1.2 mesmo? -
Tópico movido para Suport > Clients.
-
Isso é erro de Query (MySql), precisa postar o script para ver o problema.
-
[Resolvido] ajuda converter para 1.2 versao 1098 tibia
pergunta respondeu ao Dilooow de Yan Oliveira em Resolvidos
Primeira coisa, a versão da TFS (1.2) é diferente da versão do client (1098), pois o que você quer é código, que é da TFS (servidor). Esse código está incompleto! Pois de qual função ele é? De qual pasta ele está? Globalevents ou Creaturescripts? Mas eu vou fazer a migração desse bloco de código para 1.2. Vamos lá! Substitua o código por esse: local storage = 14678 -- n mexa local time_summon = 1 -- tempo em minutos local seconds_remove = 30 -- TEMPO EM SEGUNDOS PARA REMOVER O MONSTRO local monsters = { {"cyclops", Position(157, 35, 7)}, {"Demon", Position(161, 38, 7)}, {"Hydra", Position(155, 38, 7)}, {"Dragon", Position(160, 39, 7)}, } if not cid or Game.getStorageValue(storage) >= os.time() then return true end local monster_random = math.random(1, #monsters) local monster = Game.createMonster(monsters[monster_random][1], monsters[monster_random][2]) cid:say("Oh my God, it's a trap!") -- REMOVE O MONSTRO -- addEvent(function() if monster then monster:remove() end end, seconds_remove * 1000) Game.setStorageValue(storage, os.time() + time_summon * 60) -- SÓ VAI CONTABILIZAR APÓS O MONSTRO SER DERROTADO OU REMOVIDO return true end Adicionei um evento para remover o monstro após 30 segundos se ele não for derrotado. Teste e veja se dá algum erro. -
Primeiramente precisamos criar um event onDeath para quando o boss morrer. Vamos usar RevScript porque é melhor e mais fácil para esse caso. Vai em Data/Scripts/Creaturescripts e crie um arquivo chamada boss_enable_acess.lua (ou um nome de sua preferência) e adicione o código dentro: local event = CreatureEvent("boss_enable_access") -- VARIÁVEIS -- local enable_time = false -- SE QUER QUE O TELEPORT OU A PORTA TENHA UM TEMPO LIMITE DEIXE true, SE QUER QUE FIQUE ATÉ O SHUTDOWN DO SERVIDOR DEIXE false local time_hour = 0 -- SE QUER QUE O TELEPORT DURE POR MAIS DE 1 HORA, MUDE O VALOR DESEJADO EM HORAS DIFERENTE DE 0 local time_minutes = 60 -- PARA TRABALHAR COM HORAS DEIXE 60, ASSIM FICA MAIS FÁCIL MANIPULAR O TEMPO PELA VARIÁVEL DA HORA. local enable_teleport = true -- SE VAI HABILITAR TELEPORT DEIXA true, SE HABILITAR PORTA DEIXA false local id_teleport = 1387 -- ID DO TELEPORT local id_door = 1325 -- ID DA PORTA ---------- CÓDIGO --------- function event.onDeath(creature, corpse, killer, mostDamageKiller, lastHitUnjustified, mostDamageUnjustified) local item = nil if enable_teleport then local teleport_pos = Position(1500, 1500, 7) -- COORDENADA QUE O TELEPORT VAI APARECER local teleport_destination = Position(2000, 2000, 7) -- COORDENADA ONDE O TELEPORT VAI LEVAR item = Game.createItem(id_teleport, 1, teleport_pos) -- ITEM DO TELEPORT -- SE O ITEM DO TELEPORT NÃO EXISTIR -- if not item or item == nil then return false end item:setDestination(teleport_destination) -- SETA A POSIÇÃO DO TELEPORT else local door_pos = Position(1500, 1500, 7) -- COORDENADA QUE A DOOR VAI APARECER item = Game.createItem(id_door, 1, door_pos) -- ITEM DA DOOR if not item or item == nil then return false end end -- REMOVE TELEPORT/DOOR DEPOIS DO TEMPO DETERMINADO NAS VARIÁVEIS (VARIÁVEL enable_time = true) -- if enable_time then addEvent(function() item:remove() end, time_hour > 0 and ((60 * 60 * time_hour) * 1000) or ((60 * time_minutes) * 1000)) end return true end event:register() Está tudo comentado, da para entender fácil. Mas vou dar uma breve explicação, se quer que aparece teleport quando o boss morer, deixe true na variável enable_teleport, e se deixar false vai aparecer uma porta. Se quer que o teleport ou a porta seja removido depois de um tempo, primeiramente deixe o valor true na variável enable_time, se não deixe false. Caso for remover o item depois de um tempo, só configurar o tempo na variável time_hour caso queira trabalhar com horas, senão mude o valor na variável time_minutes caso queire trabalhar com minutos. Agora, precisamos registrar esse evento no monstro (boss) para que quando ele morrer, aconteça o que está no script acima. Então, vá em Data/Events/Scripts e abra o arquivo monster.lua e procure pelo bloco: function Monster:onSpawn(position, startup, artificial) Em baixo da função Monster:onSpawn(position, startup, artificial), adicione a seguinte linha: if self:getName() == "Boss" then self:registerEvent("boss_enable_access") end Onde está "Boss" você vai colocar o nome do Boss que quer que ao matar gere esse evento. Feito tudo isso, só testar.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.