Bom essa será nossa segunda aula, sugiro que leiam ela como muita atenção.
Antes de tudo voce deve saber que vJass é "case sensitive", ou seja, letras maiusculas e minusculas fazem diferença. Unit, é diferente de UnIt ou uNiT ou unit ou uniT e etc. Desta maneira os comandos if e loop, por exemplo, só podem ser escritos em letras minusculas senão o compilador irá interpretá-los como variaveis.
Primeiro Código
Vejamos esse código escrito em vJass:
library Exemplo1
struct MyStruct
// Meu primeiro código
static method onInit takes nothing returns nothing
call BJDebugMsg("Hello World!")
endmethod
endstruct
endlibrary
Este codigo exibirá a messagem Hello World! na tela quando seu mapa iniciar.
Vamos entender o codigo
A linha
library Exemplo1 cria uma library nomeada Exemplo1. Uma library é como se fosse um bloco de notas com codigos. Por enquanto é apenas isso que voce precisa saber. Caso queira saber mais
leia este tutorial que eu fiz. Quando voce quiser terminar sua library, voce deve apenas escrever a linha (vista no final do código)
endlibrary. Esta linha é obrigatória, nunca se pode deixar uma library aberta (sem o seu endlibrary).
Quando fazemos um código, uma boa idéia é usar comentarios que ajudem a explicar partes dele. No nosso código temos o comentario
// Meu primeiro código, viu né? O compilador desconsidera qualquer coisa que esteja escrito depois do
// naquela linha.
A linha
struct MyStruct cria uma struct e nomeia ela de MyStruct. Uma struct é um objeto e como um objeto, ela pode ter varias caracteristicas. Nas proximas aulas voces entenderam melhor. Assim como na library, o compilador precisa saber onde termina sua struct, para isso apenas escreva endstruct depois de escrever os códigos da sua struct.
O
static method onInit takes nothing returns nothing é nosso method que sempre vai iniciar junto com o mapa. O
method onInit (escrito desse jeito, lembre-se do case sensitive) de uma struct sempre será executado quando seu mapa iniciar, sempre deve ser static e takes nothing returns nothing. O termo static vocês entederam mais tarde. A parte
takes nothing diz que o method não precisa de nenhuma variavel para ser executado. Quando voce quiser que um method use alguma variável você pode passar o valor dela pra essa function. E
returns nothing significa que esse method não retorna nenhum valor. Um method pode retornar um valor (move speed de uma unit, por exemplo) e você pode preferir guardar esse valor em uma variável. O
onInit é o nome do method, esse nome pode ser qualquer um. Contando que não se repita ou comece com números. Aé, methods também precisam ser encerrados. Apenas coloque
endmethod no final dele.
Única coisa que esse código faz é exibir a messagem
Hello World!.
function BJDebugMsg takes string msg returns nothing
Olha ai, essa function (que é quase a mesma coisa que um method) requer uma string:
takes string msg. Uma string é um conjunto de caracteres, quem conhece de trigger editor sabe disso. O comando
BJDebugMsg exibe a
string msg na tela por um minuto. Só!
Antes do comando pode ver que tem a palavra
call, que significa
chamar. Ele que
chama/executa o comando. Uma string sempre deve ser escrita entre aspas (" "), sempre. Um exemplo:
Faz de conta que voce quer mostrar mostrar a messagem Game Over. Então ficaria assim:
call BJDebugMsg("Game Over")
As coisas escritas dentro dos parenteses são os parametros do comando, o
takes dela. Quando um comando tem
takes nothing você precisa apenas deixar os parenteses vazios.
Exemplo:
call CreateTimer() // um comando que cria um countdown timer.
call CreateTimer // assim daria erro, faltou os parenteses.
Quando um comando tem algum
returns, voce pode preferir guarda o valor do retorno dela. O comando CreateTimer, por exemplo, é
takes nothing returns timer. Ou seja ele retorna um timer, um timer que acabou de ser criado. Faz de conta que voce tem uma variável chamada
TempTimer e você quer guarda um novo timer nela:
set TempTimer = CreateTimer()
// O comando CreateTimer foi chamado e seu valor de retorno
// foi guardado na variavel TempTimer
Primeiramente, desculpe pelas aulas serem semanais. Tentarei faze-las em um periodo mais curto. Espero que tenham entendido sobre esse inicio, voce ainda estará confuso, mas é assim mesmo. Logo logo voce estará entendendo a sintexe do vJass.
Abraços.