• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Pet system help "pet not summoning"

jixi

Complete Noob
Joined
Sep 5, 2010
Messages
25
Reaction score
0
Current script:
!petconfig.lua (located in main OT folder)
Code:
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 = "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
!pet.lua
Code:
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
!petinfo.lua
Code:
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
!petattack.lua
Code:
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)) 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*magicLevelRate)
                                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
Talkactions
Code:
<talkaction words="!petinfo" script="pets/!petinfo.lua"/>
	<talkaction words="!pet" script="pets/!pet.lua"/>
	<talkaction words="!petattack" script="pets/!petattack.lua"/>
NPC
Code:
local focus = 0
local talk_start = 0
local talk_state = 0
local costPerLevel = 300
local base = 2000

local 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
                 }
                 


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 ' .. getCreatureName(cid) .. '! I can take you to the train!')
                focus = cid
                talk_start = os.clock()

          elseif msgcontains(msg, 'hi') and (focus ~= cid) then
              selfSay('Sorry, ' .. getCreatureName(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, ' .. getCreatureName(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
I type !pet nothing happens (no server error), i try to get npc to revive and it says my pet is next to me (but its not) cant summon pet therefore !petinfo and !petattack dont work. please help lol.
 
i'm a complete noob when it comes to scripting, this script is from FedeVI's post, how/where do i put the print commands?
 
Try this script:
Code:
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)
    print('1')
    if isExhausted(cid) == 1 then
        return 0
    end
	print('2')
    if getPlayerStorageValue(cid, storages.petMag) == -1 then
        setPlayerStorageValue(cid, storages.petMag, 0)
    end
	print('3')
    if isCreature(getPlayerStorageValue(cid, storages.petUid)) == 0 then
	print('4')
        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
	print('5')
    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
	print('6')
    return setExhausted(cid)
end

And then, post console output. Also I'd check if there's no error during server loading (Specially Script System loading part.).
 
this code prints a 1 but i had to take em out 1 by 1 to see which one would print. til i got this.
Code:
dofile("./petConfig.lua")
                 


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


local myPet = ""
local myPetUid = 0
   print('1')
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
 
Back
Top