[Tutorial] Sistema de timers (Jp_darkuss#4806) |
Jp_darkuss « Citoyen » 1587763500000
| 0 | ||
Muitos programadores de Lua no tfm já apresentaram inúmeros script que ajudam uns aos outros, portanto vim dar minha contribuição, com a criação do meu sistema de timers! Para usar um timer primeiro vamos usar a função de criação timer.create(): Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 local contar= 1 O script roda bem. Vamos agora fazer o mesmo usando outras critérios, como argumentos e eventos! Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 timer.create("count", "Faz contagem regressiva!", function(p) Usando parâmetros e uma função interna do script, conseguimos reduzir o tamanho do script! O script se adequa a qualquer momento, e você pode usar de várias formas! Se quiser ainda mais controle do script, usurfrua de sua árvore! Só não esqueça de declarar a classe do script, para fazer o script funcionar ;) Espero que tenham gostado! :D Informações adicionais (script) Carregamentos: atualmente o script é carregado em 2 ms Tipo: funcional Linhas (incluindo eventLoop()): 148 linhas Ultima atualização: 25/04/20 Recomendado em: sistema de contagem regressiva, modules em geral. Agradecimentos Primeiramente eu agradeço à Deus, por sempre ajudar e me abençoar, e por ter aberto as portas para que eu conseguisse realizar esse feito. Agradeço à todos os programadores desse jogo em geral, porque sem vocês não me teria vindo esse desejo de programar nessa linguagem, e agradeço de forma específica aos jogadores: Sla#3700, Bolodefchoco#0000 e Yuri400#0000, que também me ajudaram nessa jornada de programador. Veja aqui os timers e suas versões Versão 1.0 (criação) Versão 2.0 Timer by Jp_darkuss#4806 Versão linha única - Adicionada a tabela get - Adicionado eventos - parâmetro decrease agora se chama change (se o número for positivo, aumenta ms, se for negativo, diminui ms) - Corrigido bug que quando o ms chegava a 0 o script parava - Corrigido o bug que fazia com que o script parasse ao eliminar um timer de forma automática - Adicionados argumentos para a função do timer Versão 2.1 Timer by Jp_darkuss#4806 Versão linha única Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 --[[ - Removidas todas as coisas desnecessárias (timer.get, parameters to timer, args, timer.list, eventTimerFinish) - Funções renomeadas (timer.remove, timer.new) - Eventos renomedos (eventTimerRemove) - Diminuída a quantidade de linhas - Parâmetro last * Aviso: é recomendado não usarem as versões anteriores. As mudanças são drásticas mas o funcionamento é o mesmo. Qualquer dúvida me contatem no pv Antes de tudo vamos configura seu timer, para isso, no final dele ponha o seguinte código Code Lua 1 2 3 eventLoop= function() Cria um timer - Parâmetros id (string/number): o id do seu timer etiqueta (string): uma descrição do que seu timer faz callback (function): a função que seu timer vai executar ms (number): a cada quantos milisegundos sua função será chamada (mim 500 ms) times (number): quantos ciclos sua função vai executar, 0 para infinito args (table): os argumentos de sua função, máximo 5 argumentos (deve ser uma table) change (number): em quantos x milisegundos seu ms será alterado, positivo para aumentar e negativo para reduzir (valor padrão: 0) last (string): a ultima ação de seu timer: "pause" (será pausado), "kill" (será excluído) (valor padrão: "pause") paused (boolean): se ele está pausado ou não (valor padrão: false) Cita no chat #lua todos os timers Destrói um timer - Parâmetros id (string/number): o id do timer Pausa um timer - Parâmetros id (string/number): o id do timer pause (boolean): se ele deve ou não estar pausado Use essa função para pegar informações que seus timers guardam! Retorna o endereço do timer - Parâmetros id (string/number): o id do timer Retorna uma informação do timer - Parâmetros id (string/number): o id do timer what (string): o que você quer que ela retorne, "ms" para os milisegundos padrão do timer, "cicle" o atual ciclo do timer, "times" a quantidade de ciclos que seu timer deve executar Veja aqui os eventos que ocorrem durante a execução do script! Obs: atualmente só funcionam em timers não infinitos! Ocorre quando um timer inicia - Retorna id (string/number): o id do timer Ocorre quando um timer é finalizado - Retorna id (string/number): o id do timer Ocorre quando um timer é pausado - Retorna id (string/number): o id do timer cicle (string/number): o ciclo que o timer estava executando quando foi pausado Ocorre quando um timer é eliminado - Retorna id (string/number): o id do timer cicle (string/number): o ciclo que o timer estava executando quando foi pausado Árvore do script (inútil para a última versão) Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 timers --table Exemplo Digamos que use o parâmetro etiqueta, e queira imprimi-lo: Code Lua 1 2 3 4 5 timer.create("Teste", ">> etiqueta impressa aqui", function() A função timer.get.timer() retorna a localização numérica do seu timer, daí usando o conhecimentos de tables e a árvores, consegui usar sua etiqueta. Para usar a árvore é bom que saiba lidar com tables e objetos num script. A função timer.get.timer() poderia ser substituída por um número qualquer, desde que saiba a localização do timer. Dernière modification le 1608409860000 |
Jp_darkuss « Citoyen » 1587763560000
| 0 | ||
Tópico aberto a críticas, sugestões e relato de bugs! :3 Obs: se algum sentinela passar por aqui, eu peço que por favor mude o nome do tópico para [Script] Sistema de Timers (Jp_darkuss#4806), esqueci de pôr uma parte importante, e não quero infligir as regras do fórum. Agradeço à quem fizer este favor, obrigado. Dernière modification le 1587921240000 |
Jp_darkuss « Citoyen » 1587847740000
| 0 | ||
Atualização disponível. |
Gamedroit « Citoyen » 1587918900000
| 0 | ||
a dit : Tenho quase certeza que a função do timer.kill não é criar outro timer ... @Edit: Eu não vejo tanto diferença entre usar seu script ou o do Laag mas ficou bom. Dernière modification le 1587918960000 |
Jp_darkuss « Citoyen » 1587921360000
| 0 | ||
Contistente3 a dit : Já consertei, obrigado. Tive preguiça de ficar digitando tudo e dei Ctrl + c/v depois do primeiro, daí esqueci de mudar a descrição kkkkk |
Gamedroit « Citoyen » 1587927300000
| 0 | ||
Jp_darkuss a dit : Sobre o script, quando você estiver criando um novo índice na tabela ele não precisa ser necessariamente entre colchetes e com aspas quando for do tipo string, Você pode somente fazer Code Lua 1 2 tabela = { novoIndice = 16 } |
Jp_darkuss « Citoyen » 1587933000000
| 1 | ||
Contistente3 a dit : Obrigado pela dica, mas em cada linguagem eu uso diferentes formas, como: Code Lua 1 2 3 4 local tabela= { Code Javascript 1 2 3 4 var tabela= { Code C 1 2 3 4 struct a { Uma coisa que marca muito um programador é seu estilo, o script de um programador para outro tem sempre seu toque marcante, fruto do seu aprendizado ou das características dele, e é algo que muito prezo. Eu busco seguir as normas da linguagem, mas acima de tudo fazer de uma forma que seja confortável para mim, mas obrigado. Dernière modification le 1587933420000 |
Gamedroit « Citoyen » 1587951180000
| 0 | ||
Deu um problema aqui, se algum moderador/sentinela vir por favor apague está mensagem. Dernière modification le 1587951600000 |
Gamedroit « Citoyen » 1587951600000
| 0 | ||
Jp_darkuss Jp_darkuss a dit : Sobre o script, quando você estiver criando um novo índice na tabela ele não precisa ser necessariamente entre colchetes e com aspas quando for do tipo string, Você pode somente fazer Code Lua 1 2 tabela = { novoIndice = 16 } Obrigado pela dica, mas em cada linguagem eu uso diferentes formas, como: [spoiler] Code Lua 1 2 3 4 local tabela= { Code Javascript 1 2 3 4 var tabela= { Code C 1 2 3 4 struct a { Você já parou para pensar em tanto faz a maneira que você escreve? Existem milhares de programadores no mundo, programar de maneira x ou y não vai te dar vantagem alguma se você somente pensar em estilo, e os exemplos que você citou, what a hell? Isso se trata de sintaxe e não estilo cara, as linguagens tem regras não diga estilo como se em javascript você pudesse escrever {Index = 0}, isso daria erro de execução, a mesma vale para lua, se fosse somente estilo certamente eu poderia fazer {Index: 0} em lua PS: É muito melhor encontrar uma forma padrão e familiar para programar do que criar 300 formas de programar. Eu por exemplo em JavaScript e Lua faço os índices sem aspas com a única diferença dos símbolos "=" e ":" PS²: Eu acredito que a única norma externa da qual você precisa seguir em se tratando de linguagens em geral é camelCase ou PascalCase, mas de resto não é realmente importante, já as normas que fazem a linguagem funcionar seria a sintaxe ou regra de linguagem. Dernière modification le 1587951900000 |
Fofinhoppp « Consul » 1587958260000
| 0 | ||
Parabéns pelo tópico, é muito bom ver que a seção está voltando à ativa! Eu particularmente não vejo problemas em ter seu próprio estilo na hora de programar. Se levar ao pé da letra, lua não precisaria nem de identação também. |
Gamedroit « Citoyen » 1587963060000
| 0 | ||
Fofinhoppp a dit : Bem, eu concordo com você Fofi, mas em vez de ficar pensando em um "estilo" diferente para cada linguagem de programação não seria mais simples ter um toque familiar? Certamente você pegaria o jeito mais rápido. De toda forma cada um programa da maneira que quiser, eu simplesmente expressei minha opinião assim como todos são livres para fazer. Dernière modification le 1587963180000 |
Jp_darkuss « Citoyen » 1591045860000
| 0 | ||
Versão linha única disponível para a versão 2.0 |