Ir para conteúdo

Pet System + Tutorial


nono182

Posts Recomendados

sem comentarios vamu lah xD

Coloque essas tags no Talkaction:

<talkaction words="!petinfo" script="pets/!petinfo.lua"/>
<talkaction words="!petsay" script="pets/!petsay.lua"/>
<talkaction words="!petcarry" script="pets/!petcarry.lua"/>
<talkaction words="!pet" script="pets/!pet.lua"/>
<talkaction words="!petattack" script="pets/!petattack.lua"/>
<talkaction words="!petgetitem" script="pets/!petgetitem.lua"/>

 

apos feito isso crie um arquivo na pasta do seu ot chamado petConfig.lua e nele cole isso:

--//                                             \\--
--(     made by FedeVI  )  --
--____________ //-- 
petSystemExhaustion = 1 --in secods, 0 = no exhausted.  
frases = {"Men, im still exhausted!", "Ok, in one momment", "afff, again?!", "meh, one second"}
lenght = 39 -- maximun lenght the !petsay can have...
manaGainTicks = 3000 -- 
                                          --how fast the pet gains mana
manaGainAmmount = 10 --//
manaGainPerLevel = 20 -- mana that gains the pet for each level the player gain
magicLevelRate = 4 -- how faster the pet will gain mlvl compared to real tibia,,
base = 2000 --base storage. All storages will depend of this number
storages = {
                       petMag = base,
                       petUid = base+1,
                       petExha = base+2,
                       petDamage = base+3,
                       petManaSpent = base+4,
                       petIsOnline = base+5,
                       petMana = base+6,
                       petIsHealing = base+7,
                       petCap = base+8,
                       petSystemExhaustion = base+9
                       }

petItems = {}
maxItems = 10 --Max items the pet can carry
--lol V
x = 0 y = function() x = x + 1 end table.foreach(storages, y)
for i = 1, maxItems do
       petItems[i] = base+x+i
end
--Pets, dependiong on the level
pets = 
       {
               {vocations = {1, 5}, pets =
               {{level = 100, name = "demon"}, {level = 60, name = "Dragon"}, {level = 50, name = "Dwarf Gegmancers"}, {level = 40, name = "Demon Skeleton"}, {level = 30, name = "Fire Devil"}, {level = 20, name = "Minotaur Archer"}, {level = 10, name = "Minotaur"}, {level = 0, name = "Rat"}}
               },
               {vocations = {2, 6}, pets =
               {{level = 100, name = "demon"}, {level = 60, name = "Dragon"}, {level = 50, name = "Dwarf Gegmancers"}, {level = 40, name = "Demon Skeleton"}, {level = 30, name = "Fire Devil"}, {level = 20, name = "Minotaur Archer"}, {level = 10, name = "Minotaur"}, {level = 0, name = "Rat"}}
               },
               {vocations = {3, 7}, pets =
               {{level = 100, name = "demon"}, {level = 60, name = "Dragon"}, {level = 50, name = "Dwarf Gegmancers"}, {level = 40, name = "Demon Skeleton"}, {level = 30, name = "Fire Devil"}, {level = 20, name = "Minotaur Archer"}, {level = 10, name = "Minotaur"}, {level = 0, name = "Rat"}}
               },
               {vocations = {4, 8}, pets =
               {{level = 100, name = "demon"}, {level = 60, name = "Dragon"}, {level = 50, name = "Dwarf Gegmancers"}, {level = 40, name = "Demon Skeleton"}, {level = 30, name = "Fire Devil"}, {level = 20, name = "Minotaur Archer"}, {level = 10, name = "Minotaur"}, {level = 0, name = "Cave Rat"}}
               }
       }
