Ir para conteúdo
  • Cadastre-se

Metodologia de scripting


Posts Recomendados

Metodologia de um script

O que será tratado

  • Organização de um script.
  • Compreensão de um script.
  • Tornando o script fácil para edição.

Meu objetivo com este tutorial.

Tenho como objetivo facilitar a compreensão de muitos scripts. Sabemos, todos nós, que muita gente apenas copia os scripts para seu próprio servidor e não sabe nem ao menos editar os IDs, ou as posições, conforme sua necessidade e disponibilidade do script.

Quero, também, propor que os scripters que nos disponibilizam scripts de sua autoria, organizassem melhor os scripts para que os iniciantes tivessem uma base para começar no mundo de lua scripting.

Organizando para melhor compreensão

Muitas vezes nos deparamos com scripts horríveis. Não apenas de qualidade ou conteúdo no resultado, mas também de organização do próprio script. Vou pegar um script de tamanho médio, já criado por um usuário da OTNet.

--Action 100% by Hancock--


local arvores = 2700

local arvmorta = 2719


function onUse(cid, item, frompos, item2, topos)


if item2.itemid == arvores then


chance = math.random(1,10)


if chance == 1 then

doPlayerAddItem(cid,9805,1)

doSendMagicEffect(topos,12)

doTransformItem(item2.uid, arvmorta)

doPlayerSendTextMessage(cid,22,"Você cortou um pedaço de madeira!")


elseif chence == 2 then

doRemoveItem(item.uid,1)

doCreatureAddHealth(cid, -20)

doPlayerSendTextMessage(cid,22,"Seu machado quebrou e você se machucou.")


elseif chance > 3 then

doPlayerSendTextMessage(cid,22,"Nada aconteceu.")


end

end

end
Agora, pegaremos esse mesmo script e apenas adicionaremos uns espaços e removeremos quebras de linhas desnecessárias.
--Action 100% by Hancock--

local arvores = 2700

local arvmorta = 2719


function onUse(cid, item, frompos, item2, topos)

  if item2.itemid == arvores then

    chance = math.random(1,10)

    if chance == 1 then

	  doPlayerAddItem(cid,9805,1)

			 doSendMagicEffect(topos,12)

			 doTransformItem(item2.uid, arvmorta)

			 doPlayerSendTextMessage(cid,22,"Você cortou um pedaço de madeira!")

    elseif chence == 2 then

			 doRemoveItem(item.uid,1)

			 doCreatureAddHealth(cid, -20)

			 doPlayerSendTextMessage(cid,22,"Seu machado quebrou e você se machucou.")

    elseif chance > 3 then

	  doPlayerSendTextMessage(cid,22,"Nada aconteceu.")

    end

  end

end
Apenas com essa pequena organização, o script não ficou um pouco mais fácil de ser compreendido? Compreensão de todas as linhas do script Pegamos, então, o mesmo script como exemplo. Você consegue entender qual a função de cada linha do script? Consegue localizar um erro que impossibilitaria uma das features do script? Pois bem, é o que faremos agora.
--Action 100% by Hancock-- Tudo o que está na mesma linha após os dois hífens são comentários.

local arvores = 2700 -- Foi definida a variável arvores como 2700 e posteriormente será comparada ao ID do item.

local arvmorta = 2719 -- Foi definida a variável arvmorta como 2719 e posteriormente utilizada para transformar o item na definição dessa variável.


function onUse(cid, item, frompos, item2, topos) -- Começa a função quando o player utilizar. O que está entre os parênteses, são as variáveis que a função lhe da. Sem elas, não haveria a possibilidade de tanta diversidade de scripts.

  if item2.itemid == arvores then -- Está sendo comparado o ID do item2 (o target do "use with...") com a variável arvores.

    chance = math.random(1,10) -- Foi criada a variável global (com a intensão de ser local) chance. O valor dela é um número aleatório entre 1 e 10.

    if chance == 1 then -- Aqui é a comparação da variável chance com o número 1. Se o resultado da aleatoriedade for igual a 1, acontecerá o que há abaixo.

	  doPlayerAddItem(cid,9805,1) -- É utilizado uma função para adicionar um item ao cid (jogador), com ID 9805 e quantidade 1.

	  doSendMagicEffect(topos,12) -- É enviado o efeito de número 12 para a posição topos, onde o item foi usado.

	  doTransformItem(item2.uid, arvmorta) -- O item2 é transformado no ID resultado da variável arvmorta, 2719.

	  doPlayerSendTextMessage(cid,22,"Você cortou um pedaço de madeira!") -- Uma mensagem de classe 22 é enviada ao jogador cid.

    elseif chence == 2 then -- Opa! Localizamos o erro. Explicarei mais pra frente. Aqui a variável chence é comparada ao número 2.

	  doRemoveItem(item.uid,1) -- É removido o item (o que você clicou para dar "use with...").

	  doCreatureAddHealth(cid, -20) -- É "adicionado" -20 de vida ao jogador cid.

	  doPlayerSendTextMessage(cid,22,"Seu machado quebrou e você se machucou.") -- Novamente a função de enviar mensagem.

    elseif chance > 3 then -- É verificado se a variável chance tem valor maior que 3.

	  doPlayerSendTextMessage(cid,22,"Nada aconteceu.") -- Novamente, a mesma função de enviar mensagem.

    end -- Fechando a condição "if chance == 1 then".

  end -- Fechando a condição "if item2.itemid == arvores then".

