How to use your [equipAuto]

How to run Openkore to your Ubuntu Linux OS


Macro How to avoid Monster that is not belong to your map

How does Lag in WoE occur?

Valkyrie Emblems(BMP FILES) as of June 1, 2011


Guild Master Technics and Moves


How to Avoid Guillotine Cross new Poison

How to Avoid Dragon's Breath Attack

      Now, i'll teach you on how to defend or to protect your character from Dragon's Breath Attack. We know that Dragon's Breath is a Fire Element, and you need to defend that Fire Element using a Fire Element Armors.

This are the List of Armors that I recommend:

Headgears:
Aries Crown - 5% Fire Prop.
Aries Diadem - 5% Fire Prop.
Ears of Ifrit - 5% Fire Prop.
Hairband Of Reginleif - 5% Fire Prop. and More.
Mask of Ifrit - 10% Fire Prop.
Torch Cap - 20% Fire Prop.
Welding Mask - 10% Fire Prop.

Armors: 
Crimson Robe - Full fire Armor


Accesory:
Crimson Orb - 15% Fire Prop.
Ring of Flame Lord - 10% Fire Prop.

Guard:
Neo Valkyrie Shield - 20% Fire Prop. and More.
Shell Of Resistance - 20% all Elements
Valkyrie Shield - 20% Fire Prop.

Garments:
Asprika - 30% all Elements including Neutral Property
Neo Muffler - 5% Fire Prop. and More.
Proxy Skin - 7% all Elements.

Shoes:
Crimson Shoes - 15% Fire Prop.

     I recommend those items for you to protect your character against Dragon's Breath Skill. Any comment might accepted and posted...

My Old KVM[Working]

I thought that KVM was the end of the Game of pRO, but there are several Server of ragnarok that uses KVM...


so my KVM download link:

Download link for 79- Level Below:

Download link for 80+ Level Above:

I appreciate some replies comes to you!... thank you...

Nested Macro + Automacro

I will teach you on how to create a 1pc of automacro and a multiple macro body

how about planning to move in a map if we reach our BaseLevel Condition to our Automacro?

automacro MoveMap {
            base >= 10
            timeout 60
            call recon
}

macro recon {
            if( $.lvl >= 10 ) call PoringAtk;
            if( $.lvl >= 20 ) call PoporingAtk;
            if( $.lvl >= 30 ) call PlanktonAtk;
}

macro PoringAtk {
            do move prt_fld08
}

macro PoporingAtk {
            do move pay_fild04
}

macro PlanktonAtk {
            do move iz_dun00
}

The code is now done!, if the automacro detect that your baselvl is already >= 10 then it will call the macro recon, however the recon macro will also detect if your level was pass thru to his if statement...

BattleGround Philippines Revision-09 By Me

This is my Final for now, BattleGround Tierra of Ragnarok Online Philippines
 
 
###########################################
# Created By: Daison For Renewal BG Rev:09#
###########################################


automacro ImInGeffen {
 location geffen
 timeout 10
call {
 do move geffen 110 65
 pause 3
 do talknpc 109 66 c c r0 n
}
}

automacro ImInPayon {
 location payon
 timeout 10
call {
 do move payon 186 102
 pause 3
 do talknpc 189 105 c c r0 n
}
}


automacro BattleRoom {
 location bat_room 150 153 154 149
 location not bat_room 118 181 121 173
 location not bat_room 118 128 121 118
 location not bat_room 57 223
 location not bat_room 57 207
 timeout 300
call {
 do conf route_randomWalk 0
 do conf bg_Location @random("1","2")
 do stand
 do chat leave
 do conf route_randomWalk 0
 $bgLoc = @eval($::config{bg_Location})
 if ($bgLoc == 1) goto Guillaume
 if ($bgLoc == 2) goto Croix

:Guillaume
 $xG = @random("118","119","120","121")
 $yG = @random("173","174","175","176","177","178","179","180","181")
 do move $xG $yG
 stop

:Croix
 $xC = @random("118","119","120","121")
 $yC = @random("118","119","120","121","122","123","124","125","126","127","128")
 do move $xC $yC
 stop
}
}

automacro AutoPub {
 location bat_room
 areaSpell Warp Portal, Warp Portal Opening
 timeout 10
call {
 do chat create @eval($::config{bg_Chat}) 2 0 @eval($::config{bg_pass})
}
}

automacro TalkToGuillNPC {
 location bat_room 118 181 121 173
 timeout 5
call {
 do talknpc 124 178 c r0 n
}
}


