Ir para conteúdo

[Ajuda] Pet Demora Pra Andar


brunin86

Posts Recomendados

" Pet Não Acompanha " ( anda junto ) com o dono

 

 

Para o meu projeto de pokemon, preciso que o pet acompanhe o dono '--', se não vai ter que voltar e esperar ele chegar e depois andar de novo.

 

Vídeo para verem melhor:

 

Link para o comentário
Compartilhar em outros sites

Acho que a partir de uma quantidade de SQM's longe do treinador ele nao reconhece seu dono, poste o script para eu poder ajuda-lo.

------------------------------------------------------------------------------------------------------------------------------------

- Att. Saymon

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

@Up

 

Não é O script, são OS scripts '--' infelizmente são mais de 1, aqui estão

 

PetConfig.lua

--// \\--

--( 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 = base+x+i

end

--Pets, dependiong on the level

pets =

{

{vocations = {1, 5}, pets =

{{level = 100, name = "demon"}, {level = 60, name = "Dragons"}, {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 = "Dragons"}, {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 = "Dragons"}, {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 = "Dragons"}, {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

 

!pet

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.vocations, getPlayerVocation(cid)) == 1 then

for k = 1, #pets.pets do

if pets.pets[k].level <= getPlayerLevel(cid) then

myPet = pets.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

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.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

 

!petcarry

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) == 0 or getPlayerStorageValue(cid, petItems) == -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

 

!petgetitem

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

 

!petinfo

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

 

!petinfo

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

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

 

 

Só esses '--'. Tenta aew x)

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...