Ir para conteúdo
Entre para seguir isso  
Nord

[N: Fácil] Dicas - Diminuindo scripts

Recommended Posts

Nord    2
Nord

Diminuindo Scripts

 

Talvez não são todos que sabem mas muitos já perceberam e outros até contei, eu tenho uma certa tendencia em querer fazer scripts reduzidos, isso tem um certo lado bom e vou compartilhar algumas técnicas com vocês.

 

Requisitos:

  • Noções básicas de scripting.
  • Conhecimento do loop for.
  • Conhecimento básico em tabelas.

 

Imaginemos que em algum script você quer que aconteça vários efeitos iguais em volta de você, provavelmente você faria isso:

local pos = getCreaturePosition(cid)
doSendMagicEffect({x=pos.x-1, y=pos.y-1, z=pos.z}, 1)
doSendMagicEffect({x=pos.x+1, y=pos.y+1, z=pos.z}, 1)
doSendMagicEffect({x=pos.x-1, y=pos.y+1, z=pos.z}, 1)
doSendMagicEffect({x=pos.x+1, y=pos.y-1, z=pos.z}, 1)
doSendMagicEffect({x=pos.x+1, y=pos.y, z=pos.z}, 1)
doSendMagicEffect({x=pos.x, y=pos.y+1, z=pos.z}, 1)
doSendMagicEffect({x=pos.x-1, y=pos.y, z=pos.z}, 1)
doSendMagicEffect({x=pos.x, y=pos.y-1, z=pos.z}, 1)

Aí eu digo, chega dessa BATATA! Daí você faz assim:

local pos = getCreaturePosition(cid)
for X = pos.x-1, pos.x+1 do
   for Y = pos.y-1, pos.y+1 do
       doSendMagicEffect({x=pos.x+X, y=pos.y+Y, z=pos.z})
   end
end

Mas como eu sou um cara malvado mando você melhorar, então o resultado final do script deveria ser assim:

for dir = 0, 7 do
   doSendMagicEffect(getPosByDir( getCreaturePosition(cid), dir), 1)
end

 

Veja bem, script menor, mais bonito, com menos coisas pra atrapalhar na hora da edição, isso facilita bastante.

Agora vamos até as tabelas e veja como ela pode reduzir algo também.

Digamos que você quer que ao executar determinada ação conforme o item que vc da use aparece tal efeito. Provavelmente ficaria assim:

function onUse(cid, item, frompos, itemEx, topos)
   if item.itemid == 1000 then
       doSendMagicEffect(frompos, 1)
   elseif item.itemid == 1001 then
       doSendMagicEffect(frompos, 2)
   end
end

Vai leva uma bifa! Melhore...

function onUse(cid, item, frompos, itemEx, topos)
   local tabela = {[1000] = 1, [1001] = 2}
   doSendMagicEffect(frompos, tabela[item.itemid])
end

Eba Nord, ta bem pequeno já, chega!

NÃO! Deixa que eu termino então.

function onUse(cid, item, frompos, itemEx, topos)
   doSendMagicEffect(frompos, item.itemid-999)
end

 

Incrível, talvez isso não seja tão útil, mas não deixa de ser interessante, vamos, seja o WinRar do Lua. :w00t:

Editado por Nord

Compartilhar este post


Link para o post
Mock    32
Mock

Comentario: Quem diz que fantasmas nao existem ta ai a prova :S

 

Aprovadoico_aprovado.png & Movidoicon_movido.giffechado22xnux7.gif

Compartilhar este post


Link para o post
osmose    0
osmose

Você não apenas deixa os scripts melhores como ganha um desempenho du caramba no final

Aprendam e sigam essas dicas!

 

valew

Compartilhar este post


Link para o post
Baah    6
Baah

5 estrelas pra você! :D

 

Gostei muito, disso, meus scripts são horriveis, quilometros de linhas, sou iniciante né >.<

 

Vou seguir algumas dicas usando o comando for que é EXTREMAMENTE util, e eu nunca tinha pensado em usar variaveis em quests e etc, é sempre a mesma coisa, abre o bau, ganha item e sai feliz pelo caminho.

 

 

Abraços, Baah

Compartilhar este post


Link para o post
marcryzius    0
marcryzius

e gostei do tutor ajuda muito pra quem esta iniciando (eu) :D

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×