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

[HELP] CONSOLE

Godz4t4n1c

New Member
Joined
Sep 9, 2015
Messages
51
Reaction score
1
Good Morning.
I'll go straight to the point I need help in 3 scripts.

1.- ERROR
Code:
[13/7/2019 18:44:29] [Error - GlobalEvent Interface]
[13/7/2019 18:44:29] data/globalevents/scripts/shop.lua:onThink
[13/7/2019 18:44:29] Description:
[13/7/2019 18:44:29] data/globalevents/scripts/shop.lua:41: attempt to compare boolean with number
[13/7/2019 18:44:29] stack traceback:
[13/7/2019 18:44:29]    data/globalevents/scripts/shop.lua:41: in function <data/globalevents/scripts/shop.lua:7>
[13/7/2019 18:44:29] [Error - GlobalEvents::think] Couldn't execute event: website_shop_item_delivery

shop.lua - script where the error is attempted.

Code:
-- ### CONFIG ###
-- message send to player by script "type" (types you can check in "data/lib/000-constants.CODE=LUA")
SHOP_MSG_TYPE = MESSAGE_STATUS_CONSOLE_BLUE
-- time (in seconds) between queries to MySQL database by shop script
SQL_interval = 30
-- ### END OF CONFIG ###
function onThink(interval, lastExecution)
local result_plr = db.getResult("SELECT * FROM `z_ots_comunication` WHERE `type` = 'login';")
if(result_plr:getID() ~= -1) then
while(true) do
id = tonumber(result_plr:getDataInt("id"))
action = tostring(result_plr:getDataString("action"))
delete = tonumber(result_plr:getDataInt("delete_it"))
cid = getCreatureByName(tostring(result_plr:getDataString("name")))
if isPlayer(cid) == TRUE then
local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
local container_id = tonumber(result_plr:getDataInt("param3"))
local container_count = tonumber(result_plr:getDataInt("param4"))
local add_item_type = tostring(result_plr:getDataString("param5"))
local add_item_name = tostring(result_plr:getDataString("param6"))
local received_item = 0
local full_weight = 0
if add_item_type == 'container' then
container_weight = getItemWeightById(container_id, 1)
if isItemRune(itemtogive_id) == TRUE then
items_weight = container_count * getItemWeightById(itemtogive_id, 1)
else
items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count)
end
full_weight = items_weight + container_weight
else
full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
if isItemRune(itemtogive_id) == TRUE then
full_weight = getItemWeightById(itemtogive_id, 1)
else
full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
end
end
local free_cap = getPlayerFreeCap(cid)
if full_weight <= free_cap then
if add_item_type == 'container' then
local new_container = doCreateItemEx(container_id, 1)
doItemSetAttribute(new_container, "tid", id)
local iter = 0
while iter ~= container_count do
local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
doItemSetAttribute(new_item, "tid", id)
doAddContainerItemEx(new_container, new_item)
iter = iter + 1
end
received_item = doPlayerAddItemEx(cid, new_container)
else
local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
doItemSetAttribute(new_item, "tid", id)
received_item = doPlayerAddItemEx(cid, new_item)
end
if received_item == RETURNVALUE_NOERROR then
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from Tibia Retro Shop.')
doPlayerSave(cid)
db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from Tibia Retro Shop. is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.')
end
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from Tibia Retro Shop. is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.')
end
end
if not(result_plr:next()) then
break
end
end
result_plr:free()
end
return true
end

2.- When you disconnect, they take away your third vocation, why?

Code:
local t = {
[5] = {"You are now a Engraged Wizard",9},
[6] = {"You are now an Chaotic Sage",10},
[7] = {"You are now a Lord Assassin",11},
[8] = {"You are now an Infernal Warrior",12}
}

function onUse(cid, item, frompos, item2, topos)
        ppos = getPlayerPosition(cid)
local v = t[getPlayerVocation(cid)]
    if t then
    if getPlayerLevel(cid) >= 300 then
                doPlayerSetVocation(cid,v[2])
                doSendMagicEffect(ppos,5)
                doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,v[1])
                doRemoveItem(item.uid,1)
          elseif getPlayerVocation(cid) == v[2] then
              doPlayerSendCancel(cid,"You already have this vocation")
          end
      else
          doPlayerSendCancel(cid, "You do not meet the level requirement")
      end
    return true
end


3.- Is the script that I want to modify if the player dies inside the quest inside the from and to
all creatures are erased inside by restarting the quest from 0.

this is my script (missing the doRemoveCreature), a help.


Code:
local config = {
  fromPos = {x = 24625, y = 30776, z = 6},
  topos = {x = 24635, y = 30788, z = 6},
  teleportReward = {x = 24510, y = 30780, z = 7}
}

local monsters = {
  ['destroyer'] = {'elder dragon'},
  ['elder dragon'] = {'elder dragon lord'},
  ['elder dragon lord'] = {'elder hydra'},
  ['elder hydra'] = {'elder frost dragon'},
  ['elder frost dragon'] = {'energy minion'},
  ['energy minion'] = {'lord fire'},
  ['lord fire'] = {'demonic spider'},
  ['demonic spider'] = {'yalaharin'}
}

