PsyMcKenzie 150 Postado Abril 23, 2013 Share Postado Abril 23, 2013 (editado) Sistema de Teleport por Item E ai galera, Suave? Hoje vim trazer um sistema bem legal pra vocês, dessa vez demorei um pouco, pois tive dificuldade com uma parte do script. Mas vamos lá! Primeiramente, adicione essas duas funções na lib. Vá em data/lib, abra o arquivo functions.lua, e cole no final dele estas duas funções: function doMarkPos(cid, posx, posy, posz) setPlayerStorageValue(cid, 19000, posx) setPlayerStorageValue(cid, 19001, posy) setPlayerStorageValue(cid, 19002, posz) end function getMarkPos(cid) return {x=getPlayerStorageValue(cid, 19000), y=getPlayerStorageValue(cid, 19001), z=getPlayerStorageValue(cid, 19002)} end Agora vamos ao script! Em data/actions/scripts, copie um arquivo .lua e renomeie para estatue.lua e coloque isso dentro: function onUse(cid, item, frompos, item2, topos) local pos = getCreaturePosition(cid) if item.actionid == 3030 then if getPlayerStorageValue(cid, 12345) == -1 then if getMarkPos(cid).x < 1 then doMarkPos(cid, pos.x, pos.y, pos.z) itemv = doPlayerAddItem(cid, 4863, 1) doSetItemActionId(itemv, 3032) doItemSetAttribute(itemv, "description", "Recipiente Vazio") doPlayerSendTextMessage(cid, 22, "Posição salva") setPlayerStorageValue(cid, 12345, 1) else doPlayerSendTextMessage(cid, 22, "Você já tem uma posição salva") end end end if item.actionid == 3032 then doPlayerSendTextMessage(cid, 22,'Para você ser teleportado, você presisa carregar isto com magia') end if item.actionid == 3031 then setPlayerStorageValue(cid, 12345, -1) setPlayerStorageValue(cid, 12346, -1) doPlayerRemoveItem(cid, 4864, 1) doTeleportThing(cid, getMarkPos(cid)) doSendMagicEffect(getMarkPos(cid),10) doMarkPos(cid, 0, 0, 0) doPlayerSendTextMessage(cid, 22,'Você foi teleportado') end return true end Em actions.xml adicione as tags: <action actionid="3032" event="script" value="estatue.lua"/> <action actionid="3031" event="script" value="estatue.lua"/> <action actionid="3030" event="script" value="estatue.lua"/> 3030 é o action id, que você irá colocar na estatua pelo map editor. Agora em data/talkactions/scripts, copie um arquivo .lua e renomeie para encherrecipiente.lua e coloque isso dentro: function onSay(cid, words, param) posp = getCreaturePosition(cid) mana = getCreatureMana(cid) if getPlayerStorageValue(cid, 12345) == 1 then if getPlayerStorageValue(cid, 12346) == -1 then if getPlayerItemCount(cid,4863) > 0 then if mana >= 300 then local itemv = doPlayerAddItem(cid, 4864,1) doSetItemActionId(itemv, 3031) doItemSetAttribute(itemv, "description", "Recipiente Cheio") doPlayerAddMana(cid, -mana) doPlayerRemoveItem(cid, 4863,1) doPlayerSendTextMessage(cid, 22,'Você carregou o recipiente de magia') doSendMagicEffect(posp,29) doSendMagicEffect(posp,17) setPlayerStorageValue(cid, 12346, 1) else doPlayerSendTextMessage(cid, 22, 'Você não tem mana suficiente para carregar o recipiente de magia') end else doPlayerSendTextMessage(cid, 22,'Você precisa de um recipiente de magia vazio') end else doPlayerSendTextMessage(cid, 22,'Você ja encheu o recipiente com magia') end end end Em talkactions.xml adicione a tag: <talkaction words="!carregarfonte" event="script" value="encherrecipiente.lua"/> Imagens: É isso galera, espero que tenham gostado e que possa servir pra alguém! Abraços e até a próxima! Créditos: Demonbholder - Pelas funções. Editado Abril 23, 2013 por PsyMcKenzie Link para o comentário https://xtibia.com/forum/topic/212913-sistema-de-teleport-por-item/ Compartilhar em outros sites More sharing options...
Gears 109 Postado Abril 23, 2013 Share Postado Abril 23, 2013 Nessa talk seria melhor criar 2 variáveis locais para não dar conflito no resto do servidor.. Tomai, os 2 codigos identados, action: function onUse(cid, item, frompos, item2, topos) local itemv = doPlayerAddItem(cid, 4863, 1) local pos = getCreaturePosition(cid) if item.actionid == 3030 then if getPlayerStorageValue(cid, 12345) == -1 then if getMarkPos(cid).x < 1 then doMarkPos(cid, pos.x, pos.y, pos.z) doSetItemActionId(itemv, 3032) doItemSetAttribute(itemv, "description", "Recipiente Vazio") doPlayerSendTextMessage(cid, 22, "Posição salva") setPlayerStorageValue(cid, 12345, 1) else doPlayerSendTextMessage(cid, 22, "Você já tem uma posição salva") end end end if item.actionid == 3032 then doPlayerSendTextMessage(cid, 22,'Para você ser teleportado, você presisa carregar isto com magia') end if item.actionid == 3031 then setPlayerStorageValue(cid, 12345, -1) setPlayerStorageValue(cid, 12346, -1) doPlayerRemoveItem(cid, 4864, 1) doTeleportThing(cid, getMarkPos(cid)) doSendMagicEffect(getMarkPos(cid),10) doMarkPos(cid, 0, 0, 0) doPlayerSendTextMessage(cid, 22,'Você foi teleportado') end return true end Talkaction : function onSay(cid, words, param) local posp = getCreaturePosition(cid) local mana = getCreatureMana(cid) local itemv = doPlayerAddItem(cid, 4864,1) if getPlayerStorageValue(cid, 12345) == 1 then if getPlayerStorageValue(cid, 12346) == -1 then if getPlayerItemCount(cid,4863) > 0 then if mana >= 300 then doSetItemActionId(itemv, 3031) doItemSetAttribute(itemv, "description", "Recipiente Cheio") doPlayerAddMana(cid, -mana) doPlayerRemoveItem(cid, 4863,1) doPlayerSendTextMessage(cid, 22,'Você carregou o recipiente de magia') doSendMagicEffect(posp, 29) doSendMagicEffect(posp, 17) setPlayerStorageValue(cid, 12346, 1) else doPlayerSendTextMessage(cid, 22, 'Você não tem mana suficiente para carregar o recipiente de magia') end else doPlayerSendTextMessage(cid, 22,'Você precisa de um recipiente de magia vazio') end else doPlayerSendTextMessage(cid, 22,'Você ja encheu o recipiente com magia') end end end Link para o comentário https://xtibia.com/forum/topic/212913-sistema-de-teleport-por-item/#findComment-1509594 Compartilhar em outros sites More sharing options...
PsyMcKenzie 150 Postado Abril 23, 2013 Autor Share Postado Abril 23, 2013 Obrigado Gears. Se puder comentar o que achou do sistema, ficarei agradecido. Link para o comentário https://xtibia.com/forum/topic/212913-sistema-de-teleport-por-item/#findComment-1509615 Compartilhar em outros sites More sharing options...
MaXwEllDeN 89 Postado Abril 23, 2013 Share Postado Abril 23, 2013 Cara, a ideia em sí é bem bacana, só não gostei da quantidade de gambiarra que tem, e da criação de uma função pra isso, não precisava criar essas funções ai hein! Link para o comentário https://xtibia.com/forum/topic/212913-sistema-de-teleport-por-item/#findComment-1509676 Compartilhar em outros sites More sharing options...
PsyMcKenzie 150 Postado Abril 24, 2013 Autor Share Postado Abril 24, 2013 POAG. Programação Orientada a Gambiarras. UAHSHUASUHASHU' Foi mal mano, ainda sou iniciante ;/ Mas vou tentar melhorar! Obrigado Max. Link para o comentário https://xtibia.com/forum/topic/212913-sistema-de-teleport-por-item/#findComment-1509812 Compartilhar em outros sites More sharing options...
Posts Recomendados