Ir para conteúdo

Sistema de Teleport por Item


Posts Recomendados

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:

 

tp0l.png

 

tp1c.png

 

tp2a.png

 

tp4w.png

 

tp3k.png

 

 

É 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 por PsyMcKenzie
Link para o comentário
Compartilhar em outros sites

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
Compartilhar em outros sites

×
×
  • Criar Novo...