Demonbholder 420 Postado Julho 19, 2011 Share Postado Julho 19, 2011 (editado) Faaala galera! Estou gostando de ver, todo mundo postando os scripts e participando do SDS, é isso mesmo pessoal! Vamos continuar fazendo o XTibia crescer nesta magnifica área de scripts. Fiz um script para um pedido que me fizeram por messenger, e aqui vou posta-lo. Como funciona: Você deve estar na frente do item e falar c1 para norte, c2 para oeste, c3 para sul e c4 para leste para que o item literalmente comece a andar. O número de sqms e a velocidade que o item irá se mover variam de acordo com o level do jogador. O item deve poder ser movido, por exemplo, uma parede não vai se mover. Talkaction function onSay(cid, words, param) dir = {["c1"] = 0, ["c2"] = 3, ["c3"] = 2, ["c4"] = 1} sqms = math.ceil(getPlayerLevel(cid)/10) id = {2160, 2421} vel = {[10] = 5000, [20] = 4500, [30] = 4000, [50] = 3500, [70] = 3000, [90] = 2500, [100] = 2000, [150] = 1000} if dir[words] then for _, i in pairs(id) do if getTileItemById(getPlayerLookPos(cid), i).itemid == i then addEvent(doMoveObject, getPlayerVel(cid, vel), getPlayerLookPos(cid), dir[words], sqms, getPlayerVel(cid, vel), i) break end end end end function getItemUid(posi, id) if getTileItemById(posi, id).itemid ~= id then return nil end for i = 1, 255 do posi = {x=posi.x, y=posi.y, z=posi.z, stackpos=i} if getThingFromPos(posi).itemid == id then return getThingFromPos(posi).uid end end end function getPlayerVel(uid, tab) a = 0 for level, milisec in pairs(tab) do if getPlayerLevel(uid) >= level then if level >= a then a = level end end end return tab[a] end function doMoveObject(pos, dir, sqms, delay, id) if getItemUid(pos, id) ~= nil then doTeleportThing(getItemUid(pos, id), getPosByDir(pos, dir, 1)) if sqms > 1 then addEvent(doMoveObject, delay, pos, dir, sqms-1, delay, id) end end end Editando o Script sqms = math.ceil(getPlayerLevel(cid)/10) Essa é a fórmula que eu fiz para a contagem dos sqms, aumenta 1 sqm a cada 10 leveis. Se souber, pode edita-la. id = {2160, 2421} Estes são os ids dos itens que podem ser movidos. vel = {[1] = 5000, [10] = 4750], [20] = 4500, [30] = 4000, [50] = 3500, [70] = 3000, [90] = 2500, [100] = 2000, [150] = 1000} Nesta tabela estão as velocidades, ou seja, de quantos em quantos milisegundos o item vai se mover de um sqm para o outro. No caso acima, a partir do level 1 vai se mover de 5 em 5 segundos, a partir do level 10 de 4,75 segundos em 4,75 segundos e assim por diante. Tag <talkaction words="c1;c2;c3;c4" script="NomeDoArquivo.lua" /> É isso galerinha, abraços. Editado Julho 20, 2011 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
LukaszG 32 Postado Julho 19, 2011 Share Postado Julho 19, 2011 Firstt ^^ Muito bom veio parabens mais 1 script para meu Progeto!!!! VLW SEMPRE AJUDANDO O XTIIBA A CRESCER Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Julho 20, 2011 Autor Share Postado Julho 20, 2011 Sugiro que edite seu script, pois acabo de diminuir o script. A funcionalidade não mudou, apenas o diminui. Link para o comentário Compartilhar em outros sites More sharing options...
Nolis 161 Postado Julho 27, 2011 Share Postado Julho 27, 2011 (editado) [27/07/2011 20:38:15] Lua Script Error: [TalkAction Interface] [27/07/2011 20:38:15] in a timer event called from: [27/07/2011 20:38:15] data/talkactions/scripts/box.lua:onSay [27/07/2011 20:38:15] data/talkactions/scripts/box.lua:24: attempt to call global 'getThingFromPos' (a nil value) [27/07/2011 20:38:15] stack traceback: [27/07/2011 20:38:15] [C]: in function 'getThingFromPos' [27/07/2011 20:38:15] data/talkactions/scripts/box.lua:24: in function 'getItemUid' [27/07/2011 20:38:15] data/talkactions/scripts/box.lua:48: in function <data/talkactions/scripts/box.lua:46> O Que é?? obs: uso versão 9.10 Editado Julho 27, 2011 por DanielZiyak Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Julho 27, 2011 Autor Share Postado Julho 27, 2011 Seu otserver não tem a função getThingFromPos. Aconselho a trocar de otserver, é uma função muito usada. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados