Tuesday, October 28, 2008

Notepad+++

Saya sudah mencoba berbagai macam text editor, baik yang berupa freeware maupun commercial. Dari sekian banyak pilihan, hanya beberapa yang cocok untuk keperluan saya. Salah satunya adalah Notepad++ Software ini memiliki banyak fasilitas yang sangat membantu untuk mengedit teks, script, source code, ataupun hanya sekedar untuk melihat file txt. Ukurannya cukup kecil namun memiliki fasilitas sangat lengkap sebagai text editor

Inilah Fasilitas-fasilitas di Notepad++ yang saya sukai:

* Membuka programnya cukup cepat, hampir secepat Notepad. Jadi tidak perlu menunggu 10 detik hanya untuk mengedit 1 file script
* Tampilannya sederhana. Interface Notepad++ terdiri dari menu standar di bagian atas (File, Edit, Search, View …) ditambah 1 baris icon dan 1 baris lagi untuk tab, dan area untuk editornya sangat luas
* Fasilitas Find/Replace yang baik. Fasilitas Find nya bisa mencari teks di semua file yang sedang dibuka, ataupun semua file di Directory tertentu. Juga terdapat fasilitas Incremental Search (mirip dengan fasilitas Find di browser Firefox di mana teks yang dicari langsung di-highlight begitu teks dituliskan tanpa perlu menekan enter)




Syntax Highlighting yang mendukung banyak bahasa pemrograman, dan otomatis mendeteksi bahasa pemrograman ketika membuka suatu file. Dengan fasilitas ini sebuah script bisa tampak berwarna-warni sehingga tidak pusing melihatnya, dan mudah membedakan antara elemen satu dengan elemen yang lainnya. Warna-warna syntax-nya bisa diatur di menu Styler Configurator, dan akan disimpan ke dalam file stylers.xml




Bracket Matching, yaitu bisa menemukan pasangan tanda kurung ketika kursor sedang berada di sebuah tanda kurung (baik kurung buka maupun kurung tutup)




Code Folding. Ini adalah fasilitas yang sudah ada di kebanyakan text editor di Linux, namun di editor berbasis Windows fasilitas ini jarang ditemukan. Code Folding adalah fasilitas yang bisa menyembunyikan kode-kode yang berada di dalam suatu blok kode, seperti di dalam tanda { } pada function/class/if dan pada tag html sehingga kode bisa diringkas menjadi 1 baris dengan tanda [+] di sebelah kirinya




# Terintegrasi dengan baik di Windows. Setelah Notepad++ diinstall, ada pilihan untuk mengintegrasikan di menu konteks (jika menekan klik kanan pada file, ada pilihan Open in Notepad++). Juga ada pilihan untuk menjadikan Notepad++ sebagai default HTML Editor (untuk melihat source/View Source di Internet Explorer)
# Fasilitas AutoComplete nya sudah mendukung PHP. Dengan menekan Ctrl+Space maka akan muncul fungsi-fungsi PHP.




Column Mode, yaitu bisa memilih teks dalam mode kolom, dengan cara menahan tombol Alt ketika menyeleksi teks.




Shortcut Mapper, yaitu kita bisa mengatur tombol Shortcut sesuai dengan keinginan kita.




# Trim Trailing Space. Fasilitas ini digunakan untuk menghilangkan spasi yang tidak berguna yang berada di belakang teks.
# File Status Auto-detection. Jika suatu file yang sedang dibuka di Notepad++ dimodifikasi dengan program lain, maka akan ada pilihan untuk mereload file tersebut (atau bisa juga secara otomatis di-reload tanpa ada peringatan).




# Bisa mengubah ukuran font dengan cepat menggunakan Ctrl + scroll.
# Terdapat fasilitas plugin. Di instalasi standarnya sudah terdapat plugin yang berisi sangat banyak fasilitas untuk memanipulasi teks (malah belum sempat mencoba semuanya). Di website Notepad++ juga terdapat beberapa plugin tambahan yang bisa didownload gratis.




# Ukuran file instalasinya cukup kecil, hanya sekitar 1 MB.




Freeware (gratis), dan opensource (source codenya terbuka, sehingga kita bisa memodifikasi dan mengembangkan program ini). Versi terakhir program ini (saat tulisan ini dibuat) adalah versi 3.8

Grab From Original Text

Fast Firus Engine V 1.0



Membuat Virus dalam Sekejap

Berawal dari kemudahan membuat virus, banyak virus maker ataupun programer pemula mencoba–coba untuk membuat virus tanpa perlu repot. Paling yang dibutuhkan hanyalah pengetahuan seputar operating system dan programming.

Namun kemudahan itu belum seberapa, bila dibandingkan dengan menggunakan program Virus Generator. Dari namanya saja, kita sudah dapat mengira kegunaan dari program tersebut. Ya, Virus Generator merupakan program untuk dapat membuat virus secara mudah dan instan.



Fast Firus Engine (FFE)
Pembuat Generator tersebut menamakan program buatannya itu dengan nama Fast Firus Engine. Seperti yang terlihat pada program ataupun situs pembuatnya, ia memberitahukan bahwa program ini hanya untuk tujuan pembelajaran dan tidak untuk tindakan merusak. Namun tetap saja, bila program ini sudah jatuh ke tangan yang salah, pasti akan digunakan untuk pengrusakan.

Virus Generator ini dibuat menggunakan bahasa Visual Basic dan di-compress menggunakan packer tELock. Dalam paketnya terdapat dua buah file, yakni Fast Firus Engine.exe dan data.ex_. Fast Firus Engine. exe merupakan program utama dalam pembuatan virusnya dan sementara file data.ex_ sebenarnya merupakan badan virus asli yang belum dimodifi kasi.

Saat file Fast Firus Engine.exe dijalankan, maka pengguna akan dihadapkan pada sebuah interface. Anda hanya disuruh mengisikan nama virus, nama pembuat, dan pesan-pesannya. Lalu dengan menekan tombol Generate, maka jadilah virus Anda.

Cara kerja dari Generator tersebut sebenarnya sangat sederhana. Ia hanya menambahkan data yang Anda masukkan tadi ke bagian akhir file virus asli (data.ex_). Nantinya informasi tersebut digunakan oleh virus dalam proses infeksi.



Bagaimana Virus Menginfeksi?
Virus hasil ciptaan FFE memang terlihat sederhana. Sama seperti Generatornya, ia juga dibuat menggunakan bahasa Visual Basic yang di-compile dengan metode Native- Code. Lalu di compress menggunakan tELock agar ukurannya semakin kecil. Virus ini memiliki ukuran tubuh asli sebesar 55.296 bytes.

Saat virus kali pertama dieksekusi, ia akan membuat beberapa file induk di beberapa lokasi. Seperti di direktori \%WINDOWS%\, akan terdapat file dengan nama.exe, Win32 exe, activex.exe, dan %virusname% (nama virus sesuai yang diisikan oleh sang pembuatnya pada Generator). Di \%WINDOWS%\ %system32%\ akan terdapat file copy.pif, _default.pif, dan surif.bin. Selain itu, ia juga mengubah atau membuat file Oeminfo.ini yang merupakan bagian dari System Properties. Jadi apabila komputer Anda terinfeksi oleh virus hasil generate dari FFE, maka pada System Properties akan terdapat tulisan “Generated by Fast Firus Engine”.

Di direktori \%WINDOWS%\%System%\ akan terdapat beberapa file induk lagi yang menggunakan nama yang sama seperti file system milik Windows, seperti csrss.exe, winlogon.exe, lsass.exe, smss.exe, svchost. exe, dan winlogon.exe.

Dan tak lupa, pada root drive pun akan terdapat file dengan nama “baca euy.txt” yang berisikan pesan–pesan dari si pembuat virus. Jadi pada saat membuat virus dengan menggunakan Generator tersebut, maka pembuatnya akan disuguhkan beberapa kotak input, seperti Author of the virus, Name of the virus, dan Messages. Nah, isi dari kotak messages ini yang nantinya ditampilkan pada file “baca euy.txt” tersebut.

Setelah virus berhasil meng-copy-kan file induknya ke dalam sistem tersebut, ia akan menjalankan file induk tadi, sehingga pada memory akan terdapat beberapa process virus, seperti csrss.exe, winlogon.exe, lsass. exe, smss.exe, svchost.exe, dan winlogon.exe. Nama process yang mirip dengan process/services milik Windows tersebut mungkin sengaja untuk mengecoh user. Untuk membedakannya, Anda dapat melihat path atau lokasi process tersebut dijalankan. Process virus ini biasanya berjalan di direktori System sementara process/services milik Windows yang running biasanya berasal dari direktori System32.

Another Virus

Virus komputer merupakan penyakit yang tak terputus mata rantainya hingga artikel ini dibuat. Seperti halnya virus pada tumbuhan atau bahkan manusia, sifat utama virus yaitu meniru dan membuat duplikat inang/ pasien yang di jangkitinya dengan maksud mengacaukan/ merusak/ memperbanyak diri di dalam tubuh pasien. Berikut merupakan 10 top update virus yang bisa menjangkiti komputer :

1. Virus Amburadul

Virus yang hadir dengan lambang menyerupai icon default untuk file gambar ini, akan membuat direktori baru untuk menaruh file - file induknya dengan nama ~A~m~B~u~R~a~D~u~L~² yang berada di bawah direktori System32 Windows. Nama file induk virus juga dibuat menyerupai file system Windows seperti csrss.exe, lsass.exe, winlogon.exe dan lain sebagainya. Dalam aksinya, ia akan membuat file duplikat atas dirinya pada root drive, misalnya dengan nama Friendster Community.exe, J3MbataN K4HaYan.exe, MyImages.exe, dan banyak nama file lainnya terutama yang berbau pornografi untuk menarik perhatian user. Untuk memberitahu kehadirannya, virus ini pun akan menampilkan pesannya pada caption di Internet Explorer. Dan hati-hati, karena ia dapat menghapus file gambar dan video yang Anda miliki. Beberapa extension file yang terbukti ia hapus adalah TIF, AVI, MP4, WMV, MPG, MPEG, VBS, dan EML.

2. Virus Euis

Virus yang di-compile menggunakan Visual Basic ini memiliki ukuran file yang terbilang sangat besar, yakni sekitar 3,4MB tanpa di-compress. Pada komputer terinfeksi, virus ini akan menampilkan pesannya di awal. Ia juga akan menghilangkan beberapa menu dari Start Menu, memblokir akses ke beberapa tools Windows seperti Task Manager, Regedit, Folder Options, dan juga mencoba untuk menyingkirkan antivirus yang kemungkinan terpasang di komputer korban. Diketahui, virus ini pun dapat menginfeksi file executable lainnya dengan cara menaruh file yang diinfeksi di bawah tubuhnya.

3. Virus Blueventhexi

Virus lokal yang satu ini memiliki ukuran file sebesar 36.864 bytes, tanpa di-packing. Dibuat menggunakan Visual Basic, dan menggunakan icon yang mirip seperti icon folder standar bawaan Windows. Sekilas, virus ini ada kesamaan dengan virus BlueFantasy. Pada komputer terinfeksi, Windows akan menampilkan pesan dari sang virus saat memulai Windows. Pesan tersebut juga bisa Anda temukan pada folder StartUp dengan nama “BluVenTheXi 10 Mei 2008 Surabaya.txt”.

4. Virus ServMouse

