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 ^^

Tutorial Penggunaan Openkore By Anthony Part 1

################################################## ##########
## Part 1. Pengenalan, Pengaturan dan Pencarian Informasi ##
################################################## ##########

:: Pengenalan ::

Bot yang diambil dari kata Ro-Bot seperti namanya merupakan program yang bisa berjalan sendiri dengan sedikit bantuan manual.

Openkore adalah salah satu bot, dimana Openkore merupakan "Ragnarok Another Client" yang berarti "Client Lain dari Ragnarok".

Tujuan dari Bot tidak lain adalah untuk mencari level, mencari zenny, mencari barang rare, dan yang paling utama mencegah kita menghabiskan seluruh waktu kita didepan komputer hanya untuk menaikkan level ;p.

Hal pertama tentu saja kita memerlukan program bot itu sendiri..Dimana biasanya program dibagi menjadi 4 bagian:

bagian 1 : openkore-1.68
bagian 2 : configpack-1.68
bagian 3 : tablepack-1.68
bagian 4 : fieldpack-1.64

semua bagian itu bisa di download/ambil pada situs :

http://openkore.sourceforge.net
www.d-bests.com

Dimana biasanya terdapat pada bagian "download".

Pada d-best kita diharuskan untuk mendaftar untuk bisa melakukan download.

:: Pengaturan ::

Jika semua sudah didapatkan, maka berikutnya kita akan meng-extractnya kedalam satu folder hingga terlihat seperti berikut :

Bagan Detail Extract :

+OpenKore*
|
--+control*
| |
| --+ isi dari folder control : config.txt, timeouts.txt, dll.
|
--+fields*
|
| |
| --+ isi dari folder fields : 398 file fields (berakhiran .fld).
|
--+src*
|
| |
| --+ isi dari folder Src : berbagai file berekstensi pl, pm, dll.
|
--+tables*
|
| |
| --+ isi dari folder tables : servers.txt, npcs.txt, items.txt, dll.
|
--+plugins*
|
| |
| --+ isi dari folder plugins : berbagai plugin yang anda punya.
|
--+mapview.pl
|
--+netRedirect.dll
|
--+news.txt
|
--+openkore.pl
|
--+start.exe
|
--+start.pl
|
--+start-poseidon.exe


* = berarti adalah folder

note : folder plugins diatas adalah optional, artinya bisa ada bisa
tidak, bergantung apakah kalian ingin memakai plugin atau
tidak pada openkore kalian.



robinzz
View Public Profile
Send a private message to robinzz
Find all posts by robinzz
Add robinzz to Your Buddy List


