• 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!

Rebirth system help

prav

New Member
Joined
Aug 6, 2014
Messages
61
Reaction score
0
Hey guys I am trying to make my rebirth npc script work however i keep getting this error. Does anyone know how I can fix this error?

Code:
[05/07/2017 09:57:33] [Error - Npc interface] [05/07/2017 09:57:33] In a timer event called from:
[05/07/2017 09:57:33] data/npc/scripts/rebirth.lua:eek:nCreatureSay
[05/07/2017 09:57:33] Description:
[05/07/2017 09:57:33] data/npc/scripts/rebirth.lua:151: attempt to call field 'query' (a nil value) [05/07/2017 09:57:33] stack traceback:
[05/07/2017 09:57:33] data/npc/scripts/rebirth.lua:151: in function <data/npc/scripts/rebirth.lua:124>

This is my rebirth script.

XML:
local config = {
   price = 0, -- Precio del primer rebirth
   priceIncrease = 0, -- el precio + rebirths actuales * precio aumentado.
   rebirthLevel = 717217, -- nivel para el primer rebirth.
   rebirthIncrease = 0, -- El numero de rebirth + el actual * Rebirth aumentado.
   maxRebirths = 1000, -- maximo numero de rebirth que se pueden llegar.
   level = 100, -- despues del revirth a que nivel te reseteara.
   healthPercent = 1.00, -- el % de vida despues reset 0.1 = 100%.
   health = 100000, -- Only used if 'healthPercent' = 0.
   manaPercent = 1.00, -- el % de mana despues reset 0.1 = 100%.
   mana = 100000, -- Only used if 'manaPercent' = 0.
   keepSkills = true, -- true si quieren que el nivel de skill se mantenga.
   skillLevel = 10, -- Only used if 'keepSkills' = true.
   magicLevel = 0, -- Only used if 'keepSkills' = true.
   capacity = 10000, -- la capacidad despues del rebirth a la que te dejara.
   templePos = {x = 1000, y = 1000, z = 7}, -- el lugar al que te enviara despues del reset.
   storage = 72345 -- Player storage rebirth count is kept on.
}
local focuses = {}
local function isFocused(cid)
   for i, v in pairs(focuses) do
      if(v == cid) then
         return true
      end
   end
   return false
end
local function addFocus(cid)
   if(not isFocused(cid)) then
      table.insert(focuses, cid)
   end
end
local function removeFocus(cid)
   for i, v in pairs(focuses) do
      if(v == cid) then
         table.remove(focuses, i)
         break
      end
   end
end
local function lookAtFocus()
   for i, v in pairs(focuses) do
      if(isPlayer(v)) then
         doNpcSetCreatureFocus(v)
         return
      end
   end
   doNpcSetCreatureFocus(0)
end
function onCreatureDisappear(cid)
   if(isFocused(cid)) then
      selfSay("Goodbye.")
      removeFocus(cid)
   end
end
function onCreatureSay(cid, type, msg)
   if((msg == "hi") and not (isFocused(cid))) then
      selfSay("Welcome, ".. getCreatureName(cid) ..".", cid, true)
      selfSay("I can {rebirth} you!", cid)
      addFocus(cid)
      status = 1
   elseif((isFocused(cid)) and (msg == "rebirth") and (status == 1)) then
      if (getCreatureStorage(cid, config.storage) < config.maxRebirths) then
         storage = getCreatureStorage(cid, config.storage)
         rebirthLevel = config.rebirthLevel + (config.rebirthIncrease * storage)
         if (getPlayerLevel(cid) >= rebirthLevel) then
            money = config.price + (config.priceIncrease * storage)
            if (getPlayerMoney(cid) >= money) then
               selfSay("Do you want me to rebirth you?", cid)
               status = 2
            else
               selfSay("You need at least " .. money .. " gold before you can rebirth.", cid)
               status = 1
            end
         else
            selfSay("You need to be at least level " .. rebirthLevel .. " before you can rebirth.", cid)
            status = 1
         end
      else
         selfSay("It seems you can not rebirth anymore.", cid)
         status = 1
      end
   elseif((isFocused(cid)) and (msg == "yes") and (status == 2)) then
      selfSay("Ok then i will rebirth you.", cid)
      selfSay("You will now be logged out.", cid)
      doPlayerRemoveMoney(cid, money)
      addEvent(doRebirthPlayer, 2000, {cid=cid})
      removeFocus(cid)
   elseif((isFocused(cid)) and (msg == "no") and (status == 2)) then
      selfSay("Maybe one day you will wise up and change your mind!", cid)
      status = 1
   elseif((isFocused(cid)) and (msg == "bye" or msg == "goodbye" or msg == "cya")) then
      selfSay("Goodbye!", cid, true)
      removeFocus(cid)
   end
end
function onPlayerCloseChannel(cid)
   if(isFocused(cid)) then
      selfSay("Goodbye.")
      removeFocus(cid)
   end
end
function onThink()
   for i, focus in pairs(focuses) do
      if(not isCreature(focus)) then
         removeFocus(focus)
      else
         local distance = getDistanceTo(focus) or -1
         if((distance > 4) or (distance == -1)) then
            selfSay("Goodbye.")
            removeFocus(focus)
         end
      end
   end
   lookAtFocus()
end
function doRebirthPlayer(cid)
   cid = cid.cid
   if (cid == nil) then
      return true
   end
   local guid = getPlayerGUID(cid)
   if (config.healthPercent > 0) then
      health = getCreatureMaxHealth(cid) * config.healthPercent
   else
      health = config.health
   end
   if (config.manaPercent > 0) then
      mana = getCreatureMaxMana(cid) * config.manaPercent
   else
      mana = config.mana
   end
   if (getPlayerTown(cid) > 0) then
      pos = getTownTemplePosition(getPlayerTown(cid))
   else
      pos = config.templePos
   end
   doCreatureSetStorage(cid, config.storage, getCreatureStorage(cid, config.storage) + 1)
   doRemoveCreature(cid, true)
   db.query("UPDATE `players` SET level = " .. config.level .. " WHERE id = " .. guid .. ";")
   db.query("UPDATE `players` SET cap = " .. config.capacity .. " WHERE id = " .. guid .. ";")
   db.query("UPDATE `players` SET health = " .. health .. " WHERE id = " .. guid .. ";")
   db.query("UPDATE `players` SET healthmax = " .. health .. " WHERE id = " .. guid .. ";")
   db.query("UPDATE `players` SET mana = " .. mana .. " WHERE id = " .. guid .. ";")
   db.query("UPDATE `players` SET manamax = " .. mana .. " WHERE id = " .. guid .. ";")
   db.query("UPDATE `players` SET posx = " .. pos.x .. " WHERE id = " .. guid .. ";")
   db.query("UPDATE `players` SET posy = " .. pos.y .. " WHERE id = " .. guid .. ";")
   db.query("UPDATE `players` SET posz = " .. pos.z .. " WHERE id = " .. guid .. ";")
   if (not config.keepSkills) then
      db.query("UPDATE `players` SET maglevel = " .. config.magicLevel .. " WHERE id = " .. guid .. ";")
      db.query("UPDATE `player_skills` SET value = " .. config.skillLevel .. " WHERE id = " .. guid .. ";")
   end
   return true
end
 
Last edited:
Code:
db.query("UPDATE `player_skills` SET value = " .. config.skillLevel .. " WHERE id = " .. guid .. ";")
As far as I can tell, this field in your database doesn't exist, or is named something different.

You can probably get away with just green texting this line and the line above it, if your wanting to keep the player skills when they rebirth.
Hope it helps. :x
 
Back
Top