Virus dengan icon putih polos ini dibuat menggunakan Delphi. Ia memiliki ukuran file sebesar 551.424 bytes. Virus ini akan membuat file autorun.inf pada flash disk Anda agar dapat membantunya running secara otomatis. Virus ini juga bertindak sebagai backdoor yang akan me-listening port TCP 8088. Jika diteliti lebih lanjut, virus ini menggunakan sebuah form di dalamnya, dan terdapat string yang bertuliskan “8zero8×2.

5. Virus Lancang

Virus ini menggunakan icon folder lama. Memiliki ukuran sekitar 36.864 bytes, tanpa di-compress. ia dibuat menggunakan Visual Basic. Pada komputer terinfeksi, di root drive C:\ akan terdapat file wintask8201.exe, aku.doc, readme.txt, dan winph.sys yang kesemuanya merupakan file induk virus dengan ukuran yang sama.

6. Virus Lemorai

Lagi-lagi, virus lokal yang satu ini juga memanfaatkan icon mirip folder untuk dapat mengelabui calon korbannya. Virus ini memiliki ukuran file sebesar 44.855 bytes dengan keadaan terkompresi menggunakan MEW. Virus ini akan mencoba bertahan dengan memblok beberapa program termasuk virus lain yang dirasa akan mengganggu kelangsungan hidupnya. Pada komputer terinfeksi, tulisan AM/PM akan berubah menjadi “Lemorai”.

7. Virus Gen.FFE

Gen.FFE atau pembuatnya menamakan Fast Firus Engine merupakan salah satu program Virus Generator buatan lokal. Dengan hanya menggunakan program ini, tidak dibutuhkan waktu lama untuk dapat menciptakan virus/varian baru. Virus hasil keluaran program ini menggunakan icon mirip gambar folder standar bawaan Windows. Ia pun akan memblokir akses ke Task Manager, Command Prompt, serta menghilangkan beberapa menu di Start Menu. Ia juga akan membaca caption dari program yang aktif, apabila terdapat string yang berhubungan dengan antivirus maka program tersebut akan segera ditutup olehnya.

8. Virus Akmal.vbs

Virus jenis VBScript ini memiliki ukuran file sebesar 35.854. Pada komputer terinfeksi, saat menjalankan Run, pada edit box secara otomatis akan terdapat tulisan pesan dari si pembuat virus. Selanjutnya, pada caption Internet Explorer akan terdapat “YOUR COMPUTER HAS BEEN INFECTED BY AKMAL”, dan ia juga mengubah deafult page agar mengarah ke salah satu account di Friendster.

9. Virus Reva.vbs

Ia akan mencoba menyebarkan dirinya ke setiap drive di komputer Anda termasuk drive flash disk. Pada drive terinfeksi akan terdapat file reva.vbs, autorun.inf, dan shaheedan.jpg. Selain itu, ia pun akan mengubah halaman default dari Internet Explorer agar mengarah ke situs http://www.arrahmah.com.

10. Virus XFly

PCMAV mengenali dua varian dari virus ini, yakni XFly.A dan XFly.B. Sama seperti kebanyakan virus lokal lainnya, ia dibuat menggunakan Visual Basic. Memiliki ukuran tubuh sebesar 143.360 bytes tanpa di-compress. Dan ia dapat menyamar sebagai folder, file MP3 WinAmp atau yang lainnya dengan cara mengubah secara langsung resource icon yang ada pada tubuhnya. Ini akan lebih mempersulit user awam dalam mengenalinya. Pada komputer terinfeksi, saat menjalankan Internet Explorer, caption-nya akan berubah menjadi “..:: x-fly ::..”, dan saat memulai Windows pun akan muncul pesan dari si pembuat virus pada default browser. Atau setiap waktu menunjukan pukul 12:30, 16:00, atau 20:00, virus ini pun akan menampilkan layar hitam yang juga berisi pesan dari si pembuat virus.

Sunday, October 26, 2008

Cara Melihat Ip serrver dgn menggunakan BOT

tool yang harus kamu punya :
1. Openkore
2. Ragexedual ( untuk Idro ) & ( untuk server lain yang sudah bisa dual login tidak perlu d rubah. )

Pertama yang musti kamu lakuiin

XKore 1
XKore_silent 1
XKore_bypassBotDetection 0
XKore_exeName ragexe.exe


Yang gw pertebal pada d atas itu ganti dgn RagexeDual.exe

lalu lihat pada bagian console pada openkore kamu

Connecting to Account Server...
Connecting (202.43.167.66:6900)... connected
Secure Login...
Sending encoded password...


202.43.167.66 = Ip buat FnC
6900 = Port buat FnC

lalu isikan seperti berikut pada server.txt kamu
[Indonesia - idRO Free Server: Fun and Chat]
ip 202.43.167.66
port 6900
master_version 12
version 2
serverType 0
secureLogin 1
secureLogin_type 0
secureLogin_requestCode
secureLogin_account 0
serverEncoding Western
storageEncryptKey 0x050B6F79, 0x0202C179, 0x00E20120, 0x04FA43E3, 0x0179B6C8, 0x05973DF2, 0x007D8D6B, 0x08CB9ED9
gameGuard 1
recvpackets recvpackets-idro.txt


Mengenai Pengisian Server.txt mungkin bisa d lihat pada

In Here

Buff For Guild

automacro buffAndWarp {
pubm /(ald|alde|sq|pron|prt|HL|pay|asum|heal|santuary|sant|ab|buff|agi|bless)/i
sp >= 70
priority 0
class high priest
exclusive 1
call checkMsg
}
macro checkMsg {
$i = @player ($.lastpub)
$g = @eval (exists $::players{$::playersID[$i]}->{guild} ? $::players{$::playersID[$i]}->{guild}{name} : 'null')
if ($g == Gothic) goto accessGranted
if ($g == V a l k y r i e) goto accessGranted
goto end
:accessGranted
$msg = $.lastpubMsg
$posx = @rand (4, 5, 6, 7)
$posy = @rand (4, 5, 6, 7)
$cellIsFull = 0
do eval $::Macro::Data::varStack{cellIsFull} = 0;foreach (@{$::playersList->getItems()}) { next if (($_->{pos_to}{x} != $posx) || ($_->{pos_to}{y} != $posy));$::Macro::Data::varStack{cellIsFull} = 1; last;}
if ($cellIsFull == 1) goto accessGranted
$x = @arg ("$.pos", 1)
$y = @arg ("$.pos", 2)
$evalx = @eval ($x + $posx)
$evaly = @eval ($y + $posy)
if ($msg == ALD) goto warpAld
if ($msg == ald) goto warpAld
if ($msg == alde) goto warpAld
if ($msg == ALDE) goto warpAld
if ($msg == SQ) goto warpSq
if ($msg == sq) goto warpSq
if ($msg == GEF) goto warpGef
if ($msg == gef) goto warpGef
if ($msg == HL) goto warpHl
if ($msg == hl) goto warpHl
if ($msg == pay) goto warpHl
if ($msg == asum) goto asum
if ($msg == ASUM) goto asum
if ($msg == agi) goto agi
if ($msg == AGI) goto agi
if ($msg == bless) goto bless
if ($msg == BLESS) goto bless
if ($msg == ab) goto agiBless
if ($msg == AB) goto agiBless
if ($msg == buff) goto agiBless
if ($msg == heal) goto heal
if ($msg == HEAL) goto heal
if ($msg == sant) goto santuary
if ($msg == santuary) goto santuary
if ($msg == SANT) goto santuary
if ($msg == SANTUARY) goto santuary
goto end
:warpAld
do sl 27 $evalx $evaley
pause 1
do warp alde_gld
stop
:warpSq
do sl 27 $evalx $evaly
pause 1
do warp prt_gld
stop
:warpGef
do sl 27 $evalx $evaly
pause 1
do warp gef_fild13
stop
:warpHl
do sl 27 $evalx $evaly
pause 1
do warp pay_gld
stop
:asum
do sp 361 $i 5
stop
:agi
do sp 29 $i 10
stop
:bless
do sp 34 $i 10
stop
:agiBless
do sp 34 $i 10
pause 1
do sp 29 $i 10
stop
:heal
do sp 28 $i 10
pause 0.5
do sp 28 $i 10
pause 0.5
do sp 28 $i 10
pause 0.5
do sp 28 $i 10
stop
:santuary
do sp 70 $i 7
stop
:end
log $msg
stop
}


Untuk yang lain harap anda mengedit nya sendiri.

Thursday, September 25, 2008

Openkore 2.0.6.1 by Freedoom dan adani

Openkore 2.0.6.1 released by Freedoom and adani

Win32 binaries
Win32 binaries (WX gui)
Field Pack
Source Code, only needed by developers. Do not download this if you are not a developer. (Windows Developer might need XSTools )

Mirror

Mediafire
4Shared
Megaupload
Indowebster
2Shared

Untuk Mirror Sudah Lengkap dengan Fild pack, Items_controls, Mon_controls, Pickup_items, Macro Plugin.

Friday, April 4, 2008

Tutor Untuk Vending

In config bag ini yang perlu d perhatiin.

shopAuto_open 1
shop_random 0


dan cari Shop.txt pada folder control

# This file controls which items to put into your shop, when you are
# vending. To enable vending, set the 'shopAuto' configuration option in
# config.txt to 1.
#
# The first line of the file is your shop title.
# Subsequent lines are of this format (tab-delimited):
# []
#
# If has commas in it, they must appear in the right places.
# This can be useful for preventing accidentally vending an item
# for the wrong price.

My Shop Name
Chain [3] 800,000 1
Marina 500,000 3
etc

Wednesday, April 2, 2008

PvP MaCrO By MaSaHiRo

Saya Harap Smua mau sedikit berusaha mengedit nya. Karena jika bermain copas saya yakin maka macro pvp ini tdk akan berhasil/jalan. Karena saya telah mengedit d bag tertentu.

###################################################
# PLAYER KILL MACRO Version 1.0.0 Beta #
# JOB: ALL CLASSES #
# Requires Macro Plugin 1.3.x
# By : MaSaHiRo
###################################################

automacro ignorepm {
pm /bot/
timeout 1
call pm
}

automacro ignorepm2 {
pm /botter/
timeout 1
call pm
}

automacro ignorepm3 {
pm /report/
timeout 1
call pm
}

automacro ignorepm4 {
pm /ur name/
timeout 1
call pm
}

macro pm {
$pm = @eval ($pm + 1)
if ($pm >= 2) goto ignore
goto end
:ignore
pause 3
do ignore 1 $.lastpm
$pm = 0
:end
}

automacro subload {
overideAI 1
run-once 1
timeout 1
call onload
}

macro onload {

# Macro Config

do conf macro_debug 0

#Edit This:
#[ 1 = on | 0 = off ]


# Commands @warp, @go, etc
$allowA = 1

$kos = 1
$freewill = 1

# use 2 or 0
#
$randomwalk = 2

$nohide = 0
$fp = 0
$skills = 1
$lock = 1
$homemap = prt_fild09 29 295
$lockedmap = prt_fild08 150 365
$fpbot = "= ur name bot for FP ="
$master = Master Name
$follow = @config(follow)

# character: $atk - attack skill
#
$atk = sp 266

# If your jobclass is champion or hpriest leave none, else set this to 1
#
$job = none


# Dont mess with this:

$hello = Hi $master ! Our Enemies: @config(kos_pk) @config(kos_pk2).

:next0
if ($follow = 1) goto f
goto next1
:f
do follow $master
:next1
if (@arg("$lockedmap", 1) = prt_fild08) goto makelocprt
$location = $.map
goto next2
:makelocprt
$location = prt_fild08

:next2
$lastpos = 0 0 $.map
$damage = 0
$nmes = 0

#

# Say that you are online
do pm "$master" $hello

# Log (you can remove it)

log ===================================================
log PVP (BVP) Macros
log JOB: ALL CLASSES
log ===================================================
log Master: $master
log Skill Usage On Players - Ruwach: $nohide Buffs: $skills
log Random Walk: $randomwalk Free will: $freewill KOS: $kos
log Homeplace: $homemap Locked Place: $lockedmap
log Commands are: follow / stop / prt / gef / pay / br
log home / fp / walk / free / duel / kill / kos / skill / warp / go
log ===================================================
log Kill On Sight players: @config(kos_pk) @config(kos_pk2)
log ===================================================

call move2
}

