Ir para conteúdo
  • 0

[Action] Simplifica?


Newtonnotwen

Pergunta

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:

dotile1.png

Depois:

dotile2.png

 

Obrigado pela atenção e pelo tempo.

Editado por Newtonnotwen
Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

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

Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

  • 0

Faltou oque eu disse, tipo:

 

-Esse script seu adiciona o item, mas quando usa a alavanca novamente não volta ao normal.

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

Eu sei kkk, na verdade entendo pouco de script, por isso pedi ajuda.

 

@up

Editado por Newtonnotwen
Link para o comentário
Compartilhar em outros sites

  • 0

Quando usar a alavanca cria o tile no lugar de um, depois voltar o tile que estava.

 

Ex:

 

O chão é constituído de uma areá 5x5 do tile de id 405

 

(Alavanca foi puxada)

 

Agora o chão é constituído de uma areá 5x5 do tile de id 406

 

(Alavanca foi puxada novamente)

 

O chão é constituído de uma areá 5x5 do tile de id 405 (mesma coisa do anterior)

 

(Alavanca foi puxada novamente)

 

Agora o chão é constituído de uma areá 5x5 do tile de id 406 (um ciclo continuo)

 

Obrigado pela atenção.

 

Antes:

dotile1.png

Depois:

dotile2.png

Depois do depois:

dotile1.png

Editado por Newtonnotwen
Link para o comentário
Compartilhar em outros sites

  • 0

Ah, não tinha ideia que seria aplicado na transformação de um chão. Pensei que seria para criar itens mesmo em uma área.

 

Enfim,

 


local area_frompos = {x = 100, y = 100, z = 7}
local area_topos = {x = 150, y = 150, z = 7}

local tiles = {406, 407}

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, tiles[1])
           if g.uid > 0 then
               doTransformItem(g.uid, tiles[2])
           else
               g = getTileItemById(position, tiles[2])
               if g.uid > 0 then
                   doTransformItem(g.uid, tiles[1])
               else
                   doCreateItem(tiles[1], position)
               end
           end
       end
   end
   doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
   return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

eu tinha feito essa função mas não postei ontem porque ficou dando apagão aqui ._.

 

function TransformTiles()
for x = 100, 150 do
for y = 100, 150 do
local m,n = getTileItemById({x=x, y=y, z=7}, 405),getTileItemById({x=x, y=y, z=7}, 406)
if  m.uid > 0 then
doTransformItem(m.uid, 406)
            elseif n.uid > 0 then
             doTransformItem(n.uid, 405)
            end
end
end
return true
end

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...