Santo Lua, se você continuasse esse padrão, você teria um script com cerca de 23000 linhas.
local area_frompos = {x = 100, y = 100, z = 7}
local area_topos = {x = 150, y = 150, z = 7}
function onUse(cid, item, fromPosition, itemEx, toPosition)
for x = area_frompos.x, area_topos.x do
for y = area_frompos.y, area_topos.y do
local position = {x = x, y = y, z = area_frompos.z}
local g = getTileItemById(position, 1284)
if g.uid > 0 then
doRemoveItem(g.uid)
end
doCreateItem(1284, 1, position)
end
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end










info
Grupo: Conde
Registrado: 04/08/12
Posts: 762
Reputação: +80
Alguém poderia simplificar esse script pra mim?
function onUse(cid, item, fromPosition, itemEx, toPosition)
local id,id2,pos,x = 1284,1284,{x=POS, y=POS, z=POS},true
if getTileItemById(pos, id).uid == 0 then x = false end
if x == true then
doRemoveItem(getThingfromPos(pos).uid,1)
doCreateItem(id2, 1, pos)
else
doCreateItem(id, 1, pos)
end
local id,id2,pos,x = 1284,1284,{x=POS, y=POS, z=POS},true
if getTileItemById(pos, id).uid == 0 then x = false end
if x == true then
doRemoveItem(getThingfromPos(pos).uid,1)
doCreateItem(id2, 1, pos)
else
doCreateItem(id, 1, pos)
end
local id,id2,pos,x = 1284,1284,{x=POS, y=POS, z=POS},true
if getTileItemById(pos, id).uid == 0 then x = false end
if x == true then
doRemoveItem(getThingfromPos(pos).uid,1)
doCreateItem(id2, 1, pos)
else
doCreateItem(id, 1, pos)
end
local id,id2,pos,x = 1284,1284,{x=POS, y=POS, z=POS},true
if getTileItemById(pos, id).uid == 0 then x = false end
if x == true then
doRemoveItem(getThingfromPos(pos).uid,1)
doCreateItem(id2, 1, pos)
else
doCreateItem(id, 1, pos)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end
O que ele faz? Cria um tile na posição indicada ao puxar alanca e ao puxar novamente cria outro tipo de tile.
Oque eu quero?
Como pode observar sua edição é consideravelmente demorada, eu queria então simplifica-lo em uma areá usando a função pos1 to pos2.
Ex:
Pos1 (x = 100 y = 100 z = 7)
Pos2 (x = 150 y = 150 z = 7)
Assim ficando uma area de 50x50 ou seja totalizando a modificação 2500 tiles que se localizam nesta.
Utilizando a função pos1 x pos2 (pos1 to pos2).
Assim fica muito fácil a edição.
Observe melhor na imagem:
Imagem:
Antes:
Depois:
Obrigado pela atenção e pelo tempo.
Editado Agosto 17 por Newtonnotwen