automacro TalkToCroixNPC {
 location bat_room 118 128 121 118
 timeout 5
call {
 do talknpc 125 121 c r0 n
}
}

#############################
############################
#Starting TO Join Chat Rooms
############################
#############################

automacro ChatTalkRoomNPCG {
 location bat_room 57 223
 timeout 3
 call JoinChat
}

automacro ChatTalkRoomNPCC {
 location bat_room 57 207
 timeout 3
 call JoinChat
}


###############
##############
#Badge COllect
##############
###############

automacro BadgeCollectG {
 location bat_a01 50 374
 exclusive 1
 run-once 0
 timeout 5
 call GetBadges
}

automacro BadgeCollectC {
 location bat_a01 43 17
 exclusive 1
 run-once 0
 timeout 5
 call GetBadges
}

#########
########
#CLASSES
########
#########

automacro HPMedicG {
 location bat_a01 342 352 362 332
 console /\[dist=(.*)\] (.*) \((\d+)\): \*Flag (1|2|3)\*$/i
 class Priest
 class High Priest
 class Monk
 class Champion
 class Sura
 class Arch Bishop
 timeout 5
 call AgiBuff
}

automacro HPMedicC {
 location bat_a01 350 60 360 50
 console /\[dist=(.*)\] (.*) \((\d+)\): \*Flag (1|2|3)\*$/i
 class Priest
 class High Priest
 class Monk
 class Champion
 class Sura
 class Arch Bishop
 timeout 5
 call AgiBuff
}

automacro MountedPlayers {
 location bat_a01
 status not Increase AGI
 class Royal Guard
 class Rune Knight
 class Ranger
 class Knight
 class Lord Knight
 class Paladin
 class Crusader
 timeout 30
call {
 do e flg3
}
}

automacro GeneticFastWalkG {
 location bat_a01 342 352 362 332
 class Genetic
 sp > 5%
 status not Cart Boost
 timeout 5
 call CartBoost
}

automacro GeneticFastWalkC {
 location bat_a01 350 60 360 50
 class Genetic
 sp > 5%
 status not Cart Boost
 timeout 5
 call CartBoost
}

automacro GXCloakExceedG {
 location bat_a01 342 352 362 332
 class Glt. Cross
 sp > 10%
 status not Cloaking Exceed
 timeout 20
 call GXCloacking
}

automacro GXCloakExceedC {
 location bat_a01 350 60 360 50
 class Glt. Cross
 sp > 10%
 status not Cloaking Exceed
 timeout 20
 call GXCloacking
}

automacro SCDefenderG {
 location bat_a01 342 352 362 332
 class Shadow Chaser
call {
 $y = 161 48","161 49","161 50","162 48","162 49","162 50","163 48","163 49","163 50"
 while ($y != $.loc) as loop
  do move 162 49
  pause 5
 end loop
 $i = 0
 while ($i < 50) as loop
  do sl 2299 161 49 10
  $i = $i + 1
 end loop
}
}

automacro SCDefenderC {
 location bat_a01 350 60 360 50
 class Shadow Chaser
call {
 $y = 170 344","170 345","170 346","171 344","171 345","171 346","172 344","172 345","172 346"
 while ($y != $.loc) as loop
  do move 171 345
  pause 5
 end loop
 $i = 0
 while ($i < 50) as loop
  do sl 2299 169 345 10
  $i = $i + 1
 end loop
}
}

#################
################
#Starting Battle
################
#################

automacro AntiBarricadeG {
 location bat_a01 342 352 362 332
 timeout 5
 call MiddleMapOfBG
}

automacro AntiBarricadeC {
 location bat_a01 350 60 360 50
 timeout 5
 call MiddleMapOfBG
}


