Strayzer 6 Postado Dezembro 10, 2010 Share Postado Dezembro 10, 2010 (editado) Snake System (É o jogo da cobrinha, geralmente tem em vários celulares) Bem, eu estava pesquisando uns scripts em alguns fóruns e achei esse. Antes de tudo venho falar que o script NÃO É MEU, é do Mock, só estou trazendo o conteúdo ao XTibia.com. Bem, vamos ao script. Primeiro abra seu map editor e crie uma área de 13x9sqms. Exemplo: No andar de cima coloque o itemid 460 Exemplo: E para entrar na arena: (Mais pra frente você irá entender) Ok, agora já pode fechar seu map editor. Agora em actions.xml adicione esta tag: <action itemid="9564" event="script" value="snakesys.lua"/> Crie em data/actions/scripts um arquivo chamado snakesys.lua e coloque isso nele: function onUse(cid, item, frompos, item2, topos) if not isPlayer(getGlobalStorageValue(SNAKE.freeglobalsto rage)) then doTeleportThing(cid,SNAKE.controlpos) SNAKE.timer(cid,1,nil,item.actionid == 0 and 500 or item.actionid) doPlayerSendTextMessage(cid,25,'Segure a tecla control e use as setas para mover a cobra.') SNAKE.generateFood() else doPlayerSendTextMessage(cid,25,'Espere alguem sair.') end end Depois crie dentro da pasta data/lib um arquivo tambem chamado snakesys.lua e ponha isso(é um pouquinho grande .-.): --[[ 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.controlp os.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=SNA KE.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, } Vídeo demonstrando o sistema e ensinando a configurar: Créditos Mock - Pelos scripts, imagens e o vídeo Strayzer (eu) - Por trazer o conteúdo ao XTibia.com Enjoy Editado Janeiro 7, 2011 por Strayzer Link para o comentário Compartilhar em outros sites More sharing options...
tclpsy 0 Postado Fevereiro 21, 2011 Share Postado Fevereiro 21, 2011 não funciona. [21/02/2011 00:25:07] [Error - LuaScriptInterface::loadFile] data/lib/snakesys.lua:53: '}' expected near 'os' [21/02/2011 00:25:07] [Warning - LuaScriptInterface::initState] Cannot load data/lib/ [21/02/2011 00:25:07] [Error - LuaScriptInterface::loadFile] data/lib/snakesys.lua:53: '}' expected near 'os' [21/02/2011 00:25:07] [Warning - LuaScriptInterface::initState] Cannot load data/lib/ [21/02/2011 00:25:08] [Error - LuaScriptInterface::loadFile] data/lib/snakesys.lua:53: '}' expected near 'os' [21/02/2011 00:25:08] [Warning - LuaScriptInterface::initState] Cannot load data/lib/ [21/02/2011 00:25:08] [Error - LuaScriptInterface::loadFile] data/actions/scripts/snakesys.lua:2: ')' expected near 'rage' [21/02/2011 00:25:08] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/snakesys.lua) [21/02/2011 00:25:08] data/actions/scripts/snakesys.lua:2: ')' expected near 'rage' [21/02/2011 00:25:09] [Error - LuaScriptInterface::loadFile] data/lib/snakesys.lua:53: '}' expected near 'os' [21/02/2011 00:25:09] [Warning - LuaScriptInterface::initState] Cannot load data/lib/ [21/02/2011 00:25:10] [Error - LuaScriptInterface::loadFile] data/lib/snakesys.lua:53: '}' expected near 'os' [21/02/2011 00:25:10] [Warning - LuaScriptInterface::initState] Cannot load data/lib/ [21/02/2011 00:25:10] [Error - LuaScriptInterface::loadFile] data/lib/snakesys.lua:53: '}' expected near 'os' [21/02/2011 00:25:10] [Warning - LuaScriptInterface::initState] Cannot load data/lib/ [21/02/2011 00:25:10] [Error - LuaScriptInterface::loadFile] data/lib/snakesys.lua:53: '}' expected near 'os' [21/02/2011 00:25:10] [Warning - LuaScriptInterface::initState] Cannot load data/lib/ Link para o comentário Compartilhar em outros sites More sharing options...
LOrDoS 0 Postado Abril 2, 2011 Share Postado Abril 2, 2011 (editado) [02/04/2011 13:21:19] [Error - LuaScriptInterface::loadFile] data/actions/lib/snakesys.lua:59: '}' expected near 'os' [02/04/2011 13:21:19] [Warning - BaseEvents::loadFromXml] Cannot load actions/lib/ [02/04/2011 13:21:19] [Warning - Actions::registerEvent] Duplicate registered item id: 3678 [02/04/2011 13:21:19] [Warning - Actions::registerEvent] Duplicate registered item id: 2420 [02/04/2011 13:21:19] [Warning - Actions::registerEvent] Duplicate registered item id: 2442 [02/04/2011 13:21:19] [Warning - Actions::registerEvent] Duplicate registered item id: 1211 [02/04/2011 13:21:19] [Warning - Actions::registerEvent] Duplicate registered item id: 1214 [02/04/2011 13:21:19] [Warning - Actions::registerEvent] Duplicate registered item id: 2550 [02/04/2011 13:21:19] [Warning - Actions::registerEvent] Duplicate registered item id: 2694 [02/04/2011 13:21:19] [Warning - Actions::registerEvent] Duplicate registered item id: 2692 [02/04/2011 13:21:19] [Warning - Actions::registerEvent] Duplicate registered item id: 2693 [02/04/2011 13:21:19] [Error - LuaScriptInterface::loadFile] data/actions/scripts/snakesys.lua:2: ')' expected near 'rage' [02/04/2011 13:21:19] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/snakesys.lua) [02/04/2011 13:21:19] data/actions/scripts/snakesys.lua:2: ')' expected near 'rage' [02/04/2011 13:21:19] Reloaded actions. Não sei mais como que posso fazer pra arrumar, pode dar uma ajuda? Ou postando uma editada? aguardo. Editado Abril 2, 2011 por LOrDoS Link para o comentário Compartilhar em outros sites More sharing options...
nickt 4 Postado Maio 24, 2011 Share Postado Maio 24, 2011 Galera tem só alguns erros de digitação, por isso ninguem consegue fazer rodar. Abaixo esta o codigo correto. --[[ Script by Mock the bear ]] SNAKE = { _VERSION="1.0 by mock", ---Snake config itemid=12496, <Troquei o item>Apague isto depois freeglobalstorage=28103, itemFood=8847, <Troquei o item>Apague isto depois controlpos={x=62,y=188 ,z=6}, <MUDE PARA SEU LOCAL> Apague isto depois exitpos = {x=73,y=186,z=7}, <MUDE PARA SEU LOCAL> Apague isto depois centerpos={x=61,y=187,z=7}, <MUDE PARA SEU LOCAL> Apague isto depois 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, } Abraço ! xÐ Link para o comentário Compartilhar em outros sites More sharing options...
leozinhoac 1 Postado Junho 12, 2011 Share Postado Junho 12, 2011 o unico erro que deu no meu foi isso [12/06/2011 14:46:46] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/snakesys.lua)[12/06/2011 14:46:46] data/actions/scripts/snakesys.lua:2: ')' expected near 'rage' se algm puder me ajudar a tirar o sistema é mto massa '-' Link para o comentário Compartilhar em outros sites More sharing options...
leozinhoac 1 Postado Junho 21, 2011 Share Postado Junho 21, 2011 algm responde pf Link para o comentário Compartilhar em outros sites More sharing options...
rino268 0 Postado Julho 6, 2011 Share Postado Julho 6, 2011 pela primeira vez 1 script do MOCK n funcionou aqui em casa.. que pena sem REP++ hj Link para o comentário Compartilhar em outros sites More sharing options...
Kuro o Shiniga 87 Postado Julho 6, 2011 Share Postado Julho 6, 2011 Lol troca isso Crie em data/actions/scripts um arquivo chamado snakesys.lua e coloque isso nele: function onUse(cid, item, frompos, item2, topos) if not isPlayer(getGlobalStorageValue(SNAKE.freeglobalsto rage)) then doTeleportThing(cid,SNAKE.controlpos) SNAKE.timer(cid,1,nil,item.actionid == 0 and 500 or item.actionid) doPlayerSendTextMessage(cid,25,'Segure a tecla control e use as setas para mover a cobra.') SNAKE.generateFood() else doPlayerSendTextMessage(cid,25,'Espere alguem sair.') end end Por isso 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,'Segure a tecla control e use as setas para mover a cobra.') SNAKE.generateFood() else doPlayerSendTextMessage(cid,25,'Espere alguem sair.') end end Link para o comentário Compartilhar em outros sites More sharing options...
pavi 1 Postado Julho 16, 2011 Share Postado Julho 16, 2011 precisa coloca uma unique-id? tipo...n deu erro , e eu fico apertando pra ir mas n acontece nada...help?'-' Link para o comentário Compartilhar em outros sites More sharing options...
sens 4 Postado Julho 21, 2011 Share Postado Julho 21, 2011 Esse script e massa, ja faz mais ou menos um ano, um no e meio quando eu vi ele em um server. Gostei ^-0 Link para o comentário Compartilhar em outros sites More sharing options...
Lolksky 17 Postado Outubro 6, 2011 Share Postado Outubro 6, 2011 (editado) Aew script funcionou perfeitamente. Mas gostaria de saber se não teria como você adapta-lo para quando o player fize-se X pontos ele ganha-se um item Y (aparecendo a msg "você conseguiu X pontos e ganhou Y item"), assim poderei usar em quest \o/ OBS: só pode ganhar o item 1 vez cada player. E gostaria de saber também, onde eu edito a velocidade de cada nível de dificuldade. Editado Outubro 13, 2011 por Lolksky Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados