BL
resolvido

[RESOLVIDO][PEDIDO] Mover Item.

Por Bluester, 21 de fev. de 2016 em Scripts

6
1.9k
BluesterB
22 de fevereiro de 2016 às 13:27

Olá galera, hoje venho pedir um script meio complicado... Queria um script que ao usar um item com ID 14326 em outro item cujo ID seria 14267, o item com ID 14267 seria movido para esquerda ( esse item é uma porta ) e depois de movido, ficaria lá por 15 segundos e depois voltaria para posição antiga no mapa.

Agradeço pela atenção ! :)

@UP

Editado Fevereiro 22 por Bluester

SkullsS
22 de fevereiro de 2016 às 13:45

Ou, não estou em casa mas tenho 2 funções de movimentação de itens pra 0.3 e 4. Posto aqui depois. (doSendCustomMagicEffect e doSendCustomDistanceShoot)

BluesterB
22 de fevereiro de 2016 às 14:26

Ou, não estou em casa mas tenho 2 funções de movimentação de itens pra 0.3 e 4. Posto aqui depois. (doSendCustomMagicEffect e doSendCustomDistanceShoot)

Irei aguardar, obrigado.
SkullsS
22 de fevereiro de 2016 às 19:27
Melhor resposta


 

function removeItem(pos, itemid)

local item = getTileItemById(pos, itemid)

if item.uid > 0 then

doRemoveItem(item.uid, 1)

end

end

 

function customMagicEffect(pos, itemid, duration, times)

n = times or 0

doCreateItem(itemid, 1, pos)

if duration ~= -1 then addEvent(removeItem, duration, pos, itemid) end

if n ~= 0 then addEvent(customMagicEffect, 350+duration, pos, itemid, duration, n-1) end

end

 

function getAllPos(pos, toPos)

local p = {}

for i=1, getDistanceBetween(pos, toPos) do

p = getPosByDir(pos, getDistanceBetween(pos, toPos))

pos = p

end

return p

end

 

function teleportItem(pos, itemid)

doRemoveItem(getTileItemById(pos, itemid).uid)

end

 

function customDistanceShoot(pos, toPos, itemid, speed, way, eff, times)

n = times or 0

x = way or 0

local effect = eff or CONST_ANI_NONE

 

if n == 0 then

doSendDistanceShoot(pos, toPos, effect)

local dir = getDirectionTo2(pos, toPos)

if x == 1 then dir = getDirectionTo(pos, toPos) end

pos = getPosByDir(pos, dir, 1)

doCreateItem(itemid, 1, pos)

local acx = dir > WEST and 2 or 1

addEvent(customDistanceShoot, (acx*speed), pos, toPos, itemid, x, speed, effect, n+1)

end

 

local item = getTileItemById(pos, itemid)

local d = getDistanceBetween(pos, toPos)

if item.uid > 0 and d > 0 and n ~= 0 then

local oldPos = Position(pos.x, pos.y, pos.z)

local dir = getDirectionTo2(pos, toPos)

if x == 1 then dir = getDirectionTo(pos, toPos) end

pos = getPosByDir(pos, dir, 1)

doCreateItem(itemid, 1, pos)

removeItem(oldPos, itemid)

local acx = dir > WEST and 2 or 1

addEvent(customDistanceShoot, (acx*speed), pos, toPos, itemid, speed, x, effect, n+1)

end

if d <= 0 then addEvent(removeItem, speed, pos, itemid) end

end

 

function doCreatureSpin(uid, spins, delay, dir, index)

clockwise = dir or 1

quantityOfSpins = index or 0

 

if quantityOfSpins == spins then return

elseif quantityOfSpins == 0 then makeCreatureImpossibleToMoveByTime(uid, delay*spins) end

 

look = getCreatureLookDirection(uid) < 3 and getCreatureLookDirection(uid) + clockwise or 0

doCreatureSetLookDirection(uid, look)

addEvent(doCreatureSpin, delay, uid, spins, delay, clockwise, quantityOfSpins+1)

return

end

 

function makeCreatureImpossibleToMoveByTime(uid, time)

doCreatureSetNoMove(uid, true)

addEvent(doCreatureSetNoMove, time, uid, false)

end

 

BluesterB
22 de fevereiro de 2016 às 20:45

resolvido.

FurabioF
23 de fevereiro de 2016 às 08:46

Tópico Movido
Este tópico foi movido de "OTServScriptingSuporte Scripting"
para "OTServScriptingSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".