potinho
Advanced OT User
Hello guys,
I have a script for Reward Chest (who send parcel to DP with loot, and calculate reward by damage or heal), but when people kill 2 bosses script got this error on console:
2023-06-01 20:46:51 - [Error - CreatureScript Interface]
2023-06-01 20:46:51 - In a timer event called from:
2023-06-01 20:46:51 - data/creaturescripts/scripts/Reward System/rewardchest_boss.luanDeath
2023-06-01 20:46:51 - Description:
2023-06-01 20:46:51 - (luaGetCreatureStorage) Creature not found
2023-06-01 20:46:51 -
2023-06-01 20:46:51 - [Error - CreatureScript Interface]
2023-06-01 20:46:51 - In a timer event called from:
2023-06-01 20:46:51 - data/creaturescripts/scripts/Reward System/rewardchest_boss.luanDeath
2023-06-01 20:46:51 - Description:
2023-06-01 20:46:51 - ...rescripts/scripts/Reward System/rewardchest_boss.lua:58: bad argument #1 to 'ceil' (number expected, got boolean)
2023-06-01 20:46:51 - stack traceback:
2023-06-01 20:46:51 - [C]: in function 'ceil'
2023-06-01 20:46:51 - ...rescripts/scripts/Reward System/rewardchest_boss.lua:58: in function <...rescripts/scripts/Reward System/rewardchest_boss.lua:46>
And follow file pointed:
Someone knows what cause bug? Can help me to fix?
I have a script for Reward Chest (who send parcel to DP with loot, and calculate reward by damage or heal), but when people kill 2 bosses script got this error on console:
2023-06-01 20:46:51 - [Error - CreatureScript Interface]
2023-06-01 20:46:51 - In a timer event called from:
2023-06-01 20:46:51 - data/creaturescripts/scripts/Reward System/rewardchest_boss.luanDeath
2023-06-01 20:46:51 - Description:
2023-06-01 20:46:51 - (luaGetCreatureStorage) Creature not found
2023-06-01 20:46:51 -
2023-06-01 20:46:51 - [Error - CreatureScript Interface]
2023-06-01 20:46:51 - In a timer event called from:
2023-06-01 20:46:51 - data/creaturescripts/scripts/Reward System/rewardchest_boss.luanDeath
2023-06-01 20:46:51 - Description:
2023-06-01 20:46:51 - ...rescripts/scripts/Reward System/rewardchest_boss.lua:58: bad argument #1 to 'ceil' (number expected, got boolean)
2023-06-01 20:46:51 - stack traceback:
2023-06-01 20:46:51 - [C]: in function 'ceil'
2023-06-01 20:46:51 - ...rescripts/scripts/Reward System/rewardchest_boss.lua:58: in function <...rescripts/scripts/Reward System/rewardchest_boss.lua:46>
And follow file pointed:
LUA:
dofile('data/sistemas/rewardchest.lua')
local function addRewardLoot(uid, bossName, tabela_reward)
local money = math.random(10, 40)
local msg = "The following items are available in your reward chest:"
local chest = doCreateItemEx(REWARDCHEST.rewardBagId)
doItemSetAttribute(chest, "description", "Reward System has kill the boss ".. bossName ..".")
if table.maxn(tabela_reward) > 0 then
for x = 1, table.maxn(tabela_reward) do
local rand = math.random(100)
if rand <= tabela_reward[x][3] then
local count = math.random(1, tabela_reward[x][2])
doAddContainerItem(chest, tabela_reward[x][1], count)
msg = msg .. " ".. (count > 1 and count or "") .." "..getItemNameById(tabela_reward[x][1])..","
end
end
doPlayerSendTextMessage(uid, MESSAGE_INFO_DESCR, msg .. " and ".. money .." platinum coins.")
else
doPlayerSendTextMessage(uid, MESSAGE_INFO_DESCR, msg .. " ".. money .." platinum coins.")
end
doAddContainerItem(chest, 2152, money)
doPlayerSendMailByName(getPlayerName(uid), chest, REWARDCHEST.town_id)
local boss = REWARDCHEST.bosses[bossName]
setPlayerStorageValue(uid, boss.storage, 0)
doSendMagicEffect(getPlayerPosition(uid), CONST_ME_MAGIC_BLUE)
end
local function addLoot(tabela_loot, tabela_reward, all_loot)
if table.maxn(tabela_loot) > 0 then
if all_loot then
for x = 1, table.maxn(tabela_loot) do
table.insert(tabela_reward, tabela_loot[x])
end
else
table.insert(tabela_reward, tabela_loot[math.random(table.maxn(tabela_loot))])
end
end
return tabela_reward
end
local function rewardChestSystem(bossName)
local players = {}
local boss = REWARDCHEST.bosses[bossName]
for _, uid in ipairs(getPlayersOnline()) do
if getPlayerStorageValue(uid, boss.storage) > 0 then
table.insert(players, uid)
end
end
table.sort(players, function(a, b) return getPlayerStorageValue(a, boss.storage) > getPlayerStorageValue(b, boss.storage) end)
local porcentagem = math.ceil(getPlayerStorageValue(players[1], boss.storage))
for i = 1, table.maxn(players) do
local tabela_reward = {}
local pontos = getPlayerStorageValue(players[i], boss.storage)
if i == 1 then
addLoot(boss.comum, tabela_reward, false)
addLoot(boss.semi_raro, tabela_reward, false)
addLoot(boss.raro, tabela_reward, false)
addLoot(boss.sempre, tabela_reward, true)
elseif i >= 2 and pontos >= math.ceil((porcentagem * 0.8)) then
addLoot(boss.comum, tabela_reward, false)
addLoot(boss.semi_raro, tabela_reward, false)
addLoot(boss.raro, tabela_reward, false)
addLoot(boss.muito_raro, tabela_reward, false)
elseif pontos < math.ceil((porcentagem * 0.8)) and pontos >= math.ceil((porcentagem * 0.6)) then
addLoot(boss.comum, tabela_reward, false)
addLoot(boss.semi_raro, tabela_reward, false)
addLoot(boss.raro, tabela_reward, false)
elseif pontos < math.ceil((porcentagem * 0.6)) and pontos >= math.ceil((porcentagem * 0.4)) then
addLoot(boss.comum, tabela_reward, false)
addLoot(boss.semi_raro, tabela_reward, false)
elseif pontos < math.ceil((porcentagem * 0.4)) and pontos >= math.ceil((porcentagem * 0.1)) then
addLoot(boss.comum, tabela_reward, false)
end
addRewardLoot(players[i], bossName, tabela_reward)
end
end
function onDeath(cid, corpse, killer)
local boss = REWARDCHEST.bosses[getCreatureName(cid):lower()]
if boss then
addEvent(rewardChestSystem, 1000, getCreatureName(cid):lower())
end
return true
end
function onStatsChange(cid, attacker, type, combat, value)
if isMonster(cid) and type == STATSCHANGE_HEALTHLOSS and isPlayer(attacker) then
local boss = REWARDCHEST.bosses[getCreatureName(cid):lower()]
if boss and attacker then
setPlayerStorageValue(attacker, boss.storage, getPlayerStorageValue(attacker, boss.storage) + math.ceil((value / REWARDCHEST.formula.hit)))
end
end
return true
end
Someone knows what cause bug? Can help me to fix?