×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Archives
  • /
  • Seção Editor de Mapas e Modules
  • /
  • [Tutorial] Segmentação de código
[Tutorial] Segmentação de código
Esh
« Censeur »
1456175040000
    • Esh#0095
    • Profil
    • Derniers messages
    • Tribu
#1
  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:

http://i.imgur.com/Yc2w8b8.png


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:


    _S = {
      segments = {
        moduloUm = {
        }
      }
    }


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:


    _S = {
      segments = {
        moduloUm = {
          enabled = false,
          callbacks = {
            eventNewGame = function()
              print("Novo mapa")
            end,
          }
        }
      }
    }


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:


    function eventNewGame()
      for segment, data in pairs(_S.segments) do
        if data.enabled and data.callbacks.eventNewGame then
          data.callbacks.eventNewGame()
        end
      end
    end


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
    • Logmini#0000
    • Profil
    • Derniers messages
#2
  0
entendi nada
mas como o tpc é do esh
é bom
Laagaadoo
« Citoyen »
1456190940000
    • Laagaadoo#0000
    • Profil
    • Derniers messages
    • Tribu
#3
  0
muito bom esh, tbm da pra usar o _G nisso
Esh
« Censeur »
1456232760000
    • Esh#0095
    • Profil
    • Derniers messages
    • Tribu
#4
  0
Laagaadoo a dit :
muito bom esh, tbm da pra usar o _G nisso

Nossa nem tinha pensado no _G!
Squalleze
« Citoyen »
1456235520000
    • Squalleze#0000
    • Profil
    • Derniers messages
    • Tribu
#5
  0
Hmmmmm, interessante, já tinha visto, porém nunca usado, mas acho que vou começar...
Ótimo exemplo :v

Dernière modification le 1456235580000
  • Forums
  • /
  • Transformice
  • /
  • Archives
  • /
  • Seção Editor de Mapas e Modules
  • /
  • [Tutorial] Segmentação de código
© Atelier801 2018

Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

Version 1.27