Ola, instalei o seguinte sistema de War of Emperor:
https://tibiaking.com/forums/topic/17185-evento-war-of-emperium-woe-completo/
Estou tendo alguns problemas no log quando os geradores morrem:
> Broadcasted message: "one of Pre-Empes have been broken...".
[17:17:02.671] [Error - CreatureScript Interface]
[17:17:02.671] domodlib('Loot_func')
[17:17:02.671] function onDeath(cid, corpse, deathList)
[17:17:02.671] local killer,pos = deathList[1],getCreaturePosition(cid)
[17:17:02.671] addEvent(corpseRetireItems,1,killer,pos)
[17:17:02.671] return true
[17:17:02.671] end:onDeath
[17:17:02.671] Description:
[17:17:02.671] (luaGetThingPosition) Thing not found
[17:17:02.734] [Error - CreatureScript Interface]
[17:17:02.734] In a timer event called from:
[17:17:02.734] domodlib('Loot_func')
[17:17:02.734] function onDeath(cid, corpse, deathList)
[17:17:02.734] local killer,pos = deathList[1],getCreaturePosition(cid)
[17:17:02.734] addEvent(corpseRetireItems,1,killer,pos)
[17:17:02.734] return true
[17:17:02.734] end:onDeath
[17:17:02.734] Description:
[17:17:02.734] [string "info = {..."]:145: attempt to index local 'pos' (a boolean value)
[17:17:02.734] stack traceback:
[17:17:02.734] [string "info = {..."]:145: in function <[string "info = {..."]:142>
> Broadcasted message: "Both Pre-Empes have been broken, portals opened.".
[17:17:18.875] [Error - CreatureScript Interface]
[17:17:18.875] domodlib('Loot_func')
[17:17:18.875] function onDeath(cid, corpse, deathList)
[17:17:18.875] local killer,pos = deathList[1],getCreaturePosition(cid)
[17:17:18.875] addEvent(corpseRetireItems,1,killer,pos)
[17:17:18.875] return true
[17:17:18.875] end:onDeath
[17:17:18.875] Description:
[17:17:18.875] (luaGetThingPosition) Thing not found
[17:17:18.937] [Error - CreatureScript Interface]
[17:17:18.937] In a timer event called from:
[17:17:18.937] domodlib('Loot_func')
[17:17:18.937] function onDeath(cid, corpse, deathList)
[17:17:18.937] local killer,pos = deathList[1],getCreaturePosition(cid)
[17:17:18.937] addEvent(corpseRetireItems,1,killer,pos)
[17:17:18.937] return true
[17:17:18.937] end:onDeath
[17:17:18.937] Description:
[17:17:18.937] [string "info = {..."]:145: attempt to index local 'pos' (a boolean value)
[17:17:18.937] stack traceback:
[17:17:18.937] [string "info = {..."]:145: in function <[string "info = {..."]:142>
_woe.lua:
dofile("./var.woe")
local config = woe_config
fileStore = true
infoFile = 'tmp.woe'
infoLua = {}
Woe = {}
Woe.__index = Woe
function Woe.setup()
db.executeQuery("DROP TABLE IF EXISTS `woe`;")
db.executeQuery("CREATE TABLE `woe` (`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,`started` INT( 11 ) NOT NULL ,`guild` INT( 11 ) NOT NULL ,`breaker` INT( 11 ) NOT NULL ,`time` INT( 11 ) NOT NULL ,PRIMARY KEY ( `id` ) ,UNIQUE (`id`)) ENGINE = MYISAM")
doBroadcastMessage("DB Added [...]", config.bcType)
if fileStore then
local newFile = io.open(infoFile, "w")
for _, i in ipairs({'started', 'guild', 'breaker', 'time'}) do
newFile:write(i .. ' = 0 ;end;\n')
end
newFile:close()
else
db.executeQuery("DROP TABLE IF EXISTS `tmpwoe`;")
db.executeQuery("CREATE TABLE `tmpwoe` (`started` INT( 11 ) NOT NULL ,`guild` INT( 11 ) NOT NULL ,`breaker` INT( 111 ) NOT NULL ,`time` INT( 1 ) NOT NULL) ENGINE = MYISAM ;")
db.executeQuery("ALTER TABLE `tmpwoe` ADD `indexer` INT NOT NULL ")
db.executeQuery("INSERT INTO `tmpwoe` (`started` ,`guild` ,`breaker` ,`time`, `indexer`)VALUES ('0', '0', '0', '0', '1');")
end
end
function Woe.getInfo()
if fileStore then
local open = io.open(infoFile, "r")
if open then
for i in io.lines(infoFile) do
for v, k in ipairs({'started', 'guild', 'breaker', 'time'}) do
if (i:find(k)) then
n = i:match(k .. '.*')
infoLua[v] = tonumber(n:sub(n:find('=') + 2, n:find(';end;') - 2))
end
end
end
open:close()
end
else
for v, k in ipairs({'started', 'guild', 'breaker', 'time'}) do
local tmp = db.getResult("SELECT " .. k .. " FROM `tmpwoe` WHERE `indexer` = '1';")
infoLua[v] = tmp:getDataInt(k)
tmp:free()
end
end
end
function Woe.updateInfo(tab)
if fileStore then
local open = io.open(infoFile, "w")
if open then
for k, i in ipairs({'started', 'guild', 'breaker', 'time'}) do
open:write(i .. ' = ' .. tab[k] .. ' ;end;\n')
end
open:close()
end
else
for v, k in ipairs({'started', 'guild', 'breaker', 'time'}) do
db.executeQuery("UPDATE `tmpwoe` SET " .. k .. " = " .. tab[v] .. " WHERE `indexer` = 1;")
end
end
end
function Woe.save()
Woe.getInfo()
db.executeQuery("INSERT INTO `woe` (`started`, `guild`, `breaker`, `time`) VALUES (" .. infoLua[1] .. ", " .. infoLua[2] .. ", " .. infoLua[3] .. ", " .. infoLua[4] .. ");")
end
function Woe.getGuildName(id)
local res = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. id .. ";")
if (res:getID() ~= -1) then
ret = res:getDataString('name')
res:free()
end
return ret
end
function Woe.breakerName()
Woe.getInfo()
return infoLua[3] ~= 0 and getPlayerNameByGUID(infoLua[3]) or 'None'
end
function Woe.guildName()
Woe.getInfo()
return infoLua[2] ~= 0 and Woe.getGuildName(infoLua[2]) or 'Nones'
end
function Woe.startTime()
Woe.getInfo()
return os.date("%d %B %Y %X ", infoLua[1])
end
function Woe.breakTime()
Woe.getInfo()
return os.date("%d %B %Y %X ", infoLua[4])
end
function Woe.timeToEnd()
Woe.getInfo()
local myTable = {}
for k, i in ipairs({"%M", "%S"}) do
myTable[k] = os.date(i, os.difftime(os.time(), infoLua[1]))
end
return {mins = ((config.timeToEnd - 1) - myTable[1]), secs = (60 - myTable[2])}
end
function Woe.moveBack(cid, fromPosition, text)
doTeleportThing(cid, fromPosition, TRUE)
doPlayerSendCancel(cid, text)
end
function Woe.getGuildMembers(id)
local members = {}
for _, i in ipairs(getPlayersOnline()) do
if id == getPlayerGuildId(i) then
table.insert(members, i)
end
end
return members
end
function Woe.deco(text)
for _, i in ipairs(Castle.decoraciones) do
doItemSetAttribute(i, "description", text)
end
end
function Woe.removePortals()
for _, i in ipairs(Castle.PrePortalsPos) do
if (getThingFromPos(i).itemid > 0) then
doRemoveItem(getThingFromPos(i).uid)
end
end
end
function Woe.removePre()
for _, i in ipairs(Castle.PreEmpes) do
if (isCreature(getThingFromPos(i).uid) == true) then
doRemoveCreature(getThingFromPos(i).uid)
end
end
end
function Woe.checkPre()
local Count = 0
for _, i in ipairs(Castle.PreEmpes) do
if (isCreature(getThingFromPos(i).uid) == false) then
Count = Count + 1
end
end
return (Count == #Castle.PreEmpes)
end
function Woe.isTime()
return (getGlobalStorageValue(stor.WoeTime) == 1)
end
function Woe.isStarted()
return (getGlobalStorageValue(stor.Started) == 1)
end
function Woe.isRegistered(cid)
return (getPlayerStorageValue(cid, stor.register) == 1)
end
function Woe.isInCastle(cid)
local myPos = getCreaturePosition(cid)
if (myPos.x >= Castle.salas.a.fromx and myPos.x <= Castle.salas.a.tox) then
if (myPos.y >= Castle.salas.a.fromy and myPos.y <= Castle.salas.a.toy) then
if isInArray({Castle.salas.a.z, Castle.salas.b.z, Castle.salas.c.z}, myPos.z) then
return true
end
end
end
return false
end
function Woe.expulsar(guild, fromx, tox, fromy, toy, z, outpos)
for _x = fromx, tox do
for _y = fromy, toy do
local player = getThingFromPos({x = _x, y = _y, z = z, stackpos = 253}).uid
if (isPlayer(player) == true) then
if (getPlayerGuildId(player) ~= guild) then
doTeleportThing(player, outpos, false)
end
end
end
end
end
-- extras
function doSetItemActionId(uid, action)
doItemSetAttribute(uid, "aid", action)
end
function exhaust(cid, storevalue, exhausttime)
-- Exhaustion function by Alreth, v1.1 2006-06-24 01:31
-- Returns 1 if not exhausted and 0 if exhausted
newExhaust = os.time()
oldExhaust = getPlayerStorageValue(cid, storevalue)
if (oldExhaust == nil or oldExhaust < 0) then
oldExhaust = 0
end
if (exhausttime == nil or exhausttime < 0) then
exhausttime = 1
end
diffTime = os.difftime(newExhaust, oldExhaust)
if (diffTime >= exhausttime or diffTime < 0) then
setPlayerStorageValue(cid, storevalue, newExhaust)
return 1
else
return 0
end
end
--new
guard_pos =
{
{x = 55, y = 31, z = 5},
{x = 55, y = 30, z = 5},
{x = 55, y = 29, z = 5},
{x = 55, y = 28, z = 5},
{x = 55, y = 27, z = 5},
{x = 55, y = 26, z = 5},
{x = 55, y = 25, z = 5}
}
function Woe.check()
for storage = 24504, 24511 do
local pid = getGlobalStorageValue(storage)
if isCreature(pid) then
return false
end
end
return true
end
function Woe.summon()
for k, i in ipairs(guard_pos) do
local pid = doSummonCreature("guard", i)
setGlobalStorageValue(24503 + k, pid)
end
end
function Woe.remove()
for storage = 24504, 24511 do
local pid = getGlobalStorageValue(storage)
if isCreature(pid) then
doRemoveCreature(pid)
end
end
end
Alguem sabe dizer o que é?
Qualquer coisa posto parte do script aqui.
(The Forgotten Server, version 0.4_DEV (rev 3777))