Ir para conteúdo

[Skript] Como melhorar o seu código em 100%


danielzinh

Posts Recomendados

Baixei uns códigos da internet recentemente, e vi que os skripts de lá costumam ser MUITO lagados, então resolvi dar algumas dicas para vocês.

_______________________________________

Introduções e dicas iniciais

Eu super recomendo que vocês acompanhem minhas séries sobre Skript laga? pois lá eu descrevo tudo que possa lagar e dou dicas de como evitar isso, nesse momento (da postagem) possuem três capitulos:

- Skript laga? #1 - Loops

- Skript laga? #2 - Parem de usar functions! isso LAGA!

- Skript laga? #3 - Os loops causam lag em seu código???

_______________________________________

Como otimizar qualquer Skript

 

Primeiro passo:

Buscamos, antes de tudo, reduzir linhas grandes.

Procure pelo seu código, linhas grandes, como por exemplo:

Linha grande: set slot 10 of player's current inventory to grass block named "Apenas uma ilha" if name of player's current inventory is "Menu"

Linha pequena: send "Apenas um texto grande para enrolar e aumentar o tamanho propositalmente, me ignore e continue lendo o tópico."

Porque o send acima não é uma linha grande, já que ele é maior até que o set slot acima?

é simples, textos não consideram em uma linha, não importa o tamanho do texto em uma linha, NÃO irá lagar como uma expressão pura ou um efeito, ENTÃO não confundam.

 

Segundo passo:

Não abuse das linhas, quanto menos melhor, sempre que apertar ENTER para ir a uma nova linha, pense e reflita nas suas escolhas de vida e veja se é realmente necessário outra linha.

 

Você pode encurtar linhas utilizando uma comparação na mesma linha, como:

ANTES:

if {_x} > 10:
	add 1 to {_e}

DEPOIS:

add 1 to {_e} if {_x} > 10

PORÉM!!!

Não se esqueça do nosso primeiro objetivo, reduzir linhas grandes. NUNCA abuse desse método também, já que se usado de forma errada, pode criar uma linha gigantesca.

 

Como já vimos no Skript laga? #3 - Os loops causam lag em seu código??? linhas grandes aumentam ABSURDAMENTE o tempo de recarga do seu código (é sério, por causa de uma linha aumentou mais de um segundo, olha lá)

 

Então, veja o jeito certo de se usar esse método:

ERRADO:

add 1 to {_e} if {_x} is set
send "O valor é %{_e}%" to player if {_x} is set
add 1 to {_t} if {_x} is set

CERTO:

if {_x} is set:
	add 1 to {_e}
	send "O valor é %{_e}%" to player
	add 1 to {_t}

 

ERRADO:

set slot 10 of player's current inventory to grass block named "&eGrama" with lore "", "&7Descrição" if name of player's current inventory contains "&eMenu aleatório, porém bonito."

CERTO:

if name of player's current inventory contains "&eMenu aleatório, porém bonito."
	set slot 10 of player's current inventory to grass block named "&eGrama" with lore "", "&7Descrição"

 

ERRADO:

if {_e} > 10:
	add 1 to {_x}
if {_x} > 10:
	add 1 to {_y}

CERTO:

add 1 to {_x} if {_e} > 10
add 1 to {_y} if {_x} > 10

 

Terceiro passo:

Acredite, o que eu mais uso para otimizar meus códigos é o split at.

 

Como funciona? vou dar um exemplo para ser de melhor entendimento:

{Text} = um,dois,três,quatro

set {_array::*} to split {Text} at ","

{_array::*} = um, dois, três and quatro

Não entendi nada! Relaxa, vou explicar:

 

A variável {Text} é "um,dois,três,quatro", é um texto, não da para dar loop nisso.

Com o uso da expressão set {_array::*} to split {Text} at "," eu peguei os valores da variável {Text} e dividi elas no "," igual uma pizza! e transformei os resultados em uma Array, no caso, a variável {_array::*}.

 

Legal, como eu usaria isso para otimizar meus códigos?

Eis um exemplo, meu jovem gafanhoto:

 

Código sem split:

give grass_block to player
give dirt to player
give podzol to player
give gravel to player
give diamond block to player
give bow to player
give arrow to player
give diamond sword to player

 

Código com split:

set {_array::*} to split "grass_block,dirt,podzol,gravel,diamond_block,bow,arrow,diamond_sword" at ","
loop {_array::*}:
	give loop-value parsed as itemtype to player

código ilustrativo, não foi testado. Pode apresentar erros, mas o conceito de funcionamento é esse.

 

 

Vocês viram o poder dessa expressão? façam bom uso dela, sua criatividade é o limite.

 

Quarto passo:

 

Evitem a todo o custo, o uso de yaml e yml.

image.png.d9f9accb0d61b3198fe09fc2a2457452.png

imagem retirada do código SrReportes do autor @SrBlecaute

 

O suporte para YAML e YML nas novas versões está MUITO complicado, além de que o uso de YAML e YML causa um aumento muito maior nas linhas, como visto acima.

 

Substituto ideal:

options:
	Opção1: true
	Opção2: "Valor em texto (string)"

on load:
	if {@Opção1} is true:
		broadcast "{@Opção2}"

Observem que...

as opções configuráveis necessitam de um @ para serem invocadas, exemplo: {@Opção1}

as opções configuráveis também não necessitam de %%. exemplo: broadcast "{@Opção2}"

 

 

 

 

_______________________________________

No momento é isso, tem mais coisas só que estou com preguiça de colocar aqui, não se esqueçam de curtir esse tópico para me deixar feliz :)

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

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...