[18:3:46.148] [Error - NpcScript Interface] [18:3:46.148] data/npc/scripts/simple_task.lua:onCreatureSay [18:3:46.148] Description: [18:3:46.148] data/npc/scripts/simple_task.lua:88: attempt to perform arithmetic on local 'contagem' (a string value) [18:3:46.148] stack traceback: [18:3:46.148] data/npc/scripts/simple_task.lua:88: in function 'callback' [18:3:46.148] data/npc/lib/npcsystem/npchandler.lua:383: in function 'onCreatureSay' [18:3:46.148] data/npc/scripts/simple_task.lua:8: in function <data/npc/scripts/simple_task.lua:8>
configbosses_task = { {race = "",Playerpos = {x = 189, y = 57, z = 7}, FromPosToPos = {{x = 186, y = 54, z = 7},{x = 193, y = 60, z = 7}},time = 5}, {race = "",Playerpos = {x = 196, y = 39, z = 7}, FromPosToPos = {{x = 195, y = 37, z = 7},{x = 198, y = 41, z = 7}}, time = 5}, {race = "",Playerpos = {x = 208, y = 59, z = 7}, FromPosToPos = {{x = 206, y = 56, z = 7},{x = 209, y = 65, z = 7}}, time = 5} }
function CheckTask(cid) for k, v in pairs(tasktabble) do if getPlayerStorageValue(cid,v.storage_start) >= 1 then return true end end return false end function finisheAllTask(cid) local config = { exp = {true,100000}, money = {true,200000}, items ={false,{{2124,2},{2173,1}}}, premium ={false,5} } local x = true for k, v in pairs(tasktabble) do if tonumber(getPlayerStorageValue(cid,v.storage)) then x = false end end if x == true then setPlayerStorageValue(cid, 521456, 0) local b = getGlobalStorageValue(63005) if b == -1 then b = 1 end if b < 11 then setGlobalStorageValue(63005,b+1) doBroadcastMessage('[Task Mission Complete] '..getCreatureName(cid)..' was the '..b..' to finish the task!.') doPlayerAddPremiumDays(cid, config.premium[1] == true and config.premium[2] or 0) doPlayerAddExp(cid, config.exp[1] == true and config.exp[2] or 0) doPlayerAddMoney(cid, config.money[1] == true and config.money[2] or 0) if config.items[1] == true then doAddItemsFromList(cid,config.items[2]) end doItemSetAttribute(doPlayerAddItem(cid, 7369), "name", "trophy "..getCreatureName(cid).." completed all the task.") end end end function HavePlayerPosition(cid, from, to) return isInRange(getPlayerPosition(cid), from, to) and true or false end function getRankStorage(cid, value, max, RankName) -- by vodka local str ="" str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n" local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > max then break end str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str) end function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid) local piles = 0 if #item > 0 then for i,x in pairs(item) do if getThing(x).type < 100 then local it = getThing(x) doTransformItem(it.uid, itemid, it.type+quant) if it.type+quant > 100 then doPlayerAddItem(cid, itemid, it.type+quant-100) end else piles = piles+1 end end else return doPlayerAddItem(cid, itemid, quant) end if piles == #item then doPlayerAddItem(cid, itemid, quant) end end function getItemsFromList(items) -- by vodka local str = '' if table.maxn(items) > 0 then for i = 1, table.maxn(items) do str = str .. items[2] .. ' ' .. getItemNameById(items[1]) if i ~= table.maxn(items) then str = str .. ', ' end end end return str end function doAddItemsFromList(cid,items) -- by vodka if table.maxn(items) > 0 then for i = 1, table.maxn(items) do local count = items[2] while count > 0 do if isItemStackable(items[1]) then doPlayerAddItemStacking(cid, items[1], 1) else doPlayerAddItem(cid, items[1],1) end count = count - 1 end end end end function pairsByKeys(t, f) local a = {} for n in pairs(t) do table.insert(a, n) end table.sort(a, f) local i = 0 local iter = function () i = i + 1 if a == nil then return nil else return a, t[a] end end return iter end ]]></config> <event type="login" name="TaskLogin" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "KillTask") return true end]]></event> <talkaction words="/task;!task" event="buffer"><![CDATA[ domodlib('task_func') local param = string.lower(param) if param == "rank" then getRankStorage(cid, 521456, 20, "Task Rank Finalizadas") return true end local str = "" str = str .. "Task Completed :\n\n" for k, v in pairsByKeys(tasktabble) do local contagem = getPlayerStorageValue(cid, v.storage) if (contagem == -1) then contagem = 1 end str = str..k.." = ".. (not tonumber(contagem) and "["..contagem.."]" or "["..((contagem)-1).."/"..v.count.."]") .."\n" end str = str .. "" return doShowTextDialog(cid, 8983, str) ]]></talkaction> <event type="kill" name="KillTask" event="script"><![CDATA[ domodlib('task_func') function onKill(cid, target, lastHit) if(isMonster(target) == true) then local n = string.lower(getCreatureName(target)) for race, mob in pairs(tasktabble) do if getPlayerStorageValue(cid,mob .storage_start) >= 1 then for i = 1,#mob.monster_race do if n == mob.monster_race then local contagem = getPlayerStorageValue(cid, mob.storage) if (contagem == -1) then contagem = 1 end if not tonumber(contagem) then return true end if contagem > mob.count then return true end if contagem > mob.count then return true end setPlayerStorageValue(cid, mob.storage, contagem+1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == mob.count and "Congratulations! You finished the task of "..race.."." or "defeated. Total [" .. contagem .. "/" .. mob.count .. "] " .. race .. ".").."") end end end end end return true end]]></event> </mod>
info
Grupo: Visconde
Registrado: 02/09/10
Posts: 341
Reputação: +6
Gênero: Masculino
[18:3:46.148] [Error - NpcScript Interface]
[18:3:46.148] data/npc/scripts/simple_task.lua:onCreatureSay
[18:3:46.148] Description:
[18:3:46.148] data/npc/scripts/simple_task.lua:88: attempt to perform arithmetic on local 'contagem' (a string value)
[18:3:46.148] stack traceback:
[18:3:46.148] data/npc/scripts/simple_task.lua:88: in function 'callback'
[18:3:46.148] data/npc/lib/npcsystem/npchandler.lua:383: in function 'onCreatureSay'
[18:3:46.148] data/npc/scripts/simple_task.lua:8: in function <data/npc/scripts/simple_task.lua:8>
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Simple Task" version="3.0" author="Vodkart" contact="xtibia.com" enabled="yes">
<config name="task_func"><![CDATA[
tasktabble = {
["fada"] = {monster_race={"fada"}, storage_start = 200201, storage = 91001,count = 10000,exp = 1000000,money = 10000000},
["demon vip"] = {monster_race={"demon vip","demon master vip"}, storage_start = 200202, storage = 91002,count = 10000,exp = 1000000,money = 10000000},
["grim reaper vip"] = {monster_race={"grim reaper vip","grim reaper"}, storage_start = 200203, storage = 91003,count = 10000,exp = 1000000,money = 10000000},
["frost dragon vip"] = {monster_race={"frost dragon vip","frost dragon"}, storage_start = 200204, storage = 91004,count = 10000,exp = 1000000,money = 10000000},
["hacker"] = {monster_race={"hacker"}, storage_start = 200205, storage = 91005,count = 10000,exp = 1000000,money = 10000000},
["tibia bug"] = {monster_race={"tibia bug"}, storage_start = 200206, storage = 91006,count = 10000,exp = 1000000,money = 10000000},
["hellgorak"] = {monster_race={"hellgorak"}, storage_start = 200207, storage = 91007,count = 10000,exp = 1000000,money = 10000000},
["abominator"] = {monster_race={"abominator"}, storage_start = 200208, storage = 91008,count = 10000,exp = 1000000,money = 10000000},
["dark abominator"] = {monster_race={"dark abominator"}, storage_start = 200209, storage = 91009,count = 10000,exp = 1000000,money = 10000000},
["ushuriel"] = {monster_race={"ushuriel"}, storage_start = 200210, storage = 91010,count = 10000,exp = 1000000,money = 10000000},
["amoeba"] = {monster_race={"amoeba"}, storage_start = 200211, storage = 91011,count = 10000,exp = 1000000,money = 10000000},
["dragao esqueleto"] = {monster_race={"bones", "dragao esqueleto"}, storage_start = 200212, storage = 91012,count = 10000,exp = 1000000,money = 10000000},
["achad"] = {monster_race={"infernatil"}, storage_start = 200213, storage = 91013,count = 10000,exp = 1000000,money = 10000000},
["morgaroth"] = {monster_race={"morgaroth"}, storage_start = 200214, storage = 91014,count = 10000,exp = 1000000,money = 10000000},
["warlock vip"] = {monster_race={"warlock vip","warlock"}, storage_start = 200215, storage = 91015,count = 10000,exp = 1000000,money = 10000000},
["medusa vip"] = {monster_race={"medusa vip", "medusa"}, storage_start = 200215, storage = 91016,count = 10000,exp = 1000000,money = 10000000},
["hydra vip"] = {monster_race={"hydra", "hydra vip"}, storage_start = 200217, storage = 91017,count = 10000,exp = 1000000,money = 10000000},
["webster"] = {monster_race={"webster"}, storage_start = 200218, storage = 91018,count = 10000,exp = 1000000,money = 10000000},
["the fire elemental"] = {monster_race={"the fire elemental"}, storage_start = 200219, storage = 91019,count = 10000,exp = 1000000,money = 10000000},
["quara abominator"] = {monster_race={"quara abominator"}, storage_start = 200220, storage = 91020,count = 10000,exp = 1000000,money = 10000000},
["the spirit"] = {monster_race={"the spirit"}, storage_start = 200221, storage = 91021,count = 10000,exp = 1000000,money = 10000000},
["lobisomen"] = {monster_race={"lobisomen"}, storage_start = 200222, storage = 91022,count = 10000,exp = 1000000,money = 10000000},
["orchid frog"] = {monster_race={"orchid frog","coral frog","crimson frog","azure frog"}, storage_start = 200223, storage = 91023,count = 10000,exp = 1000000,money = 10000000},
["behemoth"] = {monster_race={"behemoth"}, storage_start = 200224, storage = 91024,count = 10000,exp = 1000000,money = 10000000},
["ghastly dragon"] = {monster_race={"ghastly dragon"}, storage_start = 200225, storage = 91025,count = 10000,exp = 1000000,money = 10000000},
["achad"] = {monster_race={"achad"}, storage_start = 200226, storage = 91026,count = 10000,exp = 1000000,money = 10000000},
["yakchal"] = {monster_race={"yakchal"}, storage_start = 200227, storage = 91026,count = 10000,exp = 1000000,money = 10000000},
["the masked marauder"] = {monster_race={"the masked marauder"}, storage_start = 200228, storage = 91026,count = 10000,exp = 1000000,money = 10000000},
["zoralurk"] = {monster_race={"zoralurk"}, storage_start = 200229, storage = 91026,count = 10000,exp = 1000000,money = 10000000},
["battlemaster zunzu"] = {monster_race={"battlemaster zunzu"}, storage_start = 200230, storage = 91026,count = 10000,exp = 1000000,money = 10000000},
["badger"] = {monster_race={"badger"}, storage_start = 200231, storage = 91026,count = 10000,exp = 1000000,money = 10000000},
["kreebosh the exile"] = {monster_race={"kreebosh the exile"}, storage_start = 200232, storage = 91026,count = 10000,exp = 1000000,money = 10000000},
["svoren the mad"] = {monster_race={"svoren the madr"}, storage_start = 200233, storage = 91026,count = 10000,exp = 1000000,money = 10000000},
["orcus the cruel"] = {monster_race={"orcus the cruel"}, storage_start = 200234, storage = 91026,count = 10000,exp = 1000000,money = 10000000},
["the dark dancer"] = {monster_race={"the dark dancer"}, storage_start = 200235, storage = 91026,count = 10000,exp = 1000000,money = 10000000},
["ceifador"] = {monster_race={"ceifador"}, storage_start = 200236, storage = 91026,count = 10000,exp = 1000000,money = 10000000}
}
configbosses_task = {
{race = "",Playerpos = {x = 189, y = 57, z = 7}, FromPosToPos = {{x = 186, y = 54, z = 7},{x = 193, y = 60, z = 7}},time = 5},
{race = "",Playerpos = {x = 196, y = 39, z = 7}, FromPosToPos = {{x = 195, y = 37, z = 7},{x = 198, y = 41, z = 7}}, time = 5},
{race = "",Playerpos = {x = 208, y = 59, z = 7}, FromPosToPos = {{x = 206, y = 56, z = 7},{x = 209, y = 65, z = 7}}, time = 5}
}
function CheckTask(cid)
for k, v in pairs(tasktabble) do
if getPlayerStorageValue(cid,v.storage_start) >= 1 then return true end
end
return false
end
function finisheAllTask(cid)
local config = {
exp = {true,100000},
money = {true,200000},
items ={false,{{2124,2},{2173,1}}},
premium ={false,5}
}
local x = true
for k, v in pairs(tasktabble) do
if tonumber(getPlayerStorageValue(cid,v.storage)) then
x = false
end
end
if x == true then
setPlayerStorageValue(cid, 521456, 0)
local b = getGlobalStorageValue(63005) if b == -1 then b = 1 end
if b < 11 then
setGlobalStorageValue(63005,b+1)
doBroadcastMessage('[Task Mission Complete] '..getCreatureName(cid)..' was the '..b..' to finish the task!.')
doPlayerAddPremiumDays(cid, config.premium[1] == true and config.premium[2] or 0)
doPlayerAddExp(cid, config.exp[1] == true and config.exp[2] or 0)
doPlayerAddMoney(cid, config.money[1] == true and config.money[2] or 0)
if config.items[1] == true then doAddItemsFromList(cid,config.items[2]) end
doItemSetAttribute(doPlayerAddItem(cid, 7369), "name", "trophy "..getCreatureName(cid).." completed all the task.")
end
end
end
function HavePlayerPosition(cid, from, to)
return isInRange(getPlayerPosition(cid), from, to) and true or false
end
function getRankStorage(cid, value, max, RankName) -- by vodka
local str =""
str = "--[".. (RankName == nil and "RANK STORAGE" or ""..RankName.."") .."]--\n\n"
local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..value.." ORDER BY cast(value as INTEGER) DESC;")
if (query:getID() ~= -1) then k = 1 repeat if k > max then break end
str = str .. "\n " .. k .. ". "..getPlayerNameByGUID(query:getDataString("player_id")).." - [" .. query:getDataInt("value") .. "]"
k = k + 1 until not query:next() end return doShowTextDialog(cid, 2529, str)
end
function getItemsInContainerById(container, itemid) -- Function By Kydrai
local items = {}
if isContainer(container) and getContainerSize(container) > 0 then
for slot=0, (getContainerSize(container)-1) do
local item = getContainerItem(container, slot)
if isContainer(item.uid) then
local itemsbag = getItemsInContainerById(item.uid, itemid)
for i=0, #itemsbag do
table.insert(items, itemsbag)
end
else
if itemid == item.itemid then
table.insert(items, item.uid)
end
end
end
end
return items
end
function doPlayerAddItemStacking(cid, itemid, quant) -- by mkalo
local item = getItemsInContainerById(getPlayerSlotItem(cid, 3).uid, itemid)
local piles = 0
if #item > 0 then
for i,x in pairs(item) do
if getThing(x).type < 100 then
local it = getThing(x)
doTransformItem(it.uid, itemid, it.type+quant)
if it.type+quant > 100 then
doPlayerAddItem(cid, itemid, it.type+quant-100)
end
else
piles = piles+1
end
end
else
return doPlayerAddItem(cid, itemid, quant)
end
if piles == #item then
doPlayerAddItem(cid, itemid, quant)
end
end
function getItemsFromList(items) -- by vodka
local str = ''
if table.maxn(items) > 0 then
for i = 1, table.maxn(items) do
str = str .. items[2] .. ' ' .. getItemNameById(items[1])
if i ~= table.maxn(items) then str = str .. ', ' end end end
return str
end
function doAddItemsFromList(cid,items) -- by vodka
if table.maxn(items) > 0 then
for i = 1, table.maxn(items) do
local count = items[2]
while count > 0 do
if isItemStackable(items[1]) then
doPlayerAddItemStacking(cid, items[1], 1)
else
doPlayerAddItem(cid, items[1],1)
end
count = count - 1
end
end
end
end
function pairsByKeys(t, f)
local a = {}
for n in pairs(t) do table.insert(a, n) end
table.sort(a, f)
local i = 0
local iter = function ()
i = i + 1
if a == nil then return nil
else return a, t[a]
end
end
return iter
end
]]></config>
<event type="login" name="TaskLogin" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "KillTask")
return true
end]]></event>
<talkaction words="/task;!task" event="buffer"><![CDATA[
domodlib('task_func')
local param = string.lower(param)
if param == "rank" then
getRankStorage(cid, 521456, 20, "Task Rank Finalizadas") return true
end
local str = ""
str = str .. "Task Completed :\n\n"
for k, v in pairsByKeys(tasktabble) do
local contagem = getPlayerStorageValue(cid, v.storage)
if (contagem == -1) then contagem = 1 end
str = str..k.." = ".. (not tonumber(contagem) and "["..contagem.."]" or "["..((contagem)-1).."/"..v.count.."]") .."\n"
end
str = str .. ""
return doShowTextDialog(cid, 8983, str)
]]></talkaction>
<event type="kill" name="KillTask" event="script"><![CDATA[
domodlib('task_func')
function onKill(cid, target, lastHit)
if(isMonster(target) == true) then
local n = string.lower(getCreatureName(target))
for race, mob in pairs(tasktabble) do
if getPlayerStorageValue(cid,mob .storage_start) >= 1 then
for i = 1,#mob.monster_race do
if n == mob.monster_race then
local contagem = getPlayerStorageValue(cid, mob.storage)
if (contagem == -1) then contagem = 1 end
if not tonumber(contagem) then return true end
if contagem > mob.count then return true end
if contagem > mob.count then return true end
setPlayerStorageValue(cid, mob.storage, contagem+1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == mob.count and "Congratulations! You finished the task of "..race.."." or "defeated. Total [" .. contagem .. "/" .. mob.count .. "] " .. race .. ".").."")
end
end
end
end
end
return true
end]]></event>
</mod>