automacro GoStone {
 location bat_a01 271 205 275 201
 timeout 10
 priority 1
call {
 $K = "Knight"
 $GC = "Glt. Cross"
 $LK = "Lord Knight"
 $P = "Paladin"
 $RK = "Rune Knight"
 $RG = "Royal Guard"
 $R = "Ranger"
 $G = "Genetic"
 
 if (@eval(checkClasss($K)) == 0) goto GC
:GC
 if (@eval(checkClasss($GC)) == 0) goto LK
:LK
 if (@eval(checkClasss($LK)) == 0) goto P
:P
 if (@eval(checkClasss($P)) == 0) goto RK
:RK
 if (@eval(checkClasss($RK)) == 0) goto RG
:RG
 if (@eval(checkClasss($RG)) == 0) goto R
:R
 if (@eval(checkClasss($R)) == 0) goto G
:G
 if (@eval(checkClasss($R)) == 0) goto OneFinal
:OneFinal
 if (@eval(checkClasss($K)) == 1) goto NotatkFlag
 if (@eval(checkClasss($GC)) == 1) goto NotatkFlag
 if (@eval(checkClasss($LK)) == 1) goto NotatkFlag
 if (@eval(checkClasss($P)) == 1) goto NotatkFlag
 if (@eval(checkClasss($RK)) == 1) goto NotatkFlag
 if (@eval(checkClasss($RG)) == 1) goto NotatkFlag
 if (@eval(checkClasss($R)) == 1) goto NotatkFlag
:atkFlag
 do a 0
 stop
:NotatkFlag
 if ($bgLoc == 1) goto Guillaume
 if ($bgLoc == 2) goto Croix

 :Guillaume
  do move 162 49
  stop
 :Croix
  do move 171 345
  stop
 stop

}
}
 

automacro tierraAtkStone1 {
 location bat_a01 170 349 175 343
 exclusive 1
 run-once 0
 call AttackStone
}

automacro tierraAtkStone2 {
 location bat_a01 161 55 166 44
 exclusive 1
 run-once 0
 call AttackStone
}













########
#######
#MACROS
#######
########

macro CartBoost {
 do ss 2478 5
}

macro GXCloacking {
 do ss 2033 5
}

macro AttackStone {
 do a 0
 stop
}

sub checkClasss {
 return 0 unless defined $char->{jobID};
 my $class = $_[0];
 if ($class =~ /^\s*\$/) {
  my ($var) = $class =~ /^\$([a-zA-Z][a-zA-Z\d]*)\s*$/;
  return 0 unless defined $var;
  if (exists $varStack{$var}) {$class = $varStack{$var}}
  else {return 0}
 }
 return lc($class) eq lc($::jobs_lut{$char->{jobID}})?1:0
}

macro MiddleMapOfBG {
 do move 273 203
 stop
}

macro GetBadges {
 do talk 2
 stop
}

macro AgiBuff {
 do sp 29 @player($.lastMatch2) 10
}

macro JoinChat {
 do chat join 0
 pause 1
 do chat join 0
}

Learn the Automacro

As what i've said to my previous page, that you can use automacro for you to make it easy to run into your system

let's attack a monster using automacro


automacro AttackMob {
    location prt_fld08
    monster Poring, Fabre,Lunatic
    timeout 10
}call {
    do a $.lastMonster
}

the code was like this, if my character is in the prt_fld08 and if there's a Poring or Fabre or Lunatic and we must run this program in every 10seconds

then the program will call the Statements
the program will do a $.lastMonster
a means attack the $.lastMonster,
$.lastMonster means the monster that was detected in the CONDITION, either Poring/Fabre or Lunatic


The code will automatically run if you're in the prt_fld08 according to it's CONDITION

Operators and Variables

Macro:
macro can only hold the Body of Artificial Movements, without a condition, you are calling it via console, or making an automacro to call the macro

macro <name...> {
           <statement...>
}

Automacro:
automacro Method is the automatically run, everytime you ran your Openkore, automacro will generate by the conditions and making it an automatic call to make an Artificial Movements to your Character

automacro <name> {
            <conditions>
            call <macro-name>
}

#By creating a full set of Automatic automacro
automacro <name...> {
         <conditions>
}call {
         <statements>
}

 


Variables:
To declare a Variable in Openkore Macro, you just need to use the $ and combine the Word that you wan't ,
for example:

$var
$name

Any variable can hold an Integer, String or Double, it also depends on how you will use it in Openkore Macro


Operators:
+      ----- it is mostly used in @eval() in Openkore Macro
-       ----- it also used in @eval()

=       ----- Equal

==     ----- Equally Equal

!=      ----- Not Equal

<       ----- Lesser Than

>       ----- Greater Than

<=     ----- Lesser than Equal

>=     ----- Greater than Equal

Special Variables to your Statements

