Bot Guides and Installation

July 25, 2017

Ragnarok Online PH 2017

Good day everyone!

Ragnarok Online PH is back!

Unfortunately, Openkore Bot is not yet working as of posting (July 26, 2017).

So guys, beware of fraud site or in-game players selling bot programs.

Rok on!

August 28, 2013

Updated Openkore Bot w/ Plugins

First download your Bot Here:
http://collectskin.com/openkore/ -> choose openkore_ready.zip (Full DL)


Plugins Installation
DL your plugins here:
http://www.openkore.com/index.php/Macro_plugin -> click Installation then choose 2.0.7-compatible branch

After Downloading:
rename the folder as plugins
• your plugins folder must contain Macro Folder and macro.txt ONLY!!
• lastly, go to your control folder then create new notepad and rename it as macros
• Happy Botting!!

January 30, 2013

Disable GG/Multi Client Tutorial [Outdated]

Important Reminder:
• Always Backup your exes.
• Make 2 copies of your Ragnarok Online Folder, why? because Hexed Client can't be used while Game Guard is active like WoE/Battle Grounds and non-Hexed Client cant be used while botting.
• For New Chaos, New Loki, Valhalla and Valkyrie Server, just hex any of these then just copy and rename it to any client you want to hex.

Important Tools:

• Stripper(Unpacking .exe) - http://www.ziddu.com/download/6329878/stripper_v207ht.rar.html
• XVI32 (Hexing Unpacked .exe) -  http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm#download

How to Unpack?
  1. Download Stripper v2.07
  2. After downloading, extract the file and open the stripper.
  3. Click open then locate your exe (example valexe) then click unpacking. (IMPORTANT: valexe must be inside your Ragnarok Folder while unpacking. This Only takes less than a minute)
  4. After unpacking open your Ragnarok Folder and there will be a file, named _valexe
  5. Delete the (orig) valexe and rename your _valexe to valexe
  6. You're now Ready to Hex Your Client.
How to Hex?
  1. Download XVI32
  2. After downloading, extract the file and open the  XVI32.
  3. Click open then locate your UNPACKED exe (example valexe)
  4. Press ctrl + R, a window will appear.
  5. The 1st text box is for the "search code" then the last is for the "replace code"
  6. Use the codes below for hexing and click "Replace all". 
  7. After all codes have been replaced, save your work (ctrl+s) and your ready to go.
  8. Happy playing while botting!!

Codes: (For New Chaos, New Loki, Valhalla and Valkyrie)

Disable Game Guard:
Search: E8 92 26 DD FF 3B C6 74 75
Replace: 90 90 90 90 90 90 90 90 90

Opening Multiple Client:
Search: 
Replace: 

Search: 
Replace: 

Codes: (For New Iris! )
No Record.


Credits:
• Openkore Forum
• Heero -  Super Moderator of Openkore forum
• noobotter -  Moderator of Openkore forum/foxvixen of BAPT
• benj130 - Moderator of Openkore forum
• Belladona's Guide - https://docs.google.com/View?id=dd8fkwnm_0cwbdk8cd

Disclaimer:
I do not own or Im not the one who made those Hex Codes/DL links, etc, I just made it plain and simple for the newbies to understand it easily. Thank you!


July 27, 2012

Anti Manhole/Warp Macro

Just copy and paste this in your macro folder. Enjoy!!!

automacro warp{
console /is casting (Warp Portal|Manhole) on/i
run-once 1
call warp1
}
macro warp1{
do chat create "$.lastLogMsg"
pause 35
do chat leave
release warp
}

June 12, 2012

Safest Auto Bot Buying Macro [autotrade.pl]


Instructions:

In your Control Folder create:
autotrade.txt

this is where you can put your item name/s and their price/s

syntax: [item name] [price]

example:
Blue Herb 10000 (no comma)

Then, in your config.txt locate dealAuto and set it to 0 and then add tradeAuto 1

tradeAuto 1
dealAuto 0

Finally for the autotrade.pl codes
• Paste the codes below in your notepad and save it as autotrade.pl and put it inside your Bot Folder.

-----------------------------------------------------------------------
package autoTrade;


#ported from messykorexp by Joseph
#original code by systeman


use strict;
use Globals;
use Log qw(message warning error debug);
use AI;
use Misc;
use Network::Send;
use Utils;


Plugins::register('autoTrade', 'automated chat room dealing', \&Unload);
my $hook1 = Plugins::addHook('AI_pre', \&call);
my $hook2 = Plugins::addHook('parseMsg/pre', \&packet);


