Ir para conteúdo
  • 0

Um Pet System Diferente


PedroBNC

Pergunta

Tipo do script: Pet System

 

Protocolo (versão do Tibia): 8.54

 

Servidor utilizado: TFS 0.3.6

 

Nível de experiência: Intermediario

 

Adicionais/Informações:

 

Um dia eu estava pensando oque fazer com os coulored eggs e com o hydra egg, que no meu ot estão sem função, entao pensei... que tal eles serem Pet Eggs e dropem de seus respectivos monstros (Hydra egg, dropar de hydra) e ao usar o ovo foce adcionado ao personagem o pet do respectivo ovo, esse pet poderia ser invocado e poder regressar para o personagem falando !pet < para retornar e ser invocado.

 

Resumo: Seria usado um ovo, que ao ser usado desapareceria e adcionaria ao personagem um pet ja que são varios coloured eggs cada um tem que ser um pet, e se o pet morrer ter que falar !revive e pagar 20k para revivelo assim podendo usa-lo novamente,

Coloured egg 1: Cave Rat

Coloured egg 2: Wolf

Coloured egg 3: Dragon Hatchiling

Coloured egg 4: Dragon Lord Hatchiling

Coloured egg 5: Frost Dragon Hatchiling

Hydra egg : Hydra (aváh)

 

 

 

Vamo ver quem é que vai conseguir fazer esse script.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

crie um arquivo em actions/scripts nome egg.lua e bote isso dentro

function onUse(cid, item, fromPosition, itemEx, toPosition)

 

local egg = {

["Amarelo"] = {id = 6541, mon = "Cave Rat"},

["Roxo"] = {id = 6545, mon = "Wolf"}

}

 

for k,v in pairs(egg) do

if item.itemid == v.id then

x = doSummonCreature(v.mon, getCreaturePosition(cid))

doConvinceCreature(cid, x)

doPlayerRemoveItem(cid, v.id, 1)

end

end

end

agora vá em actions.xml e adc isso dentro

<action itemid="6541;6545" event="script" value="egg.lua"/>

lembreçe de verificar se os id's ja estão sendo usados e se tiverem apague ele e só deixe o da tag acima.

 

Como adc novo monstros e novos itens

 

["Cor do ovo (Tambem Pode Usar um nome de item )"] = {id = ( Aqui fica o Id Do item ), mon = "( Aqui o Nome do monstro, não esqueça de por exatamente certo, se n o script da erro"}

 

OBS quando for adc um novo item no script vc deve por encima de

["Amarelo"] = {id = 6541, mon = "Cave Rat"},

e com a virgula, SÓMENTE O ULTIMO ELEMENTO DA TABELA N PODE TER VIRGULA.

 

Certifiquece de que o item que vc botou no script não esta sendo usado por outro script.

 

e lembreçe de por o novo id do item na tag em action.xml

 

OBS ; eu n fiz o revive, mais acada vez que vc da use no egg vc cria um pet

Editado por ForeverTobi
Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

nao tem com fazer so para vips ? so vips podem ter o tál pet, que vem na vocação que ele ganha quando paga a vip, as vocações dos vip fica assim

: (BkVip) Elder Druid. "no meu server fico assim"

 

e depois que a vip acaba a voc volta ao normal intão o player nao podera mais invocar o Pet

tem como me ajudar nesse sistema de pet? dou +7 REP

Link para o comentário
Compartilhar em outros sites

  • 0

Por favor não sei se esse é o local certo mas to com dúvida ainda, quero um sistema de pet q seja assim quando eu clicar em algum coloured egg como o amarelo, aparecer um holy pet, azul ice pet, vermelho, fire pet, verde, tera pet, roxo energy pet, por favor necessito desse script

Link para o comentário
Compartilhar em outros sites

  • 0

Por favor não sei se esse é o local certo mas to com dúvida ainda, quero um sistema de pet q seja assim quando eu clicar em algum coloured egg como o amarelo, aparecer um holy pet, azul ice pet, vermelho, fire pet, verde, tera pet, roxo energy pet, por favor necessito desse script

 

Amigo, sei que voce é novo no forum mais por favor leia as regras.

Nao pessa duvida em Topicos de outras pessoas .

se voce esta com uma duvida crie um novo topico e fale qual sua duvida, sertifique-se de postar na area correta.

e eu garanto que iremos lhe ajudar. mais atençao.

tenha um otimo natal.

Link para o comentário
Compartilhar em outros sites

  • 0

Jhon Tem Um Probleminha No Script...

eu consigo invocar o monstro certinho...

quando ele volta...

eu vou soltalo dinovo aparece que o pet está morto....

sendo que eu só voltei o pet ele nao morreu.....

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...