Ir para conteúdo
  • Cadastre-se

Dicas para criação do seu script


Posts Recomendados

DICAS

Para encurtar/embelezar seus scripts.

INTRODUÇÃO

Fala aê, beleza, galera do TibiaKing? Estava aqui eu sem fazer nada, quando pensei em criar uma coletânea de dicas para os scripters iniciantes, avançados e etcétera.

Eu já naveguei muito nessas águas e já vi muitos scripts que podiam ser "escritos" de uma maneira melhor, fazendo a mesma função e estando mais bonitos e, então, tenho algumas dicas para vocês nesse assunto.

Não vou enrolar muito não, logo ali abaixo, você já começa a ler essas dicas :)

DICA NÚMERO 1 - USO DE MATH.MAX() E MATH.MIN()

Essa é uma dica bem simples e básica, sabe quando você quer comparar uma variável local com um número e se essa variável ter valor maior (ou menor) que o número, você declarar que a tal variável terá o valor do número?

Vamos para um exemplo:


local k = 2


if k < 3 then

   k = 3

end

Em vez de usar três linhas no seu script, porque não usar uma função integrada que faz isso e dá aquele aspecto limpo no script, essa função é a math.max(). O exemplo acima ficaria assim:

local k = 2


math.max(k, 3)

Há também uma função parecida com a math.max() e que serve para o caso da variável ter um valor maior que o proposto. Ou seja:

local k = 2


if k > 1 then

   k = 1

end

Essa função é a math.min()

local k = 2


math.min(k, 1)

Fácil, não é? Uma explicação básica para as duas funções abaixo: math.max() - retorna o maior valor entre os dois argumentos math.min() - retorna o menor valor entre os dois argumentos DICA NÚMERO 2 - USANDO LOOPS Sabe aquele momento que você está programando seu script de quest mais incrível e nesse script você vai precisar colocar para "summonar" vários tipos de criaturas e repetidas vezes? Olhe esse exemplo:

doSummonCreature("Troll", position)

doSummonCreature("Troll", position)

doSummonCreature("Troll", position)

doSummonCreature("Troll", position)

doSummonCreature("Orc", position)

doSummonCreature("Orc", position)

doSummonCreature("Orc", position)

doSummonCreature("Wolf", position)

doSummonCreature("Wolf", position)

Veja, você acabou de usar 9 linhas do seu script, ocupando o espaço com uma mesma função repetidas vezes, alguém que bate os olhos num script com esse bloco, vai ficar até com medo :OCom a criação de uma simples tabela e o uso de uma grande ferramenta dos vários scripters, o comando For e o Pairs, você pode fazer um milagre, veja abaixo:

local summon = {["Troll"] = 4, ["Orc"] = 3, ["Wolf] = 2}


for monster, times in pairs(summon) do

   for i = 1, times do

	  doSummonCreature(monster, position)

   end

end

Compare os dois scripts. Dá para acreditar que eles fazem a mesma coisa? DICA 3 - USANDO O BOM SENSO Essa é a mais abstrata das dicas, pois depende muito da experiência do scripter. Ela usa do próprio bom senso e da capacidade de criação do programador. Eu vou pegar um script simples, sem nenhum uso em OTServ, para que você dê uma olhada:

local x = 1

local y, z, soma = 0


if x == 1 then

   y = 3

   z = 10

   soma = x + y + z + 10

elseif x == 2 then

   y = 3

   z = 10

   soma = x + y + z + 20

else

   y = 4

   z = 10

   soma = x + y + z + 30

end

Isso aí acima, parece um script inofensivo, mas não é. É uma grande repetição de informações desnecessárias. O uso dessa ferramenta que é o bom senso, consiste em verificar os "erros" do script, as repetições de coisas desnecessárias, procurando assim uma maneira de contornar a situação. Estudando o script acima, podemos encontrar alguns desses "erros": 1. O valor da variável 'y' se repete em duas partes do código. 2. O valor da variável 'z' é sempre o mesmo. 3. A variável 'soma' possui um número que varia três vezes em sua composição. 4. A variável 'soma' se repete três vezes no código. Desse jeito, podemos encontrar soluções plausíveis: 1. Vamos colocar o valor-padrão de 'y' será 3. 2. Vamos colocar o valor-padrão de 'z' em 10. 3. Vamos criar uma nova variável para esse número. 4. Vamos isolar 'soma' de todo o script. E assim, teremos um código limpo e um pouco mais curto, como segue abaixo:

local x = 1

local y = 3

local z = 10

local k, soma = 0


if x == 1 then

   k = 10

elseif x == 2 then

   k = 20

else

   y = 4

   k = 30

end

soma = x + y + z + k

Pois é, né? Como eu disse no começo dessa dica, ela é muito abstrata, e dependendo do scripter, vários resultados podem ser obtidos:

local x = 1


local tabela = {

   [1] = {3, 10, 10},

   [2] = {3, 10, 20},

   [3] = {4, 10 , 30},

   p = {0, 0, 0}

}


ret = tabela[x] or tabela.p

soma = x + ret[1] + ret[2] + ret[3]

CONCLUSÃO

Bom, pessoal, a coletânea de dicas doidas fica por aqui. Eu não considero isso um tutorial, mas sim uma base para que vocês possam melhorar seus vários scripts.

Para os scripters que ainda estão entrando nesse grande barco, verão termos desconhecidos, estruturas desconhecidas e etcétera, então não deixe de tirar suas dúvidas aqui no tópico ou no suporte do fórum.

O objetivo desse tutorial não é explicar o comando For, o pairs() e o ipairs() ou o uso de tabelas, pois isso será feito em tutoriais mais detalhados.

Um abraço, galera. \o/

Editado por Lpz (veja o histórico de edições)

Link para o post
Compartilhar em outros sites
  • Administrador

Belo tutorial cara, há tempos não vejo um assim por aqui.

Organizado, objetivo e com um ótimo conteúdo.

Perfeito amigo, reputado!

TibiaKing Team- KingTópicos
www.tibiaking.com

Link para o post
Compartilhar em outros sites

Lpz, belas dicas cara! Dificilmente encontramos esse contéudo, otimo mesmo!

Reputado!

E-mail para contato: [email protected]

Quer ter um fórum mais organizado? Cumpra as regras!

EU VOLTEI GAROTAS!

31/12/2011

Atenciosamente,

Guilherme Salviati.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo