• 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 stone remover

4Muki4

HOROHOROHORO
Joined
May 1, 2012
Messages
757
Reaction score
70
hello i got script that remove stone from a pos but if u spam it i get error and i would get a error free one
Code:
[14/6/2013 16:52:42] [Error - Action Interface] 
[14/6/2013 16:52:42] In a timer event called from: 
[14/6/2013 16:52:42] data/actions/scripts/muki/stonere.lua:onUse
[14/6/2013 16:52:42] Description: 
[14/6/2013 16:52:42] (luaDoPlayerSendTextMessage) Player not found
my script:
Lua:
local pos = {x = 1089,  y = 1360,  z = 11}
local wall = 1304
local level = 100
local seconds = 60
local event = 0
 
local function reset(leverPos)
        local lever = getTileItemById(leverPos, 1946).uid
	doTransformItem(lever, 1945)
	doCreateItem(wall, 1, pos)
        doPlayerSendTextMessage(cid,21,"The pass has been closed!")
end
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
 
 
          if item.itemid == 1945 and getPlayerLevel(cid) >= level then
                doRemoveItem(getTileItemById(pos,wall).uid)
                doPlayerSendTextMessage(cid,21,"You have opened the pass, Beware!")
                event = addEvent(reset, seconds * 1000, getThingPos(item.uid))
		doTransformItem(item.uid,item.itemid+1)
	elseif item.itemid == 1946 and getPlayerLevel(cid) >= level then
		stopEvent(event)
		doPlayerSendTextMessage(cid,21,"You have closed the pass!")
		doTransformItem(item.uid,item.itemid-1)
		doCreateItem(wall, 1, pos)
end
return true
end
 
You are not passing the cid of the player to send the message.

Try this:

Lua:
local pos = {x = 1089,  y = 1360,  z = 11}
local wall = 1304
local level = 100
local seconds = 60
local event = 0
 
local function reset(leverPos, cid)
	local lever = getTileItemById(leverPos, 1946).uid
	doTransformItem(lever, 1945)
	doCreateItem(wall, 1, pos)
	if(isPlayer(cid)) then
		doPlayerSendTextMessage(cid,21,"The pass has been closed!")
	end	
end
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(not isPlayer(cid)) then
		return true
	end
	if item.itemid == 1945 and getPlayerLevel(cid) >= level then
		doRemoveItem(getTileItemById(pos,wall).uid)
        doPlayerSendTextMessage(cid,21,"You have opened the pass, Beware!")
        event = addEvent(reset, seconds * 1000, getThingPos(item.uid), cid)
		doTransformItem(item.uid,item.itemid+1)
	elseif item.itemid == 1946 and getPlayerLevel(cid) >= level then
		stopEvent(event)
		doPlayerSendTextMessage(cid,21,"You have closed the pass!")
		doTransformItem(item.uid,item.itemid-1)
		doCreateItem(wall, 1, pos)
	end
	return true
end
 
Last edited:
@up
Well he did not pass the cid argument to the delayed event, so cid is equal to nil.
You might want to change it so the lever still resets when there is no player, but the message is not sent then.
 
Back
Top