#### MASTER


automacro mapchange99 {
mapchange any
call {
release newmove
}
}

automacro masterlost {
#var randomwalk = 2
exclusive 1
console "I lost my master"
timeout 1
#location prt_fild08
call {
release move
release newmove
}
}

automacro masterfound {
hook player
exclusive 1
var randomwalk = 2
console "Found my master!"
timeout 1
#location prt_fild08
call {
lock newmove
}
}

#### KOS

automacro kos2 {
status not dead
exclusive 1
overideAI 1
hook player
location not "name for map"
location not "name for map"
location not "name for map"
location not "name for map"

var kos = 1
call kos1
}

macro kos1 {
if (@player(@config (kos_pk)) >= 0) goto kill1
if (@player(@config (kos_pk2)) >= 0) goto kill2
goto end
:kill1
lock move
lock freew
lock newmove
$lastpos = $.pos $.map
$mytarget = @config(kos_pk)
set exclusive 0
do kill @player(@config (kos_pk))
goto end
:kill2
lock move
lock freew
lock newmove
$lastpos = $.pos $.map
$mytarget = @config(kos_pk2)
set exclusive 0
do kill @player(@config (kos_pk2))
:end
}

#### RANDOM WALK SETUP

automacro move {
#overideAI 1
var randomwalk = 1
priority 5
location not "name for map"
location not "name for map"
location not "name for map"
location not "name for map"

timeout 10
call move3
}

automacro newmove {
#overideAI 1
#location gef_fild10, prt_fild08
priority 5
location not "name for map"
location not "name for map"
location not "name for map"
location not "name for map"

var randomwalk = 2
timeout 10
call move2
}

macro move2 {
set exclusive 0
$look = @random ("look 4", "lookp @player($master)", "look 4")
$px = @arg ("$.pos", 1)
$py = @arg ("$.pos", 2)
if ($.map = map name) goto "map name"
if ($.map = map name) goto "map name"
if ($.map = @arg("$homemap", 3)) goto end
goto other
:makenew
$n = @rand(1, 5)
$m = @rand(1, 5)
$posx = @arg ("$.pos", 1)
$posy = @arg ("$.pos", 2)
$eval = @random ("-", "+")
$lastpos = @eval ($px $eval $n) @eval ($py $eval $m) $.map
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
do move @eval ($px $eval $n) @eval ($py $eval $m) $.map
goto end

:ss
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
$n = @rand (0,1)
$m = @rand(1, 2)
$posx = @arg ("$.pos", 1)
$posy = @arg ("$.pos", 2)
$eval = @random ("-", "-")
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
do move @eval ($posx $eval $n) @eval ($posy $eval $m) $.map
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
$do = @random ("ss 135", "ss 406", "", "ss 138", "ss 406", "look 4", "ss 135", "ss 406", "ss 406")
do $do
goto end

:cont
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
$mrnd = @rand (1, 3)
if ($mrnd = 1) goto move
if ($mrnd = 2) goto ss
if ($mrnd = 3) goto ss
goto end
:move
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
if (@arg("$lastpos", 3) != $.map) goto makenew
if (@arg("$lastpos", 1) = 0) goto makenew
$n = @rand(2, 6)
$m = @rand(2, 6)
$posx = @arg ("$.pos", 1)
$posy = @arg ("$.pos", 2)
$eval = @random ("-", "+")
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
do @random ("move $lastpos", "move @eval ($posx $eval $n) @eval ($posy $eval $m) $.map")
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
$do = @random ("ss 135", "ss 406", "", "ss 138", "ss 138", "look 4", "ss 150", "ss 135", "e ho")
do $do
goto end
:"map name"
$do = @random ("", "ss 406", "", "")
do $do
$xx = @rand (156, 171)
$yy = @rand (354, 360)
$px = @arg ("$.pos", 1)
$py = @arg ("$.pos", 2)
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
do move $xx $yy $.map
goto cont
:geffild
$do = @random ("", "ss 406", "", "")
do $do
$xx = @rand (65, 73)
$yy = @rand (308, 327)
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
do move $xx $yy $.map2
goto cont
:other
$do = @random ("", "ss 406", "", "")
do $do
$posx = @arg ("$.pos", 1)
$posy = @arg ("$.pos", 2)
$n = @rand(1, 3)
$m = @rand(1, 3)
$eval = @random ("-", "+")
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
do move @eval ($posx $eval $n) @eval ($posy $eval $m) $.map
goto cont
:kill1
do kill @player(@config (kos_pk))
$lastpos = $.pos $.map
goto end2
:kill2
do kill @player(@config (kos_pk2))
$lastpos = $.pos $.map
goto end2
:end
if (@player(@config (kos_pk)) >= 0) goto kill1
if (@player(@config (kos_pk2)) >= 0) goto kill2
:end2
}

macro move3 {
set exclusive 0
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
$look = @random ("look 4", "lookp @player($master)", "look 4")
$px = @arg ("$.pos", 1)
$py = @arg ("$.pos", 2)
if ($.map = @arg("$homemap", 3)) goto end
goto other
:makenew
$n = @rand(1, 5)
$m = @rand(1, 5)
$posx = @arg ("$.pos", 1)
$posy = @arg ("$.pos", 2)
$eval = @random ("-", "+")
$lastpos = @eval ($px $eval $n) @eval ($py $eval $m) $.map
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
do move @eval ($px $eval $n) @eval ($py $eval $m) $.map
goto end

:ss
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
$n = @rand (0,1)
$m = @rand(1, 2)
$posx = @arg ("$.pos", 1)
$posy = @arg ("$.pos", 2)
$eval = @random ("-", "+")
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
do move @eval ($posx $eval $n) @eval ($posy $eval $m) $.map
if (@player(@config (kos_pk)) >= 0) goto kill1
if (@player(@config (kos_pk2)) >= 0) goto kill2
$do = @random ("ss 135", "ss 406", "", "ss 138", "ss 406", "look 4", "ss 135", "ss 406", "ss 406")
do $do
goto end

:cont
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
$mrnd = @rand (1, 3)
if ($mrnd = 1) goto move
if ($mrnd = 2) goto ss
if ($mrnd = 3) goto ss
goto end
:move
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
if (@arg("$lastpos", 3) != $.map) goto makenew
if (@arg("$lastpos", 1) = 0) goto makenew
$n = @rand(1, 5)
$m = @rand(1, 5)
$posx = @arg ("$.pos", 1)
$posy = @arg ("$.pos", 2)
$eval = @random ("-", "+")
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
do move @eval ($posx $eval $n) @eval ($posy $eval $m) $.map
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
$do = @random ("ss 135", "ss 406", "", "ss 138", "ss 138", "look 4", "ss 150", "ss 135", "e ho")
do $do
goto end
:other
$do = @random ("", "ss 406", "", "")
do $do
$posx = @arg ("$.pos", 1)
$posy = @arg ("$.pos", 2)
$n = @rand(1, 3)
$m = @rand(1, 3)
$eval = @random ("-", "+")
#if (@player(@config (kos_pk)) >= 0) goto kill1
#if (@player(@config (kos_pk2)) >= 0) goto kill2
do move @eval ($posx $eval $n) @eval ($posy $eval $m) $.map
goto cont
:kill1
$lastpos = $.pos $.map
do kill @player(@config (kos_pk))

goto end
:kill2
$lastpos = $.pos $.map
do kill @player(@config (kos_pk2))
goto end2
:end
if (@player(@config (kos_pk)) >= 0) goto kill1
if (@player(@config (kos_pk2)) >= 0) goto kill2
:end2
}

##### FREE WILL

automacro freew {
overideAI 1
location not "map name"
location not "map name"
location not "map name"
location not "map name"

var freewill = 1
timeout 45
call freewill
}

macro freewill {
$will = @random ("macro sit", "look", "emo", "macro move2", "look", "emo", "macro move2", "macro attack", "macro san", "macro attack2", "macro san2")
if ($will = macro move2) goto move
if ($will = macro sit) goto sit
if ($will = look) goto look
if ($will = emo) goto emo
if ($will = macro attack) goto atk
if ($will = macro san) goto san
if ($will = macro attack2) goto atk2
if ($will = macro san2) goto san2
goto end
:move
call move2
goto end
:sit
call sit
goto end
:emo
call emo
goto end
:look
call look
:atk
call attack
:atk2
call attack2
:san
call san
:san2
call san2
:end
}

macro look {
if (@player(@config (kos_pk)) >= 0) goto kill1
if (@player(@config (kos_pk2)) >= 0) goto kill2
if (@player($master) >= 0) goto one
goto two
:one
$look = lookp @player($master)
do $look
do $look
do $look
do $look
do $look
goto end
:two
$look = @random ("look 4", "look 3", "look 5", "look 4")
do $look
goto end
:kill1

do kill @player(@config (kos_pk))
$lastpos = $.pos $.map
goto end
:kill2

do kill @player(@config (kos_pk2))
$lastpos = $.pos $.map
goto end
:end
}

macro emo {
if (@player(@config (kos_pk)) >= 0) goto kill1
if (@player(@config (kos_pk2)) >= 0) goto kill2
$look = @random ("e e2", "e e2", "c ....", "e ho", "e e10")
do $look
goto end
:kill1

do kill @player(@config (kos_pk))
$lastpos = $.pos $.map
goto end
:kill2

do kill @player(@config (kos_pk2))
$lastpos = $.pos $.map
goto end
:end
}

macro sit {
if (@player($master) >= 0) goto one
goto two
:one
$look = lookp @player($master)
do $look
goto sit
:two
$look = @random ("look 4", "look 3", "look 5", "look 4", "look 4")
do $look
:sit
$times = @rand (8, 12)
$i = 0
while ($i < $times) as sitloop
pause 3
do sit
do $look
if (@player(@config (kos_pk)) >= 0) goto kill1
if (@player(@config (kos_pk2)) >= 0) goto kill2
$i++
end sitloop
if (@player($master) >= 0) goto emo
goto end
:emo
pause 1
do @random ( "", "e e2", "", "", "e e8", "", "", "", "e ho", "e e10")
goto end
:kill1

do kill @player(@config (kos_pk))
$lastpos = $.pos $.map
goto end
:kill2

do kill @player(@config (kos_pk2))
$lastpos = $.pos $.map
goto end
:end
}




macro san1 {
if (@player($master) >= 0) goto one
goto end
:one
do @random ( "sp 70 $master", "sp 70 $master")
do @random ( "sp 70 $master", "sp 70 $master")
pause 1
do @random ( "", "e e2", "", "", "e e8", "", "", "", "e ho")
:end
}

macro san2 {
# if (@player($master) >= 0) goto one
goto end
:one
do @random ( "ss 70", "ss 70")
do @random ( "ss 70", "ss 70")
pause 1
:end
}

