Postado Janeiro 15, 2015 10 anos Esses monster são unicos da arena? Ou tem algum foa dela? STYLLER OT 2022
Postado Janeiro 16, 2015 10 anos Autor criei 2 sem querer e não consegui deletar.. :x então, alguém conhece a quest do Helmet of the Ancients do global? são várias salas.. eu peguei as mesmas salas com mesmo monstros, entre eles são: Dipthrah, Omruc, hand of cursed fate, necromancer.. enfim, eu só queria que o TP fosse liberado para partir para próxima quando todos os montros da sala forem mortos
Postado Janeiro 16, 2015 10 anos Solução Antes de tudo: caso você já tenha um script que dê início a esta missão (como, por exemplo, uma alavanca), coloque isso em tal script para verificar se o jogador já completou a quest: if getPlayerStorageValue(cid, 90182) > -1 then return doPlayerSendCancel(cid, "You already completed this quest.") end Se você não souber aonde colocar exatamente, ou não tiver o script que mencionei, avise que eu faço para você. Agora, vamos ao código do teleporte: Tag: <movevent type="StepIn" actionid="xxx" event="script" value="arenatp.lua"/> Troque xxx por um actionid que não esteja em uso no seu servidor. data/movements/scripts, arenatp.lua: local arenas = { [1] = { --Cada número representa uma room. fromPos = {x = x, y = y, z = z}, --Coordenadas da posição superior esquerda da arena. toPos = {x = x, y = y, z = z}, --Coordenadas da posição inferior direita da arena. pos = {x = x, y = y, z = z}, --Pra onde o player será teleportado. }, [2] = { fromPos = {x = x, y = y, z = z}, --Coordenadas da posição superior esquerda da arena. toPos = {x = x, y = y, z = z}, --Coordenadas da posição inferior direita da arena. pos = {x = x, y = y, z = z}, --Pra onde o player será teleportado. }, [3] = { fromPos = {x = x, y = y, z = z}, --Coordenadas da posição superior esquerda da arena. toPos = {x = x, y = y, z = z}, --Coordenadas da posição inferior direita da arena. pos = {x = x, y = y, z = z}, --Pra onde o player será teleportado. }, [4] = { fromPos = {x = x, y = y, z = z}, --Coordenadas da posição superior esquerda da arena. toPos = {x = x, y = y, z = z}, --Coordenadas da posição inferior direita da arena. pos = {x = x, y = y, z = z}, --Pra onde o player será teleportado. }, [5] = { fromPos = {x = x, y = y, z = z}, --Coordenadas da posição superior esquerda da arena. toPos = {x = x, y = y, z = z}, --Coordenadas da posição inferior direita da arena. pos = {x = x, y = y, z = z}, --Pra onde o player será teleportado. }, [6] = { fromPos = {x = x, y = y, z = z}, --Coordenadas da posição superior esquerda da arena. toPos = {x = x, y = y, z = z}, --Coordenadas da posição inferior direita da arena. pos = {x = x, y = y, z = z}, --Pra onde o player será teleportado. }, [7] = { fromPos = {x = x, y = y, z = z}, --Coordenadas da posição superior esquerda da arena. toPos = {x = x, y = y, z = z}, --Coordenadas da posição inferior direita da arena. pos = {x = x, y = y, z = z}, --Pra onde o player será teleportado. }, } local storage = 90181 local monsters = {"monster_name", "monster_name"} --Configure aqui os monstros que serão ignorados pelo script. function isThereSomeMonster(frompos, topos) for x = frompos.x, topos.x do for y = frompos.y, topos.y do local area = {x = x, y = y, z = frompos.z} local creature = getTopCreature(area).uid if creature > 0 and isMonster(creature) then if not isInArray(monsters, getCreatureName(creature)) then return true end end end end return false end function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end local arena = getPlayerStorageValue(cid, storage) < 1 and 1 or getPlayerStorageValue(cid, storage) if arenas[arena] then local _arena = arenas[arena] if getPlayerStorageValue(cid, 90182) > -1 then return doPlayerSendCancel(cid, "You already completed this quest.") and doTeleportThing(cid, fromPosition) elseif isThereSomeMonster(_arena.fromPos, _arena.toPos) then return doPlayerSendCancel(cid, "Kill all the monsters first.") and doTeleportThing(cid, fromPosition) else local msg = "You were teleported to the room "..(arena + 1)..". Good luck!" local new_value = arena + 1 if not arenas[arena + 1] then msg = "You completed all the rooms. Congratulations!" new_value = -1 setPlayerStorageValue(cid, 90182, 1) end doTeleportThing(cid, _arena.pos) doPlayerSendTextMessage(cid, 27, msg) setPlayerStorageValue(cid, storage, new_value) end end return true end Editado Janeiro 17, 2015 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
Postado Janeiro 16, 2015 10 anos Autor Não tenho nada que dê início, só um TP onde o player entra e cai direto na primeira sala. <movevent type="StepIn" actionid="xxx" event="script" value="arenatp.lua"/> Action ID="xxx" ? qual ID do teleport eu uso aqui?
Postado Janeiro 16, 2015 10 anos Você não vai usar nenhum ID de teleporte na tag, e sim um actionid qualquer. Por exemplo, 9018. Aí, no RME, você configura esse actionid nos teleportes (da primeira à sétima room). E me manda esse código de TP que você mencinou, no qual o jogador entra e cai na primeira sala. PS: Não coloquei nada relacionado a prêmios. Quando o jogador completar a última room, ele entrará no teleporte e será teleportado para a posição configurada. Você pode colocar, por exemplo, que ele seja teleportado para uma área de recompensas. Aí, se quiser, eu posso fazer o código para você (mas especifique como quer que o jogador obtenha os prêmios). Editado Janeiro 16, 2015 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.