JASS Basic
JASS adalah bahasa yang digunakan di Warcraft III. Ini adalah bahasa yang limited. Tetapi JASS memberikan control yang lebih baik melebihi GUI trigger. Sebaikkya kalian mendownload JNPG(Jass New Gen Pack) versi terbaru dan mendownload patch 1.24. karna di patch 1.24 akan ada function –function yang baru ! ada 2 macam JASS yaitu JASS biasa dan VJASS(Vextorian JASS) kali ini saya menerangkan JASS basic
NOTE : tutorial ini hanya untuk oran yang bisa menggunakan GUI trigger di world editor dan telah menguasai variable. Bila belum menguasai belajar dulu sana ! nanti tambah bingung kalo baca ini !
Kelebihan JASS>GUI
1. Kamu bisa mengcontrol lebih conditions dan loops
2. Bisa menggunakan local variable
3. Kalian bisa menggunakan function kalian
4. Tidak semua function di JASS di GUI
5. Game akan lebih halus(Not Sure)
6. Tulisan/Code akan lebih sedikit
Untuk membuat JASS trigger, buat trigger baru di trigger editor dan convert to Custom Text
FUNCTION
Functions adalah code yang bisa di execute/ di call. Contohnya saya akan membuat function yang bila di call akan menampilkan tulisan “Hello World!” selama 30 detik
Functions selalu dalam bentuk format :Code:function HelloWorld takes nothing returns nothing
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,30,"Hello World!")
endfunction]
setelah “takes” itu akan menentukan apa yang akan di bawa(di pakai) dalam function tersebut. Semua bisa di “takes di function termasuk local variable di dalam function. Untuk membuat function yang memakai “takes”, ketik <type> <name> setelah “takes”. Contoh :Code:function <function's name> takes *** returns ***
//{code that will be executed when the function is called}
endfunction
Untuk function yang memerlukan take lebih dari satu, beri comma setelah <name>. Gunakan “nothing” bila tidak ada variable yang di bawa.Code:function meh takes unit u returns nothing
Yang terakhir adalah “returns” returns adalah (saya agak bingung jelasinnya jadi nunggu master2 map maker yang jelasin hehehehe). Contoh:
function half di atas takes integer, x, dan kembali setengah dari x,Code:function half takes integer x returns integer
return x/2
endfunction
NOTE : setiap menuliskan function harus di akhiri dengan “endfunction”
CALLING
Call digunakan untuk menggunakan function yang telah kalian buat
Contoh dengan function di atas :
mengapa harus ada tanda “()” karena function meh takes nothingCode:call meh()
cara menggunakan function HelloWorld diatas caranyaCode:function HelloWorld takes real r returns nothing
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,r,"Hello World!")
endfunction
itu akan menampilkan tulisan “Hello World!” selama 30 detikCode:call HelloWorld(30)
bila seperti di atas akan menampilkan selama 12 detikCode:call HelloWorld(12)
IF
If berguna untuk melakukan action bila TRUE atau FALSE ! Syntax nya adalah
missal :Code:if <condition> then
<actions>
endif
Code:if x==y then
call HelloWorld(5)
endif
ELSEIF
Sama seperti if tetapi elseif bisa lebih dari 1 contoh:
LOOPSCode:if X==1 then
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,30,"X is equal to 1")
elseif X==2 then
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,30,"X is equal to 2")
elseif X==3 then
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,30,"X is equal to 3")
else
call DisplayTimedTextToForce(bj_FORCE_ALL_PLAYERS,30,"X is NOT equal to 1, 2, or 3.")
endif
Loops sangatlah berguna sekali. Loops akan mengecall code di dalamnya sampai exitwhen bertemu. Exitwhen harus selalu berada di loop. Cara menggunakan loop tulis “loop” lalu “exitwhen” dan diakhiri dengan endloop. Contoh :
LOCAL AND GLOBAL VARIABLESCode:loop
exitwhen i>5
set i=0
set i=i+1 // Wajib!
call HelloWorld(5)
endloop
Di GUI, kamu hanya bisa menggunakan global variables, yang bisa di set dan digunakan function. Untuk mendeclare global variable di WE dengan menampilkan opsi variable tekan CTRL+B di trigger editor. Locals itu berbeda, local hanya bisa di gunakan didalam function yang sudah mendeclare local itu sendiri. Cara mendeclare local variable “local <type> <name>”. Local harus di declare(di tulis) pertama kali setelah menulis function. Contoh :
Code:function Die takes nothing returns nothing
local unit u= GetTriggerUnit()
call KillUnit(u)
endfunction
Function di atas akan membunuh U, function di atas sama saja dengan
ini akan tidak berhhasil apabila :Code:function Die takes nothing returns nothing
call KillUnit(GetTriggerUnit())
endfunction
untuk mendeclare variable dengan array :Code:function Die takes nothing returns nothing
call KillUnit(u)
local unit u= GetTriggerUnit()// Salah !
endfunction
untuk mendeclare variable selain dengan CTRL+B kamu bisa melakukannya di trigger dengan cara :Code:local intger array i
setelah globals tulis <type> <name> = <value>. Dan terakhir jangan lupa member endglobals (VJASS)Code:globals
intger i = 0
intger f = 0
unit u = GetTriggerUnit()
real array r = 0.0
endglobals
MEMORY LEAKS
Memory leaks akan terjadi apabila value pada variable belum di hancurkan. Bila memory leaks banyak akan menyebabkan banyak lag. Yang harus kamu perhatikan adalah groups(unit groups), locations (point), forces (player group), effect (special effect). Setelah menghancurkan variable kamu harus mengesetnya menjadi “null”
Blizzard.j dan common.j
Saya menyarankan kalian untuk membaca blizzard.j dan common.j dari war3.mpq caranya carik ke google aja yah !
Hal yang perlu diingat
JASS itu case-sensitive, JASS tidak bisa menge call function bila function itu di bawahnya contoh :
Code:call Die()
itu akan menyebabkan error ! untuk mencomment ketik “//” , dan agar yang mau lebih pro baca aja jass manual di folder jasshelper setelah mendownload JNPG di Jassmanual akan ada library, sturct, textmacro dan lain2 (VJASS)Code:function Die takes nothing returns nothing
local unit u= GetTriggerUnit()
call KillUnit(u)
endfunction