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

Lua Script Error!

Ancore

New Member
Joined
Jul 6, 2012
Messages
216
Reaction score
1
Code:
[3/4/2013 14:35:3] [Error - CreatureScript Interface] 
[3/4/2013 14:35:3] data/creaturescripts/scripts/empe_broken.lua:onDeath
[3/4/2013 14:35:3] Description: 
[3/4/2013 14:35:3] data/creaturescripts/scripts/empe_broken.lua:25: attempt to call field 'remove' (a nil value)
[3/4/2013 14:35:3] stack traceback:
[3/4/2013 14:35:3]  data/creaturescripts/scripts/empe_broken.lua:25: in function <data/creaturescripts/scripts/empe_broken.lua:5>

Here is the script:

Lua:
dofile("./_woe.lua")

local config = woe_config
	
function onDeath(cid, corpse, deathList)
	local killer = deathList[1]
	Woe.getInfo()
	if Woe.isTime() then
		if isPlayer(killer) == true then
			if Woe.isRegistered(killer) then
				local Guild_ID = getPlayerGuildId(killer)
				Woe.updateInfo({infoLua[1], Guild_ID, getPlayerGUID(killer), os.time()})
				doBroadcastMessage("The Castle " .. Castle.name .. " has been conquest by " .. getCreatureName(killer) .. " for " .. getPlayerGuildName(killer) .. ".", config.bcType)
				Woe.deco("Actually the castle " .. Castle.name .. " is owned by " .. getPlayerGuildName(killer) .. ".")
				Woe.expulsar(Guild_ID, Castle.salas.a.fromx, Castle.salas.a.tox, Castle.salas.a.fromy, Castle.salas.a.toy, Castle.salas.a.z, Castle._exit)
				Woe.expulsar(Guild_ID, Castle.salas.b.fromx, Castle.salas.b.tox, Castle.salas.b.fromy, Castle.salas.b.toy, Castle.salas.b.z, Castle._exit)
				Woe.expulsar(Guild_ID, Castle.salas.c.fromx, Castle.salas.c.tox, Castle.salas.c.fromy, Castle.salas.c.toy, Castle.salas.c.z, Castle._exit)
			end
		end
		if isCreature(cid) == true then
			doRemoveCreature(cid)
		end
		Woe.removePre()
		Woe.removePortals()
		Woe.remove()
		setGlobalStorageValue(24503, -1)
		doSummonCreature("empe", Castle.empePos)
		doSummonCreature("pre1", Castle.PreEmpes[1])
		doSummonCreature("pre2", Castle.PreEmpes[2])
	end
	return true
end


Line 25 is:

Code:
		Woe.remove()
 
Last edited by a moderator:
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



that is the _woe.lua
 
Last edited by a moderator:
i cant find the function of remove() so lets try to remove it at all from the script, try this one:

Code:
dofile("./_woe.lua")
 
local config = woe_config
 
function onDeath(cid, corpse, deathList)
	local killer = deathList[1]
	Woe.getInfo()
	if Woe.isTime() then
		if isPlayer(killer) == true then
			if Woe.isRegistered(killer) then
				local Guild_ID = getPlayerGuildId(killer)
				Woe.updateInfo({infoLua[1], Guild_ID, getPlayerGUID(killer), os.time()})
				doBroadcastMessage("The Castle " .. Castle.name .. " has been conquest by " .. getCreatureName(killer) .. " for " .. getPlayerGuildName(killer) .. ".", config.bcType)
				Woe.deco("Actually the castle " .. Castle.name .. " is owned by " .. getPlayerGuildName(killer) .. ".")
				Woe.expulsar(Guild_ID, Castle.salas.a.fromx, Castle.salas.a.tox, Castle.salas.a.fromy, Castle.salas.a.toy, Castle.salas.a.z, Castle._exit)
				Woe.expulsar(Guild_ID, Castle.salas.b.fromx, Castle.salas.b.tox, Castle.salas.b.fromy, Castle.salas.b.toy, Castle.salas.b.z, Castle._exit)
				Woe.expulsar(Guild_ID, Castle.salas.c.fromx, Castle.salas.c.tox, Castle.salas.c.fromy, Castle.salas.c.toy, Castle.salas.c.z, Castle._exit)
			end
		end
		if isCreature(cid) == true then
			doRemoveCreature(cid)
		end
		Woe.removePre()
		Woe.removePortals()
		setGlobalStorageValue(24503, -1)
		doSummonCreature("empe", Castle.empePos)
		doSummonCreature("pre1", Castle.PreEmpes[1])
		doSummonCreature("pre2", Castle.PreEmpes[2])
	end
	return true
end
 
Remove
Lua:
Woe.remove()

Think it is an system function, not necessary.

Edit, saw up ^ already done it..
 
Back
Top