--attacks of the pet. !petattack "param
--It's pretty easy how to config, I think it doesn't need an extra explanation.
attacks = {{param = "energy",  theFunction = false, offensive = 1, needLevel = 20, self = 0, needMag = 10, manaSpent = 60, exhausted = 1, range = 6, combatType = COMBAT_ENERGYDAMAGE, combatAni = CONST_ME_ENERGYAREA, area = 2, 
                                       formula = {maxb = 0.4, maxa = 30, minb = 0.5, mina = 0},
                                },
                                {param = "exori", theFunction = false, offensive = 1, needLevel = 40, self = 0, needMag = 5, manaSpent = 145, exhausted = 1, range = 0, combatType = COMBAT_PHYSICALDAMAGE, combatAni = CONST_ME_HITAREA, area = 2, 
                                       formula = {maxb = 0.6, maxa = 30, minb = 1.2, mina = 0},
                                },
                                {param = "fireball", theFunction = false, offensive = 1,  needLevel = 50, self = 0, needMag = 15, manaSpent = 100, exhausted = 1, range = 3, combatType = COMBAT_FIREDAMAGE, combatAni = CONST_ME_FIREAREA, area = 6, 
                                       formula = {maxb = 0.6, maxa = 30, minb = 1.2, mina = 0}
                                },
                                {param = "mini energy", theFunction = false, offensive = 1,  needLevel = 0, self = 0, needMag = 0, manaSpent = 20, exhausted = 1, range = 1, combatType = COMBAT_ENERGYDAMAGE, combatAni = CONST_ME_ENERGYAREA, area = 1, 
                                       formula = {maxb = 0.13, maxa = 0, minb = 0.262, mina = 0}
                                },
                                {param = "health", theFunction = false, offensive = -1,  needLevel = 10, self = 1, needMag = 0, manaSpent = 100, exhausted = 2, range = 0, combatType = COMBAT_HEALING, combatAni = CONST_ME_MAGIC_BLUE, area = 1, 
                                       formula = {maxb = 0.4, maxa = 20, minb = 0.7, mina = 0}
                                },
                                {param = "paralize", needLevel = 1, needMag = 0, manaSpent = 300, exhausted = 2,
                                theFunction = function (parameters)
                                       daPet = getPlayerStorageValue(parameters.cid, storages.petUid)
                                       if getCreatureTarget(daPet) ~= 0 then
                                               doAddCondition(getCreatureTarget(parameters.cid), 4)
                                       end
                                end
                               },
                               {param = "speed", needLevel = 10, needMag = 4, manaSpent = 60, exhausted = 2,
                                theFunction = function (parameters)                            
                                       doAddCondition(getPlayerStorageValue(parameters.cid, storages.petUid), 11)
                               end
                               },
                                {param = "double fire", needLevel = 1, needMag = 0, manaSpent = 100, exhausted = 2,
                                theFunction = function (parameters)


                                       local myAttack = formulaAttack(getPlayerLevel(parameters.cid),  getPlayerStorageValue(parameters.cid, storages.petMag), 0.7, 0, 1.0, 0)
                                       function doAreaCombatHealthEx(params)
                                               local randoms = {[1] = math.random(-2, 2),
                                                                                [2] = math.random(-2, 2)                               
                                                                               }

                                               local attackCreature = getPlayerStorageValue(parameters.cid, storages.petUid)
                                               if getCreatureTarget(getPlayerStorageValue(parameters.cid, storages.petUid)) ~= 0 then
                                                       attackCreature = getCreatureTarget(getPlayerStorageValue(parameters.cid, storages.petUid))
                                               end                             
                                               local posa = getCreaturePosition(attackCreature)
                                               doAreaCombatHealth(getPlayerStorageValue(parameters.cid, storages.petUid), COMBAT_FIREDAMAGE, {x = posa.x + randoms[1], y = posa.y + randoms[2], z = posa.z},  1, -params.myAttack.minD, -params.myAttack.maxD, CONST_ME_FIREAREA)
                                               doSendDistanceShoot(getCreaturePosition(getPlayerStorageValue(parameters.cid, storages.petUid)), {x = posa.x + randoms[1], y = posa.y + randoms[2], z = posa.z}, CONST_ANI_FIRE)

                                       end
                                       doAreaCombatHealthEx({cid = parameters.cid, target = getCreaturePosition(attackCreature), myAttack = myAttack})
                                       for i = 1, 7 do
                                               addEvent(doAreaCombatHealthEx, 200*i, {cid = parameters.cid, target = getCreaturePosition(attackCreature), myAttack = myAttack})
                                       end
                               end
                               }
                       }