# load table file
our %trade_lut;
my $file = "$Settings::control_folder/autotrade.txt";
my $cfID = Settings::addConfigFile($file, \%trade_lut, \&FileParsers::parseDataFile_lc);
Settings::load($cfID);
undef $file;


sub Unload {
Plugins::delHook('AI_pre', $hook1);
Plugins::delHook('parseMsg/pre', $hook2);
Settings::delConfigFile($cfID);
}


my $dealTrade;
my $dealFinalize;
my $tradeDealAddItem;
my $itemAddTimeout;


# TIMEOUTS: you can change these if you want


# time to wait for them to add items before cancelling?
my $itemWaitTime = 10;
# time to wait before accepting deal request?
my $dealAcceptTime = 2;
# time to wait before adding zeny once they finalize their item choices?
my $zenyAddDelay = 2;


sub packet {
my $hookName = shift;
my $args = shift;
my $switch = $args->{switch};
my $msg = $args->{msg};


if ($switch eq "00E9") {
my $amount = unpack("L1", substr($msg, 2,4));
my $ID = unpack("S1", substr($msg, 6,2));
if ($ID > 0) {
# they added an item, so reset the timeout
$tradeDealAddItem = 1;
}
}
if ($switch eq "01F4") {
#deal request, wait before accepting
$itemAddTimeout = time;
}
if ($switch eq "00E5" || $switch eq "01F4") {
#deal request, wait before accepting
$itemAddTimeout = time;
}
if ($switch eq "00EC") {
my $type = unpack("C1", substr($msg, 2, 1));
if ($type == 1) {
#they finalize their item selections
$itemAddTimeout = time;
}
}
}


sub call {
AUTOTRADE: {
if (AI::is("","tradeAuto", "deal") && $config{tradeAuto} && $char->{skills}{NV_BASIC}{lv} > 4) {
if (AI::action ne "tradeAuto" && AI::action ne "deal" && $::currentChatRoom ne "") {
message "Begin auto-trade mode.\n", "autoTrade";
if ($config{dealAuto}) {
$config{dealAuto} = 0;
Misc::configModify("dealAuto", $config{dealAuto});
}
AI::queue("tradeAuto");
}


last AUTOTRADE if !AI::is("tradeAuto","deal");


if (Utils::timeOut($itemAddTimeout,$dealAcceptTime) && $::incomingDeal{name} && !$::currentDeal{name}) {
Network::Send::sendDealAccept(\$remote_socket);
undef $dealFinalize;
undef $dealTrade;
$itemAddTimeout = time;
message "Sent deal accept, begin trading\n", "autoTrade";
}
last AUTOTRADE if (!$::currentDeal{name});
if (!Utils::timeOut($itemAddTimeout,$itemWaitTime) && $tradeDealAddItem) {
$itemAddTimeout = time;
undef $tradeDealAddItem;
}
if (($::currentDeal{other_finalize} && Utils::timeOut($itemAddTimeout,$zenyAddDelay)) || Utils::timeOut($itemAddTimeout,$itemWaitTime)) {
if ($::currentDeal{other} eq ()) {
message "Other person didn't add any items, cancelling...\n", "autoTrade";
Network::Send::sendCurrentDealCancel(\$remote_socket);
$itemAddTimeout = time;
} elsif (!$dealFinalize) {
my $sumvalue;


my @currentDealOther;
foreach (keys %{$::currentDeal{other}}) {
push @currentDealOther, $_;
}
my $max = @currentDealOther;
for (my $i = 0;$i < $max;$i++) {
my $found = 0;
my $ID = $currentDealOther[$i];
my $name = lc main::itemName($::currentDeal{other}{$ID});
if (defined $trade_lut{$name}) {
message "Add ".$trade_lut{$name}."z x $::currentDeal{other}{$ID}{amount} to deal\n", "autoTrade";
$sumvalue += ($::currentDeal{other}{$ID}{amount} * $trade_lut{$name});
} else {
message "Other person added item which is not in buy list, cancelling...\n", "autoTrade";
Network::Send::sendCurrentDealCancel(\$remote_socket);
last AUTOTRADE;
}
}
message "Trading $sumvalue zeny and confirming\n", "autoTrade";
Network::Send::sendDealAddItem(\$remote_socket, 0, $sumvalue);
sleep(0.5);
Network::Send::sendDealFinalize(\$remote_socket);
$dealFinalize = 1;
$itemAddTimeout = time;
}


}
if ($::currentDeal{you_finalize} && Utils::timeOut($itemAddTimeout,$itemWaitTime)) {
message "Other person didn't accept the final trade, cancelling...\n", "autoTrade";
Network::Send::sendCurrentDealCancel(\$remote_socket);
$itemAddTimeout = time;
}
if (!$dealTrade && $::currentDeal{you_finalize} && $::currentDeal{other_finalize}) {
message "Accepting final trade\n", "autoTrade";
Network::Send::sendDealTrade(\$remote_socket);
$dealTrade = 1;
}
}
}
}


