Ir para conteúdo

Bodak Reborn

Membro
  • Registro em

  • Última visita

Tudo que Bodak Reborn postou

  1. Sim, mas queria saber se teria que mudar algo nos scripts sobre a pokedex. Sobre o tópico: você substituiu a pasta "game_textwindow"?
  2. 3 (segundos) * 60 (segundos) = 180 segundos 180 segundos = 3 minutos.
  3. actions/scripts nome_arquivo.lua function onUse(cid, item, frompos, item2, topos) local storage = 546236 local timeToCall = 3 -- tempo em minutos. if getGlobalStorageValue (storage) < os.time() then doBroadcastMessage ("[QUEST CALL] O jogador "..getCreatureName (cid).." está esperando ajuda para fazer a quest 'tal'") setGlobalStorageValue (storage, timeToCall * 60 + os.time()) end return true end XML: <action actionid="ACTION_ID" script="nome_arquivo.lua"/>
  4. Bodak Reborn postou uma resposta no tópico em Suporte Tibia OTServer
    Ué, qual erro da na distro?
  5. Delay por player ou global?
  6. Tenta assim: function doRegenerateWithY(cid, sid) if isPlayerOnline(cid) then local ball = getPlayerSlotItem(cid, 8) or getPlayerSlotItem(getCreatureMaster(cid), 8) local Tiers = { [1] = {bonus = Regen1}, [2] = {bonus = Regen2}, [3] = {bonus = Regen3}, [4] = {bonus = Regen4}, [5] = {bonus = Regen5}, [6] = {bonus = Regen6}, [7] = {bonus = Regen7}, } if isPlayer(cid) and #getCreatureSummons(cid) > 0 then local Tier = getItemAttribute(ball.uid, "heldy") if Tier and Tier > 0 and Tier < 8 then if not getCreatureCondition(cid, CONDITION_INFIGHT) then if getCreatureHealth(sid) < getCreatureMaxHealth(sid) then addEvent(function() doCreatureAddHealth(sid,Tiers[Tier].bonus) doSendAnimatedText(getThingPos(sid), "+ "..Tiers[Tier].bonus, 30) end, 0) end addEvent(doRegenerateWithY, 1000, cid, sid) end end end end end
  7. Bom, vamos lá. Não consegui fazer de um jeito "automático", demorei por isso. Só consegui fazer automático com o storage para todos os pokémons. Espero que fazer "manualmente" não te atrapalhe tanto. Para cada Giant pokémon, um novo arquivo e uma nova tag deve ser criada em actions. O ID do item invisível/baú deve ser diferente também. Lembrando que pelo jeito que eu fiz, você deve criar um item novo. Se não fizer, ao clicar em um item com o mesmo ID que este, você receberá a recompensa. globalevents/scripts nome_arquivo.lua Este vai fazer o monstro aparecer. function onThink(cid, interval, lastExecution) local bosses = { [1] = {name = "Giant Primeape", times = 3, pos = {[1] = {x=1050, y=1054, z=7}, [2] = {x=1051, y=1054, z=7}, [3] = {x=1052, y=1054, z=7}}}, [2] = {name = "Giant Wigglytuff", times = 1, pos = {[1] = {x=1045, y=1053, z=7}}}, -- [um numero maior que o de cima] = nome do monstro, quantas vezes ele vai spawnar (deve ser igual ao numero de posições), posições que ele vai spawnar. } local boss = math.random (#bosses) for i = 1, bosses[boss].times do doSummonCreature(bosses[boss].name, bosses[boss].pos[i]) end doBroadcastMessage("Um World Boss acaba de aparecer!") return true end globalevents/scripts nome_arquivo.lua Este vai fazer o monstro desaparecer. function onThink(cid, interval, lastExecution) local from1 = {x = 1046, y = 1048, z = 7} -- canto superior esquerdo da área que irá spawnar o Giant. local to1 = {x = 1055, y = 1059, z = 7} -- canto inferior direito da área que irá spawnar o Giant. for x = from1.x, to1.x do for y = from1.y, to1.y do for z = from1.z, to1.z do local pos = {x = x, y = y, z = z, stackpos = 253} local monsterTile = getThingfromPos(pos).uid if isMonster(monsterTile) and getCreatureName (monsterTile) == "Giant Primeape" then doRemoveCreature(monsterTile) end end end end doBroadcastMessage ("O World Boss sumiu!") return true end XML: <globalevent name="spawnWorldBoss" interval="14400" script="nome_arquivo.lua"/> <globalevent name="removeWorldBoss" interval="3600" script="nome_arquivo.lua"/> creaturescripts/scripts nome_arquivo.lua local bosses = { [1] = {name = "Giant Primeape", item = 12163, storage = 6151321}, [2] = {name = "Giant Wigglytuff", item = 12170, storage = 6151322}, -- [um número mais que o de cima] = {nome do monstro, ID do item, storage para verificar se o player matou o monstro. O storage deve ser diferente dos demais, recomendo ser 1 número maior que o de cima}, -- lembre-se de colocar a vírgula no final. } local timeToRemove = 60 -- tempo em segundos para remover o item invisível/baú. local effect = 27 -- efeito que vai sair do player ao matar o pokémon. local function doCreateItemWithDelay (item, position) doCreateItem(item, 1, position) return true end local function doRemoveItemWithDelay (item, position) local tileItem = getTileItemById(position, item).uid if tileItem ~= 0 then doRemoveItem(tileItem, 1) end return true end function onKill(cid, target) for i = 1, #bosses do if isInArray(bosses[i].name, getCreatureName(target)) then if getPlayerStorageValue (cid, bosses[i].storage) ~= 1 then doPlayerSendTextMessage (cid, 19, "Agora você pode pegar a sua recompensa!") doSendMagicEffect (getThingPos (cid), effect) setPlayerStorageValue (cid, bosses[i].storage, 1) end addEvent(doCreateItemWithDelay, 1, bosses[i].item, getCreaturePosition(target)) addEvent(doRemoveItemWithDelay, timeToRemove * 1000, bosses[i].item, getCreaturePosition(target)) end end return true end XML: <event type="kill" name="worldBoss" event="script" value="nome_arquivo.lua"/> Registre o evento em login.lua. registerCreatureEvent(cid, "worldBoss") actions/scripts nome_arquivo.lua local config = { item = 2160, -- ID do item que será adicionado. qnt = 5, -- quantidade de itens que será adicionado. timeOut = 4, -- tempo em horas para poder pegar o prêmio deste pokémon novamente. exhausted = 102548, -- esse é o storage do exhausted, um monstro sempre tem que ser diferente do outro. Recomendo colocar um número maior. storage = 6151321, -- storage para verificar se o jogador matou o monstro. Deve ser o mesmo do creaturescripts, para cada monstro. effect = 28, -- efeito que vai sair em cima do player ao dar use no item. } local function timeToCheckIfKillMonster (cid, storage) setPlayerStorageValue (cid, storage, -1) return end function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue (cid, config.storage) == 1 then if getPlayerStorageValue (cid, config.exhausted) < os.time() then doPlayerAddItem (cid, config.item, config.qnt) doPlayerSendTextMessage (cid, 19, "Parabéns! Você derrotou o Giant Primeape!") doSendMagicEffect (getThingPos(cid), config.effect) setPlayerStorageValue (cid, config.exhausted, config.timeOut * 60 * 60 + os.time()) addEvent(timeToCheckIfKillMonster, config.timeOut * 1000 * 60 * 60 , cid, config.storage) else doPlayerSendTextMessage (cid, 19, "Você só poderá receber o prêmio do Giant Primeape em algumas horas.") end else doPlayerSendTextMessage (cid, 19, "Você não derrotou o Giant Primeape.") end return true end XML: <action itemid="ID_DO_ITEM_QUE_SERÁ_DROPADO_NA_POSIÇÃO_DO_MONSTRO" event="script" value="nome_arquivo.lua"/> OBS: No XML do globalevents, o interval é em segundos. 14400 = 4 horas em segundos, 3600 = 1 hora em segundos. OBS2: No script que remove o monstro, caso queira adicionar mais áreas, você deve criar uma nova variável, ficando assim: local from1, from2, from3 = posição do canto superior esquerdo da área (from1), posição do canto superior esquerdo da área (from2), posição do canto superior esquerdo da (from3) local to1, to2, to3 = posição do canto inferior direito da área (to1), posição do canto inferior direito da área (t2), posição do canto inferior direito da área (to3) Exemplo: local from1, from2, from3 = {x = 1046, y = 1048, z = 7}, {x = 1046, y = 1048, z = 7}, {x = 1030, y = 1032, z = 7} local to1, to2, to3 = {x = 1055, y = 1059, z = 7}, {x = 1055, y = 1059, z = 7}, {x = 1020, y = 1025, z = 7} Lembre-se: sempre separado por vírgulas. E também, criar um novo bloco de for, copiando o de cima e trocando apenas o número do from/to e o nome do monstro, exemplo: for x = from1.x, to1.x do for y = from1.y, to1.y do for z = from1.z, to1.z do local pos = {x = x, y = y, z = z, stackpos = 253} local monsterTile = getThingfromPos(pos).uid if isMonster(monsterTile) and getCreatureName (monsterTile) == "Giant Primeape" then doRemoveCreature(monsterTile) end end end end for x = from2.x, to2.x do for y = from2.y, to2.y do for z = from2.z, to2.z do local pos = {x = x, y = y, z = z, stackpos = 253} local monsterTile = getThingfromPos(pos).uid if isMonster(monsterTile) and getCreatureName (monsterTile) == "Giant Wigglytuff" then doRemoveCreature(monsterTile) end end end end for x = from3.x, to3.x do for y = from3.y, to3.y do for z = from3.z, to3.z do local pos = {x = x, y = y, z = z, stackpos = 253} local monsterTile = getThingfromPos(pos).uid if isMonster(monsterTile) and getCreatureName (monsterTile) == "Giant Scyther" then doRemoveCreature(monsterTile) end end end end Espero que tenha entendido. =) Para remover os pokémons automaticamente, adaptei um script de Jamison Collins/IagoNp.
  8. Se tu me dissesse como você inseriu ela no seu servidor, eu poderia dizer como remover a outra... ;p
  9. Bodak Reborn postou uma resposta no tópico em Suporte Tibia OTServer
    Utilize a ferramenta de pesquisa antes de postar.
  10. O storage temporário seria para qualquer boss ou apenas para um boss específico que o player matou?
  11. Caso ninguém te ajudar até amanhã, eu vejo isso. Estou com dor de cabeça e torcicolo.
  12. Primeira coisa: está funcionando? Não testei, gostaria que alguém me desse esse retorno. Sobre sua pergunta: sim, tem como, mas teria que fazer algumas outras verificações, pelo fato do mesmo item fazer duas coisas. Amanhã eu faço, são algumas modificações chatinhas e no momento estou com dor de cabeça e com torcicolo.
  13. Caso queira que ele fique com 1 de hp: function onStepIn(cid, item, position, fromPosition) local storage = 318926 -- storage da quest. if getPlayerStorageValue (cid, storage) ~= 1 then local lessHealth = (getCreatureHealth (cid) + 1) - getCreatureHealth (cid) doCreatureAddHealth (cid, -lessHealth) end return true end
  14. Receberia 990 de dano, mano vê, quero ele receba um dano de 99% do hp total,nesse caso, assim q ele pisar no espinho estaria no RED (quase morrendo). @Droox
  15. function onStepIn(cid, item, position, fromPosition) local storage = 318926 -- storage da quest. if getPlayerStorageValue (cid, storage) ~= 1 then local percent = 1 -- porcentagem que será removida. local lessHealth = (getCreatureHealth (cid) * percent)/100 doCreatureAddHealth (cid, -lessHealth) end return true end Em um post você diz vida máxima e no outro atual... Fiz com a atual.
  16. Essas são as tabelas da sua database, é suposto elas estarem lá, se não, nunca vai funcionar. Quando você abre o site com este código, qual erro é aparece?
  17. 1% de 1000 é 10, logo, receberia 990 de dano. Volto a perguntar, 1 de hp ou 1%?
  18. Execute esse código e me diga o que imprime na distro. function onUse(cid, item, frompos, item2, topos) local pos = {x=828,y=743,z=7} local poss = {x=845,y=745,z=7} local item = 1616 print (1) if getTileItemById (pos, item).uid == 1 then doTeleportThing (cid, poss) print (2) elseif getTileItemById (pos, item).uid == 0 then print (3) doCreatureAddHealth (cid, -getCreatureMaxHealth (cid)) end return true end
  19. E quais são os erros..?
  20. Ah sim, entendo. Boa sorte nos seus estudos. =)
  21. Utilize a ferramenta de pesquisa antes de postar.

Informação Importante

Confirmação de Termo