inicial" da nossa struct. Veja:library Exemplo2 struct Object // Agora nossa struct chama Object // nosso Object tem um comportamento (method) stop. method stop takes nothing returns nothing call BJDebugMsg("object paused") call TriggerSleepAction(10) call BJDebugMsg("object unpaused!") endmethod static method onInit takes nothing returns nothing local Object obj = Object.create() // cria um objeto do tipo Object call obj.stop() call obj.destroy() //destroi o objeto endmethod endstructendlibraryNo codigo acima a struct Object tem um method (comportamento) chamado stop. Esse method faz a mensagem object paused aparecer na tela e executa uma function chamada TriggerSleepAction, essa function e o famoso wait do GUI. O numero 10 indicado entre parenteses e o numero de segundos que pausara, no caso 10 segundos. Logo depois dos 10 segundos do wait, mostra a mensagem object unpaused. Percebeu que aquele method nao tem static na declaracao dele? Isso quer dizer que aquele method so pode ser executado de um Object "criado" ou como dizemos em programacao instanciado.No method onInit (o que sempre executa quando o jogo comeca) nos criamos um Object:local Object obj = Object.create()O que fizemos ali foi criar uma variavel para guardar o Object que criamos. O local significa que aquela variavel so vai existir dentro daquele method (no caso, o onInit). Object e o tipo da variavel (lembra que as struct sao tipos?) e por ultimo, obj e apenas o nome da nossa variavel local. Agora sim, Object.create() isso e que cria um objeto (instancia uma struct). Voce poderia chamar isso sem colocar numa variavel:call Object.create()Mas voce nao poderia acessar aquele objeto, pois ele nao teria um registro (uma variavel). Quando executamos obj.stop(), fizemos o objeto criado que estava guardado na variavel obj chamar o method stop dele. O ponto final entre o nome e o method e importante, nunca esquecam dele. Logo em seguida, destruimos nosso objeto com o obj.destroy(). O comando destroy libera o espaco daquela instancia da struct. "Cada struct" so pode ter 8190 instancias, ou seja, so pode ser criada 8190 vezes de uma vez. Entao Para completar a aula ensinarei a criar variaveis locais. E facil:local tipo-da-variavel nome-da-variavelExemplos:local unit casterlocal effect efeitolocal timer tempolocal player jogador1local integer iVoce pode "setar" o valor dela na criacao ou durante o method, como qualquer variavel:set caster = GetTriggerUnit()set i = 1348Mas cuidado, as variaveis locais podem causar leak quando voce nao remover o conteudo delas. Apenas as variaveis do tipo handle podem causar leak. Handle e tudo que nao e integer, real, boolean e string. Ou seja, unit, effect, timer, group, force, etc. De uma olhada no documento Common.j dentro do MPQ do war3 para saber mais. E qualquer variavel do tipo de uma struct tambem nao causa leak, voce so precisa destruir aquela instancia quando nao precisa mais dela. Mas como remove um conteudo de uma handle? Apenas no final seu method de set para null. Veja:method XXX takes nothing returns nothing local unit u = GetTriggerUnit() local integer i = 12 // integer nao causa leaks // codigo restante do method // ... set u = nullendmethodEspero que essa aula tenha sido muito