macro attack {

if (@player($master) >= 0) goto one
goto end
:one
do sp 156 $master
do @random ("sp 156 $master", "sp 28 $master", "","sp 156 $master")
do sp 28 $master
pause 2
do @random ( "e heh", "e e2", "", "", "e gg", "c P", "", "c ^^", "c =)", "")
:end
}


macro attack2 {

$randplayer = @rand (0, 1)
if (@player($master) >= 0) goto one
:one
do sp 156 $randplayer
do @random ("sp 156 $randplayer ", "sp 28 $randplayer ")
do @random ("sp 156 $randplayer ", "sp 28 $randplayer ")
pause 2
do @random ( "e heh", "e e2", "", "", "e gg", "e ho", "", "c xD", "", "")
:end

}


###################
##### SKILLS ######

# PUBLIC

automacro Healer {
var job != 1
pubm /heal|Heal|hp|HP/,6
sp >= 80%
timeout 20
call doheal
}

automacro Buffer {
var job != 1
class high priest
pubm /buff|bufs|Buffs|BUFF|baps|Buf|buffs|agi|bless/,6
sp >= 80%
timeout 20
call dobuff
}

automacro ruwach1 {
var job != 1
pubm /ruwach/,6
timeout 46
call dorwch
}

automacro res99 {
timeout 15
var job != 1
class high priest
pubm /res|resu|ressu|ress/
call Ressurection
}


automacro killme {
timeout 15
pubm /kill me|kill me pls/
call killme2
}

macro killme2 {
pause 2
do kill @player($.lastpub)
}
}

macro Ressurection {
if ($.lastpub = $master) goto one
if ($skills = 1) goto one
goto end
:one
do ip @inventory (yggdrasil leaf) @player ($.lastpub)
goto over
:end
pause 2
do @random ("c nop", "c nope", "e ??", "e lv2", "e e2", "e ??", "c =/", "c no", "e ??", "", "", "")
:over
pause 2
do @random ("c P", "c ^^", "e heh", "", "", "e e2", "", "e ok", "e e2", "", "")
}

automacro SW3 {
var job != 1
pubm /safety|safe|wall/
timeout 1
call SW4
}


macro SW4 {
if ($.lastpub = Hakuro) goto one
if ($skills = 1) goto one
goto end
:one
do sp 12 "$.lastpub"
#do sp 24 "$.lastpub"
goto over
:end
pause 2
do @random ("c nop", "c nope", "e ??", "e lv2", "e e2", "e e8", "c =/", "c no", "e ?", "", "", "")
:over
pause 2
do @random ("c P", "c ^^", "e heh", "", "", "e e2", "", "e ho", "e e2", "", "")
}

automacro Buffer2 {
timeout 15
var job != 1
class high priest
pubm /assump|asump|asp/,6
call assump
}

macro assump {
$name = $.lastpub
#if ($.lastpub = Hakuro) goto one
if ($skills = 1) goto one
goto end
:one
do sp 361 "$.lastpub" 10
#do sp 24 "$.lastpub"
goto over
:end
pause 2
do @random ("c nop", "c nope", "e ??", "e lv2", "e e2", "e e8", "c no", "e gg", "")
:over
pause 2
do @random ("c P", "c ^^", "e heh", "", "", "e e2", "", "e e10", "e e2", "c D", "", "")
}

# PRIVATE

automacro healz {
timeout 15
var job != 1
pm "heal"
pm "hp"
call healz2
}

automacro buffz {
timeout 15
var job != 1
pm /buff/i
call buffz2
}

macro doheal {
if ($.lastpub = $master) goto one
if ($skills = 1) goto one
goto end
:one
$times = @rand (2, 7)
$i = 0
while ($i < $times ) as healloop
do sp 28 "$.lastpub" 10
$i++
end healloop
goto over
:end
pause 2
do @random ("c nop", "c nope", "e ??", "e lv2", "e e2", "e ??", "c =/", "c no", "e ??", "", "", "")
:over
pause 3
do @random ("c P", "c ^^", "e heh", "", "", "e e2", "", "e gg", "e e2", "", "")
}

macro buffz2 {
if ($.lastpm = $master)goto one
goto end
:one
do sp 34 "$.lastpm" 10
do sp 29 "$.lastpm" 10
do sp 361 "$.lastpm" 10
goto over
:end
pause 2
do @random ("c nop", "c nope", "e ??", "e lv2", "e e2", "e e8", "c =/", "c no", "e ??", "", "", "")
:over
pause 2
do @random ("c P", "c ^^", "e heh", "", "", "e e2", "", "e gg", "e e2", "", "")
}

macro healz2 {
if ($.lastpm = $master) goto one
goto end
:one
$times = @rand (6, 12)
$i = 0
while ($i < $times ) as healloop
log loop $i
do sp 28 "$.lastpm" 10
$i++
end healloop
goto end
:end
}

macro dorwch {
do sp 24 "$.lastpub"
}

macro dobuff {
if ($.lastpub = $master) goto one
if ($skills = 1) goto one
goto end
:one
do sp 34 "$.lastpub" 10
do sp 29 "$.lastpub" 10
goto over
:end
pause 2
do @random ("c nop", "c nope", "e ??", "e lv2", "e e2", "e e8", "c =/", "c no", "e ?", "", "", "")
:over
pause 2
do @random ("c P", "c ^^", "e heh", "", "", "e e2", "", "e gg", "e e2", "", "")

}

automacro SW1 {
var job != 1
pm /^(sw)$/
call SW2
}

macro SW2 {
if ($.lastpm = $master) goto one
goto end
:one
do sp 12 "$.lastpm"
#do sp 24 "$.lastpm"
goto end
:end
}

automacro Ruwach999 {
var job != 1
console /Player .* .* uses Ruwach on himself/i
var nohide = 1
timeout 65
call {
pause 2
do ss 24
}
}


# FIND CLOACKERS


automacro nohide {
var job != 1
var nohide = 1
console /Player (.*) \((\d+)\) uses Cloaking on himself/i
timeout 25
call {
do sp 24 $.lastMatch2
}
}

automacro nohide2 {
var job != 1
var nohide = 1
console /player (.*) \((\d+)\) uses Hiding on himself/i
timeout 25
call {

do sp 24 $.lastMatch2
}
}

automacro nohide3 {
var job != 1
timeout 12
var nohide = 1
console /player (.*) \((\d+)\) uses Chase Walk on himself/i
call {
do sp 24 $.lastMatch2
}
}


######## COMMANDS / CHAT #########

automacro fs1 {
var job != 1
exclusive 1
pm "duel conf"
class champion
call {
do switchconf ChampDuel.txt
do pm "$.lastpm" switched duel
}

automacro fs2 {
var job != 1
exclusive 1
class champion
pm "main conf"
call {
do switchconf ChampMain.txt
do pm "$.lastpm" switched to main
}
}

automacro fs3 {
var job != 1
class high priest
exclusive 1
pm "party"
call {
do switchconf ChampParty.txt
do pm "$.lastpm" ok party
}
}

automacro fs4 {
class high priest
var job != 1
pm "party"
call {
do switchconf FSparty.txt
do pm "$.lastpm" ok party
}
}

automacro fs5 {
class high priest
var job != 1
pm "main"
call {
do switchconf FSmain.txt
do pm "$.lastpm" switched to main
}
}

automacro walk {
exclusive 1
pm /^(walk)$/
call {
if ($randomwalk = 2) goto off
if ($randomwalk = 1) goto on2
if ($randomwalk = 0) goto on
goto end
:on
release move

$randomwalk = 1
do pm "$.lastpm" Randomwalk v 1 Enabled
goto end
:on2

$randomwalk = 2
do pm "$.lastpm" Randomwalk v 2 Enabled
goto end
:off

$randomwalk = 0
do pm "$.lastpm" Randomwalk Disabled
goto end
:end
}
}

automacro usefp {
exclusive 1
pm "fp"
call {
if ($fp = 1) goto off
if ($fp = 0) goto on
goto end
:on

$fp = 1
do pm "$.lastpm" Using FP Enabled
goto end
:off

$fp = 0
do pm "$.lastpm" Using FP Disabled
goto end
:end
}
}

automacro Follow {
overrideAI 1
exclusive 1
pm /^(follow|fm|go)$/,
call follow2
}

macro follow2 {
do follow $.lastpm
do pm "$.lastpm" Following "$.lastpm" !!
$randomwalk = 1
}

automacro FollowP {
exclusive 1
overrideAI 1
party /^(follow|fm|go)$/
call follow3
}



macro follow3 {
do follow $.lastparty
do p " Following "$.lastparty" !!
$randomwalk = 1
}

automacro kos_no {
exclusive 1
overrideAI 1
pm "stop"
call {
#do pm "$.lastpm" Players: [ @config(kos_pk) | @config(kos_pk2) ] - are no longer my enemies.
do conf kos_pk none
do conf kos_pk2 none
$damage = 0
$pla = none
$kospla = none
do pm "$.lastpm" I stopped.
}
}

automacro kos_duel {
exclusive 1
overrideAI 1
pm "duel"
call {
do conf kos_pk $.lastpm
$freewill = 0
$damage = 10
pause 1
do pm "$.lastpm" @random ( "Lets Have Fun", "Game", "Sure")
pause 1
do @random ("e gg", "c XD", "e e9")
pause 1
do c 3
pause 1
do c 2
pause 1
do c 1
pause 1
do e go
do kill @player(@config(kos_pk))
}
}

automacro kos001 {
exclusive 1
overrideAI 1
pm /^(kos )/i
call {
$kospla = @arg ("$.lastpmMsg", 2)
if (@player($kospla) >= 0) goto kill
goto nopla
:kill
do conf kos_pk2 @config(kos_pk)
do conf kos_pk $kospla
do pm "$.lastpm" kos_pk set to: @config(kos_pk) | kos_pk2 set to: @config(kos_pk2)
do kill @player($kospla)
goto end
:nopla2
$pla = @arg ("$.lastpmMsg", 2)
do pm "$.lastpm" Can't recognize $kospla. Spell his name accurately.
goto end
:nopla
do pm "$.lastpm" Player $kospla doesn't exists.
do pm "$.lastpm" Searching again....
$kospla = @arg ("$.lastpmMsg", 2) @arg ("$.lastpmMsg", 3) @arg ("$.lastpmMsg", 4) @arg ("$.lastpmMsg", 5) @arg("$.lastpmMsg", 6)
if (@player($kospla) >= 0) goto kill
goto nopla2
:end
}
}
}

automacro killpla {
exclusive 1
overrideAI 1
pm /^(kill )/i
call {
$pla = @arg ("$.lastpmMsg", 2)
if (@arg ("$.lastpmMsg", 2) = me) goto killme
if (@player($pla) >= 0) goto kill
goto nopla
:killme
do pm "$.lastpm" I am gonna kill you !!!
do kill @player($.lastpm)
goto end
:kill

do pm "$.lastpm" I am gonna kill $pla
do kill @player($pla)
goto end
:nopla2
$pla = @arg ("$.lastpmMsg", 2)
do pm "$.lastpm" Can't recognize $pla. Spell his name accurately.
goto end
:nopla
do pm "$.lastpm" Player $pla doesn't exists.
do pm "$.lastpm" Searching again....
$pla = @arg ("$.lastpmMsg", 2) @arg ("$.lastpmMsg", 3) @arg ("$.lastpmMsg", 4) @arg ("$.lastpmMsg", 5) @arg("$.lastpmMsg", 6)
if (@player($pla) >= 0) goto kill
goto nopla2
:end
}
}

automacro wait {
exclusive 1
overrideAI 1
pm /^(wait|w)$/,
call wait2
}