function onKill(cid, target, lastHit)
   if isInRange(getCreaturePosition(target), config.fromPos, config.topos) then
      local xx = math.random(config.fromPos.x, config.topos.x)
      local yy = math.random(config.fromPos.y, config.topos.y)
      local zz = math.random(config.fromPos.z, config.topos.z)
      local nameMonster = string.lower(getCreatureName(target))
      local dead = monsters[nameMonster]

      if dead == nil then
      
      for _, all in ipairs(getPlayersOnline()) do
         if isInRange(getThingPos(all), config.fromPos, config.topos) then
            doTeleportThing(all, config.teleportReward)
         end
      end
      else
         if nameMonster ~= dead[1] then
            doSummonCreature(dead[1], {x = xx, y = yy, z = zz})
            doSendMagicEffect({x = xx, y = yy, z = zz}, 10)
         end
      end
   end
  return true
end

someone can help me beforehand.
PSDT: if you have a script for automatic payment through PayPal Gesior Acc 2012, all those who tried if you donated but did not deliver the points.
 
Last edited:
Good Morning.
I'll go straight to the point I need help in 3 scripts.

1.- ERROR
Code:
[13/7/2019 18:44:29] [Error - GlobalEvent Interface]
[13/7/2019 18:44:29] data/globalevents/scripts/shop.lua:onThink
[13/7/2019 18:44:29] Description:
[13/7/2019 18:44:29] data/globalevents/scripts/shop.lua:41: attempt to compare boolean with number
[13/7/2019 18:44:29] stack traceback:
[13/7/2019 18:44:29]    data/globalevents/scripts/shop.lua:41: in function <data/globalevents/scripts/shop.lua:7>
[13/7/2019 18:44:29] [Error - GlobalEvents::think] Couldn't execute event: website_shop_item_delivery

shop.lua - script where the error is attempted.

Code:
-- ### CONFIG ###
-- message send to player by script "type" (types you can check in "data/lib/000-constants.CODE=LUA")
SHOP_MSG_TYPE = MESSAGE_STATUS_CONSOLE_BLUE
-- time (in seconds) between queries to MySQL database by shop script
SQL_interval = 30
-- ### END OF CONFIG ###
function onThink(interval, lastExecution)
local result_plr = db.getResult("SELECT * FROM `z_ots_comunication` WHERE `type` = 'login';")
if(result_plr:getID() ~= -1) then
while(true) do
id = tonumber(result_plr:getDataInt("id"))
action = tostring(result_plr:getDataString("action"))
delete = tonumber(result_plr:getDataInt("delete_it"))
cid = getCreatureByName(tostring(result_plr:getDataString("name")))
if isPlayer(cid) == TRUE then
local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
local container_id = tonumber(result_plr:getDataInt("param3"))
local container_count = tonumber(result_plr:getDataInt("param4"))
local add_item_type = tostring(result_plr:getDataString("param5"))
local add_item_name = tostring(result_plr:getDataString("param6"))
local received_item = 0
local full_weight = 0
if add_item_type == 'container' then
container_weight = getItemWeightById(container_id, 1)
if isItemRune(itemtogive_id) == TRUE then
items_weight = container_count * getItemWeightById(itemtogive_id, 1)
else
items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count)
end
full_weight = items_weight + container_weight
else
full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
if isItemRune(itemtogive_id) == TRUE then
full_weight = getItemWeightById(itemtogive_id, 1)
else
full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
end
end
local free_cap = getPlayerFreeCap(cid)
if full_weight <= free_cap then
if add_item_type == 'container' then
local new_container = doCreateItemEx(container_id, 1)
doItemSetAttribute(new_container, "tid", id)
local iter = 0
while iter ~= container_count do
local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
doItemSetAttribute(new_item, "tid", id)
doAddContainerItemEx(new_container, new_item)
iter = iter + 1
end
received_item = doPlayerAddItemEx(cid, new_container)
else
local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
doItemSetAttribute(new_item, "tid", id)
received_item = doPlayerAddItemEx(cid, new_item)
end
if received_item == RETURNVALUE_NOERROR then
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from Tibia Retro Shop.')
doPlayerSave(cid)
db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from Tibia Retro Shop. is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.')
end
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from Tibia Retro Shop. is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.')
end
end
if not(result_plr:next()) then
break
end
end
result_plr:free()
end
return true
end

2.- When you disconnect, they take away your third vocation, why?

Code:
local t = {
[5] = {"You are now a Engraged Wizard",9},
[6] = {"You are now an Chaotic Sage",10},
[7] = {"You are now a Lord Assassin",11},
[8] = {"You are now an Infernal Warrior",12}
}

function onUse(cid, item, frompos, item2, topos)
        ppos = getPlayerPosition(cid)