function setExhausted(cid)
       setPlayerStorageValue(cid, storages.petSystemExhaustion, os.clock()+1)
end
function formulaAttack(magicLevel, level, maxb, maxa, minb, mina)
       return {minD = (level * 2 + magicLevel * 3) * (1 + mina) + minb,
                       maxD = (level * 2 + magicLevel * 3) * (1 + maxb) + maxa
                  }
end

function isExhausted(cid)
       if isPlayer(cid) == 1 then      
               local CRONOMETRO = getPlayerStorageValue(cid, storages.petSystemExhaustion)
               local CRONOMETRO2 = os.clock()
               local TIEMPO = os.difftime(CRONOMETRO2, CRONOMETRO)
               if petSystemExhaustion - TIEMPO > petSystemExhaustion or CRONOMETRO == -1 then
                       setPlayerStorageValue(cid, storages.petSystemExhaustion, CRONOMETRO2+1)
                       return 0
               end
               if petSystemExhaustion - TIEMPO <= 0 then
                       return 0
               end
       end
return 1
end

function addMana(a)
       local cid = a.cid
       local petManaMax = getPlayerLevel(cid)*manaGainPerLevel
       if getPlayerStorageValue(cid, storages.petMana) < petManaMax then
               if petManaMax - getPlayerStorageValue(cid, storages.petMana) < 10 then
                       setPlayerStorageValue(cid, storages.petMana, getPlayerStorageValue(cid, storages.petMana) + petManaMax - getPlayerStorageValue(cid, storages.petMana))
               else
                       setPlayerStorageValue(cid, storages.petMana, getPlayerStorageValue(cid, storages.petMana) + 10)
               end
       addEvent(addMana, manaGainTicks, {cid = cid})
       else
               setPlayerStorageValue(cid, storages.petIsHealing, 0)
       end
end
function onLogout(cid)
       if isCreature(getPlayerStorageValue(cid, storages.petUid)) == 1 then
               if getPlayerStorageValue(cid, storages.petIsOnline) == 2 then
                       setPlayerStorageValue(cid, storages.petIsOnline, 1)
               end
       end
       return TRUE
end

apos ter feito isso va na pasta: data\talkactions\scripts crie uma pasta chamada "pets" e dentro crie os seguintes arquivos:

 

!petinfo.lua

 

dofile("./petConfig.lua")
function onSay(cid, words, param)
       if isExhausted(cid) == 1 then
               return 0
       end
       local request = 0
       local daPet = getPlayerStorageValue(cid, storages.petUid)
       if isCreature(daPet) == 1 then
               param = string.lower(param)
               if param == "magic level" then
                       request = getPlayerStorageValue(cid, storages.petMag)
               elseif param == "mana" then             
                       request = getPlayerStorageValue(cid, storages.petMana)
               elseif param == "health" then
                       request = getCreatureHealth(daPet)
               end
               if request ~= 0 then
                       doPlayerSendTextMessage(cid, 19, 'Pet ' .. param .. ': ' .. request .. '.')
               end
       else
               doPlayerSendCancel(cid, 'You haven\'t call your pet!')
       end
       return setExhausted(cid)
end

 

!petsay.lua

dofile("./petConfig.lua")
function onSay(cid, words, param)
       if isExhausted(cid) == 1 then
               return 0
       end

       local daPet = getPlayerStorageValue(cid, storages.petUid)
       if isCreature(daPet) == 1 then
               if param ~= nil then
                       if string.len(param) < lenght then              
                               doCreatureSay(daPet, '' .. param .. '', TALKTYPE_ORANGE_1)
                       else
                               doPlayerSendCancel(cid, 'No more than ' .. lenght .. ' character. ')
                       end
               else
                       doPlayerSendCancel(cid, 'You must enter a text')
               end             
       else
               doPlayerSendCancel(cid, 'You haven\'t call your pet!')
       end     
       return setExhausted(cid)
end

!petcarry.lua