macro wait2 {
do conf follow 0
do sit
do pm "$.lastpm" Waiting you at $.map !!
}

automacro skills {
exclusive 1
pm "skill"
call {
if ($skills = 1) goto off
if ($skills = 0) goto on
goto end
:on

$skills = 1
do pm "$.lastpm" Autoskills Enabled
goto end
:off

$skills = 0
do pm "$.lastpm" Autoskills Disabled
goto end
:end
}
}

automacro setfw {
exclusive 1
pm "free"
call {
if ($freewill = 1) goto off
if ($freewill = 0) goto on
goto end
:on

$freewil = 1
do pm "$.lastpm" Free Will Enabled
goto end
:off

$freewill = 0
do pm "$.lastpm" Free Will Disabled
goto end
:end
}
}

automacro status {
exclusive 1
pm "st"
call {
do pm $.lastpm My positon: $.pos $.map. Locked map: $lockedmap Enemies: @config(kos_pk) @config(kos_pk2).
}
}

# 0 - 26

automacro gowarp {
exclusive 1
pm /^(go )/i
call Lockmap77
}

macro Lockmap77 {
$go = @arg ("$.lastpmMsg", 2)
do c @go $go
pause 1
do pm "$.lastpm" Warped to $.map
$location = $.map
$lock = 0
call move2
}

automacro dowarp {
exclusive 1
pm /^(warp )/i
call Lockmap78
}

macro Lockmap78 {
$warp = @arg("$.lastpmMsg", 2) @arg("$.lastpmMsg", 3) @arg("$.lastpmMsg", 4)
do c @warp $warp
pause 1
do pm "$.lastpm" Warped to $.map $.pos
$location = $.map
$lock = 0
call move2
}

automacro dowarpP {
exclusive 1
party /^(warp )/i
call Lockmap79
}

macro Lockmap79 {
$warp = @arg ("$.lastpartyMsg", 2) @arg ("$.lastpartyMsg", 3) @arg ("$.lastpartyMsg", 4)
do c @warp $warp
pause 1
do p Warped to $.map $.pos
$location = $.map
$lock = 0
call move2
}

#### SET LOCKED MAP

automacro lockedmap3go19 {
exclusive 1
overrideAI 1
pm /^(pay)$/,
call {
$lock = 1
$lockedmap = Map_Name
$location = Map_name

if ($follow = 1) goto f
goto next
:f
do follow $master
:next
do pm "$.lastpm" Locked Map: $lockedmap
call Lockmap99
}
}

automacro lockedmap4go15 {
exclusive 1
overrideAI 1
pm /^(br)$/,
call {
$lock = 1
$lockedmap = new_1-1 52 111
$location = new_1-1

if ($follow = 1) goto f
goto next
:f
do follow $master
:next
do pm "$.lastpm" Locked Map: $lockedmap
call Lockmap99
}
}

automacro lockedmap1prt {
exclusive 1
overrideAI 1
pm /^(prt)$/,
call {
$lock = 1
$xxx = @rand (100, 200)
$yyy = @rand (335, 369)
$lockedmap = prt_fild08 $xxx $yyy

$location = map_name
if ($follow = 1) goto f
goto next
:f
do follow $master
:next
do pm "$.lastpm" Locked Map: $lockedmap
call Lockmap99
}
}

automacro lockedmap0home {
exclusive 1
overrideAI 1
pm /^(home)$/,
call {
$lock = 1
do conf follow 0
$lockedmap = $homemap

$location = Map_name
do pm "$.lastpm" Locked Map: $lockedmap
call Lockmap99
}
}

automacro lockedmap2gef {
exclusive 1
overrideAI 1
pm /^(gef)$/,
call {
$lock = 1
$lockedmap = Map_name x, y
$location = Map_name

if ($follow = 1) goto f
goto next
:f
do follow $master
:next
do pm "$.lastpm" Locked Map: $lockedmap
call Lockmap99
}
}


##########################
# Do something when buffed
##########################

macro bemad {
$buffs = 10
:start
$i = 0
while ($i < $buffs ) as buffloop
$nmes = $mes
$mes = @random ("e e5", "c Oo", "sp 156 $.lastMatch2", "sp 78 $.lastMatch2", "", "e gg", "c lol", "e e2", "sp 78 $.lastMatch2")
if ($nmes = $mes) goto start
if ($nmes != $mes) goto end
$i++
end buffloop
:end
pause 2
do $mes
$.lastMatch2 = none
}

macro begood {
$buffs = 10
:start
$i = 0
while ($i < $buffs ) as buffloop
$nmes = $mes
$mes = @random ("c ty", "c thanx", "c thanks", "e lv2", "c ty^^", "c ^^", "c xD", "e thx", "e ho", "c thx")
if ($nmes = $mes) goto start
if ($nmes != $mes) goto end
$i++
end buffloop
:end
pause 2
do $mes
}

macro begood2 {
$buffs = 10
:start
$i = 0
while ($i < $buffs ) as buffloop
$nmes = $mes
$mes = @random ("c ty", "c thanx", "c thanks", "e lv2", "c ty^^", "c ^^", "c xD", "e thx", "buff", "buff", "buff")
if ($nmes = $mes) goto start
if ($nmes != $mes) goto end
if ($mes = buff) goto buff
$i++
end buffloop
:buff
pause 1
do sp 34 $.lastMatch2 10
do sp 29 $.lastMatch2 10
goto end2
:end
pause 2
do $mes
:end2
}

macro buffed02 {
$buffs = 10
:start
$i = 0
while ($i < $buffs ) as buffloop
$nmes = $mes
$mes = @random ("", "", "sp 34 $.lastMatch2 1", "c <.<", "e thx", "e e8", "e e2")
if ($nmes = $mes) goto start
if ($nmes != $mes) goto end
if ($mes = unset) goto end
$i++
end buffloop
:end
pause 2
do $mes
#$.lastMatch1 = none
}

macro buffed01 {
$buffs = 10
:start
$i = 0
while ($i < $buffs ) as buffloop
$nmes = $mes
$mes = @random ("", "", "sp 29 $.lastMatch2 1", "", "c >.>", "e ho", "", "c xD", "e e2")
if ($nmes = $mes) goto start
if ($nmes != $mes) goto end
if ($mes = unset) goto end
$i++
end buffloop
:end
pause 2
do $mes
#$.lastMatch1 = none
}

automacro fped101 {
console /player (.*) \((\d+)\) uses full chemical protection on you.*/i
call begood2
timeout 30
}

automacro buffed11 {
console /player (.*) \((\d+)\) uses blessing on you.*/i
call buffed02
timeout 50
}

automacro buffed12 {
console /player (.*) \((\d+)\) uses increase agi on you.*/i
call buffed01
timeout 50
}


automacro buffed13 {
spell assumptio
timeout 45
call begood
}

automacro buffed14 {
console /player (.*) \((\d+)\) uses provoke on you.*/i
call bemad
timeout 50
}

automacro buffed15 {
console /player (.*) \((\d+)\) uses heal on you.*/i
call begood
timeout 50
}


#####################################
# PLAYER KILL #
#####################################

macro pk_STAY_CALM {
set exclusive 1
do pm "$master" $.lastMatch1 is playing with fire.
$damage++
if ($damage > 2) goto one
goto over
:one
$damage++
pause 1
do @random ("e ?", "e e2", "e gg", "c lol", "", "c aw", "e e2")
call pk_ATTACK_ONCE
:over
}



macro pk_WARN {
set exclusive 1
do pm "$master" $.lastMatch1 is playing with fire.
$damage = @eval($damage + 0.75)
#if ($damage > 5) goto one
if ($damage > 10) goto one
goto over
:one
call KILL_PK
:over
pause 2
do @random ( "", "", "e lv2", "e e2", "", "e gg", "", "e lv", "", "", "e heh", "", "", "c aw", "", "e e2")
}

macro pk_WARN2 {
set exclusive 1
do pm "$master" $.lastMatch1 is playing with fire.
$damage = @eval ($damage + 0.75)
if ($damage > 10) goto one
goto over
:one
call KILL_PK
:over
pause 2
do @random ( "", "c aw", "e lv2", "e e2", "", "e gg", "", "e ?", "e lv", "c lol", "e heh", "e ??", "e ??")

}

macro pk_ATTACK_ONCE {
set exclusive 1
do pm "$master" $.lastMatch1 attacked me.
$damage = @eval ($damage + 2.5)
#if ($damage > 3) goto two
if ($damage > 10) goto two
goto one
:one
do $atk $.lastMatch2
goto over
:two
#pause 2
#do @random ("e gg", "", "e gg", "", "e e2", "", "", "e heh", "", "c aw", "", "c lol", "sp 156 $.lastMatch2", "sp 156 $.lastMatch2")
call KILL_PK
:over
}

macro KILL_DEAD {
set exclusive 1
if ($.lastMatch1 = @config(kos_pk)) goto justkill
if ($.lastMatch1 = @config(kos_pk2)) goto justkill
if ($.lastMatch1 = $master) goto nvm

do conf kos_pk2 @config(kos_pk)
do conf kos_pk $.lastMatch1
do kill $.lastMatch2
do pm "$master" $.lastMatch1 is my enemy !!
goto end
:justkill
do pm "$master" I guess i am dead... $.lastMatch1 killed me @_@
do kill $.lastMatch2
$lastpos = $.pos $.map
goto end
:nvm
do pm "$master" I wont kill my master.
:end
}
}

macro KILL_PK {
set exclusive 1
if ($.lastMatch1 = @config(kos_pk)) goto justkill
if ($.lastMatch1 = @config(kos_pk2)) goto justkill
if ($.lastMatch1 = $master) goto nvm
set exclusive 0
do kill $.lastMatch2
do conf kos_pk2 @config(kos_pk)
do conf kos_pk $.lastMatch1
do pm "$master" $.lastMatch1 is my enemy !!
goto end
:justkill
set exclusive 0
do kill $.lastMatch2
do pm "$master" $.lastMatch1 attacked me @_@
$lastpos = $.pos $.map
goto end
:nvm
do pm "$master" I wont kill my master.
goto end2
:end
#$mes = @random ("e gg", "e e4", "c PWNT")
#if ($nmes = $mes) goto end2
#do $mes
#$nmes = $mes
:end2
}

automacro TargetDied {
exclusive 1
overrideAI 1
priority 0
console /player died: (.*) \((\d+)\).*/i
#console /target lost/i
call {
#do say lol
if (@player($.lastMatch1) = @player($mytarget)) goto taunt
goto end
:taunt
#do say lol
#do c newb
release move
release freew
release newmove
$td = 1
$do = @random ("ss 138", "e gg", "e swt", "ss 138", "look 4", "look 4", "ss 150", "ss 150", "ss 406", "e e2", "e ho", "e swt")
do $do
:end
}
}

automacro TargetResu {
exclusive 1
overrideAI 1
priority 0
console /player (.*) \((\d+)\) has been resurrected/i
#console /target lost/i
call {
#do say lol
if (@player($.lastMatch1) = @player($mytarget)) goto taunt
goto end
:taunt
#do say lol
#do c newb
call kos1
#$td = 1
#$do = @random ("ss 138", "e gg", "e swt", "ss 138", "look 4", "look 4", "ss 150", "ss 150", "ss 406", "e e2", "e ho", "e swt")
#do $do
:end
}
}

