Sunday, 9 June 2013

macro untuk pemula part 5

sekarang kita akan masuk ke special keyword dan if statements dan while loop pada automacro yang merupakan akhir dari artikel macro untuk pemula kali ini.

if statement
if statement adalah instruksi yang berguna untuk membagi pekerjaan menjadi 2 atau lebih untuk statement yang berbeda. dapat di sederhanakan misal kita ingin mengecat bola karet berwarna merah, dan bola plastik berwarna biru, maka kita akan membuat statement kira2 seperti ini, "jika bola = karet --> cat merah, jika bola = plastik --> cat biru" untuk menulis syntax pada if statement kira2 seperti ini :
if (arg1 <Conditions> arg2)
arg1 dan arg 2 adalah variable yang ingin diperiksa, sedangkan condition adalah kondisinya yang bisa dilambangkan dengan :


= atau ==      yang berarti kiri sama dengan kanan
<                   yang berarti kiri lebih kecil dari kanan
>                  yang berarti kiri lebih besar dari kanan
!=                 yang berarti kiri dan kanan tidak sama
=<                yang berarti kiri sama atau lebih kecil dari kanan
=>                yang berarti kiri sama atau lebih besar dari kanan
~                  yang berarti kiri sama dengan salah satu dari kanan ditulis dengan pemisah koma
=~                yang berarti kiri sama dengan kanan yang ditulis dengan regexp

jika kita ingin memiliki lebih dari 1 condition di dalam if statement, maka kita dapat menambahkan tanda || yang berarti atau, dan && yang berarti dan
if (arg1 <Conditions> arg2 || arg3 <Conditions> arg4)
if(arg1 <Conditions> arg2 && arg3 <Conditions> arg4)
if ((arg1 <Conditions> arg2 && arg3 <Conditions> arg4 )|| (arg5 <Conditions> arg6 && arg7 <Conditions> arg8))
sedangkan jenis if statement sendiri jika kita bagi memiliki 2 jenis yang berbeda pada macro, diantaranya ialah :

if statement dengan perintah call atau goto
if statement ini termasuk yang paling dasar dan cukup mudah pengguanannya, syntaxnya kira2 seperti ini
if (arg1 <Conditions> arg2) goto <label> atau
if (arg1 <Conditions> arg2) call <macro>
pada if statement yang menggunakan goto label, maka jika argumen sesuai dia akan segera loncat ke tempat yang telah di beri label di macro, penulisan label sendiri ialah dengan menggunakan tanda :
contoh

macro belajar {
$gem = @invamaount ("Blue Gemstone")
if ($gem = 0) goto abis

do c gemstone berjumlah $gem
stop

:abis
do c gemstone sudah habis
stop
}
pada macro diatas jika $gem = 0 maka dia akan langsung loncat ke :abis, dan tidak mengerjakan statement diantara if dan :abis.
sedangkan pada if statement dengan perintah call sama seperti tadi namun dia akan langsung loncat ke macro yang ditulis di call. kira2 contoh mudah adalah seperti ini :

macro belajar {
$gem = @invamaount ("Blue Gemstone")
if ($gem = 0) call abis
do c gemstone berjumlah $gem
stop
}

macro abis {
do c gemstone sudah habis
stop
}

pada macro diatas jika $gem = 0 maka dia akan langsung mengerjakan macro abis.

ifelse statement
if else statement adalah if statement yang memiliki 2 cabang, jika cocok maka akan masuk ke instruksi selanjutnya, sedangkan jika tidak cocok dia akan masuk ke instruksi di else. penulisan instruksi adalah menggunakan tanda { dan ditutup dengan } contoh penulisannya :

macro belajar {
$gem = @invamaount ("Blue Gemstone")
if ($gem = 0) {
do c gemstone sudah habis
} else {
do c gemstone berjumlah $gem
}
stop
}

pada macro diatas jika $gem = 0 maka dia akan langsung mengerjakan intruksi yang berada didalam { } disebelah if, sedangkan jika $gem tidak sama dengan 0 dia akan langsung mengerjakan intruksi yang berada di dalam { } yang ada disebelah else

elseif statement
elseif statement adalah statement yang memiliki 3 cabang atau lebih, cara penulisannya sama seperti ifelse statement, namun ditambah dengan statement lain yang disebut elseif. kira2 penulisannya adalah seperti ini :

macro belajar {
$gem = @invamaount ("Blue Gemstone")
if ($gem = 0) {
do c gemstone sudah habis
} elseif ($gem < 10) {
do c gemstonenya udh mau habis
} else {
do c gemstone berjumlah $gem
}
stop
}

pada macro diatas jika $gem = 0 maka dia akan langsung mengerjakan intruksi yang berada didalam { } disebelah if, sedangkan jika $gem berjumlah dibawah 10 dia akan mengerjakan intruksi yang berada di dalam { } di sebelah elseif. sedangkan jika $gem tidak sama dengan 0 dia akan langsung mengerjakan intruksi yang berada di dalam { } yang ada disebelah else

while loop
while loop adalah instruksi untuk mengulang2 smua perintah yang ada di loop sebanyak yang kita inginkan. namun dibutuhkan variable untuk statement untuk dibaca apakah dia harus mengulang atau tidak. kira2 penulisannya adalah seperti ini :

while (arg <condition> arg) as <loop>
    do bla bla
    ...
end <loop>

dengan arg <condition> arg mirip dengan yang biasa ditulis pada if statement. conditionnya juga sama menggunakan tanda < > = dst. <loop> adalah nama loop yang kita inginkan. contoh penulisannya adalah :

macro belajar {
$i = 10
while ($i > 0) as loop
do c $i
$i--
end loop
stop
}

macro diatas akan mengulang2 perintah dibawah while selama $i lebih besar dari 0. sedangkan $i-- adalah perintah untuk mengurangi 1 dari angka yang disimpan di $i sehingga jumlah $i akan selalu berkurang tiap sekali menjalankan loop.
output yang diberikan dari macro diatas adalah chat sebagi berikut :

bot : 10
bot : 9
bot : 8
bot : 7
bot : 6
bot : 5
bot : 4
bot : 3
bot : 2
bot : 1

untuk menambahkan 1 pada variable numeric dapat menggunakan perintah $nama_var++ dan untuk menguranginya menggunakan perintah $nama_var--
contoh :

$i = 10
$i-- #$i akan berubah menjadi 9
$i++ #$i akan berubah menjadi 10

contoh praktis lainnya untuk loop adalah jika kita ingin membuat macro heal yang bisa melakukan heal sebanyak angka yang disebut oleh peminta, dengan batasan 9x heal. contoh :

automacro belajar {
pubm /^heal (\d)$/
exclusive 1
run-once 1
call {
$i = $.lastMatch1
$player = @player($.lastpub)
while ($i > 0) as loop
do sp 28 $player 10
pause 2.5
$i--
end loop
release belajar
stop
}
}

No comments:

Post a Comment