This are the important built-in Variables for you to determine your character info/location etc.
  • $.map - the map you're on ("prontera")
  • $.pos - your current position ("123 234")
  • $.time - current time as unix timestamp ("1131116304")
  • $.datetime - current date and time ("Fri Nov 4 15:59:36 2005")
  • $.hour - current hour time in 24h format
  • $.minute - current minute time
  • $.second - current second time
  • $.hp - current hp
  • $.sp - current sp
  • $.lvl - current base level
  • $.joblvl - current job level
  • $.spirits - current number of spirit spheres
  • $.zeny - current amount of zeny
  • $.status - current statuses in a comma-separated list
  • $.caller - name of the last triggered automacro
  • $.weight - returns the current weight of the character
  • $.maxweight - returns the maximum weight of the character

Special KeyWords to your Statements

@npc (<x> <y> | /regexp/i | "<name>")
Return NPC's ID which location is <x> <y> or NPC's name match regexp or NPC's name is equal to <name> . Returns -1 if no NPC was found.
@inventory (<item>)
Returns Inventory Item ID of <item>. If <item> doesn't exist, it returns -1.
@Inventory (<item>)
Same as @inventory but returns all matching IDs as a comma-separated list or -1 if the item was not found.
@invamount (<item>)
Returns the amount of the given <item> in inventory.
@cart (<item>)
Returns cart item ID of <item>. If <item> doesn't exist, it returns -1.
@Cart (<item>)
Same as @cart but returns all matching IDs as a comma-separated list or -1 if the item was not found.
@cartamount (<item>)
Returns the amount of the given <item> in cart.
@storage (<item>)
Returns storage item ID of <item>. If <item> doesn't exist, it returns -1.
@Storage (<item>)
Same as @storage but returns all matching IDs as a comma-separated list or -1 if the item was not found.
@storamount (<item>)
Returns the amount of the given <item> in storage.
@player (<name>)
Returns player ID of player <name>. If player <name> is not found, it returns -1.
@vender (<name>)
Returns vender ID of vender <name>. If vender <name> is not found, it returns -1.
@store (<name>)
Looks for an item in a store and returns ID or -1 if the item was not found.
@shopamount (<item>)
Returns the amount of the given <item> in shop.
@random ("<argument1>", "<argument2>", ...)
Returns randomly one of the given arguments .
@rand (<n>, <m>)
Returns a random number between (and including) <n> and <m>.
@eval (<argument>)
Evaluates the given <argument>. Contents of @eval is Perl and does NOT have macro plugin syntax, except for variables and @() substitution.
@arg ("<argument>", <n>)
Returns the <n>th word of <argument> or an empty string if the word index is out of range.
Note: <n> could also be a variable that contains a round number/s greater than zero.
@config (<variable>)
Returns the value of <variable> specified in config.txt.
@venderitem (<name>)
Looks for an item in a player's shop and returns ID or -1 if the item was not found.
@venderprice (<indexID>)
Looks for an item in a player's shop and returns its price.
@nick (<word>)
Escapes all the regexp metacharacters and some of the perl special characters with \ (a backslash). Especially for player's name.

How to use Macro

Well, we want to create a movement to your Ragnarok Character...Openkore Console supports a chat command or a auto command to your Character, which means you are assigning your Character to what you wan'ts to do.

so here's our simple program, we can say that we want to move your character...

macro MoveMyChar {
         do move 100 10
         do move prontera 120 120
}

so now we created a program that the character will walk


macro MoveMyChar {
   -I rename my macro to MoveMyChar and you can also rename it by yourself
do
   -do means, we are using the Console Command of Openkore Built in Method
move 100 10
   -we use the Console command move with 'x' and 'y' Location
   -we are moving your character to your current map e.g(payon)
move prontera 120 120
   -we are now moving your character to prontera 120 120, for the instance, you're at the payon, and then
   - the map prontera, will detect and your character will move there.




Run your Openkore bot, and type-in "macros MoveMyChar" without the quotes

How to go to Traning Ground Willow new_2-3 map

Well, this is my Macro code for training groud Willow Monsters,

automacro new13 {
    location new_1-3
    location not new_1-3 97 52 105 48
    run-once 0
    timeout 20
call {
    do move 101 50
}
}

automacro new33 {
    location new_3-3
    location not new_3-3 98 53 106 48
    run-once 0
    timeout 20
call {
    do move 102 49
}
}

#TalktoNPC's

automacro TalkNPC13 {
    location new_1-3 97 52 105 48
    run-once 0
    timeout 10
call {
    do talknpc 103 50 c c c r0 c
}
}

automacro TalkNPC33 {
    location new_3-3 97 52 105 48
    run-once 0
    timeout 10
call {
    do talknpc 103 50 c c c r0 c
}
}

Hope you like it!