My Programming Story Part 1, Kenal Ngoding dari Game

Tau game ini?…

Yes! Ragnarok Online atau mungkin lebih sering disebut RO (bacanya Er-O). Game ini pertama kali gw maenin di tahun 2004 (waktu gw masi kelas IV SD, iya gw kelas IV SD udah main di warnet wkwkkw) tapi sempat berhenti di kelas V SD dan lanjut lagi di kelas VII SMP

Notes : di 2007–2009 gw siang aktif di warnet dan kalau malamnya seringnya pakai laptop bokap gw.

Bisa dibilang awal mula gw kenal ngoding tuh dari game ini, gimana bisa? jadi waktu itu (kalau nda salah 2008) gw aktif mainin salah satu Private Server RO dan join guild yang kebetulan guild peringkat 1 di Private Server tersebut

Kenapa bisa peringkat 1? karena ketua guildnya ngeBot banyak character Priest untuk ngebuff dan ngeheal anggota2 guild waktu lagi WOE (War Of Emperium, singkatnya… bisa dibilang perang memperebutkan istana)

Nah disini rasa penasaran gw muncul, dan gw nyoba nanya ke ketua guild gw gimana cara ngeBot dan syukur doi baik mau ngajarin

Buat yang ga tau ngeBot itu apa? Bot itu character yang dikendalikan secara otomatis oleh script/codingan, jadi character bisa bergerak dan ngeluarin skill secara otomatis dengan rules2 tertentu (nama character, guild, action, dll)

Tools yang gw pakai waktu itu WireShark(untuk dapetin config dan address dari Private Server) dan OpenKore(OpenKore is an custom client and intelligent automated assistant for Ragnarok Online)

Singkat cerita setelah berhari-hari googling dan copas sana sini, berhasil lah Bot yang pertama kali gw jalanin.

waktu itu codingannya kira-kira seperti ini

automacro buff {
console /\[dist=(.*)\] (.*) \((\d+)\): (\*Flag\s\d\*|fcp|buff|)$/
run-once 1
call {
$distance = $.lastMatch1
$namaPlayer = $.lastMatch2
$playerID = $.lastMatch3
$playerguild = @eval (exists $::players{$::playersID[$playerID]}->{guild} ? $::players{$::playersID[$playerID]}->{guild}{name} : 'null')

$guild1 = GuildNameHere
$guild2 = GuildNameHere
$player1 = PlayerNameHere
$player2 = PlayerNameHere
if ($playerguild == $guild1) goto oke
if ($playerguild == $guild2) goto oke
if ($namaPlayer == $player1) goto oke
if ($namaPlayer == $player2) goto oke

goto lain
:oke

do sp 34 $playerID 10

do sp 29 $playerID 10

do sp 66 $playerID 5

do sp 361 $playerID 5
goto end

:jauh
do c ui $namaPlayer deketan
goto end
:lain
do e ??
goto end
:end

release buff
}
}

Dimana guildNameHere diganti jadi nama Guild dan PlayerNameHere diganti dengan nama player, gw coba mentelaah codingan tersebut dan mencoba mengerti apa itu do, goto, dsb (gw males ngejelasinnya, googling aja sendiri ya). Kemudian gw takjub karena codingan ini bisa mengendalikan sebuah character game secara otomatis.

Sejak saat itulah gw jadi tertarik mempelajari keajaiban dibalik coding dan apa saja yang dapat dilakukan dengan ngoding.

Pernah pada suatu saat di sekolah ketika ada pelajaran TIK(Teknologi Informasi dan Komputer), ketika guru gw ngajarin tentang algoritma, bahasa pemrograman C++ (waktu itu masih pakai Borland C++ yang biru2) dan desain web (dreamweaver) gw jadi lebih mudah mengerti apa yang diajarkan karena uda pernah ngoding bot sebelumnya.

Kalau game ini ada yang tau?

Ghost Online, di game ini (sekitar 2008–2009) gw kenal dengan seseorang yang cukup berpengaruh di hidup gw sekarang…

To Be Continued

Part 2