• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

(help)with script snakesys by mock the bear

smockxd

New Member
Joined
Jan 18, 2012
Messages
13
Reaction score
0
my problem is that I get this in console
Code:
[16/02/2012 22:52:54] [Error - Action Interface]
[16/02/2012 22:52:54] data/actions/scripts/snakesys.lua:onUse
[16/02/2012 22:52:54] Description:
[16/02/2012 22:52:54] data/actions/scripts/snakesys.lua:2: attempt to index global 'SNAKE' (a nil value)
[16/02/2012 22:52:54] stack traceback:
[16/02/2012 22:52:54]    data/actions/scripts/snakesys.lua:2: in function <data/actions/scripts/snakesys.lua:1>


and this I have in action
Code:
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,'manten la tecla ctrl + las teclas de flecha para mover la serpiente.')
SNAKE.generateFood()
else
doPlayerSendTextMessage(cid,25,'Espere alguien salir.')
end
end

hopefully help me be grateful with rep ++
 
do you have this in /lib/snakesys.lua?

PHP:
--[[
Script by Mock the bear
]]
SNAKE = {
	_VERSION="1.0 by mock",
	---Snake config
	itemid=1739,
	freeglobalstorage=28103,
	itemFood=6394,
	controlpos={x=1013,y=1164,z=6},
	exitpos = {x=1009,y=1157,z=7},
	centerpos={x=1012,y=1163,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,
}
 
Back
Top