end -- Fechando a função onUse.
Foi fácil de entender, não? Se não foi, deveria ter sido, por que esse é um script de fácil compreensão. Agora, vamos localizar os erros. Linha 6: chance = math.random(1,10) Essa variável não foi declarada como local. O correto seria: local chance = math.random(1,10). Linha 12: elseif chence == 2 then A variável chence não foi definida anteriormente, então, não há chance dessa opção acontecer. Certamente um erro de digitação. Linha 16: elseif chance > 3 then O erro é que, se a variável chance resultar 3, não encaixaria em nenhum dos casos do script. O correto seria: elseif chance >= 3 then; ou: elseif chance > 2 then.[*]Tornando o script fácil para futuras edições Esse script abaixo é como ficaria com maior organização, revisado e, feito para facilitar futuras edições:
local arvores = {2700, 2701} -- Possível adicionar mais IDs.

local arvmorta = {2719, 2701} -- Possível adicionar mais IDs.

local chance = math.random(1,10)

local addID = {9805} -- Possível adicionar mais IDs.


function onUse(cid, item, frompos, item2, topos)

  if isInArray(arvores, item2.itemid) then

    if chance == 1 then

	  doPlayerAddItem(cid,addID[math.random(1,#addID)],1)

	  doSendMagicEffect(topos,12)

	  doTransformItem(item2.uid, arvmorta[math.random(1, #arvmorta)])

	  doPlayerSendTextMessage(cid,22,"Você cortou um pedaço de madeira!")

    elseif chance == 2 then

	  doRemoveItem(item.uid,1)

	  doCreatureAddHealth(cid, -20)

	  doPlayerSendTextMessage(cid,22,"Seu machado quebrou e você se machucou.")

    else

	  doPlayerSendTextMessage(cid,22,"Nada aconteceu.")

    end

  end

  return TRUE

end

O script estaria pronto para ser postado para outro fanático por OTServer compreender e editar.

O resultado é o mesmo, mas o modo de compreensão é outro. Talvez um mais difícil por causa das tabelas. Caso você realmente ache isso, aconselho-lhe a ler um tutorial sobre tabelas.

Conclui-se

Se todos os scripts que fossem postados tivessem um padrão melhor de organização, o nível de scripting de muitos iniciantes seria maior, pois, desse modo, compreenderiam com uma maior facilidade e rapidez o que as vezes é indecifrável.

Creditos :

Pivizz

Contato;

6yonKDJ.png god.marinii

TaxNfhb.png

Link para o post
Compartilhar em outros sites

Muito bacana essa aula, a estética do código é tão importante quanto o próprio.

Bem legal, poderá ajudar iniciantes em Scriptter.

Script

Origem: Wikipédia, a enciclopédia livre.

Linguagem de script (também conhecido como linguagem de scripting, ou linguagem de extensão) são linguagens de programação executadas do interior de programas e/ou de outras linguagens de programação, não se restringindo a esses ambientes. As linguagens de script servem para estender a funcionalidade de um programa e/ou controlá-lo, acessando suaAPI e, são frequentemente usadas como ferramentas de configuração e instalação em sistemas operacionais (Shell script), como por exemplo, em alguns sistemas operacionais da famíliaLinux, que usam a linguagem bash. São também frequentemente usadas em jogos, como por exemplo, o jogo Impossible Creatures, que usa a linguagem Lua para controlar as ações dos personagens e o ambiente de batalha.

Todas as linguagens de script são linguagens interpretadas, porém, nem todas as linguagens interpretadas são linguagens de script. Os programas escritos em linguagens de script são, normalmente, referidos como scripts.

Scripter

É a Pessoa que produz o script.

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

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