Bot Guides and Installation

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
}



5 comments:

  1. boss paanu nman kapag SELLING ako ng item

    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. sir... pwede po ba ulet nio i-post nio po ung pag selling nmn po ng items... salamat po...

      Delete
  4. This comment has been removed by the author.

    ReplyDelete