Mirror Reflect
Funcionamento:
Esse script é um script apenas para RPG e diversão....
O que ele faz é mandar raios para outro espelho, ele acha qualquer espelho que esteja em seu raio de alcance.
Eu fiz esse script para um concurso mas como não vou usar estou dando a vocês.
IDs
Espelhos: 1736 | 1737
Telescopio: 10533 | 10534
Tags:
Script
Em data/actions/script/ crie um arquivo chamado laser.lua
Em seguida ponha esse code nele:
function findItemInPos(items, position)-- by Nord local found, pos, thing = 0, {x=position.x, y=position.y, z=position.z} for i = 0, 255 do pos.stackpos = i thing = getTileThingByPos(pos) if(thing.itemid == 0)then break end if isInArray(items, thing.itemid) then return thing end end return false end function getSize(pos1, pos2) -- by Conde2 local x = math.abs(pos1.x-pos2.x) local y = math.abs(pos1.y-pos2.y) return x, y end function doSendEffectByMirror(mirror, pos1, pos2, stop, savedpos, shottype) ---------------------------------------------- local pos = 0 local pos3 = 0 local newpos = 0 local mtable = {mirror} local change = {[1736]=1737, [1737]=1736} local size1, size2 = getSize(pos1, pos2) ---------------------------------------------- for x = 0, size1 do for y = 0, size2 do if mirror == 1736 then pos = {x=pos1.x+x, y=pos1.y-y, z=pos1.z} elseif mirror == 1737 then pos = {x=pos1.x-x, y=pos1.y+y, z=pos1.z} end if findItemInPos(mtable, pos) then if pos1.x == pos.x and stop == 1 or pos1.y == pos.y and stop == 1 then break end if mirror == 1736 then _, sizey = getSize(pos, pos1) newpos = {x=pos.x+7, y=pos.y+sizey, z=pos1.z} elseif mirror == 1737 then sizex = getSize(pos, pos1) newpos = {x=pos.x+sizex, y=pos.y+5, z=pos1.z} end addEvent(doSendMagicEffect, 100, pos, 3) for v = 1, 6 do if savedpos ~= 0 then addEvent(doSendDistanceShoot, v*100, savedpos[1], savedpos[2], shottype) end addEvent(doSendDistanceShoot, v*100, pos1, pos, shottype) pos3 = {x=pos.x, y=pos.y, z=pos.z} addEvent(doSendDistanceShoot, v*100, pos, getPosByDir(pos3, getDirectionTo(pos, newpos), sizex or sizey or 1), shottype) --- Necessário para correção de erros em posições (RETORNA DIAGNOAL PERFEITA) end if stop == 1 then break end if savedpos == 0 then savedpos = {pos1, pos} end addEvent(doSendEffectByMirror, 1, change[mirror], pos, newpos, stop+1, savedpos, shottype) break end end end end function onUse(cid, item, frompos, item2, topos) local shottype = 37 local mirror = {[10533] = 1737, [10534] = 1736} local position = { [10533] = {x=frompos.x-7, y=frompos.y, z=frompos.z}, [10534] = {x=frompos.x, y=frompos.y-5, z=frompos.z}, } doSendEffectByMirror(mirror[item.itemid], frompos, position[item.itemid], 0, 0, shottype) end
Após ter feito isso reinicie seu otserver ou de /reload actions