Fiz o script pra ti, foi complicadinho mais até eu gostei =)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Vamos começar com os talkactions.
Primeiro vai em data/talkaction/scripts, duplica dois arquivos. Um você nomeia para "petsystem" sem as aspas e o outro para "petrevive" sem as aspas.
Agora no petsystem.lua cole:
local petNames = {"RAT","DRAGON","DEMON"}
local petStorage = {
["RAT"] = 203105, -- storage do pet 1
["DRAGON"] = 203106, -- storage do pet 2
["DEMON"] = 203107 -- storage do pet 3
}
function onSay(cid, words, param, channel)
local summons = getCreatureSummons(cid)
if param == "" then
local text = "Você não possui pets!"
local o = 0
for i=1, #petNames do
if getPlayerStorageValue(cid, petStorage[petNames[i]]) > 0 then
o = o + 1
if o == 1 then
text = o.." - ".. string.lower(petNames[i]) .."\n"
else
text = text.. o .." - ".. string.lower(petNames[i]) .."\n"
end
end
end
doShowTextDialog(cid,8977,text)
return true
end
if param == "back" then
for k = 1, #summons do
pet = getCreatureName(summons[k])
doCreatureSay(cid, string.lower(pet) ..", back!", 1)
doRemoveCreature(summons[k])
setPlayerStorageValue(cid, petStorage[pet], 1)
end
return true
end
param = string.upper(param)
if isInArray(petNames, param) then
if getPlayerStorageValue(cid, petStorage[param]) == -1 then
doPlayerSendCancel(cid,"Você não possui esse Pet.")
return true
elseif getPlayerStorageValue(cid, petStorage[param]) == 1 then
if getTilePzInfo(getCreaturePosition(cid)) == false then
x = doSummonCreature(param, getCreaturePosition(cid))
doConvinceCreature(cid, x)
doCreatureSay(cid, string.lower(param) ..", go!", 1)
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 2)
setPlayerStorageValue(cid, petStorage[param], 2)
else
doPlayerSendTextMessage(cid, 22, "Você não pode sumonar seu Pet em Pz.")
return true
end
elseif getPlayerStorageValue(cid, petStorage[param]) == 2 and #summons > 0 then
doPlayerSendTextMessage(cid, 22, "Seu Pet esta sumonado, fale !pet back.")
return true
else
doPlayerSendTextMessage(cid, 22, "Seu Pet esta morto, fale !petrevive nomedopet para revivelo.")
return true
end
else
doPlayerSendCancel(cid,"Esse Pet não existe.")
end
return true
end
Depois no petrevive.lua cole:
local petNames = {"RAT","DRAGON","DEMON"}
local petInfos = {
["RAT"] = {storage = 203105, custo = 2000}, -- nome do pet, storage do pet, custo para reviver pet.
["DRAGON"] = {storage = 203106, custo = 4000},
["DEMON"] = {storage = 203107, custo = 6000}
}
function onSay(cid, words, param, channel)
local summons = getCreatureSummons(cid)
param = string.upper(param)
if isInArray(petNames, param) then
if getPlayerStorageValue(cid, petInfos[param].storage) == -1 then
doPlayerSendCancel(cid,"Você não possui esse Pet.")
return true
elseif getPlayerStorageValue(cid, petInfos[param].storage) == 2 and #summons == 0 then
if doPlayerRemoveMoney(cid, petInfos[param].custo) then
doSendMagicEffect(getThingPos(cid), 3) -- troque o 2 pelo efeito desejado
setPlayerStorageValue(cid, petInfos[param].storage, 1)
doPlayerSendTextMessage(cid, 22,"Seu Pet foi revivido")
return true
else
doPlayerSendTextMessage(cid, 22,"Você não possui ".. (petInfos[param].custo) .." gps.")
return true
end
else
doPlayerSendCancel(cid,"Seu Pet não esta morto.")
return true
end
else
doPlayerSendCancel(cid,"Esse Pet não existe.")
end
return true
end
Agora em talkactions.xml cole as tags:
<talkaction words="!pet" event="script" value="petsystem.lua"/>
<talkaction words="!petrevive" event="script" value="petrevive.lua"/>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Pronto, terminado a parte de talkactions, agora vamos para as actions.
Vai na pasta data/actions/scripts, duplica um arquivo e nomeia para "egg_one" sem as aspas e nele cole:
function onUse(cid, item, fromPosition, itemEx, toPosition)
local petGain = {pet = "Rat", storage = 203105} -- nome do pet, storage.
if getPlayerStorageValue(cid, petGain.storage) <= 0 then
setPlayerStorageValue(cid, petGain.storage, 1)
doPlayerSendTextMessage(cid, 22,"Você recebeu um novo Pet: ".. petGain.pet ..".")
doSendMagicEffect(getThingPos(cid), 28) -- troque o 28 pelo efeito desejado
doRemoveItem(item.uid, 1)
else
doPlayerSendTextMessage(cid, 22,"Você ja possui esse Pet.")
doSendMagicEffect(getThingPos(cid), 2)
end
return TRUE
end
E por fim, em actions.xml cole a tag:
<action itemid="iddoovo1" script="egg_one.lua"/>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bom agora vou te explicar como vai funcionar:
Primeiro você deve fazer mais arquivos nos actions com todos os eggs que você quiser e a unica linha que vc deve configurar é essa:
local petGain = {pet = "Rat", storage = 203105} -- nome do pet, storage.
E ir adicionando mais tags no actions.xml conforme adicionar mais eggs nos scripts.
No petsystem.lua, voce deve configurar essas linhas:
local petNames = {"RAT","DRAGON","DEMON"}
local petStorage = {
["RAT"] = 203105,
["DRAGON"] = 203106,
["DEMON"] = 203107
}
Alterando os nomes dos pets para os que voce adicionou nos actions e seus respectivos storages, lembrando que para funcionar perfeitamente sempre adicionar os nomes com letras maiusculas e após o último storage não coloque virgula.
E no petrevive.lua, essas são as linhas configuraveis:
local petNames = {"RAT","DRAGON","DEMON"}
local petInfos = {
["RAT"] = {storage = 203105, custo = 2000}, -- nome do pet, storage do pet, custo para reviver pet em gps.
["DRAGON"] = {storage = 203106, custo = 4000},
["DEMON"] = {storage = 203107, custo = 6000}
}
Você deve configura-lo como o script anterior apenas adicionando os custos para o pet ser revivido.
------------------------------------------------------------------------------------------------------------------------------------------------------------------
É isso aew, os comandos que você vai usar com o player são:
!pet -- mostrar lista de pets que você possui.
!pet NomeDoPet -- invocar pet, quaso você tenha.
!pet back -- retornar pet.
!petrevive NomeDoPet -- reviver pet morto.