dofile("./petConfig.lua")
function onSay(cid, words, param)

       if isExhausted(cid) == 1 then
               return 0
       end
       local mySto = 0
       local daPet = getPlayerStorageValue(cid, storages.petUid)
       if isCreature(daPet) == 1 then
               local pos = getCreaturePosition(daPet)
               local a = 1
               while a < 10 do
                       if getItemWeight(getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = a}).itemid, 1) ~= 0  then
                               break
                       end
                       a = a + 1
               end
               local carryingItem = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = a})
               if getItemWeight(carryingItem.itemid, 1) ~= 0 then
                       if isContainer(carryingItem.uid) == 0 then
                               for b = 1, #petItems do
                                       if getPlayerStorageValue(cid, petItems[b]) == 0 or getPlayerStorageValue(cid, petItems[b]) == -1 then
                                               mySto = b
                                               break
                                       end
                               end
                               local count = 1
                               if mySto ~= 0 then
                                       local theID = carryingItem.itemid
                                       if isItemStackable(theID) == 1 then
                                               count = carryingItem.type
                                               doRemoveItem(carryingItem.uid, carryingItem.type)
                                       else
                                               doRemoveItem(carryingItem.uid, 1)
                                       end
                                       setPlayerStorageValue(cid, petItems[mySto], theID*100+count)
                                       if count == 1 then
                                               doCreatureSay(daPet, 'Hmm, a ' .. getItemName(theID) .. ', I\'ll save it on my bag number ' .. mySto .. '!', TALKTYPE_ORANGE_1)
                                       else
                                               doCreatureSay(daPet, 'Hmm, ' .. count .. ' ' .. getItemName(theID) .. 's, I\'ll save them on my bag number ' .. mySto .. '!', TALKTYPE_ORANGE_1)
                                       end
                               else
                                       doCreatureSay(daPet, 'I have no space!', TALKTYPE_ORANGE_1)
                               end
                       else
                               doCreatureSay(daPet, 'I can\'t take containers!', TALKTYPE_ORANGE_1)
                       end
               else
                       doCreatureSay(daPet, 'I can\'t see any item!', TALKTYPE_ORANGE_1)
               end
       else
               doPlayerSendCancel(cid, 'You haven\'t call your pet!')
       end
       return setExhausted(cid)
end

!pet.lua

dofile("./petConfig.lua")



function doPlayerAddSummon(cid, name, pos)
       local MyCreature = doSummonCreature(name, pos)  
       doConvinceCreature(cid, MyCreature)
       return MyCreature
end


local myPet = ""
local myPetUid = 0

function onSay(cid, words, param)

       if isExhausted(cid) == 1 then
               return 0
       end
       if getPlayerStorageValue(cid, storages.petMag) == -1 then
               setPlayerStorageValue(cid, storages.petMag, 0)
       end
       if isCreature(getPlayerStorageValue(cid, storages.petUid)) == 0 then
               if getTilePzInfo(getCreaturePosition(cid)) == 0 then
                       if getPlayerStorageValue(cid, storages.petIsOnline) == 1 or getPlayerStorageValue(cid, storages.petIsOnline) == -1 then
                               for i = 1, #pets do
                                       if isInArray(pets[i].vocations, getPlayerVocation(cid)) == 1 then
                                               for k = 1, #pets[i].pets do                                                     
                                                       if pets[i].pets[k].level <= getPlayerLevel(cid) then
                                                               myPet = pets[i].pets[k].name
                                                               break
                                                       end
                                               end
                                       break
                                       end
                               end
                               myPetUid = doPlayerAddSummon(cid, myPet, getCreaturePosition(cid))
                               if myPetUid ~= -1 then
                                       setPlayerStorageValue(cid, storages.petUid, myPetUid)
                                       if getPlayerStorageValue(cid, storages.petDamage) ~= 0 and getPlayerStorageValue(cid, storages.petDamage) ~= -1  then
                                               if getPlayerStorageValue(cid, storages.petDamage) < getCreatureMaxHealth(getPlayerStorageValue(cid, storages.petUid)) then
                                                       doCreatureAddHealth(getPlayerStorageValue(cid, storages.petUid), getPlayerStorageValue(cid, storages.petDamage)*-1)
                                               end
                                       end
                                       doChangeSpeed(myPetUid, getCreatureBaseSpeed(cid) - getCreatureBaseSpeed(myPetUid))
                                       doCreatureSay(myPetUid, 'Hello!', TALKTYPE_ORANGE_1)
                                       addMana({cid = cid})
                                       setPlayerStorageValue(cid, storages.petIsOnline, 2)
                               else
                                       doPlayerSendCancel(cid, 'Not enought room.')
                               end
                       else                    
                               doPlayerSendCancel(cid, 'Your pet died! You have to revive it.')
                       end
               else
                       doPlayerSendCancel(cid, 'You cannot summon your pet in PZ.')
               end             
       else
       local daPet = getPlayerStorageValue(cid, storages.petUid)
               setPlayerStorageValue(cid, storages.petDamage, getCreatureMaxHealth(daPet) - getCreatureHealth(daPet))
               doCreatureSay(daPet, 'Byebye !', TALKTYPE_ORANGE_1)
               setPlayerStorageValue(cid, storages.petIsOnline, 1)
               doSendMagicEffect(getCreaturePosition(daPet), CONST_ME_POFF)
               doRemoveCreature(daPet)
       end
       return setExhausted(cid)
