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

Error snake system

Thorn

Spriting since 2013
Joined
Sep 24, 2012
Messages
2,203
Solutions
1
Reaction score
923
Location
Chile
Hello, i'm having and error with this script
http://otland.net/f81/snake-system-88387/ (snake system by mock)
everything works fine untill im playing and this is what happens:

LUA:
[27/12/2012 21:44:41] [Error - Action Interface] 
[27/12/2012 21:44:41] In a timer event called from: 
[27/12/2012 21:44:41] data/actions/scripts/snakesys.lua:onUse
[27/12/2012 21:44:41] Description: 
[27/12/2012 21:44:41] (luaDoRemoveItem) Item not found

it happens like 5 times in a row...

and this is the script i have:

ACTION:

LUA:
function onUse(cid, item, frompos, item2, topos)
	if not isPlayer(getGlobalStorageValue(SNAKE.freeglobalstorage)) then
		doTeleportThing(cid,SNAKE.controlpos)
		SNAKE.timer(cid,1,nil,item.actionid == 0 and 500 or item.actionid)
		doPlayerSendTextMessage(cid,25,'Aprieta CTRL y mueve las flechas para controlar a la snake.')
		SNAKE.generateFood()
	else
		doPlayerSendTextMessage(cid,25,'Please wait.')
	end
end

XML:
<action itemid="9564" event="script" value="snakesys.lua"/>

and this is in LIB