return 1;
----------------------------------END----------------------------------


For Autopub Macro, just paste this codes in your macros.txt and make sure you set sitAuto_idle 1 in your config.txt for the trigger.


automacro autopub{
console /You are sitting./
location prontera 113 41 - You can adjust
exclusive 1
call {
do chat create "Your Pub TITLE" 2 0 13131
pause 1
do reload macro
}



May 31, 2012

Auto Get BG Food(Flee/Hit)


Military Potion B (Hit +33)
automacro bat_room{
location bat_room
location not bat_room 165 152
exclusive 1
run-once 0
call {
do move 165 152
release bat_room
}
}


automacro BGsupps{
location bat_room 165 152
inventory "Valor Badge" > 10
exclusive 1
run-once 0
call {
do talknpc 160 150 c r0 c r3 c r3 c r1 c r1 c
release BGsupps
}
}


Military Potion C (Flee +33)
automacro bat_room{
location bat_room
location not bat_room 165 152
exclusive 1
run-once 0
call {
do move 165 152
release bat_room
}
}


automacro BGsupps{
location bat_room 165 152
inventory "Valor Badge" > 10
exclusive 1
run-once 0
call {
do talknpc 160 150 c r0 c r3 c r4 c r1 c r1 c
release BGsupps
}
}

AUTO QUIT
automacro quit2{
inventory "Valor Badge" < 10
exclusive 1
call {
do quit
}
}

You can use either Bravery/Valor Badges.

April 28, 2012

[Macro] Auto Get Guarana Candy

IMPORTANT!
• You must have plugins for this to work. Read Bot Installation Guide (lowest part)
• Make sure your character is in Brasilis Map
• Go to control folder - macros.txt and paste this

automacro Gurana {
location brasilis
inventory "Guarana Candy" < 2000
exclusive 1
run-once 0
call {
do move 186 163
do talknpc 187 162 c r0
release Gurana
}

March 30, 2012

• How to Remove BEEPS while Botting

go to your config.txt (Control Folder -> config.txt)

verbose 1
showDomain 0
squelchDomains console, publicchat, schat, map_event, skill, drop, emotion

for additional domains, click this: List of Domains

Happy Boting!!

• [Classic] Auto Vend Bot

In your config.txt

itemsGatherAuto 2 (for autolooting when someone drops an item/equips)

lockMap
lockMap_x
lockMap_y


route_randomWalk 0


shopAuto_open 1


In your shop.txt

Item Name       <tab>     price       <tab>      amount

Note: 
price is coma separated if needed, they must apear in the right place. ex. 1,000; 10,000; 100,000


Example:

S>Poring Card, Knife[3], Red Potion


Poring Card <tab>   10,000  <tab>  3
Knife [3]    <tab>    1,000    <tab>  1
Red Potion  <tab>    200    <tab>  300

Happy Selling!!

March 12, 2012

• Party Search Macro

IMPORTANT!
• You must have plugins for this to work. Read Bot Installation Guide (lowest part)

Macro for MASTER
• Go to control folder - macros.txt and paste this

#######################################
########FIND SLAVE#####################
#######################################
#slave is lost
automacro findSlave {
   pm /x (.*) (.*) (.*)/
   call {
   $slavemap = $.lastMatch1
   $slavemapx = $.lastMatch2
   $slavemapy = $.lastMatch3
   $mymap = $.map
   if ($slavemap == $mymap) goto findslave
   do pm "$.lastpm" x $.map $.pos
   stop
:findslave
   do pm "$.lastpm" x $.map $.pos
   do move $slavemap $slavemapx $slavemapy
   }
}
#when slave is found
automacro clear {
   pm /clear/
   call {
   do eval AI::clear("move", "route");
   }
}

Macro for Slave
• Go to control folder - macros.txt and paste this

################################
######FIND MASTER###############
################################
#find master
automacro findMaster {
   timeout 3
   console /^I lost my master/
   call {
   $master = @config (followTarget)
   do pm "$master" x $.map $.pos
   }
}
automacro findMaster2 {
   timeout 3
   console /^Calculating route to find master/
   call {
   $master = @config (followTarget)
   do pm "$master" x $.map $.pos
   }
}
#goto master
automacro gotoMaster {
   pm /x (.*) (.*) (.*)/
   call {
   $pm = $.lastpm
   if ($pm != $master) stop
   do move $.lastMatch1 $.lastMatch2 $.lastMatch3
   }
}
#when master is found
automacro foundMaster {
   console /^Found my master!/
   call {
   do pm "$master" clear
   }
}
 
Also adjust your MASTER/SLAVE's route_step
For Master: make it route_step 8
For Slave: make it route_step 18

HAPPY LEVELING!!

Disclaimer:
I do not own or Im not the one who made this macro, I just made it plain and simple for the newbies to understand it easily. Thank you!


February 29, 2012

• Disable GG/Multi Client Tutorial (Updated Sept 29, 2013)

Important Reminder:
• Always Backup your exes.
• Make 2 copies of your Ragnarok Online Folder, why? because Hexed Client can't be used while Game Guard is active like WoE/Battle Grounds and non-Hexed Client cant be used while botting.
• For New Chaos, New Loki, Valhalla and Valkyrie Server, just hex any of these then just copy and rename it to any client you want to hex.

Important Tools:

• Stripper(Unpacking .exe) - http://www.ziddu.com/download/6329878/stripper_v207ht.rar.html
• XVI32 (Hexing Unpacked .exe) -  http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm#download

How to Unpack?
  1. Download Stripper v2.07
  2. After downloading, extract the file and open the stripper.
  3. Click open then locate your exe (example valexe) then click unpacking. (IMPORTANT: valexe must be inside your Ragnarok Folder while unpacking. This Only takes less than a minute)
  4. After unpacking open your Ragnarok Folder and there will be a file, named _valexe
  5. Delete the (orig) valexe and rename your _valexe to valexe
  6. You're now Ready to Hex Your Client.
How to Hex?
  1. Download XVI32
  2. After downloading, extract the file and open the  XVI32.
  3. Click open then locate your UNPACKED exe (example valexe)
  4. Press ctrl + R, a window will appear.
  5. The 1st text box is for the "search code" then the last is for the "replace code"
  6. Use the codes below for hexing and click "Replace all". 
  7. After all codes have been replaced, save your work (ctrl+s) and your ready to go.
  8. Happy playing while botting!!

Codes: (For New Chaos, New Loki, Valhalla and Valkyrie)

Disable Game Guard:
Search: E8 92 26 DD FF 3B C6 74 75
Replace: 90 90 90 90 90 90 90 90 90

Opening Multiple Client:
Search: 85 C0 0F 85 D1 00 00 00 0F BE 05 A9 BD 89 00
Replace: 85 C0 90 90 90 90 90 90 0F BE 05 A9 BD 89 00

Search: 85 C0 74 07 C6 05 87 5D 98 00 01 33 DB
Replace: 85 C0 EB 07 C6 05 87 5D 98 00 01 33 DB

Codes: (For New Iris! )
No Record.


Credits:
• Openkore Forum
• Heero -  Super Moderator of Openkore forum
• noobotter -  Moderator of Openkore forum/foxvixen of BAPT
• benj130 - Moderator of Openkore forum
• Belladona's Guide - https://docs.google.com/View?id=dd8fkwnm_0cwbdk8cd

Disclaimer:
I do not own or Im not the one who made those Hex Codes/DL links, etc, I just made it plain and simple for the newbies to understand it easily. Thank you!


February 28, 2012

• Bot Installation Guide w/ Plugins

First DL your Bot Here:
http://openkore.collectskin.com/ -> choose openkore_ready.zip (Full DL)


For New Iris Server:
After downloading, open your openkore folder -> tables folder -> server.txt
then paste this

[Philippines - pRO: New Iris]
ip 202.57.117.80
port 6900
master_version 15
version 1
secureLogin 1
secureLogin_type 0
secureLogin_requestCode
secureLogin_account 0
serverType mRO
patchserver wpatch.ragnarok.com.ph
patchpath /patch50
storageEncryptKey 0x050B6F79, 0x0202C179, 0x0E20120, 0x04FA43E3, 0x0179B6C8, 0x05973DF2, 0x07D8D6B, 0x08CB9ED9
serverEncoding Tagalog
charBlockSize 116
gameGuard 1
recvpackets recvpackets.txt
addTableFolders pRO


Plugins Installation
DL your plugins here:
http://www.openkore.com/index.php/Macro_plugin -> click Installation then choose 2.0.7-compatible branch

After Downloading:
rename the folder as plugins
• your plugins folder must contain Macro Folder and macro.txt ONLY!!
• lastly, go to your control folder then create new notepad and rename it as macros
• Happy Botting!!