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.