automacro TargetLost {
exclusive 1
overrideAI 1
priority 0
console /target lost/i
#console /target lost/i
call {
#do say lol
if (@player($.lastMatch1) = @player($mytarget)) goto taunt
goto end
:taunt
#do say lol
#do c newb
release move
release freew
release newmove
$do = @random ("ss 138", "e gg", "e swt", "ss 138", "look 4", "look 4", "ss 150", "ss 150", "ss 406", "e e2", "e ho", "e swt")
do $do
:end
}
}

#################################
#####SELF DEFEND - ON SKILL#####
#################################

automacro pked378 {
overrideAI 1
timeout 3
####DAMAGE RANGE 100 - 999#########################
console /player (.*) \((\d+)\) uses .* on you - dmg: \b[1-9][0-9]{2}\b/i
call pk_WARN
}

automacro pked554 {
overrideAI 1
####DAMAGE RANGE 2000 - 5999#######################
timeout 1
console /player (.*) \((\d+)\) uses .* on you - dmg: \b[2-5][0-9]{3}\b/i
call pk_STAY_CALM
}



automacro pked959 {
overrideAI 1
priority 1
####DAMAGE RANGE 6000 - 9999#######################
console /player (.*) \((\d+)\) uses .* on you - dmg: \b[6-9][0-9]{3}\b/i
call KILL_PK
}

automacro pked645 {
overrideAI 1
####DAMAGE RANGE 10000 - 99999#####################
console /player (.*) \((\d+)\) uses .* on you - dmg: \b[1-9][0-9]{4}\b/i
call KILL_PK
}