LUA:
--[[
Script by Mock the bear
]]
SNAKE = {
	_VERSION="1.0 by mock",
	---Snake config
	itemid=1739,
	freeglobalstorage=28103,
	itemFood=6394,
	controlpos={x=908,y=1190,z=7},
	exitpos = {x=908,y=1183,z=7},
	centerpos={x=908,y=1190,z=7},
	timer = function(cid,n,pos_,time)
		local pos_ = pos_ or {{SNAKE.centerpos}}
		setGlobalStorageValue(SNAKE.freeglobalstorage,cid)
		if not isPlayer(cid) then
			SNAKE.clean()
			return
		end
			for i,pos in pairs(pos_) do
				SNAKE.find_and_delete(pos[1])
				if i == 1 then
					pos[2] = SNAKE.copypos(pos[1])
					pos[1] = getPosByDir({x=pos[1].x,y=pos[1].y,z=pos[1].z,stackpos=255},getCreatureLookDir(cid))
				else
					pos[2] = SNAKE.copypos(pos[1])
					pos[1] = pos_[i-1][2]
				end
				local ret,p,walk = SNAKE.check(pos[1])
				if ret == 1 or ret == 3 then
					addEvent(doTeleportThing,1000,cid,SNAKE.exitpos)
					addEvent(doCreatureSay,1100,cid,'Points '..(#pos_-1)..'.')
					SNAKE.clean()
					setGlobalStorageValue(SNAKE.freeglobalstorage,0)
					return
				end
				if ret == 2 then
					doRemoveItem(p.uid,-1)
					if p.itemid == SNAKE.itemFood then
						pos_[#pos_+1] = {pos[2],pos[2]}
						for i=1,5 do
							addEvent(doSendMagicEffect,100*i,pos[1],29)
						end
						SNAKE.generateFood()
					end
				end
				doCreateItem(SNAKE.itemid,1,pos[1])
 
			end
			local plpos = getCreaturePosition(cid)
			local generated = {}
			for i=0,3 do
				generated[i] = getPosByDir({x=SNAKE.controlpos.x,y=SNAKE.controlpos.y,z=SNAKE.controlpos.z},i)
			end
			for i,pos in pairs(generated) do
				if SNAKE.samepos(plpos,pos) then
 
					doTeleportThing(cid,SNAKE.controlpos,false)
				end
				addEvent(doSendMagicEffect,100,pos,56,cid)
			end
		addEvent(SNAKE.timer,time,cid,n,pos_,time)
	end,
	copypos = function(p)
		return {x=p.x,y=p.y,z=p.z,stackpos=p.stackpos}
	end,
	samepos = function(p1,p2)
		if p1.x == p2.x and p2.y == p2.y then
			return true
		end
		return false
	end,
	generateFood = function()
		local pp = {x=SNAKE.centerpos.x+math.random(-6,6),y=SNAKE.centerpos.y+math.random(-4,4),z=SNAKE.centerpos.z}
		for i=1,5 do
			addEvent(doSendMagicEffect,100*i,pp,30)
		end
		doCreateItem(SNAKE.itemFood,1,pp)
	end,
	clean = function()
		for y=-4,4 do
			for x=-6,6 do
				local pp = {x=SNAKE.centerpos.x+x,y=SNAKE.centerpos.y+y,z=SNAKE.centerpos.z}
				for i=250,255 do
					pp.stackpos = i
					local p = getThingFromPos(pp)
					if p.itemid ~= 0 then
						doRemoveItem(p.uid,-1)
						doSendMagicEffect(pp,15)
					end
				end
			end
		end
	end,
	check = function(pos)
		for i=1,10 do
			pos.stackpos = i
			local p = getThingFromPos(pos)
			if p.itemid == SNAKE.itemid then
				return 1,p,true
			elseif not SNAKE.isWalkable(pos) then
				return 3,p,false
			elseif p.itemid ~= 0 then
				return 2,p
			end
		end
		return false
	end,
	find_and_delete = function(pos)
		for i=0,255 do
			pos.stackpos = 255-i
			local p = getThingFromPos(pos)
			if p.itemid == SNAKE.itemid then
				return doRemoveItem(p.uid,1)
			end
		end
	end,
	isWalkable = function(pos, creature, proj, pz)-- by Nord
		if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
		if getTopCreature(pos).uid > 0 and creature then return false end
		if getTileInfo(pos).protection and pz then return false, true end
		local n = not proj and 3 or 2
		for i = 0, 255 do
			pos.stackpos = i
			local tile = getTileThingByPos(pos)
			if tile.itemid ~= 0 and not isCreature(tile.uid) then
				if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
					return false
				end
			end
		end
		return true
	end,
}

plzzz someone help me find the error D:!!!!
 
Change
LUA:
controlpos={x=908,y=1190,z=7},
to
LUA:
controlpos={x=908,y=1190,z=6},
Cuz you are OVER the snake gaming area :=)

EDIT: After install this and test i saw the problem.

You need to change
LUA:
SNAKE.timer(cid,1,nil,item.actionid == 0 and 500 or item.actionid)
in the action script.. Change the timer

Also i find out that every time the "snake" going to go 1sqm it freezes like 1sec..
BuMp on this if anyone know..
 
Last edited:
ooh mmm and how do i change the timer? D:

- - - Updated - - -

what should i put in the timer?

- - - Updated - - -
 
Last edited:
Sorry i go with the other one, i use sqlite :S, no plz anyone plz help me to solve the initial problem with the snake system by mock, here is the error:

LUA:
[12/01/2013 21:08:12] [Error - Action Interface] 
[12/01/2013 21:08:12] In a timer event called from: 
[12/01/2013 21:08:12] data/actions/scripts/snakesys.lua:onUse
[12/01/2013 21:08:12] Description: 
[12/01/2013 21:08:12] (luaDoRemoveItem) Item not found

[12/01/2013 21:08:12] [Error - Action Interface] 
[12/01/2013 21:08:12] In a timer event called from: 
[12/01/2013 21:08:12] data/actions/scripts/snakesys.lua:onUse
[12/01/2013 21:08:12] Description: 
[12/01/2013 21:08:12] (luaDoRemoveItem) Item not found

The game works fine, but when i loose in the game, that happens :S
 
Last edited:
But is there a way to fix it just modifing the original script i posted? :/ i dont wanna mess it up with the solution you are giving me :/ (because it's kinda difficult to me :/)
 
Back
Top