• 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 npc help

Death-Pulse

Owner of Death-Pulse
Joined
May 10, 2014
Messages
100
Reaction score
0
My pet trainer doesn't respond im usieng 8.6 0.3.6

Error in server
Code:
[28/09/2014 00:15:48] [Error - Npc interface]
[28/09/2014 00:15:48] data/npc/scripts/pet trainer.LUA:onCreatureSay
[28/09/2014 00:15:48] Description:
[28/09/2014 00:15:48] data/npc/scripts/pet trainer.LUA:43: attempt to call global 'creatureGetName' (a nil value)
[28/09/2014 00:15:48] stack traceback:
[28/09/2014 00:15:48]     data/npc/scripts/pet trainer.LUA:43: in function <data/npc/scripts/pet trainer.LUA:39>

Here is my npc script
Code:
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
 
Back
Top