automacro pked764 {
overrideAI 1
exclusive 1
# Asura? =)
####DAMAGE RANGE 100000 - 999999#####################
console /player (.*) \((\d+)\) uses .* on you - dmg: \b[1-9][0-9]{5}\b/i
call {
do kill $.lastMatch2
KILL_DEAD
}

#################################
#####SELF DEFEND - ON MELEE####
#################################


automacro pked356 {
overrideAI 1
####DAMAGE RANGE 10 - 90########################
console /player (.*) \((\d+)\) attacks you - dmg: \b[1-9][0-9]{1}\b/i
timeout 3
call pk_WARN
}


automacro pked303 {
overrideAI 1
timeout 2
####DAMAGE RANGE 100 - 900########################
console /player (.*) \((\d+)\) attacks you - dmg: \b[1-9][0-9]{2}\b/i
call pk_WARN
}

automacro pked101 {
overrideAI 1
timeout 1
####DAMAGE RANGE 1000 - 4000#######################
console /player (.*) \((\d+)\) attacks you - dmg: \b[1-4][0-9]{3}\b/i
call pk_STAY_CALM
}

automacro pked102 {
overrideAI 1
#timeout 1
####DAMAGE RANGE 5000 - 9999#######################
console /player (.*) \((\d+)\) attacks you - dmg: \b[5-9][0-9]{3}\b/i
call KILL_PK
}

automacro pked485 {
overrideAI 1
####DAMAGE RANGE 10000 - 99999#####################
console /player (.*) \((\d+)\) attacks you - dmg: \b[1-9][0-9]{4}\b/i
call KILL_PK
}

##############################
## SELF DEFEND - ON OTHER ##
##############################


automacro pked184 {
overrideAI 1
####DAMAGE RANGE BOMB##########
console /player (.*) \((\d+)\) uses Demonstration (lvl 5) on you .*/i
call {
call KILL_PK
}
}

# Todo make bot recognize if enemy is ranged or not and use pneuma on self
automacro pked18554 {
####DAMAGE RANGE Ranged ##########
overrideAI 1
var job != 1
#timeout 1
exclusive 1
#priority 1
spell Double Strafe, Arrow Repel, Arrow Vulcan, Spear Boomerang, Blitz Beat, Finger Offensive
call {
do move 0 0
do ss 25
call pk_ATTACK_ONCE
}
}



automacro pked5005 {
overrideAI 1
#priority 5
exclusive 1
timeout 1
####DAMAGE RANGE 2000 - 5999#######################
console /player (.*) \((\d+)\) uses Blitz Beat on you .*/i
call {
#$damage = @eval ($damage + 2.5)
do move 0 0
do ss 25
#call pk_WARN2
}
}


automacro pked354597 {
console /player (.*) \((\d+)\) is casting Extremly Fist on you *./i
call {
lock move
lock newmove
lock freew
call KILL_PK
}
}

automacro STRIP {
####FULL STRIP SKILL##############################
console /Player (.*) \((\d+)\) uses full strip on you.*/i
call KILL_PK
}

##################################
###ATTACK SUPPORT - ON SKILL ####
##################################

########### Hakuro ############
automacro PK_Hakuro4373 {
overrideAI 1
console /player Hakuro .* uses Vigor Absorption on player (.*) \((\d+)\)/i
call KILL_PK
}

########### Hakuro ############
automacro PK_Hakuro43788 {
overrideAI 1
console /player Hakuro .* uses Lex Aeterna on player (.*) \((\d+)\)/i
call KILL_PK
}

##########DAMAGE RANGE 1000 - 4999#################
automacro PK_Hakuro313 {
overrideAI 1
console /player Hakuro .* uses .* on player (.*) \((\d+)\) - dmg: \b[1-4][0-9]{3}\b/i
call pk_ATTACK_ONCE
}


##########DAMAGE RANGE 5000 - 9999#################
automacro PK_Hakuro323 {
overrideAI 1
console /player Hakuro .* uses .* on player (.*) \((\d+)\) - dmg: \b[5-9][0-9]{3}\b/i
call {
do kill $.lastMatch2
}
}

###########DAMAGE RANGE 10000 - 999999##############
automacro PK_Hakuro333 {
overrideAI 1
console /player Hakuro .* uses .* on player (.*) \((\d+)\) - dmg: \b[1-9][0-9]{4,5}\b/i
call {
do kill $.lastMatch2
}
}
########### Hakuro^^ ############

##########DAMAGE RANGE 1000 - 4999#################
automacro PK_Hakuro3 {
overrideAI 1
#player Hakuro^^
console /player - Hakuro - .* uses .* on player (.*) \((\d+)\) - dmg: \b[1-4][0-9]{3}\b/i
#console /Hakuro/i
call pk_ATTACK_ONCE
}


##########DAMAGE RANGE 5000 - 9999#################
automacro PK_Hakuro3213 {
overrideAI 1
console /player - Hakuro - .* uses .* on player (.*) \((\d+)\) - dmg: \b[5-9][0-9]{3}\b/i
call {
do kill $.lastMatch2
}
}

###########DAMAGE RANGE 10000 - 999999##############
automacro PK_Hakuro3313 {
overrideAI 1
console /player - Hakuro - .* uses .* on player (.*) \((\d+)\) - dmg: \b[1-9][0-9]{4,5}\b/i
call {
do kill $.lastMatch2
}
}

##################################
##DEFEND SUPPORT - ON MELEE ###
#################################

############ Hakuro ###############

############DAMAGE RANGE 1000 - 3999###########
automacro pked_Hakuro991 {
overrideAI 1
console /player (.*) \((\d+)\) attacks player Hakuro .* - dmg: \b[1-3][0-9]{3}\b/i
call pk_ATTACK_ONCE
}

###########DAMAGE RANGE 4000 - 9999############
automacro pked_Hakuro992 {
overrideAI 1
console /player (.*) \((\d+)\) attacks player Hakuro .* - dmg: \b[4-9][0-9]{3}\b/i
call KILL_PK
}

###########DAMAGE RANGE 10000 - 99999##########
automacro pked_Hakuro993 {
overrideAI 1
console /player (.*) \((\d+)\) attacks player Hakuro .* - dmg: \b[1-9][0-9]{4}\b/i
call {
do kill $.lastMatch2
}
}

############ - Hakuro - ###############

############DAMAGE RANGE 1000 - 3999###########
automacro pked_Hakuro9291 {
overrideAI 1
console /player (.*) \((\d+)\) attacks player - Hakuro - .* - dmg: \b[1-3][0-9]{3}\b/i
call pk_ATTACK_ONCE
}

###########DAMAGE RANGE 4000 - 9999############
automacro pked_Hakuro9922 {
overrideAI 1
console /player (.*) \((\d+)\) attacks player - Hakuro - .* - dmg: \b[4-9][0-9]{3}\b/i
call KILL_PK
}

###########DAMAGE RANGE 10000 - 99999##########
automacro pked_Hakuro9923 {
overrideAI 1
console /player (.*) \((\d+)\) attacks player - Hakuro - .* - dmg: \b[1-9][0-9]{4}\b/i
call {
do kill $.lastMatch2
}
}



##################################
##DEFEND SUPPORT - ON SKILL ###
#################################

################# Hakuro #####################

#######DAMAGE RANGE 1000 - 4999###############
automacro pk_Hakuro771 {
overrideAI 1
console /player (.*) \((\d+)\) uses .* on player Hakuro .* - dmg: \b[1-4][0-9]{3}\b/i
call pk_STAY_CALM
}

#######DAMAGE RANGE 5000 - 9999###############
automacro pk_Hakuro772 {
overrideAI 1
console /player (.*) \((\d+)\) uses .* on player Hakuro .* - dmg: \b[5-9][0-9]{3}\b/i
call KILL_PK
}

######DAMAGE RANGE 10000 - 99999############
automacro pked_Hakuro773 {
overrideAI 1
console /player (.*) \((\d+)\) uses .* on player Hakuro .* - dmg: \b[1-9][0-9]{4}\b/i
call {
do kill $.lastMatch2
}
}

######DAMAGE RANGE 100000 - 999999############
automacro pked_Hakuro153 {
overrideAI 1
console /player (.*) \((\d+)\) uses .* on player Hakuro .* - dmg: \b[1-9][0-9]{5}\b/i
call {
do kill $.lastMatch2
}
}

################# - Hakuro - #####################

#######DAMAGE RANGE 1000 - 4999###############
automacro pk_Hakuro7721 {
overrideAI 1
console /player (.*) \((\d+)\) uses .* on player - Hakuro - .* - dmg: \b[1-4][0-9]{3}\b/i
call pk_STAY_CALM
}

#######DAMAGE RANGE 5000 - 9999###############
automacro pk_Hakuro7722 {
overrideAI 1
console /player (.*) \((\d+)\) uses .* on player - Hakuro - .* - dmg: \b[5-9][0-9]{3}\b/i
call KILL_PK
}

######DAMAGE RANGE 10000 - 99999############
automacro pked_Hakuro7723 {
overrideAI 1
console /player (.*) \((\d+)\) uses .* on player - Hakuro - .* - dmg: \b[1-9][0-9]{4}\b/i
call KILL_PK
}

######DAMAGE RANGE 100000 - 999999############
automacro pked_Hakuro1523 {
overrideAI 1
console /player (.*) \((\d+)\) uses .* on player - Hakuro - .* - dmg: \b[1-9][0-9]{5}\b/i
call KILL_PK
}


############### FP ###############


automacro fptimer {
var allowA = 1
overideAI 1
var fp = 1
status not cp weapon
hp > 25%
call fptrigger
timeout 12
}

macro fptrigger {
do c @warp $homemap
pause 2
do pm $fpbot fp
pause 3
call Lockmap99
}


#######HP SP############
automacro kittyhp {
var allowA = 1
status not dead
exclusive 1
hp > 0%
hp < 35%
timeout 10
call kittyhpsp
}

automacro kittynohp {
var allowA = 1
hp = 0%
exclusive 1
location payon
timeout 10
call kittynohp2
}


automacro kittysp {
var allowA = 1
hp > 0%
sp <= 15%
exclusive 1
timeout 10
call kittyhpsp
}

automacro kittynosp {
var allowA = 1
exclusive 1
overideAI 1
hp != 0%
sp = 0%
call afterAsurahpsp
}


macro kittynohp2 {
pause 1
do move x y "map_name"
}

macro kittyhpsp {
pause 1
do c @warp Map_name
pause 1
do talk @npc (x y)
pause 1
}


macro afterAsurahpsp {
pause 1
do c @warp Map_name
pause 1
do talk @npc (x y)
pause 1
}
#########LOCK MAP#################


automacro Go_To_Lockmap {
exclusive 1
var fp = 1
var lock = 1
overideAI 1
var allowA = 1
location not "map name"
location not "map name"
location not "map name"
location not "map name"
location not "map name"

hp > 40%
status cp weapon
timeout 5
call Lockmap99
}

automacro Go_To_Lockmap2 {
exclusive 1
overideAI 1
var fp = 0
var lock = 1
var allowA = 1
location not "map name"
location not "map name"
location not "map name"
location not "map name"
location not "map name"

hp > 40%
timeout 5
call Lockmap99
}

macro Lockmap99 {
release move
release freew
release newmove
#$damage = 0
if ($location = Map_name) goto prtfild
goto other
:prtfild


# $xxx = @random ("120", "200")
# $yyy = @rand (325, 345)
$xxx = @random("100", "200")
$yyy = @rand (365, 366)
do c @warp prt_fild08 $xxx $yyy
goto end
:other
do c @warp $lockedmap
:end
set exclusive 0
call move2
}

############ STORAGE ##############

automacro oweight {
exclusive 1
weight >= 70%
timeout 30
call storauto
}

macro storauto {
do autostorage
}

automacro gems {
class high priest
exclusive 1
inventory "Blue Gemstone" = 0
timeout 20
call storauto
}


automacro nogems {
class high priest
var job != 1
exclusive 1
storage "Blue Gemstone" = 0
timeout 10
call {
lock gems
lock nogems
}
}

Pengisian Server d Server.txt

notepad server.txt dapat d temukan d :

Openkore 2.0.5.1
|
|- Tables

Ex :
setelah anda mengeluarkan sclientinfo ro kamu dan kamu buka maka akan kluar tampilan seperti berikut



setelah itu buka folder tables dan cari notepad dgn nama server.txt
maka akan kluar seperti berikut

## http://www.xilero.net/
[XiLeRO TE Private Server]
ip 72.29.77.223
port 6901
master_version 1
version 20
serverType 4
serverEncoding Western

untuk Ip anda dapat lihat d bagian "addres" pada sclientinfo
untuk port anda dapat lihat d bagian "port" pada sclientinfo
untuk version anda dapat lihat d bagian "version" d sclientinfo
untuk ServerType anda dapat lihat d bawah seperti berikut.

0 Normal server
1 oRO (Oceania) (obsolete)
2 pRO (Philippines)
3 eAthena SVN
4 Freya
5 eAthena servers using sakexe628
6 New oRO (Oceania) (obsolete)
7 Aegis 10.x with padded packets
8 kRO (Korea), before February 2007 (obsolete)
8_1 kRO (Korea), after February 2007
9 eAthena
10 vRO (Vietnam), before February 2007 (obsolete)
11 euRO (Europe) before December 20 2006 (obsolete)
12 pRO (Philippines) Thor, as of October 22 2006 (obsolete)
13 rRO (Russia) and vRO (Vietnam) As of February 2007
14 pRO (Philippines) Thor, as of December 1 2006 (obsolete)
15 pRO (Philippines) Thor, as of December 20 2006
16 euRO (Europe), as of December 20 2006
17 tRO (Thai) for 2007-05-22bRagexe (obsolete)
17_1 tRO (Thai) after October 19th, 2007
18 iRO (International), as of June 21 2007.
19 pRO (Philippines) Valkyrie , as of October 19th, 2007

untuk serverEncoding anda dapat lihat dari pilihan berikut

1. Western
2. Simplified Chinese
3. Korean
4. Russian
5. Japanese
6. Thai
Mungkin Untuk beberapa server perlu d tambahkan

charBlockSize 108

Tuesday, April 1, 2008

Tutorial Openkore By Anthony Part 2

#####################################
## Part 2. Melakukan Settingan Bot ##
#####################################

Pada bagian ini saya hanya akan menjelaskan baris-baris penting yang terdapat pada config.txt agar mudah dalam membuat config sendiri.

Perlu kalian ketahui bahwa pada suatu baris di config.txt kadang berkaitan dengan baris pada file lain seperti avoid.txt, arrowcraft.txt, chat_resp.txt, dll.

::Config.txt::

Config.txt adalah file yang paling banyak menyimpan informasi untuk digunakan oleh openkore..

Kita akan membagi bagian ini menjadi beberapa bagian :

..menentukan pilihan login dan informasi server..

- master [nama server]

kita mengambil contoh dari servers.txt untuk idRO.
cth :
[Indonesia - idRO: Chaos/Loki/Iris/Fenrir]
ip 202.43.167.66
port 6900
master_version 12
version 2
serverType 0
serverEncoding Western

disini kita hanya mengambil bagian yang diapit oleh tag '[' dan ']'
menjadi "master Indonesia - idRO: Chaos/Loki/Iris/Fenrir"

- server [nomor]

server disini hanya berguna jika server ragnarok yang kamu mainkan
lebih dari satu server cth idRO.
cth :
[ Iris ] = 0
[ Fenrir ] = 1
[ Chaos ] = 2
[ Loki ] = 3

jadi jika kamu main di Iris maka "server 0", Fenrir maka "server 1",
Chaos maka "server 2" dan Loki maka "server 3".

- username (username)

disini kamu mengisi username atau ID ragnarok online kamu.
cth : "username Raja_Minyak"

- password (password)

kalo ini adalah password kamu.
cth : "password ragnarokonline"

- char [nomor]

nah ini buat nentuin char mana yang di bot, mulai dari ujung kiri
adalah 0,1,2,3,4,5
cth : "char 3"

- serverType [nomor]

ini merupakan type dari server yang kamu mainkan..

0 = normal server
1 = oRO
2 = pRO
3 = eAthena/Freya
4 = new Freya

default adalah 0 (terutama pada idRO)
cth : "ServerType 0"

- gameGuard [nomor]

bagian ini dibuat untuk mengatasi masalah gameguard
pada beberapa server seperti inRO, bRO atau pRO sakray.

0 = Tidak memakai..default
1 = inRO atau pRO sakray
2 = bRO

default adalah 0 (terutama pada idRO)
cth : "gameguard 0"

- attackAuto [number]

ini menentukan apakah kamu akan menyerang atau tidak.

0 = tidak menyerang monster
1 = menyerang monster aggressive
2 = menyerang semua monster (aggressive atau tidak)

default adalah 2 (terutama pada idRO)
cth : "attackAuto 2"

- attackAuto_party [nomor]

sama seperti attackAuto, hanya saja ini untuk monster
yang menyerang party kamu. Party kamu akan didahulukan
keselamatannya..

- attackAuto_inLockOnly [nomor]

ini digunakan untuk menentukan apakah kamu akan menyerang
selagi berjalan menuju map tujuan atau tidak.

0 = menyerang semua monster ketika menuju map tujuan
1 = menyerang monster yang menyerang kamu ketika menuju map tujuan
2 = tidak menyerang apapun kecuali di map tujuan

default adalah 1
cth : "attackAuto_inLockOnly 1"

- attackDistance [nomor]
- attackMaxDistance [nomor]

attackdistance adalah jarak minimal kita dengan monster sebelum
menyerang, sedangkan attackMaxDistance adalah jarak kita mulai
menyerang monster.

jarak bergantung karakter dan jenis senjatanya..

untuk senjata dan karakter melle
cth : "attackDistance 1.5"
"attackMaxDistance 2.5"

untuk senjata jauh atau serangan magic
cth : "attackDistance 1.5"
"attackMaxDistance 18"

18 adalah jarak terjauh seorang archer bisa menembak, kalian
bisa mencoba jarak yang paling enak.

note : jika kita mengisi MaxDistance dengan 18 dan attackDistance
dengan 1.5, maka dia akan menyerang jika jarak antara
dia dengan monster adalah 1.5 sampai 18 kotak.

- attackUseWeapon (flag)

menentukan apakah kita menyerang monster dengan mengunakan skill
saja atau memukul dengan senjata saja.

0 = memakai skill (attack_skill_slot)
1 = memukul biasa mengunakan senjata

bagaimana jika kita ingin menentukan kalo monster A di skill,
sedangkan monster B dipukul biasa.

jawabannya mudah kita set ke 1, dan tetap memakai
attack_skill_slot ke monster tertentu.

biasanya 0 hanya dipakai oleh mage atau acolyte yang mengunakan
skill untuk menyerang.

- attackCanSnipe (flag)

digunakan oleh archer atau mage untuk mengecek jarak melalui
tebing atau sejenisnya. seperti pada map argiope.
default adalah 0

-autoMakeArrows (flag)

digunakan untuk membuat arrow dengan memakai skill archer
yaitu arrow crafting. berkaitan dengan file arrowcraft.txt
untuk menentukan bahan pembuatannya

0 = tidak membuat
1 = membuat berdasarkan settingan dan bahan yang ada

default adalah 0

- autoRestart (flag)

jika diset ke 1, maka bot akan direstart setelah
(autoRestartMin + random(autoRestartSeed)).

autoRestartMin 10800
autoRestartSeed 3600

pada waktu diatas (10800 + random(3600))

- avoidList (flag)

ini adalah bagian dimana digunakan untuk menghindari
karakter tertentu yang terdapat pada file avoid.txt.

avoidList_inLockOnly 0
avoidList_reconnect 1800

avoidlist_inLockOnly diset ke 1 digunakan apabila ingin
menghindari pada map hunting saja.

avoidlist_reconnect adalah waktu untuk login setelah
avoid / dc dalam detik.

default adalah 0

- dcOnDeath (flag)
dcOnDualLogin (nomor)
dcOnMute (flag)
dcOnPM (flag)
dcOnZeny (nomor)

bagian ini adalah perintah disconnect atau dc jika kondisi
sesuai.

dcOnDeath = dc jika mati di lockmap
dcOnDualLogin = dc jika ada yang login memakai char tersebut
selama (nomor) detik.
dcOnMute = dc jika kita di mute oleh GM
dcOnPM = dc bila ada yang me-wisp atau Private Message
dcOnZeny = dc jika zeny yang kita miliki dibawah (nomor)

semua defaultnya adalah 0.

- follow (flag)

jika kita ingin agar bot mengkuti bot lain (bot gandeng/berdua)
maka follow di set ke 1. Berikut adalah beberapa tambahan yang
harus diisi agar bisa mengikuti

- followTarget [nama target]
disini kita mengisinya dengan nama char yang ingin kita ikuti,
harap ditulis sesuai dengan namanya.

- followEmotion (flag)
ini adalah bagian dimana bot akan meniru setiap emoticon yang
dikeluarkan oleh target. ex : , , dll.

- followEmotion_distance (nomor) default 4
jarak antara target dengan bot untuk melakukan emoticon.

- followFaceDirection (flag) default 0
bot akan mengikuti arah kemana wajah target memandang.

- followDistanceMax (nomor) default 6
jarak maksimal bot dengan target dalam mengikuti.

- followDistanceMin (nomor) default 3
jarak minimal bot dengan target saat mengikuti.

- followLostStep (nomor) default 12
jika bot tidak bisa menemukan target maka dia akan berjalan
menuju terakhir target terlihat + 12 kotak.

- followSitAuto (flag) default 1
berfungsi untuk duduk apabila target duduk.

- followBot (flag) default 0
bagian ini untuk menyatakan kalau target adalah bot juga,
dimana bot akan me-wisp target lokasi dia berada sekarang.


- itemsTakeAuto (nomor) default 2
itemsTakeAuto_party (nomor) default 0
itemsGatherAuto (nomor) default 2

ini bagian dimana bot akan menentukan apakah dia akan mengambil
barang atau menghiraukannya.

0 = tidak mengambil apapun
1 = bunuh monster didekatnya baru mengambil barang
2 = ambil barang baru membunuh monster didekatnya

masing-masing berbeda fungsi, dimana :
takeauto = ambil barang dari monster yang kita bunuh
takeautoparty = mengambil barang yang party bunuh
gatherauto = mengambil barang yang tidak diambil orang

dalam mengambil barang bot akan memperhitungkan beratnya,
dimana :

- itemsMaxWeight (nomor dalam persen) default 89
- itemsMaxWeight_sellOrStore (nomor dalam persen) default 48

itemMaxWeight adalah batas maksimal saat bot akan kembali
ke storage. Ini digunakan pada saat hendak balik untuk storage
dan menemukan item di lantai.

itemMaxWeight_sellOrStore adalah berat maksimal dalam inventory.
Jika pas atau lebih maka bot akan ke kafra dan menaruh barang -
barang yang ditentukan kedalam storage.



(#4)
robinzz is Offline
--------------------------------------------------------------------------------

- lockMap [map name]
lockMap_x
lockMap_y

lockmap digunakan untuk menentukan tempat hunting kita..
lockmap_x dan lockmap_y digunakan apabila kita hanya ingin
hunting pada lokasi tertentu (x,y).

ada dua cara menuju map tujuan dimana cara tersebut dengan berjalan atau dengan teleport hingga mendekati portal.

- route_randomWalk (flag) default 1
digunakan untuk berjalan menuju map tujuan.

- route_teleport (flag) default 0
route_teleport_maxTries (nomor) default 8
digunakan untuk teleport menuju map tujuan selama (nomor) kali
hingga mendekati portal.

- saveMap [nama kota]
saveMap_warpToBuyOrSell (flag) default 1

savemap digunakan untuk balik ke kota dimana tempat kamu menyimpan
posisi kamu (save point), sedangkan warptobuyorsell digunakan
untuk memberikan pilihan apakah kamu balik dengan jalan kaki, atau
menggunakan level 2 tele skill atau butterfly wing.

- shopAuto_open (flag) default 0
shop_random (flag) default 0

digunakan untuk vending, dimana bot akan membuka toko apabila
kamu sedang duduk (sit_auto_idle harus diset ke 1).

shop_random digunakan apakah mengacak urutan item yang dijual
atau tetap sesuai dengan yang terdapat pada shop.txt.

bagian berikut akan diset sebagai berikut :
duduk jika HP dibawah 20% dan berdiri jika HP diatas 70%
duduk jika SP dibawah 10% dan berdiri jika SP diatas 50%

maka :
sitAuto_hp_lower 20
sitAuto_hp_upper 70
sitAuto_sp_lower 10
sitAuto_sp_upper 50

- sitAuto_over_50 (flag) default 0
jika diset ke 1, maka bila berat 50% atau lebih akan duduk.

- sitAuto_idle (flag) default 1
jika diset ke 1, maka bot akan duduk bila status idle
(tidak melakukan apa-apa).

- teleportAuto_hp (nomor) default 10
teleportAuto_sp (nomor) default 0
teleport jika hp atau sp dibawah (nomor) persen.

- teleportAuto_idle (flag) default 0
jika diset ke 1 maka akan teleport jika keadaaan idle.

- teleportAuto_portal (flag) default 0
jika diset ke 1, apabila dalam lockmap tujuan melihat portal
maka akan segera teleport untuk menghindari keluar dari map
hunting.

- teleportAuto_search (flag) default 0
digunakan untuk membuat bot mencari monster yang sudah
ditentukan dalam mon_control.txt.

- teleportAuto_minAggressives (nomor) default 0
teleportAuto_minAggressivesInLock (nomor) default 0
sesuai dengan namanya fungsinya adalah teleport jika jumlah
monster yang menyerang bot sama dengan (nomor) atau lebih.

- teleportAuto_maxDmg (nomor) default 500
teleportAuto_maxDmgInLock (nomor) default 0
fungsinya adalah teleport apabila bot menerima damage sama
dengan nomor atau lebih.

- teleportAuto_deadly (flag) default 0
teleport apabila serangan terakhir monster dapat membunuh kita.

- teleportAuto_useSkill (nomor) default 3
teleport dengan mengunakan berbagai pilihan :
1 = teleport memakai skill dan mengunakan SP
2 = teleport memakai item fly wing dan butterfly wing
3 = teleport memakai skill tanpa memakai SP

- teleportAuto_atkMiss (nomor) default 10
teleport jika attack kamu ke monster miss sebanyak (nomor) kali.
berguna jika kamu salah senjata atau salah elemental.

- teleportAuto_unstuck (flag) default 0
teleport jika bot mengalami stuck (diset ke 1) dalam map.

- teleportAuto_attackedWhenSitting (flag) default 0
teleport jika bot diserang dalam keadaan duduk (diset ke 1).

- teleportAuto_totalDmg (nomor) default 0
teleportAuto_totalDmgInLock (nomor) default 0
bot akan teleport jika damage yang diterima sama atau lebih dari
(nomor). Jika diset ke 0 maka bot tidak akan tele.

- dealAuto (nomor) default 1
partyAuto (nomor) default 1
partyAutoShare (flag) default 0
guildAutoDeny (nomor) default 1

fungsi beberapa bagian diatas adalah untuk mengatur deal, party,
guild request dari orang lain.

0 = tidak melakukan apapun terhadap request
1 = menolak semua request
2 = menerima semua request

pada party autoshare digunakan untuk menset sama rata, hanya bisa
dilakukan oleh pembuat grup.

- ignoreAll (flag) default 0
jika diset ke 1, maka bot akan menolak semua wisp/PM yang ada
sama fungsi dengan /exall.

- secureAdminPassword (flag) default 0
adminPassword (password)
digunakan apabila kita ingin mengecek bot dari karakter lain
melalui PM (diset ke 1), dengan melakukan PM mengunakan
(password) kita bisa mengetahui status dan level.

Berikut adalah blok yang memakai beberapa fungsi yang sama.

- attackSkillSlot
bagian ini menjelaskan skill apa yang akan digunakan pada
monster, pada saat menemukan blok attackSkillSlot yang
sesuai maka dia akan memakai skill yang ditentukan.

- useSelf_skill
jika kondisi dalam useSelf_skill terpenuhi, maka skill akan
digunakan pada diri sendiri. Jika ada 2 skill yang sama,
maka blok paling atas akan dipakai.

- useSelf_item
jika kondisi dalam useSelf_item terpenuhi, maka item akan
digunakan oleh diri sendiri.

Berikut adalah beberapa operator yang berfungsi sama pada 5 blok diatas:

- hp (range)
sp (range)
hanya gunakan blok ini jika bot memiliki hp/sp sesuai dengan
range dalam persen %.

- whenStatusActive (nama status)
whenStatusInactive (nama status)
hanya gunakan blok ini jika status active/inactive. Kamu bisa
menekan 's' pada console untuk melihat status kamu.

- spirit (range)
hanya gunakan blok ini jika spirit dalam range.

- aggresive (range)
hanya gunakan blok ini jika monster aggressive dalam range.

- monsters (list)
list disini dimaksudkan nama monster yang ingin diserang
cth : Poring, Baphomet

- inLockOnly (flag)
jika diset ke 1, bot akan memakai skill hanya pada map hunting.

- notMonsters (monsters)
hampir sama dengan bagian monsters, hanya saja ini agar tidak
menyerang monster dalam list mengunakan blok ini.

- MaxUses (nomor)
jumlah skill ini digunakan pada monster, jika skill ternyata miss
maka tidak akan terhitung..

- Timeouts (nomor)
gunakan blok ini lagi setelah (nomor) detik.

- inInventory_name (item name)
inInventory_qty (quantity)
gunakan skill dalam blok ini, jika (nama item) ada dalam inventory,
dan jumlahnya sesuai dengan (quantity).

- useSelf_skill_smartHeal (flag) default 1
ini adalah bagian yang mengatur smart heal, jadi jika kamu
mempunyai lvl 10 heal, dia akan mengatur lvl berapa yang akan
dipakai sesuai dengan darah kamu.

Pada PartySkill, ada sedikit perbedaan dengan useSelfSkill, dimana pada party skill kita memberikan skill pada party kita.

Party skill terbagi dua blok yang berbeda dimana blok mulai dari :

lvl 10
maxCastTime 0
minCastTime 0
hp
sp
onAction
whenStatusActive
whenStatusInactive
whenFollowing
spirit
aggressives
monsters
notMonsters
stopWhenHit 0
inLockOnly 0
notWhileSitting 0
notInTown 0
timeout 0
disabled 0

adalah blok tentang pengunaan skill dan status kita dan blok berikutnya adalah :

target [nama char]
target_hp
target_isJob
target_isNotJob
target_whenStatusActive
target_whenStatusInactive
target_aggressives
target_monsters
target_timeout 0
target_dead 0
inInventory

dimana blok ini adalah bagian dari status target / party kita..

Bot pada dasarnya bisa mengganti senjata/equip/arrow dan menentukan defaultnya maka dipakai :

autoSwitch_default_rightHand [nama item]
autoSwitch_default_leftHand [nama item]
autoSwitch_default_arrow [nama item]

atau menentukan mengganti equip/senjata/arrow apa jika menyerang monster dengan cara :

autoSwitch [nama monster] {
rightHand [nama equip/senjata]
leftHand [nama equip/senjata]
arrow [nama arrow]
distance [jarak]
useWeapon
}

dimana untuk penulisan [nama equip/senjata] harus sesuai dengan yang tertulis pada console kore. Untuk melihat nama item yang diinginkan bisa dengan mengetik 'i' pada console.

Bagaimana jika kita hendak menyimpan pada storage/beli/jual/ambil barang, maka digunakan baris berikut :

+buy and sell+

buyAuto [nama item] {
npc ([map npc tersebut] x y)
standpoint
distance 5
minAmount 2
maxAmount 3
}

sellAuto 0 (1 jika ingin jual ke NPC)
sellAuto_npc ([map npc tersebut] x y)
sellAuto_standpoint
sellAuto_distance 5

+storage barang+

storageAuto 0 (set ke 1 jika ingin memakai storage)
storageAuto_npc ([map npc tersebut] x y)
storageAuto_distance 5
storageAuto_npc_type 1 (tipe npc 1 = biasa, 2 = kafra, 3 = steps)
storageAuto_npc_steps (npc steps)
relogAfterStorage 1 (relog setelah selesai storage)
storageAuto_password (password storage ???)

+mengambil barang dari storage+

getAuto [nama item] {
minAmount (nomor) minimal di inventory
maxAmount (nomor) jumlah max di inventory
passive
}
jadi jika minAmount tercapai, maka bot akan mengambil [nama item]
hingga mencapai MaxAmount.

Credits to : zackerlink ^^V

Yang mau belajar lagi..

Ada linknya di forum openkore nya langsung!!

http://www.openkore.com/wiki/index.p...8Indonesian%29

Credit to : Harry Is Back ^^