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

Linux Bug at Login again

Vrotz

Member
Joined
Apr 7, 2011
Messages
1,071
Reaction score
7
Location
Brazil
Hello,

I've this error when my character loggin in after created ur character. (Loggout and loggin in again after created).

Code:
Kodsk has logged in.

[Error - CreatureScript Interface]
data/creaturescripts/scripts/login.lua:onLogin
Description:
data/creaturescripts/scripts/login.lua:69: attempt to call global 'isContainer' (a nil value)
stack traceback:
        data/creaturescripts/scripts/login.lua:69: in function 'scanItem'
        data/creaturescripts/scripts/login.lua:62: in function <data/creaturescripts/scripts/login.lua:6>
Kodsk has logged out.


here my scrpit login.lua:
Code:
local config = {
	loginMessage = getConfigValue('loginMessage'),
	useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}

function onLogin(cid)
	local loss = getConfigValue('deathLostPercent')
	if(loss ~= nil) then
		doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
		doPlayerAddBlessing(cid, 1)
		doPlayerAddBlessing(cid, 2)
		doPlayerAddBlessing(cid, 3)
		doPlayerAddBlessing(cid, 4)
		doPlayerAddBlessing(cid, 5)
		doPlayerAddPremiumDays(cid, 2)
		doPlayerSetPromotionLevel(cid, 1)
	end

	local accountManager = getPlayerAccountManager(cid)
	if(accountManager == MANAGER_NONE) then
		local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
		if(lastLogin > 0) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
			str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
		else
			str = str .. " Please choose your outfit."
			doPlayerSendOutfitWindow(cid)
		end

		doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
	elseif(accountManager == MANAGER_NAMELOCK) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
	elseif(accountManager == MANAGER_ACCOUNT) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
	end

	if(not isPlayerGhost(cid)) then
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
	end

     registerCreatureEvent(cid, "kill")
     registerCreatureEvent(cid, "firstitems")
     registerCreatureEvent(cid, "onPrepareDeath")
     registerCreatureEvent(cid, "PlayerLogout")
     registerCreatureEvent(cid, "onPrepareDeath")
     registerCreatureEvent(cid, "deathBroadcast")
     registerCreatureEvent(cid, "DeathBroadcast")

	registerCreatureEvent(cid, "Idle")
	if(config.useFragHandler) then
		registerCreatureEvent(cid, "SkullCheck")
	end

	registerCreatureEvent(cid, "ReportBug")
 
	--code for item that expires
	for slot = CONST_SLOT_FIRST, CONST_SLOT_LAST do
		local item = getPlayerSlotItem(cid, slot)
		if item and item.uid > 0 then
			scanItem(cid, item.uid)
		end
	end			
	return true
end
 
function scanItem(cid, uid) --By Darkhaos.
	if isContainer(uid) then
		for k = (getContainerSize(uid) - 1), 0, -1 do
			local tmp = getContainerItem(uid, k)
			if not isContainer(tmp.uid) then
				if getItemAttribute(tmp.uid, "boughtdate") and os.time() >= getItemAttribute(tmp.uid, "boughtdate") then
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getItemNameById(tmp.itemid) .. " expirou os 30 dias.")
					doRemoveItem(tmp.uid)
				end
			elseif isContainer(tmp.uid) then
				scanItem(cid, tmp.uid)
			end
		end
	else
		if getItemAttribute(uid, "boughtdate") and os.time() >= getItemAttribute(uid, "boughtdate") then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getItemNameById(getThing(uid).itemid) .. " expirou os 30 dias.")
			doRemoveItem(uid)
		end
	end
	return true
end
 
Back
Top