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

Action Snake system

PHP:
[Error - CreatureScript Interface]
data/creaturescripts/scripts/zombie/onattack.lua:onStatsChange
Description:
data/lib/032-position.lua:2: attempt to index local 'fromPosition' (a nil value)
stack traceback:
        data/lib/032-position.lua:2: in function 'isInRange'
        data/creaturescripts/scripts/zombie/onattack.lua:35: in function <data/creaturescripts/scripts/zombie/onattack.lua:34>

[Error - CreatureScript Interface]
data/creaturescripts/scripts/zombie/onattack.lua:onStatsChange
Description:
data/lib/032-position.lua:2: attempt to index local 'fromPosition' (a nil value)
stack traceback:
        data/lib/032-position.lua:2: in function 'isInRange'
        data/creaturescripts/scripts/zombie/onattack.lua:35: in function <data/creaturescripts/scripts/zombie/onattack.lua:34>

[Error - CreatureScript Interface]
data/creaturescripts/scripts/zombie/onattack.lua:onStatsChange
Description:
data/lib/032-position.lua:2: attempt to index local 'fromPosition' (a nil value)
stack traceback:
        data/lib/032-position.lua:2: in function 'isInRange'
        data/creaturescripts/scripts/zombie/onattack.lua:35: in function <data/creaturescripts/scripts/zombie/onattack.lua:34>

[Error - CreatureScript Interface]
data/creaturescripts/scripts/zombie/onattack.lua:onStatsChange
Description:
data/lib/032-position.lua:2: attempt to index local 'fromPosition' (a nil value)
stack traceback:
        data/lib/032-position.lua:2: in function 'isInRange'
        data/creaturescripts/scripts/zombie/onattack.lua:35: in function <data/creaturescripts/scripts/zombie/onattack.lua:34>

[Error - CreatureScript Interface]
data/creaturescripts/scripts/zombie/onattack.lua:onStatsChange
Description:
data/lib/032-position.lua:2: attempt to index local 'fromPosition' (a nil value)
stack traceback:
        data/lib/032-position.lua:2: in function 'isInRange'
        data/creaturescripts/scripts/zombie/onattack.lua:35: in function <data/creaturescripts/scripts/zombie/onattack.lua:34>
erros spamming while tryinmg to use sanek sys 0.3.6
 
I had 1 problem with this one. The cake was show up under the character and the snake couldn't eat it. What can I do ?
 
on 0.4 I get this bug
and script does not work

[20:14:26.455] [Error - Action Interface]
[20:14:26.455] data/actions/scripts/snakesys.lua:eek:nUse
[20:14:26.455] Description:
[20:14:26.455] data/lib/snakesys.lua:68: attempt to index local 'p2' (a number value)
[20:14:26.455] stack traceback:
[20:14:26.455] data/lib/snakesys.lua:68: in function 'samepos'
[20:14:26.455] data/lib/snakesys.lua:56: in function 'timer'
[20:14:26.455] data/actions/scripts/snakesys.lua:4: in function <data/actions/scripts/snakesys.lua:1>
 
Hello, Cybershot asked to me create an snake system so i done it
wink.gif


Ir worked 100% on TFS 0.3.6

First create something like this
lugar1.png

Set one center and 6 sqm to < 6 to > 4 to /\ and 4 to \/
Next:
lugar2.png

Dont need any aid.
And to enter:
lugar3.png

Add this tag on actions.xml:
Code:
<action itemid="9564" event="script" value="snakesys.lua"/>
on Data/actions/scripts create snakesys.lua
ad add this:
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,'Hold key CTRL and use the arrows to control snake.')
        SNAKE.generateFood()
    else
        doPlayerSendTextMessage(cid,25,'Please wait.')
    end
end
Now if you use TFS 0.3.4 or less you need add dofile('data/lib/snakesys.lua') on functions.lua
If you use 0.3.6 or 0.3.5 only add snakesys.lua on data/lib
and set it on snakesys.lua
wink.gif

Code:
--[[
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 = 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,
}

Done
razzberry.gif

If you want seed Snake in action and how to install check on this video:
YouTube - Snake system by mock - demonstration / instalation

Like? Rep++ ;D (or not :()

PS: You have to teleport the character UPSTAIRS! one floor above the game!
what this actionid 5331

36060
 
Back
Top