Usa esse:
http://www.xtibia.com/forum/topic/177761-um-pet-system-diferente/page__fromsearch__1
Adiciona os storages e nomes como vc quiser e apenas troca o arquivo petsystem.lua por esse, o resto faz conforme esta la:
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
}
local textSay = {"Sim", "Nao", "Talves", "Nao intendi vc poderia repetir?"}
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
local t = string.explode(param, ",")
if t[1] == "say" then
if #summons > 0 then
doCreatureSay(summons[1], t[2], 1)
else
doPlayerSendCancel(cid,"Você possui Pet sumonado.")
end
return true
end
if t[1] == "conversa" then
if #summons > 0 then
doCreatureSay(summons[1], textSay[math.random(1,#textSay)], 1)
else
doPlayerSendCancel(cid,"Você possui Pet sumonado.")
return true
end
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