Sabtu, 27 Agustus 2011

Apa Yang Di Maksud Macro

Pertanyaan dasar untuk pertama pengenalan macro..
Kenapa kamu menggunakan macro?
Tidak cukupkah control config memenuhi keinginan kamu?
Apapun jawaban kamu jika kamu sudah memutuskan untuk mengetahui macro,
maka konsekuensinya adalah bersiap untuk trial and error.
Jangan malu bertanya..tapi jangan bertanya sebelum mencoba!!
Lets GO!!

PERSIAPAN INSTALASI MACRO
Untuk mendapatkan macro compiler (yang nantinya akan disebut sebagai Macro Plugin)
Download dulu Macro versi terbaru!!
Lihat di folder Openkore kamu ..(adalah tempat dimana start.exe,openkore.pl berada)
Buatlah subfolder Plugins (jika belum ada)
Dalam paket instalasi Macro Plugin terdapat file macro.pl dan folder Macro ekstrak ke dalam folder Plugins tadi.
Dalam folder control Openkore kamu buat file dengan nama macros.txt yang nantinya akan berisi kumpulan macro/automacro kamu.
Secara hirarki folder openkore kamu seharusnya akan berupa seperti dibawah ini:
OpenKore
|--openkore.pl
|--control
|....-- macros.txt
|--fields
|--logs
|--plugins
|...|-- Macro
|...|...|-- Automacro.pm
|...|...|-- Data.pm
|...|...|-- Parser.pm
|...|...|-- Script.pm
|...|...`-- Utilities.pm
|...`--macro.pl
|--src
`--tables

COMMAND MACRO
Perintah-perintah di bawah ini dapat langsung dijalankan pada jendela console openkore kamu.
macro <namamacro> [options] [-- parameter(s)]
Options :
-repeat n (mengulang macro sebanyak n kali)
-overrideAI (mengutamakan macro diatas AI openkore)
-macro_delay (mengutamakan delay untuk macro yg di tunjuk diatas global delay)
-exclusive (menjaga agar macro yg di rujuk tidak di gagal kan akibat macro lain)
-orphan method (metode yg digunakan untuk menangani macro yg ter-sub macro)

Parameters:
Parameter dijalankan dengan didahului dengan tanda dobel dash (--)

macro list
melihat daftar macro yang sedang berjalan.
macro stop
menghentikan macro yang sedang berjalan.
macro pause
melakukan interupsi terhadap macro yang sedang berjalan.
macro resume
melanjutkan macro yang sedang ter-interupsi.
macro version
melihat versi macro yang kamu gunakan.
macro reset [<name(s)>]
me-reset status macro yang sedang berjalan
macro status
menampilkan status macro baik yang berjalan atau tidak.

MELAKUKAN KONFIGURASI ATAS MACRO
Macros.txt
By now,.upps pada saat ini seharusnya kamu sudah punya file macros.txt di folder control.Contoh :
C:\OpenKore\Control\macros.txt
Di file inilah kita akan meletakkan macro dan automacro.

Timeout.txt
File ini berada dalam folder control.Contoh :
C:\OpenKore\Control\timeout.txt
Di file ini kita dapat menambahkan baris macro_delay (detik) untuk membuat macro plugin menjalankan tiap baris perintah.

Config.txt
File ini berada dalam folder control.Contoh :
C:\OpenKore\Control\config.txt
Di file ini dapat di tambahkan beberapa baris perintah berikut :
macro_nowarn (0/1)
berfungsi untuk menampilkan atau tidak peringatan saat menggunakan perintah call pada automacro kamu.
macro_orphans (terminate/reregister/reregister_safe)
dijelaskan pada bagian yang berbeda
macro_file (nama file)
pada defaultnya file berisi macro yang dirujuk adalah macros.txt
macro_allowDebug (1/0)
pada console akan menampilkan informasi tentang debug proses. Hal ini akan memperlambat proses macro plugin.

MENULIS MACRO
Perhatian !! :
Sebelum kamu mulai menulis macro, diharapkan kamu sudah memahami sepenuhnya tentang perintah-perintah dasar console. Karena secara teorinya perintah-perintah console dapat digunakan dalam meulis macro.
Baca juga contoh-contoh macro sebagai perbandingan kamu dalam menulis macro.
Learning by doing lebih baik dari pada asking and listening.

do <perintah>
membuat openkore untuk menjalankan <perintah>.
Contoh:
macro dudud {
do move 123 234 prontera
do sit
do c "mari belajar macro"
}
Akan memerintahkan openkore untuk pergi ke lokasi kota prontera dengan koordinat x 123, koordinat y 234 untuk duduk dan melakukan public chat "mari belajar macro"

log <text>
mengirimkan <text> ke console.
Contoh :
macro dudud {
log Macro bikin mumet
}

pause [<n>]
menghentikan baris perintah untuk sementara dalam n detik
Contoh :
macro dudud {
log saya mau brb selama 10 detik
pause 10
log saya sudah kembaliiiiiiii
}

call <namamacro> [<n>]
memanggil macro <namamacro> [<n>kali]. Saat <namamacro> telah selesai maka proses macro akan berlanjut.

release (<nama> | all)
Mengembalikan status automacro dari posisi yang terkunci (oleh fungsi run-once atau lock) atau membuka kembali pemicu berjalannya semua macro saat menggunakan parameter release all.

lock <nama>
mengunci automacro dan menghentikan proses pemeriksaan pemicunya.

stop
menghentikan macro yang sedang berjalan.

set <option> <nilai>
memberikan perintah baris langsung pada tubuh macro/automacro
orphan method
macro_delay timeout
overrideAI [0|1]
repeat times
exclusive [0|1]

PENGGUNAAN DAN DEKLARASI VARIABEL
Apakah variabel?
- Suatu nilai yang dapat berubah-ubah, merupakan keterbalikan dari konstanta.

Dalam proses menulis macro, kamu dapat menggunakan variabel yang kamu definisikan sendiri.
Untuk membuat variabel gunakan perintah $variable = nilai , untuk memanggil nilai cukup dengan menggunakan perintah $variable nya.
Dapat juga untuk membuat variabel bertambah atau mengurang dengan perintah $variable++ or $variable--.

Perhatian!! :
Dalam memberikan nama variabel haruslah mengandung huruf dan angka, selain dari pada itu tidak diperkenankan.
Contoh :
macro dudud {
$var1 = mari
$var2 = belajar
$var3 = $var2 $var1
log baris dibawah ini akan menampilkan "belajar mari . mari . belajar"
do c $var3 . $var1 . $var2
$var4 = 47
log \$var4 is $var4
$var4++
log \$var4 is $var4
$var4 = @eval ($var4 + 52)
log \$var4 is $var4
}

VARIABEL KHUSUS
Terdapat variabel khusus yang readonly yang dimulai dengan karakter . (dot/titik)
$.map - peta dimana kamu berada ("prontera")
$.pos - posisi kamu saat ini ("123 234")
$.time - waktu sekarang dengan format unix timestamp ("1131116304")
$.datetime - tanggal dan waktu sekarang ("Fri Nov 4 15:59:36 2005")
$.hp - kondisi hp
$.sp - kondisi sp
$.lvl - kondisi base level
$.joblvl - kondisi job level
$.spirits - kondisi jumlah bulatan-bulatan spirit
$.zeny - kondisi nominal zeny
$.status - kondisi status char (dipisahkan dengan koma jika beberapa status aktif)
$.lastLogMsg - text dalam pemicu console yang memicu kondisi automacro terakhir terpenuhi.
$.lastpub - nama dari player dalam pemicu pubm yang memicu kondisi automacro terakhir terpenuhi
$.lastpubMsg - pesan yang ditulis dalam pemicu pubm
$.lastpm - nama dari player dalam pemicu pm yang memicu kondisi automacro terakhir terpenuhi
$.lastpmMsg - pesan yang ditulis dalam pemicu pm
$.lastguild - nama dari player dalam pemicu guild yang memicu kondisi automacro terakhir terpenuhi
$.lastguildMsg - pesan yang ditulis dalam pemicu guild
$.lastparty - nama dari player dalam pemicu party yang memicu kondisi automacro terakhir terpenuhi
$.lastpartyMsg - pesan yang ditulis dalam pemicu party
$.lastMonster- nama dari monster dalam pemicu monster yang memicu kondisi automacro terakhir terpenuhi
$.lastMonsterPos posisi terakhir yang terdeteksi dari monster ("123 234 prontera")
$.lastMatchN - backreferences for the last regexp match
$.paramN - parameter command line
$.caller - nama automacro yang terakhir terpicu
$.hooksaveN - value of a hash key (argument that's given with hook)

DEKLARASI NESTED VARIABEL
Contoh :
macro logika {
$var = logika
log \$var is "logika"
${$var} = banget
log \$\$var is \$logika is "banget"
}

FLOW CONTROL dan LABEL
Dalam penulisan bahasa pemrograman mutakhir terdapat metode fungsi "if .. then", "while", "repeat", "for .. next", "do .. while" dan fungsi pemanggil denominatornya "if", "goto" dan "while. Macro plugin hanya mendukung ketiga fungsi itu. Karena tidak ada pendefinisian baris ke- maka yang diperlukan adalah label dari fungsi-fungsi yang telah didefinisikan.
Contoh :
macro logika {
$i = 0
log pengulangan baris ini terjadi dalam 11 baris (0 .. 10)
while ($i <= 10) as pengulangan
log loop $i
$i++
end pengulangan
}

macro logika {
$i = @random ("1", "2", "3")
if ($i == 1) goto satu
if ($i == 2) goto dua
log i sama dengan tiga.
goto end
:satu
log i sama dengan satu
goto end
:dua
log i sama dengan tiga
:end
}
Perhatian!!:
Pendefinisian label goto haruslah mengandung huruf dan angka, selain dari pada itu tidak diperkenankan. Misal : satu_dua_tiga haruslah diganti menjadi SatuDuaTiga

DEFINISI KONDISI OPERATOR
< kurang dari
<= kurang dari atau samadengan
== samadengan
>= lebih dari atau samadengan
> lebih dari
!= tidak samadengan
~ bagian kiri adalah sebagian dari bagian kanan (dipisahkan dengan koma)

SPESIAL KEYWORD
@npc (<x> <y>)
Masukkan koordinat dari NPC dan mendapatkan ID-nya jika ditemukan dan -1 jika NPC tidak ditemukan.
@inventory (<item>)
Mencari dalam inventory kamu <item> nya dan mendapatkan ID-nya dan -1 jika item tidak ditemukan.
@Inventory (<item>)
Berfungsi sama dengan @inventory tetapi mendapatkan semua ID yang ditemukan dipisahkan dengan koma untuk beberapa item dan -1 jika item tidak ditemukan.
@cart (<item>)
Mencari dalam cart kamu <item> nya dan mendapatkan ID-nya dan -1 jika item tidak ditemukan.
@Cart (<item>)
Berfungsi sama dengan @cart tetapi mendapatkan semua ID yang ditemukan dipisahkan dengan koma untuk beberapa item dan -1 jika item tidak ditemukan.
@storage (<item>)
Mencari dalam storage kamu <item> nya dan mendapatkan ID-nya dan -1 jika item tidak ditemukan.
@Storage (<item>)
Berfungsi sama dengan @storage tetapi mendapatkan semua ID yang ditemukan dipisahkan dengan koma untuk beberapa item dan -1 jika item tidak ditemukan.
@player (<name>)
Mencari nama pemain dan mendapatkan ID-nya atau -1 jika pemain yang dicari tidak ditemukan.
@vender (<name>)
Mencari nama vending dan mendapatkan ID-nya atau -1 jika vending yang dicari tidak ditemukan.
@store (<name>)
Mencari dalam toko <item> nya dan mendapatkan ID-nya atau -1 jika item yang dicari tidak ditemukan.
@random ("<argument1>"[, "<argument2>"[, ...]])
Mendapatkan nilai acak dari salah satu argumen yang ditentukan.
@rand (<n>, <m>)
Mendapatkan nilai acak diantara <n> dan <m> termasuk nilai itu sendiri <n> dan <m>
@invamount (<item>)
Mendapatkan jumlah dari <item> dalam inventory
@cartamount (<item>)
Mendapatkan jumlah dari <item> dalam cart
@shopamount (<item>)
Mendapatkan jumlah dari <item> dalam shop
@storamount (<item>)
Mendapatkan jumlah dari <item> dalam storage
@eval (<argument>)
Melakukan evaluasi dari <argument> yang diberikan
@arg ("<argument>", <n>)
Mendapatkan urutan ke <n> kata dari <argument> atau null jika kata pada index diluar jangkauan
@config (<variable>)
Mendapatkan nilai dari <variable> yang ditentukan dalam config.txt

Semoga Bermanfaat ..............