Ir para conteúdo

danielzinh

Membros
  • Total de itens

    523
  • Registro em

  • Última visita

Tudo que danielzinh postou

  1. recomendo editar o tópico e censurar os números para evitar expôr alguém, isso é crime.
  2. Tente abrir o minecraft vanilla, sem clientes e nem nada. Isso talvez seja culpa do seu cliente.
  3. Você está usando o plugin TAB? Caso não esteja, verifique se não é o seu LabyMod ou outro cliente (se estiver usando) De qualquer forma, não recomendo tirar, esse é o ping do jogador, está zero porque é localhost, mas quando colocar em uma host, aparecerá o real ping.
  4. Sim, o limite é sua criatividade :) claro, kkkkkkkkkkkkkkkk
  5. 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. 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 :)
  6. Observação importantíssima: Utilize: open chest with 3 rows named "Menu" to player wait 1 tick if name of player's current inventory is "Menu": # DEFINA OS SLOTS AQUI Esse if name of player's current inventory is "Menu": faz com que somente os slots se o menu realmente estiver aberto! se o servidor estiver meio lagado, aquele wait 1 tick pode falhar e o player fechar o inventário antes de executar os slots, fazendo com que os itens dos slots vão diretamente pro seu inventário, causando duplicação!
  7. _______________________________________ Olá. Muitos skripters iniciantes se apegaram ao famoso format slot por ser simples, mas hoje vou te mostrar que isso é algo que pode te prejudicar. _______________________________________ Contexto e Introdução o format slot por si nem deveria existir no Skript, vamos aos motivos: - Ele é limitado [!] Possui bugs de duplicação de inventário [!] - Você só pode executar expressões utilizando um comando pronto ou Functions - Já possui bloqueador de coleta (não permite pegar o item do menu) e isso limita para certos códigos [!] Pode causar bugs como o item não ir pro menu e sim pro seu inventário [!] _______________________________________ Solução dos seus Problemas No lugar de format slot use set slot, além de ser muito mais fácil de se usar, é o jeito certo e mais customizavel pros seus códigos. Um exemplo de código com set slot: command /menu: trigger: open chest with 3 rows named "Menu" to player wait 1 tick set slot 10 of player's current inventory to grass block on inventory click: if name of player's current inventory is "Menu": broadcast "&cVocê clicou em um item do menu!" Expressões e Syntax Uso correto: set slot %slot% of %inventory% to %item% Exemplo: set slot 10 of player's current inventory to grass block ___________________________ Esclarecimentos player's current inventory - Menu atual do jogador (se não houver, será o inventário) player's inventory - Inventário do jogador Então não usem player's inventory caso queiram inserir o item no menu! pois usando isso, ele irá pro inventário. Sempre use player's current inventory. _______________________________________ name of player's current inventory - Nome do menu atual, no exemplo acima, será "Menu" clicked slot - Slot em que você clicou (NÃO RECOMENDADO - O slot clicado pode ser tanto do inventário como do menu, podendo causar um conflito caso queira pegar o slot só do menu.) clicked item e name of clicked item - Exibe o item, e exibe o nome do item respectivamente. clicked type - Tipo de clique (Se você clicou com o botão direito, esquerdo, com shift, sem shift, etc) clicked inventory - Diz se o inventário clicado foi o do player ou não. _______________________________________ Sabendo disso... Vamos a um exemplo mais complexo, se você estiver querendo aprender, recomendo que estude esse código: command /menu: trigger: open chest with 3 rows named "Menu" to player wait 1 tick if name of player's current inventory is "Menu": # Verifica se o menu ainda está aberto (evitar dups) set slot 0 of player's current inventory to grass block named "&eApenas uma grama." else: send "&cO menu estava fechado, por isso a inserida dos itens foi cancelada." on inventory click: if name of player's current inventory is "Menu": if name of clicked item is "&eApenas uma grama." set slot clicked slot of player's current inventory to dirt named "&eApenas uma terra." send "&cEssa não! A grama virou terra porque você cutucou ela! seu delinquente." Bons estudos, Skripters :) EliteSK
  8. Como o amigo já disse cima, precisa do add-on MAMBAchestCommands para fazer isso, mas se você tiver interesse, eu posso te criar um skript com os menus, só entrar em contato pelo meu Discord.
  9. o portfólio é bonito e os designs também, com certeza vou encomendar um em breve.
  10. DanielSK-SKLegendChat Conecte seu Skript com seu LegendChat Como usar: set legendchat tag "tag" of player to "&4TagExemplo" - Define uma tag de um jogador no legendchat delete legendchat tag "tag" of player - Deleta uma tag de um jogador legendchat tag "tag" of player - Obtém o valor daquela tag delete legendchat tags from player - Deleta todas as tags do jogador legendchat tags from player - Obtém todas as tags do jogador Exemplo: command /definirtag [<text>] [<text>]: trigger: set legendchat tag "%arg-1%" of player to "%arg-2" ATENÇÃO: as tags precisam estar na config.yml do legendchat primeiro. Exemplo: {tag} Dependências: Skript-mirror, LegendChat Download: Pastebin
  11. Demorei bastante para fazer, já que é um sistema que envolve economia, precisa estar 100% livre de bugs, mas o resultado final ficou incrível. Esse código não está disponível para compra e nem para uso. Como funciona? quando você coloca uma máscara (Compatível com meu sistema de texturização personalizada) o nome da pessoa fica completamente oculto Vantagens: - Funciona da 1.8 até a 1.16.5 (não necessita MundoSK (para alterar as nametags)) - O nick muda sempre que ele loga no servidor, para nunca ficar igual, permitindo uma identificação. Prints:
  12. Olá, durante o teste foi feito o teste ao executar cada código como na print: Você deve estar se referindo ao teste de tamanho de linhas, eu deixei claro que era o tempo de inicialização. E mesmo assim, aumentou 1 segundo de recarga com uma só linha de código mal-otimizada, imagina um skript completamente mal feito? não quero nem pensar.
  13. Youtube: -------------- Facebook: -------------- Instagram: ------------- Twitter:
  14. Olá, não sei se você sabe, mas isso infringe as diretrizes das rede sociais. Mas boa sorte nas vendas ;)
  15. Demorei bastante para fazer, já que é um sistema que envolve economia, precisa estar 100% livre de bugs, mas o resultado final ficou incrível. Esse código não está disponível para compra e nem para uso. Como funciona?: é um sistema de moedas, onde você pode comprar e vender utilizando elas. Prints: Proteção do Código (anti-dup): Como podem ver, cada moeda possui uma Data de expedição e um ID, quando uma moeda é gastada, aquele ID fica salvo junto com o dado de expedição e ela não pode ser usada novamente, evitando qualquer tipo de dup. Não se preocupe! isso não vai encher seu banco de variáveis, todas as variáveis onde as moedas são salvas são únicas de um dia, ou seja, a variável funciona assim: {moedas-usadas::%data%} = "ID1,ID2,ID3" então você só terá uma variável por dia, sendo 365 variáveis adicionais por ano, muito pouco!!!! e também evita variáveis gigantescas com mais de 5000 valores. Vault-supported: Como visto no título, o Skript suporta Vault, todas as compras realizadas com o Vault, já é automaticamente integrado com suas moedas físicas, suportando todos os plugins que suportam Vault também.
  16. não da mesmo kkkkkkkk o skript só se comunica para pegar o emoji, ele coloca na textura e envia ao chat e coloca em cima do jogador, por isso, é necessário o meu Skript de Texturização de itens personalizados:
  17. observação: o servidor é na versão 1.16.5 com o meu processador horrível e o servidor + minecraft aberto, em uma host de qualidade os valores podem ser muito menores!
  18. Aos poucos, vamos quebrar a lenda que o Skript pode lagar. os códigos estarão todos listados no tópico, você mesmo pode testar. Afinal, de onde saiu essa lenda?: Há muito tempo atrás, um youtuber resolveu criar um servidor inteiro usando Skript, até ai tudo bem, o skript não laga se você souber usar, porém, o cidadão usava códigos extremamente mal otimizados, sem nem colocar um "else" (para vocês verem). e dai, o vídeo explodiu com a fama de que o Skript laga. Hardware usado: - Processador: A4-7300 (2c-2t) - 8GB RAM DDR3 Breve explicação: com o tempo que aprendi sendo um criador profissional de códigos, eu sei e posso AFIRMAR que loops não lagam se usado com carinho e cuidado, e vou provar isso nesse código aqui! Além de provar, vou mostrar um jeito ótimo de se otimizar seus loops, e também mostrar cuidados e o que se deve e não se deve fazer. O que você deve usar: Não use: loop all blocks in radius 30 around player: Use: loop blocks within {_loc1} to {_loc2}: Qual a diferença? O primeiro código da um loop em todos os blocos em um raio ESFÉRICO de 30 blocos, isso causa lag se dentro desse loop possuir muitos códigos. O segundo código da um loop só nos blocos entre o bloco {_loc1} e o {_loc2}, assim você pode controlar o loop, fazer com que ele dê loop em uma área quadrada, ou até mesmo de uma só camada, sendo um loop horizontal. ------------------------- Não use: every 1 tick Use: every 1 seconds Qual a diferença? Usar loops abaixo de um segundo (<=19 ticks) pode prejudicar seu server, além do lag absurdo, não há nenhuma necessidade de se usar um every tão baixo. O segundo loop é um every ideal para seu servidor, mas não exagerem, o recomendado é no mínimo um segundo de every para cada 75 linhas de código para evitar lag. ------------------------- Não use: is more than or equal to Use: >= Qual a diferença? Eu percebi que quanto maior o tamanho da linha do código, maior o tempo de recarga do Skript, por isso, evitem o máximo usar linhas grandes de código, encurtem o máximo que puderem! ------------------------- Loops lagam? siga o código a seguir: command /lag-machine: trigger: set {_x} to now loop all blocks in radius 50 around player: broadcast "%difference between {_x} and now%" Apesar de ter um loop grande (50 blocos) ali, ele não possui nada dentro dele, quantos segundos você acha que esse comando demorará para carregar? (o código já contém um temporizador que diz o tempo que ele demorou para carregar) Comando executado: Pois é, amigos. O comando demorou 0.3 segundos para executar, isso já quebra TOTALMENTE o mito de que loops lagam. Ok, eu sei que terá gente que irá reclamar que só um loop não é o suficiente pra um teste... Então vamos aumentar esse loop command /lag-machine: trigger: set {_x} to now loop all blocks in radius 50 around player: loop-block is dirt add 1 to {_xe} broadcast "%difference between {_x} and now% - Terras encontradas: %{_xe}%" esse código conta quantas terras tem no raio do loop Comando executado: Legal, o tempo aumentou razoavelmente, mas para um loop de 50 blocos com um if de comparação e uma adição a uma variável eu acho um tempo super justo. Então não amigos LOOPS NÃO LAGAM (se usados de forma correta e otimizada) ------------------------- Linhas grandes travam? não exatamente, só aumenta (E MUITO) o tempo de recarga do seu código, vamos a um exemplo: command /b: trigger: Apenas um comando simples, não? demorou apenas para carregar. Agora: command /b: trigger: set slot 0 of player's current inventory to white concrete named "&fApenas um concreto" with lore "", "Lore sem graça", "", "Enrolando" if name of player's current inventory contains "Um nome de um menu aleatório" Legal, não? DEMOROU MAIS DE UM SEGUNDO PARA CARREGAR SÓ POR CAUSA DE UMA LINHA!! NÃO ACREDITA? TESTE VOCÊ MESMO. command /b: trigger: set slot 0 of player's current inventory to white concrete named "&fApenas um concreto" with lore "", "Lore sem graça", "", "Enrolando" if name of player's current inventory contains "Um nome de um menu aleatório" on command "sk": if arguments contains "reload": set {x} to now on load: broadcast "%difference between {x} and now%" código completo incluindo o temporizador. ACABEI DE PROVAR AQUI QUE... O SKRIPT EM SI NÃO LAGA, SÓ LAGA SE VOCÊ EXAGERAR E FAZER MERDA! é isso pessoal, vejo vocês no próximo capitulo dessa "série". Confira nossos outros tópicos dessa série: Skript laga #1 - clique-me Skript laga #2 - clique-me
  19. Para os servidores RPG :) Esse código não está disponível para compra e nem para uso. Como funciona? Quando um item é craftado, ele recebe atributos e os itens ficam mais fortes, você pode melhorar os atributos com R$ e pontos de kills. Print:
  20. Mais um dos meus códigos estranhos mas que são divertidos. Esse código não está disponível para compra e nem para uso. Como funciona? todos que digitarem uma reação do discord como ":thinking:" ou ":cry:" o Skript se comunica com a API do discord e coloca a reação respectiva em cima do jogador por 2 segundos Prints:
  21. observação importante: o código não possui loops e para os hologramas é necessário HolographicDisplays, e uma textura própria (como o tópico já diz) para carregar as imagens dos itens personalizados.
  22. Olá, vou apresentar a vocês o meu Skript de texturização de itens por NBT. O funcionamento é simples, porém foi algo que eu demorei meses para descobrir seu funcionamento, e hoje, consegui aprimorar muito. Esse skript permite: - Menus personalizados - Itens personalizados (sem perder o item original) - Colocar elementos da textura em Footer, header e scoreboard - Colocar texturas em nomes e hologramas - Modificar huds (sem prints :/) Como funciona? infelizmente vou manter a formula desse código em segredo, não quero que se espalhe, pois será uma inovação única do meu servidor. menus personalizados itens personalizados (obs: a Gold_nugget não perde sua textura original e permite colocar mais de uma textura por item, ou seja, ilimitado!) elementos da textura no header, footer ou scoreboard Colocar texturas em nomes e hologramas O código não laga. Possui um total de somente 195 linhas e permite fazer muito mais do que eu só mostrei. depende de uma textura própria no servidor. O próprio skript baixa a textura e aplica no jogador, então o jogador não precisa se esforçar pra baixar, etc esse skript não é público, e nem vou vender.
  23. eu deixei de responder eles quando vi que são motivos apenas pela ignorância
  24. ambos manipulados de que o dilema de "LAG" === "TPS" Spigot tem um limite de 10 minutos para crashs do servidor, ou seja, se o servidor para de responder durante 10 minutos ele é fechado automaticamente. Se você utiliza muitas functions, o suficiente pro tempo de recarga passar desse tempo, o servidor nem iniciar consegue, já que é fechado. e vou relembrar: se você tem uma function em algum código, o skript pega essa função, da um loop em todos os skripts DENOVO para ver se há mais alguma, depois da MAIS UM LOOP e aplica-a nos lugares onde ela está sendo convocada, gerando uma lentidão MUITO MAIOR do que simplesmente usar o código várias vezes.
×
×
  • Criar Novo...