Tutorial Index
coming soon ? - vJass syntax
-- Introduksi --
A. Pengenalan
1. Apa itu JASS, sejenis bahasa setankah ??
JASS merupakan bahasa pemrograman yg digunakan dalam map warcraft dan script AI ( referensi lain; LUA homuncullus ragnarok jg menggunakan JASS ).
2. GUI ( Graphic User Interface ) dan JASS
GUI pada "Hakikatnya" merupakan JASS, namun blizzard membuat GUI di map editor agar lebih mudah dipahami oleh orang-orang ( Mapper ). ketika kamu memasukan Trigger; Add Action, Add Condition, atau Add Event, GUI "membuat" script jass otomatis untuk anda.
Anda bisa mencoba dengan "Convert to custom Text" ketika berada di Trigger Module. Edit > Convert To Custom Text. nah dari sana bisa dilihat JASS yg dibuat melalui GUI yg anda masukan.
2.1 Manakah yg lebih baik ??.. GUI atau JASS ???
Mitos Tentang JASS: ( Hal ini SALAH )
GUI lebih bagus karena lebih mudah
JASS lebih bagus karena lebih sulit
GUI lebih mudah dibandingkan dengan JASS: Mungkin bila anda hanya membuat hal kecil, namun untuk hal besar seperti sistem game JASS memiliki keuntungan
Kamu bisa Melakukan semua di GUI untuk apa JASS ?: Ini mungkin benar, Tapi karena kamu bisa membuat fungsi sendiri di JASS, hal ini jauh mempermudah pekerjaan kamu
Kamu Harus Mengetahui GUI Sebelum Belajar JASS: Menurut Vexorian ( gw kurang setuju ... ) lebih baik apabila belajar JASS sebelum belajar GUI
Kamu harus mengetahui bahasa pemrograma untuk mengerti JASS: GUI sebenarnya juga merupakan bahasa pemrogaman secara simple. Kamu bisa mempelajari JASS sendiri dan bahasa pemrogamannya akan secara "magis" muncul ketika kamu belajar JASS
Kamu harus mengetahui Pemrograman bahasa XYZ untuk belajar JASS: INI sama sekali TIDAK BENAR
Map itu bagus karena dibuat dari JASS
Map itu bagus karena tidak dibuat dari JASS
Map itu bagus karena dibuat dalam GUI
Map itu bagus karena tidak dibuat dalam GUI
imo map itu bagus karena usaha pembuatnya
-Vexorian Courtesy, taken from wc3campaigns - translated
secara mendasar yang membedakan GUI dan jass adalah keuntungannya
Keuntungan JASS
Functions: Kamu bisa membuat Function sendiri ( akan dijelaskan nanti )
Effisiensi: Mengetik Lebih cepat daripada mengklik mouse
Kemampuan Meng"coding" Lebih Optimal: Otomatisasi GUI tidak selalu baik, kadang eksekusi trigger bisa lebih lambat melalui GUI
Local variables dan MUI ( multi instancibility ) : Trigger GUI sulit untuk bisa di-eksekusi secara simultan ( ch: 10 player menggunakan skill yg ditrigger secara bersama2x )
Akses ke fungsi 'tersembunyi' : Untuk hal yang entah mengapa GUI tidak mempunyai akses ke fungsi ini.
Permasalahan JASS
Case Sensitive : Jass Case sensitive apabila kamu menulis Player itu tidak sama dengan player
MissType : Permasalahan Tipikal pemrograman bahasa ...
B. Awal ( ga ada ide buat judul ::laugh:: )
* Disarankan WE ada di sebelah anda beserta JASSCraft; link disediakan ( optional )
1. Langkah Awal menuju Jati diri
Ok ... untuk langkah awal buatlah map 32x32 .... 94x94 juga tidak mengapa itu semua terserah kamu ....
Buka Trigger Module .... Pilih Map Initialization ... hapus semua isinya .... kemudian rename ke Tes JASS. Langkah selanjutnya
Add Event - Player - Player skip a cinematic sequence
Add Actions - Game - Display Text ( All Players ) Text : Saya Mr.X
Ok ... semua sudah .... sekarang ke Edit>Convert To Custom Text
harusnya sekarang terliahat seperti
Code:
function Trig_Tes_JASS_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), "TRIGSTR_003" )
endfunction
//===========================================================================
function InitTrig_Tes_JASS takes nothing returns nothing
set gg_trg_Tes_JASS = CreateTrigger( )
call TriggerRegisterPlayerEventEndCinematic( gg_trg_Tes_JASS, Player(0) )
call TriggerAddAction( gg_trg_Tes_JASS, function Trig_Tes_JASS_Actions )
endfunction
Hah ?? apa yang terjadi dengan "Saya Mr.X salam kenal" ???
*"TRIGSTR_003" merupakan string dari war3map.wts, kemungkinan dicoding dalam C++. hal ini tidak perlu dipedulikan ....
Ubah script di atas menjadi
Code:
function Trig_Tes_JASS_Actions takes nothing returns nothing
call DisplayTextToForce( GetPlayersAll(), "Saya Mr.X" )
endfunction
//===========================================================================
function InitTrig_Tes_JASS takes nothing returns nothing
set gg_trg_Tes_JASS = CreateTrigger( )
call TriggerRegisterPlayerEventEndCinematic( gg_trg_Tes_JASS, Player(0) )
call TriggerAddAction( gg_trg_Tes_JASS, function Trig_Tes_JASS_Actions )
endfunction
Di script atas terdapat 2 fungsi , Trig_tes_JASS_Actions dan InitTrig_tes_JASS.
Setiap Trigger dalam Trigger editor selalu diawali InitTrig_<NAMATRIGGER> ( spasi diganti dengan _) karena hal inilah kamu ga bisa pake karakter unik dalam nama trigger ::laugh:: . fungsi ini selalu di call pada awal inisiasi dari map ( loading ).
Untuk sekarang kita akan berbicara mengenai fungsi InitTrig_Tes_JASS. dalam scirpt kita akan melihat baris.
Code:
//===========================================================================
function InitTrig_Tes_JASS takes nothing returns nothing
set gg_trg_Tes_JASS = CreateTrigger( )
call TriggerRegisterPlayerEventEndCinematic( gg_trg_Tes_JASS, Player(0) )
call TriggerAddAction( gg_trg_Tes_JASS, function Trig_Tes_JASS_Actions )
endfunction
Line di atas untuk sementara kita anggap sebagai "setup" dari trigger yang di save dalam variable gg_trg_Tes_JASS. Line selanjutnya yang kita stabillo adalah :
Code:
call TriggerAddAction( gg_trg_Tes_JASS, function Trig_Tes_JASS_Actions
pemanggilan fungsi ini berguna untuk menyatakan action yang ada dalam function Trig_Tes_JASS_Actions di atas.
untuk sekarang kita hanya mengedit bagian fungsi atas ... jangan ubah yg lain .... untuk sekarang ....
Now The Real Struggle Begins......
C. Main Course ( Steak Function well done dan Local Wine )
1. Tes Local Variable
Syntax untuk membuat Local Variable adalah sbb:
Code:
Local <TIPE VARIABEL> <NAMAVARIABEL>
alternatif untuk menset value dari local
Local <TIPE VARIABEL> <NAMAVARIABEL> = VALUE
* Nama variable tidak boleh mengandung nama dan karakter unik
* Local harus ditempatkan diawal functions
1.1 String
Tipe Variabel pertama yg akan kita masak adalah Tipe Strings ... text yang berada dalam "".
Kita pakai variabel 'x' dan jangan lupa kita hanya mengubah yang ada dalam function Trig_Tes_JASS_Actions takes nothing returns nothing. ok ... sekarang cobalah :
Code:
function Trig_Tes_JASS_Actions takes nothing returns nothing
local string x = "Saya Mr.X"
call DisplayTextToForce( GetPlayersAll(), x )
endfunction
dalam fungsi di atas kita merubah penempatan "Saya Mr.X" kedalam local variable. yang kemudian kita panggil untuk memperlihatkan isi pesan.
*nama variabel tidak perlu dimasukan dalam ""
Test mapnya ..... dan pencet esc
Dan lihat apa pesan yg ditunjukan ...
Ok now lets move
kita bisa memasukan local sebanyak yg kita mau .... sekarang kita akan coba memakai 2 variabel
Code:
function Trig_Tes_JASS_Actions takes nothing returns nothing
local string x = "Saya Mr.X"
local string y = "Sang Dewa"
call DisplayTextToForce( GetPlayersAll(), x )
call DisplayTextToForce( GetPlayersAll(), y )
endfunction
Ketika kamu memencet esc .... kedua pesan akan ditampilkan ....
Menset Variabel
Kita bisa menset ulang isi dari variabel .... caranya dengan menggunakan statement set
Code:
function Trig_Tes_JASS_Actions takes nothing returns nothing
local string x = "Saya Mr.X"
local string y = "Sang Dewa"
call DisplayTextToForce( GetPlayersAll(), x )
call DisplayTextToForce( GetPlayersAll(), y )
set y = "Dewa Kegelapan"
call DisplayTextToForce( GetPlayersAll(). y )
endfunction
test mapnya dan pencet esc
tiga pesan akan ditampilkan .... dengan variabel y yang sudah dirubah
Concatenation
merupakan operasi untuk menggabungkan string, ok langsung saja ke contoh
Code:
function Trig_Tes_JASS_Actions takes nothing returns nothing
local string x = "Saya"
local string y = " Mr.X"
call DisplayTextToForce( GetPlayersAll(), x+y )
endfunction
test mapnya dan pencet esc
kedua string yang telah digabungakan akan ditampilkan ....
Null Strings
String yang null ( tidak ada ) bisa menjadi null atau atau ""
Tapi string tidak bisa di-null, gunakan "" untuk mengosongkan string.
Arrays
Array pada dasarnya merupakan Grup dari variable ... memilik nama yang sama hanya beda index .... anggap sebagai buku yang memiliki halaman ... dimana ttiap halaman berbeda isinya ..... dan 0 termasuk array. untuk menggunakan array kita memakai
Code:
local <TIPEARRAY> array <NAMAARRAY>
contoh
local string array x
*ingat ... nomor indeks tidak bisa dimasukkan ketika pendeklarasian variabel hal ini dilakukan ketika pemanggilan / penge-set-an
cara penggunannya pun berbeda dengan yg biasa harus mengguanakan <NAMAVARIABEL>[INDEXARRAY]..... contoh
set x[1] = "Wow"
sekarang kita akan praktek ...
Code:
function Trig_Tes_JASS_Actions takes nothing returns nothing
local string array x
set x[1] = "Wow"
set x[2] = " Magic"
call DisplayTextToForce( GetPlayersAll(), x[1]+x[2] )
endfunction
test mapnya dan pencet esc
kedua string array yang akan ditampilkan ....
Wow Magic
Catatan Penting ....
Variable harus memiliki Value sebelum game bisa mengakses
cobalah ini ....
Code:
function Trig_Tes_JASS_Actions takes nothing returns nothing
local string x
call DisplayTextToForce( GetPlayersAll(), x )
endfunction
tidak terjadi apa2x bukan ??.... hal ini karena variabel tidak bisa diakses
Kl ada pertanyaan, gw coba bantu ... tp ga yakin bisa jawab semua ::laugh::
Ok ... sesi pertama tentang string .... selesai ..... nanti aka saya post lanjutannya .... ( cape nih pegel2x badan gw )
Gw compile dari tutorialnya vexorian ( my teacher ... ::bouncy: ..... jadi ada kemiripan .... ( 89% ) ... uh .. ngrasa ga enak ....
Link Penting :
Jangan lupa untuk register
JASSCraft 1.1.3
Manual JASS
Share This Thread