local v = t[getPlayerVocation(cid)]
    if t then
    if getPlayerLevel(cid) >= 300 then
                doPlayerSetVocation(cid,v[2])
                doSendMagicEffect(ppos,5)
                doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,v[1])
                doRemoveItem(item.uid,1)
          elseif getPlayerVocation(cid) == v[2] then
              doPlayerSendCancel(cid,"You already have this vocation")
          end
      else
          doPlayerSendCancel(cid, "You do not meet the level requirement")
      end
    return true
end


3.- Is the script that I want to modify if the player dies inside the quest inside the from and to
all creatures are erased inside by restarting the quest from 0.

this is my script (missing the doRemoveCreature), a help.


Code:
local config = {
  fromPos = {x = 24625, y = 30776, z = 6},
  topos = {x = 24635, y = 30788, z = 6},
  teleportReward = {x = 24510, y = 30780, z = 7}
}

local monsters = {
  ['destroyer'] = {'elder dragon'},
  ['elder dragon'] = {'elder dragon lord'},
  ['elder dragon lord'] = {'elder hydra'},
  ['elder hydra'] = {'elder frost dragon'},
  ['elder frost dragon'] = {'energy minion'},
  ['energy minion'] = {'lord fire'},
  ['lord fire'] = {'demonic spider'},
  ['demonic spider'] = {'yalaharin'}
}

function onKill(cid, target, lastHit)
   if isInRange(getCreaturePosition(target), config.fromPos, config.topos) then
      local xx = math.random(config.fromPos.x, config.topos.x)
      local yy = math.random(config.fromPos.y, config.topos.y)
      local zz = math.random(config.fromPos.z, config.topos.z)
      local nameMonster = string.lower(getCreatureName(target))
      local dead = monsters[nameMonster]

      if dead == nil then
     
      for _, all in ipairs(getPlayersOnline()) do
         if isInRange(getThingPos(all), config.fromPos, config.topos) then
            doTeleportThing(all, config.teleportReward)
         end
      end
      else
         if nameMonster ~= dead[1] then
            doSummonCreature(dead[1], {x = xx, y = yy, z = zz})
            doSendMagicEffect({x = xx, y = yy, z = zz}, 10)
         end
      end
   end
  return true
end

someone can help me beforehand.
PSDT: if you have a script for automatic payment through PayPal Gesior Acc 2012, all those who tried if you donated but did not deliver the points.


UPDATE POST!!

1.- When you disconnect, they take away your third vocation, why?

Code:
local t = {
[5] = {"You are now a Engraged Wizard",9},
[6] = {"You are now an Chaotic Sage",10},
[7] = {"You are now a Lord Assassin",11},
[8] = {"You are now an Infernal Warrior",12}
}

function onUse(cid, item, frompos, item2, topos)
        ppos = getPlayerPosition(cid)
local v = t[getPlayerVocation(cid)]
    if t then
    if getPlayerLevel(cid) >= 300 then
                doPlayerSetVocation(cid,v[2])
                doSendMagicEffect(ppos,5)
                doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,v[1])
                doRemoveItem(item.uid,1)
          elseif getPlayerVocation(cid) == v[2] then
              doPlayerSendCancel(cid,"You already have this vocation")
          end
      else
          doPlayerSendCancel(cid, "You do not meet the level requirement")
      end
    return true
end


2.- Is the script that I want to modify if the player dies inside the quest inside the from and to
all creatures are erased inside by restarting the quest from 0.

this is my script (missing the doRemoveCreature), a help.


Code:
local config = {
  fromPos = {x = 24625, y = 30776, z = 6},
  topos = {x = 24635, y = 30788, z = 6},
  teleportReward = {x = 24510, y = 30780, z = 7}
}

local monsters = {
  ['destroyer'] = {'elder dragon'},
  ['elder dragon'] = {'elder dragon lord'},
  ['elder dragon lord'] = {'elder hydra'},
  ['elder hydra'] = {'elder frost dragon'},
  ['elder frost dragon'] = {'energy minion'},
  ['energy minion'] = {'lord fire'},
  ['lord fire'] = {'demonic spider'},
  ['demonic spider'] = {'yalaharin'}
}

function onKill(cid, target, lastHit)
   if isInRange(getCreaturePosition(target), config.fromPos, config.topos) then
      local xx = math.random(config.fromPos.x, config.topos.x)
      local yy = math.random(config.fromPos.y, config.topos.y)
      local zz = math.random(config.fromPos.z, config.topos.z)
      local nameMonster = string.lower(getCreatureName(target))
      local dead = monsters[nameMonster]

      if dead == nil then
     
      for _, all in ipairs(getPlayersOnline()) do
         if isInRange(getThingPos(all), config.fromPos, config.topos) then
            doTeleportThing(all, config.teleportReward)
         end
      end
      else
         if nameMonster ~= dead[1] then
            doSummonCreature(dead[1], {x = xx, y = yy, z = zz})
            doSendMagicEffect({x = xx, y = yy, z = zz}, 10)
         end
      end
   end
  return true
end

someone can help me beforehand.
PSDT: if you have a script for automatic payment through PayPal Gesior Acc 2012, all those who tried if you donated but did not deliver the points.
 
Back
Top