Ir para conteúdo

zipter98

Membro
  • Registro em

  • Última visita

Tudo que zipter98 postou

  1. local id = xxx --ID do item. local posis = {{x = x, y = y, z = z}, {x = x, y = y, z = z}} --{{posição que o jogador deve ficar}, {posição para onde será teleportado}} function onUse(cid, item, frompos, item2, topos) if item2.itemid == id then if getThingPos(cid).x == posis[1].x and getThingPos(cid).y == posis[1].y and getThingPos(cid).z == posis[1].z then doTeleportThing(cid, posis[2]) else return doPlayerSendCancel(cid, "You aren't on the correct position.") end else return doPlayerSendCancel(cid, "You need use this on the correct item.") end return true end Na variável id, o item que me refiro é o segundo mencionado. Tag: <action itemid="xxx" event="script" value="arquivo.lua"/> PS: O itemid que deve ser configurado na tag é do primeiro item que você mencionou (aquele que vai ser usado no outro).
  2. Nesse caso, é melhor fazer um movement para substituir esse teleporte (assim, poderá ser checado se o jogador já completou ou não a quest). data/movements/scripts, crie um arquivo com extensão .lua e coloque o seguinte conteúdo: local pos = {x = 355, y = 278, z = 11} function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true elseif getPlayerStorageValue(cid, 90182) > -1 then return doPlayerSendCancel(cid, "You already completed this quest.") and doTeleportThing(cid, fromPosition) end doPlayerSendTextMessage(cid, 27, "You started the quest.") doTeleportThing(cid, pos) return true end Aí, em movements.xml, a tag seguirá o mesmo modelo daquela que enviei anteriormente (para o teleporte entre as salas). Porém, ao invés de colocar arenatp.lua como value, você colocará o nome do arquivo que foi criado para colocar o código acima + o sufixo .lua. Como actionid, você pode colocar qualquer um que não esteja em uso no seu servidor. Aí, no Remeres Map Editor, você configura o TP que teleporta o jogador para a primeira sala com o AID (actionid) colocado na tag.
  3. Você quer que o jogador receba os items automaticamente ao usar a chave no baú, ou quer que a chave apenas destranque o baú (aí, sim, o jogador poderá dar use neste baú e pegar as recompenas)? E não deu certo como, exatamente? Deu algum erro, ou apenas estava diferente do que você queria? Eu testei o código aqui, e funcionou perfeitamente.
  4. 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).
  5. local id = xxx --ID do baú. local reward = {item_id, quantity} --Prêmio da quest. function onUse(cid, item, frompos, item2, topos) if item2.itemid == id then if getPlayerStorageValue(cid, 90181) < 1 then doRemoveItem(item.uid, 1) doPlayerAddItem(cid, reward[1], reward[2]) doPlayerSendTextMessage(cid, 27, "You got your prize.") setPlayerStorageValue(cid, 90181, 1) else return doPlayerSendCancel(cid, "You already got your prize.") end end return true end
  6. Valeu pelo elogio. :3 E não precisa dar rep não hehe xD
  7. 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
  8. function onKill(cid, target) if isPlayer(cid) and isPlayer(target) == true then local heart = doPlayerAddItem(cid, 5943, 1) doItemSetAttribute(heart, "description", "Killed at " .. getPlayerLevel(target) .. " by " .. getPlayerName(cid) .. ".") doItemSetAttribute(heart, "name", "the "..getCreatureName(target).."'s heart") end return true end
  9. ^ É no segundo 'if valor >= getCreatureHealth(cid) then'. Ou, se preferir, você pode enviar seu exp.lua que eu configuro.
  10. local a = {0, 132, 145, 78, 109} print(a[math.random(#a)])
  11. local level = x --Level máximo para receber bless. function onLogin(cid) if getPlayerLevel(cid) <= level then for i = 1, 5 do doPlayerAddBlessing(cid, i) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You got blessed.") end return true end PS: Não precisa registrar nada no login.lua, visto que o callback é onLogin.
  12. doSetItemSpecialDescription só tem 2 parâmetros: uid e description E desse jeito adicionaria 2 items ao jogador. O correto seria criar uma variável com valor de doPlayerAddItem(cid, 5943, 1). Depois, no parâmetro uid, colocar o nome da variável que foi criada.
  13. Oi. Editei o código com outra função. Se possível, teste o novo script.
  14. local teleport = { tpId = 1387, --ID do teleport, tpDuration = 5, --Duração, em minutos. positions = { {{x = x, y = y, z = z, stackpos = 1}, {x = x, y = y, z = z}}, --{{onde o tp será criado}, {para onde o tp levará}}, {{x = x, y = y, z = z, stackpos = 1}, {x = x, y = y, z = z}}, {{x = x, y = y, z = z, stackpos = 1}, {x = x, y = y, z = z}}, {{x = x, y = y, z = z, stackpos = 1}, {x = x, y = y, z = z}}, }, } function onUse(cid, item, fromPosition, item2, toPosition) for i = 1, #teleport.positions do if getThingFromPos(teleport.positions[i][1]).uid > 0 then return doPlayerSendCancel(cid, "Os teleports já foram criados.") end doCreateTeleport(teleport.tpId, teleport.positions[i][2], teleport.positions[i][1]) addEvent(function() local items = getThingFromPos(teleport.positions[i][1]).uid if items > 0 then doRemoveItem(items, 1) end end, teleport.tpDuration * 60 * 1000) end return true end
  15. E assim? local storage = 105977 local itemid, charges = 2197, 100 local msg = "Voce achou um Stone Skin Amulet com 100 cargas." function onUse(cid, item) if getPlayerStorageValue(cid, storage) < 1 then local items = doCreateItemEx(itemid) doItemSetAttribute(items, 'charges', charges) doPlayerAddItemEx(cid, items, true) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, msg) setPlayerStorageValue(cid, storage, 1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce ja fez esta quest.") return true end return true end Testei aqui, e funcionou perfeitamente.
  16. local test = createCombatArea{ {1, 1, 1}, {1, 2, 1}, {1, 1, 1} } function onUse(cid, item, frompos, itemEx, topos) doAreaCombatHealth(cid, COMBAT_PHYSICALDAMAGE, getThingPos(cid), test, -5, -1000, CONST_ME_MAGIC_BLUE) return true end
  17. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    local delay = 10 --Delay entre os effects. local storage = xxx --Storage. local effect = xxx --Efeito. local function sendContinuousEffect(cid, key) if isPlayer(cid) and getPlayerStorageValue(cid, key) > -1 then doSendMagicEffect(getThingPos(cid), effect) addEvent(function() sendContinuousEffect(cid, key) end, delay * 1000) end end function onLogin(cid) sendContinuousEffect(cid, storage) return true end
  18. data/globalevents/scripts, CTFMax.lua. Troque: function onTimer(interval) por: function onTime()
  19. O monstro que vai ser summonado é aleatório?
  20. Try using getItemInfo(itemid).floorChange. For example: if getItemInfo(itemEx.itemid).floorChange then return doSendMagicEffect(toPosition, 2) and doPlayerSendCancel(cid, "Sorry, not possible.") end

Informação Importante

Confirmação de Termo