(#2)
--------------------------------------------------------------------------------

:: Pencarian Informasi Server :: (Private server only)

Sebelumnya saya ingin memberitahu, bagian ini digunakan untuk mengetahui berbagai informasi mengenai server terutama server baru.

Bagi kalian yang bermain pada server yang sudah di support / idRO, maka kalian bisa melewati bagian ini dan lanjut ke Part 2.

Banyak yang bertanya bagaimana cara mengetahui informasi yang dibutuhkan agar bisa login ke private server baru (belum terdapat pada servers.txt).

Disini akan dibahas bagaimana cara untuk mengetahui informasi suatu server (terutama server baru).

Dibutuhkan ketelitian dan kesabaran untuk mendapatkan informasi yang kita butuhkan..

Openkore membutuhkan beberapa informasi tentang server tersebut sebelum bisa login.

Berikut adalah informasi yang dibutuhkan :

1. nama server
2. alamat IP dan nomor Port server
3. master version dari server
4. version number dari server (tidak sama dengan master server)
5. character encoding dari server
6. type dari server

--------------------------------------------
+ Mencari Tahu Server IP dan Nomor Portnya + (Private server only)

Semua client Ro memiliki satu file .grf atau lebih. File tersebut merupakan file Kompress yang mengandung informasi yang dibutuhkan oleh client, dan mungkin mengandung informasi tentang server tersebut.

1. Download Grf Tool dibawah ini untuk membaca file .Grf


2. Cari file grf pada folder client Ro kamu
(ex: C:\Program files\Gravity\RagnarokOnline)

3. Buka salah satu file grf mengunakan grf tool, kamu bisa
membuka yang mana saja.

4. pada kotak search ketikkan : clientinfo.xml

Seharusnya kamu akan melihat file clientinfo.xml atau sclientinfo.xml pada list, klik file tersebut maka jendela preview akan menampilkan isi file tersebut.

Disini file bernama (s)clientinfo.xml, pada beberapa private server file ini bisa berbeda namanya, namun isinya biasanya sama seperti (s)clientinfo.xml jadi ini adalah ketelitian kita dalam mencari file xml yang diperlukan.

Pada beberapa private server file ini biasa terdapat pada folder "RagnarokOnline\Data" atau pada grf yang mereka berikan !!

This image has been resized. Click this bar to view the full image. The original image is sized 597x381.

Contoh dimana grf tool menampilkan file clientinfo.xml dari iRO..

5. Cari baris yang bertuliskan "
x.x.x.x
"
tulisan diantara "
" dan "
" adalah IP
dari server tersebut.

Jika IP bertuliskan 127.0.0.1 maka server tersebut memiliki
kemungkinan mengunakan proxy seperti FoxDye.

Jika pada file (s)clientinfo.xml tidak berisi IP atau line
tersebut, coba cari pada file grf lainnya!!

6. Cari baris bertuliskan "xxxx", dimana xxxx
merupakan nomor Port dari server tersebut.

--------------------------------------------------------------
+ Mencari Tahu Master Version dan Version Number dari Server + (Private server only)

Karena kita sudah mengetahui IP dan Portnya maka sekarang kita akan mencari tahu master version dan version numbernya..

1. Download ethereal, penganalisa packet jaringan di

2. Jalankan RO client kalian, Jangan Login Dulu !!

3. Jalankan ethereal, pada menu pilih Capture->Options, akan muncul kotak dialog "Ethereal Capture Options".



4. Pada kotak pilihan "Interface", pilih interface yang merupakan
koneksi internet kamu. Jika kamu tidak yakin yang mana merupakan
koneksi internet kamu :
pilih yang IP addressnya tidak dimulai dengan 192.168.

5. Pastikan "Enable Network Name Resolution" sudah di check.
Jika sudah maka klik tombol Start.

This image has been resized. Click this bar to view the full image. The original image is sized 527x500.


6. Balik ke RO Client mu. Ketikan Apapun pada bagian ID dan password,
lalu tekan enter / login. Tidak masalah jika kamu mengetikan
sembarang ID dan Pass, asalkan lebih dari 3 karakter. Kamu hanya
perlu menekan enter, tidak peduli login sukses atau gagal.

7. Balik ke Ethereal dan tekan tombol "Stop".



8. Pada window utama ethereal kamu akan melihat data segment TCP
yang sudah Di Tangkap .. he he. Kita akan memfilter data yang
kita perlukan, tapi isi dari filter ini bergantung apakah
address dari server berupa IP address atau HostName..

! Jika Server kamu berupa IP Address (hanya titik dan nomor),
seperti (123.456.78.90) :

pada filter box masukan sebagai berikut :

"tcp && tcp.port == XX && ip.addr == Y.Y.Y.Y"

ganti XX dengan nomor port server kamu.
ganti Y.Y.Y.Y dengan IP Address server kamu.


! Jika Server kamu berupa hostname (hanya mengandung huruf):

pada filter box masukan sebagai berikut :

tcp && tcp.port == XX && (ip.src_host == "YY" || ip.dst_host == "YY")

ganti XX dengan nomor port server kamu.
ganti YY dengan server hostname kamu.

Setelah dimasukan pada filter, tekan tombol enter.

contoh pemasukan filter pada iRO.

9. Klik kanan pada baris pertama filter lalu pilih
"Follow TCP Stream"
This image has been resized. Click this bar to view the full image. The original image is sized 690x396.


10. Pada dialog/window yang muncul pilih "Hex Dump".


11.
1. 4 Byte setelah "64 00" adalah "Server Version Number", namun
mereka masih berupa data hexadesimal (base-16), gunakan
calculator untuk mengubah dari hex ke desimal.

2. Nomor terakhir adalah "Server Master Version Number", ini
juga masih berupa hexa, so diubah dulu ke desimal.


This image has been resized. Click this bar to view the full image. The original image is sized 755x271.


Sekarang kamu sudah memiliki server version number dan master version number.

Pada gambar diatas, version number adalah 12 00 00 00, jika dibalik maka 00 00 00 12 dan jika di ubah ke desimal adalah 18.

Sedangkan master version number adalah 01, dimana jika diubah ke desimal adalah 1.

--------------------------------
+ Mencari Tahu Server Encoding + (Private server only)

Character Encoding tidak bisa otomatis terdeteksi, tapi berikut adalah daftar character encoding yang bisa digunakan.

daftar character encoding :

1. Western
2. Simplified Chinese
3. Korean
4. Russian
5. Japanese
6. Thai

--------------------------------------------
+ Memasukan Informasi Server pada Openkore + (Private server only)

Kita sudah mendapatkan berbagai informasi yang kita butuhkan, sekarang kita akan menambahkannya pada daftar server kita.

Berikut adalah contoh, dimana saya hendak menambah server PriRO pada servers.txt. Saya sudah mendapat informasi yang saya butuhkan sebagai berikut :

Nama Server : Private RO single
IP Server : 203.123.15.30
Port Number : 6629
Master Version : 18
Version Number : 2
Server Type : 4
ServerEncoding : Western

maka langkah-langkah menambahkan informasi ini pada servers.txt :

1. Buka Files tables\servers.txt

2. Tambahkan baris baru sebagai berikut :

[PrivRO - Private: Single]
ip 203.123.15.30
port 6629
master_version 18
version 2
serverType 4
serverEncoding Western

3. Restart Openkore untuk memasukkan baris tersebut

------------------------------------
+ Permasalahan Yang Kadang Terjadi + (Private server only)

P : Saya selalu timeout pada saat login ke map server
J : Coba ganti "servertype", coba dari 0-8, coba satu-persatu
sampai kamu sukses login.

P : Botnya masuk ke map server IP yang salah
J : hal ini kadang terjadi pada private server, coba
tambahkan "private 1" pada baris baru.

P : Saya mendapatkan seperti "unknown packet-0000"
kemudian saya langsung disconect.
J : Gunakan Packet Length Extractor http://www.openkore.com/wiki/index.p...ngth_Extractor

P : Saya mengalami permasalahan lain.
J :
- Pertama, ada beberapa server yang tidak disupport
oleh openkore, mungkin server kamu termasuk unsupport.
- Kedua, coba rubah server type satu-satu, jika tidak bisa
juga maka server kamu tidak disupport.

------------------------------------------------------
+ yang harus di lakukan jika server tidak di support + (Private server only)

Openkore mensupport suatu server hanya jika developer mensupport pada server itu. Support untuk suatu server tidak begitu saja keluar - itu merupakan hasil dari kerja keras.

Jadi ada tidaknya support pada server kamu, bergantung apakah developer ingin mensupport server kamu. Semakin jarang developer bermain pada server kamu, semakin kecil kemungkinan server kamu akan disupport.

Beberapa langkah agar server di support:

1. Pindah ke server yang disupport

2. tanyakan pada beberapa developer untuk bersedia mensupport
server kamu, tapi jangan terlalu memaksa sebab mereka juga
punya urusan sendiri. Namun beberapa developer punya waktu
luang, coba tanyakan pada mereka.

3. Belajar Programming dan lakukan sendiri

4. Upah seseorang untuk melakukannya

Tanda kalo Macro tak cocok/tak berfungsi


Ini tanda kalo macro yang anda gunakan tak berfungsi.

Yang perlu d tambahkan d config

macro_nowarn 1
macro_orphans terminate
macro_debug none
macro_file macros.txt
macro_allowDebug 0
macro_readmanual red/chilli