end

!petattack.lua

dofile("./petConfig.lua")        
function onSay(cid, words, param)

       if isExhausted(cid) == 1 then
               return 0
       end

       local lookDirs = {[0] = {x = 0, y = -1},
                                         [1] = {x = 1, y = 0},
                                         [2] = {x = 0, y = 1},
                                         [3] = {x = -1, y = 0}
                                        }

       local myAttack = 0 
       local CRONOMETRO = 0
       local CRONOMETRO2 = 0
       local TIEMPO = 0

function formulaAttack(magicLevel, level, maxb, maxa, minb, mina)
       return {minD = (level * 2 + magicLevel * 3) * (1 + mina) + minb,
                       maxD = (level * 2 + magicLevel * 3) * (1 + maxb) + maxa
                  }
end
       function getPetMlvl(manaSpent)
               local i = 0
               while manaSpent >= (1600 * (1.2^i))*magicLevelRate do
                       i = i + 1
               end
               return i
       end

       local daPet = getPlayerStorageValue(cid, storages.petUid)
       if isCreature(daPet) == 1 then 
               if param ~= nil then

                       param = string.lower(param)
                       local petPos = getCreaturePosition(daPet)
                       local lookDir = getPlayerLookDir(cid) -- getPlayerLookDir(daPet plz ! ! !)
                       local damage = {}
                       CRONOMETRO = getPlayerStorageValue(cid, storages.petExha)
                       CRONOMETRO2 = os.clock()
                       TIEMPO = os.difftime(CRONOMETRO2, CRONOMETRO)

                       for i = 1, #attacks do
                               if param == attacks[i].param then
                                       myAttack = i
                                       break
                               end
                       end

                       if myAttack ~= 0 then
                               if attacks[myAttack].exhausted - TIEMPO > attacks[myAttack].exhausted or CRONOMETRO == -1 then
                                       setPlayerStorageValue(cid, storages.petExha, CRONOMETRO2+1)
                               end
                               if getPlayerStorageValue(cid, storages.petMana) >= attacks[myAttack].manaSpent then
                                       if attacks[myAttack].needLevel <= getPlayerLevel(cid) then
                                               if attacks[myAttack].needMag <= getPlayerStorageValue(cid, storages.petMag) then
                                                       if attacks[myAttack].exhausted - TIEMPO <= 0 then
                                                               if attacks[myAttack].theFunction == false then
                                                                       damage = formulaAttack(getPlayerStorageValue(cid, storages.petMag), getPlayerLevel(cid),  attacks[myAttack].formula.maxb, attacks[myAttack].formula.maxa, attacks[myAttack].formula.minb, attacks[myAttack].formula.mina)
                                                                       doAreaCombatHealth(daPet*((attacks[myAttack].self - 1)*-1), attacks[myAttack].combatType, {x = petPos.x + attacks[myAttack].range*lookDirs[lookDir].x, y = petPos.y + attacks[myAttack].range*lookDirs[lookDir].y, z = petPos.z}, attacks[myAttack].area, math.floor(damage.minD*-1*attacks[myAttack].offensive), math.floor(damage.maxD*-1*attacks[myAttack].offensive), attacks[myAttack].combatAni)
                                                               else
                                                                       attacks[myAttack].theFunction({cid = cid, words = words, param = param})
                                                               end
                                                               doCreatureSay(daPet, '' .. param .. '!', TALKTYPE_ORANGE_1)
                                                               if getPlayerStorageValue(cid, storages.petIsHealing) == 0 or getPlayerStorageValue(cid, storages.petIsHealing) == -1 then
                                                                       addEvent(addMana, manaGainTicks, {cid = cid})
                                                                       setPlayerStorageValue(cid, storages.petIsHealing, 1)
                                                               end
                                                               setPlayerStorageValue(cid, storages.petExha, CRONOMETRO2+1)
                                                               setPlayerStorageValue(cid, storages.petManaSpent, getPlayerStorageValue(cid, storages.petManaSpent) + attacks[myAttack].manaSpent)
                                                               setPlayerStorageValue(cid, storages.petMana, getPlayerStorageValue(cid, storages.petMana) - attacks[myAttack].manaSpent)
                                                               if getPetMlvl(getPlayerStorageValue(cid, storages.petManaSpent)) > getPlayerStorageValue(cid, storages.petMag) then
                                                                       setPlayerStorageValue(cid,  storages.petMag, getPetMlvl(getPlayerStorageValue(cid, storages.petManaSpent)))
                                                                       doCreatureSay(daPet, 'You advanced to magic level ' .. getPlayerStorageValue(cid, storages.petMag) .. '!', TALKTYPE_ORANGE_1)
                                                               end
                                                       else
                                                               doCreatureSay(daPet, '' .. frases[math.random(1, #frases)] .. '!', TALKTYPE_ORANGE_1)
                                                       end
                                               else
                                                       doCreatureSay(daPet, 'My magic level is too low!', TALKTYPE_ORANGE_1)
                                               end
                                       else
                                               doCreatureSay(daPet, 'AAh Im out of mana!', TALKTYPE_ORANGE_1)
                                       end
                               else
                                       doCreatureSay(daPet, 'Woups! I can\'t use that spell yet', TALKTYPE_ORANGE_1)
                               end                             
                       else
                               ----------------special attacks ?----------------------
                       end
               else
                       doPlayerSendCancel(cid, 'You must spesific a spell.')
               end
       else
               doPlayerSendCancel(cid, 'You haven\'t call your pet!.')
       end
       return setExhausted(cid)
end

!petgetitem.lua

dofile("./petConfig.lua")
function onSay(cid, words, param)
       if isExhausted(cid) == 1 then
               return 0
       end
       local daPet = getPlayerStorageValue(cid, storages.petUid)
       if isCreature(daPet) == 1 then
               if param ~= "" then
                       param = tonumber(param)
                       if type(param) == "number" then
                               if param <= maxItems then
                                       if getPlayerStorageValue(cid, petItems[param]) ~= 0 and getPlayerStorageValue(cid, petItems[param]) ~= -1 then
                                               local that = getPlayerStorageValue(cid, petItems[param])
                                               local item = math.floor(that/100)
                                               local count = that-item*100
                                               doPlayerAddItem(cid, item, count)
                                               if count == 1 then
                                                       doCreatureSay(daPet, 'Here is your ' .. getItemName(item) .. '', TALKTYPE_ORANGE_1)
                                               else
                                                       doCreatureSay(daPet, 'Here are your ' .. count .. ' ' .. getItemName(item) .. 's', TALKTYPE_ORANGE_1)
                                               end
                                               setPlayerStorageValue(cid, petItems[param], 0)
                                       end
                               end
                       end
               end
       end
return setExhausted(cid)
end

 

Agora em data/npc adicione o seguinte arquivo:

Peter Revive.xml

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Buff NPC" script="data/npc/scripts/previver.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="132" head="20" body="39" legs="45" feet="7" addons="3"/>

agora em data/npc/scripts/ adicione o segunite arquivo

previver.lua e cole isso:

local focus = 0
local talk_start = 0
local talk_state = 0
local costPerLevel = 300

dofile("./petConfig.lua")



function onThingMove(creature, thing, oldpos, oldstackpos)

end


function onCreatureAppear(creature)

end


function onCreatureDisappear(cid, pos)
       if focus == cid then
                selfSay('How rude!.')
                focus = 0
                talk_start = 0
       end
end


function onCreatureTurn(creature)

end


function msgcontains(txt, str)
         return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end


function onCreatureSay(cid, type, msg)
         msg = string.lower(msg)
       if getDistanceToCreature(cid) < 4 then
                 if (msgcontains(msg, 'hi') and (focus == 0)) then
                         selfSay('Hello ' .. creatureGetName(cid) .. '! I can take you to the train!')
                               focus = cid
                               talk_start = os.clock()

                 elseif msgcontains(msg, 'hi') and (focus ~= cid) then
                         selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.')
               end

               if msgcontains(msg, 'revive') and focus == cid then
                       if  isCreature(getPlayerStorageValue(cid, storages.petUid)) == 0 then
                               if getPlayerStorageValue(cid, storages.petIsOnline) == 2 then
                                       selfSay('YOUR PET DIED?!, YOU\'R A BAD OWNER, THIS WILL COST YOU ' .. getPlayerLevel(cid)*costPerLevel .. ' GOLD COINS!, AGREE?!')
                                       talk_state = 1
                               else
                                       selfSay('Your pet is alive.')
                               end
                       else
                               selfSay('Your pet is standing next to you.')
                       end
               talk_start = os.clock()
               end
               if msgcontains(msg, 'yes') and focus == cid and talk_state == 1 then
                       if doPlayerRemoveMoney(cid, getPlayerLevel(cid)*costPerLevel) == 1 then
                               setPlayerStorageValue(cid, storages.petIsOnline, 1)
                               selfSay('You can now summon again your pet.')
                       else
                               selfSay('You don\'t have enought money.')
                       end
               talk_state = 0
               talk_start = os.clock()
               end                             

               if msgcontains(msg, 'bye') then
                       selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
                       focus = 0
                       talk_start = 0
                       talk_state = 0
               end
       end
end


function onCreatureChangeOutfit(creature)

end


function onThink()

       doNpcSetCreatureFocus(focus)
         if (os.clock() - talk_start) > 30 then
                 if focus > 0 then
                         selfSay('Next Please...')
                 end
                         focus = 0
                                               talk_state = 0
         end
       if focus ~= 0 then
               if getDistanceToCreature(focus) > 5 then
                                               talk_state = 0
                       selfSay('Good bye then.')
                                               talk_state =  0
                       focus = 0
               end
       end
end

 

agora com o script pronto vamos as explicações:

para saber informações do pet escreva:

!petinfo "magic level (informa a quantidade de ML q seu pet tm

!petinfo "mana (informa a quantidade de mana que o seu pet esta)

!petinfo "health (informa a quantidade de hp que o seu pet tem

!petsay: Este comando permite que você faça seu pet falar o que voce quer. Por exemplo: !petsay "Eu sou um demonio!.

!petcarry: Com este comando você pode fazer seu animal de estimação levar itens. O item deve ser abaixo do animal de estimação.Após isso o seu pet guardara o iten na Bolsa dele.

!pet : serve para colocar ou gradar seu pet

!petattack : serve para o seu pet ataca com uma magia(obs:o pet só ataca com as magias dele),abaixo a lista de magias que o pet pode usar

!petattack "energy           Level necessário :20
!petattack "exori                  Level necessário :40
!petattack "fireball               Level necessário :50
!petattack "mini energy            Level necessário :0
!petattack "health                 Level necessário :10
!petattack "paralize               Level necessário :1
!petattack "speed                  Level necessário :10
!petattack "speed                  Level necessário :10
!petattack "double fire            Level necessário :1

espero que isso tenha esplicado e ajudado vocês a intenderem como funcionam

tutorial feito por min

comentem ^^

Link para o comentário
Compartilhar em outros sites

eu tento instalar esse system no meu server, da error,

diz not directory, se puder me ajudar...

olha se você colocou tudo na pasta certinho

vc entra em talckaction depois clica na pasta scripts depois cria uma pasta nova chamada pets(olha se o nome da pasta que vc criou é "pets" ou "pet" escreve exatamente assim "pets")e dentro da pasta pets vc coloca os arquivos pet,petgetiten,petcarry etc...

espero ter ajudado,me fala se deu certo agora

Link para o comentário
Compartilhar em outros sites

fiz tudo direitinho com o máximo de cuidado, e nunca da caerto...

e não é so esse script, com vários acontece a mesma coisa,

deixa a resposta ai que amanha vejo, vou durmir, bye

add meu msn aew q t ajudo lah oks?

nono.182@hotmail.com

Link para o comentário
Compartilhar em outros sites

eu tmb ja tentei de tudo masssss nao vaiiiii

meu tfs é 8.57

 

me add msn

mestereod.sk8@hotmail.com

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

Cara o tutorial é legal mais você esta explicando meio que errado

apos feito isso crie um arquivo na pasta do seu ot chamado petConfig.lua e nele cole isso:
Aonde ficaria essa pasta?

explica um poko melhor aonde colocar os arquivos LUA pastas etc mais o tutorial ta bom vou testar o script aqui qualquer erro eu reporto se der pra mim arrumar eu posto o arrumado aqui

Link para o comentário
Compartilhar em outros sites

Cara o tutorial é legal mais você esta explicando meio que errado

apos feito isso crie um arquivo na pasta do seu ot chamado petConfig.lua e nele cole isso:
Aonde ficaria essa pasta?

explica um poko melhor aonde colocar os arquivos LUA pastas etc mais o tutorial ta bom vou testar o script aqui qualquer erro eu reporto se der pra mim arrumar eu posto o arrumado aqui

Na pasta do ot,siguinifica onde fica o executavel do ot,o config.lua e tals

ahh...vlw a todos que estão comentando

Link para o comentário
Compartilhar em outros sites

Nossa, toda vez que colocam um sistema de Pet eu corro e vou testar.. ate Hoje nenhun funcionou aqui

e infelizmente este não foi diferente...A função de sumonar o Pet não esta funfando, nao da erro mais tbm não sumona...

Mais vlw pelo esforço de postar aki no Xtibia

 

Server testado: Mix server "tfs"
Link para o comentário
Compartilhar em outros sites

Script sinceramente muito bom :D

Tentem colocar isso

<talkaction words="!petinfo" script="!petinfo.lua"/> 
<talkaction words="!petsay" script="!petsay.lua"/> 
<talkaction words="!petcarry" script="!petcarry.lua"/> 
<talkaction words="!pet" script="!pet.lua"/> 
<talkaction words="!petattack" script="!petattack.lua"/> 
<talkaction words="!petgetitem" script="!petgetitem.lua"/>

No talkactions.xml ao invés do que ele colocou no post :D

Link para o comentário
Compartilhar em outros sites

Script sinceramente muito bom :D

Tentem colocar isso

<talkaction words="!petinfo" script="!petinfo.lua"/> 
<talkaction words="!petsay" script="!petsay.lua"/> 
<talkaction words="!petcarry" script="!petcarry.lua"/> 
<talkaction words="!pet" script="!pet.lua"/> 
<talkaction words="!petattack" script="!petattack.lua"/> 
<talkaction words="!petgetitem" script="!petgetitem.lua"/>

No talkactions.xml ao invés do que ele colocou no post :D

 

Nos meus testes tinha tentado isso tambem. Fiz ate sem o scripts sem "!" no nome.

Nada funfo ake

 

:winksmiley02:

Link para o comentário
Compartilhar em outros sites

Esse pet System não funciona em servidores 8.40+, outra coisa se nao me engano ja existe 2 topicos com esse mesmo pet system.

 

Ah e mais uma coisa ja existe um pet system melhor que esse e que funciona com servidores 8.57, só não posto link porque é de outro forum.

 

Sem mais, para mim acho que esse topico foi desnecessario mais tudo bem né.

 

Abraços!!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...