[Tutorial] Segmentação de código |
0 | ||
Segmentação de código é uma técnica de programação que consiste em transformar eventos principais em distribuidores para eventos secundários, ela permite um melhor manuseamento do código para quem está programando. O esquema a seguir ajuda a entender melhor o conceito: O servidor ativa uma função primária do script, que interage com uma tabela e por fim, chama as funções secundárias(callbacks) ativadas. Deste modo o tempo de execução diminui - já que não vai precisar interagir com várias declarações -, e fica muito melhor para organizar seu código e trabalhar com mais eficiência. Segmentando seu script Primeiro é necessário criar a tabela que irá armazenar todos os callbacks. É nela que os eventos vão ocorrer,aqui vamos utilizar a tabela _S que terá seu esqueleto assim:
} O local _S.segments irá armazenar todos os módulos do script, que são "mini-scripts". É necessário que cada modulo tenha 2 variáveis: enabled(Boolean) e callbacks(Table) onde enabled irá identificar que o módulo pode receber dados ou não, e callbacks irá armazenar todos os eventos, o resultado final é mais ou menos assim:
callbacks = {
Agora nós temos um caminho para os eventos do primeiro segmento: _S.segments.moduloUm.callbacks que possui a função eventNewGame dentro dele. Agora precisamos criar a função primária que vai chamar a secundária do primeiro segmento:
Como podemos ver, a função eventNewGame agora checa se os modulos da tabela _S estão ativados e se possuem o evento eventNewGame na tabela callbacks, se as duas declarações forem true, o evento é chamado. Você pode checar um código de exemplo aqui. É esta maneira de escrever códigos lua que venho utilizando em minigames como cheesehunter - que em breve terá mais de um modo de jogo - e até mesmo no utility, que utiliza um segmento para cada comando. |
Logmini « Citoyen » 1456181160000
| 0 | ||
entendi nada mas como o tpc é do esh é bom |
Laagaadoo « Citoyen » 1456190940000
| 0 | ||
muito bom esh, tbm da pra usar o _G nisso |
0 | ||
Laagaadoo a dit : Nossa nem tinha pensado no _G! |
Squalleze « Citoyen » 1456235520000
| 0 | ||
Hmmmmm, interessante, já tinha visto, porém nunca usado, mas acho que vou começar... Ótimo exemplo :v Dernière modification le 1456235580000 |