карочи исправляюсь. вот тот аотибот
Код: Выделить всё
# =======================
# АвтоБот v.1.2.666
#( с помощью ебаной матери и перла, русификация Moonlight)
# =======================
# Copyright 2006
# Base Script : hakore(reactOnNPC)
# Modified by : AqlX
# Далее помог : Moonlight 2007
#
package AntiBotkiller;
use strict;
use Plugins;
use Globals;
use Utils;
use Commands;
use Log qw(message debug);
use encoding 'Russian';
Plugins::register('АвтоБот', "Умно объебем тупого антибота", \&Unload);
my $hooks = Plugins::addHooks(
['packet/npc_talk', \&onNPCTalk, undef],
['packet/npc_talk_close', \&onClo, undef],
['packet/npc_talk_continue', \&onCon, undef],
['packet/npc_talk_number', \&onNPCAction, undef]
);
sub Unload
{
Plugins::delHooks($hooks);
};
my %reactOnNPC;
my $code;
my $str;
sub onNPCTalk
{
my (undef, $args) = @_;
my $msg = unpack("Z*", substr($args->{RAW_MSG}, 8));
$msg = I18N::bytesToString($msg);
$msg =~ s/\^[a-fA-F0-9]{6}//g;
if (!defined %reactOnNPC || $reactOnNPC{action})
{
undef %reactOnNPC if defined %reactOnNPC;
$reactOnNPC{index} = 1;
$reactOnNPC{msg}[$reactOnNPC{index}] = $msg;
}
else
{
$reactOnNPC{index}++;
$reactOnNPC{msg}[$reactOnNPC{index}] = $msg;
}
}
sub onNPCAction
{
$code = reply();
message "[АвтоБот] Эрегиру.. тоесть реагируем - пиздим \"$code\".\n", "success";
message "[АвтоБот] ах да, блять, для приличия ждем 5 секунд ...\n", "success";
my $cmd = "talk num $code";
sleep 5;
Commands::run($cmd);
}
sub onClo
{
undef %reactOnNPC if defined %reactOnNPC;
}
sub onCon
{
message "[АвтоБот] 0 \"$reactOnNPC{msg}[0]\".\n", "success";
message "[АвтоБот] 1 \"$reactOnNPC{msg}[1]\".\n", "success";
message "[АвтоБот] 2 \"$reactOnNPC{msg}[2]\".\n", "success";
message "[АвтоБот] 3 \"$reactOnNPC{msg}[3]\".\n", "success";
message "[АвтоБот] 4 \"$reactOnNPC{msg}[4]\".\n", "success";
$reactOnNPC{msg}[3] =~ s/> //;
$reactOnNPC{msg}[4] =~ s/> //;
undef $str;
$str = $reactOnNPC{msg}[3];
if (length($str) < 2) {
undef $str;
$str = $reactOnNPC{msg}[4];
}
undef %reactOnNPC if defined %reactOnNPC;
}
sub reply
{
message "[АвтоБот] Вроди нашел ту строчку: \"$str\".\n", "success";
my %sn = ("один", 1, "два", 2, "три", 3, "четыре", 4, "пять", 5, "шесть", 6, "семь", 7, "восемь", 8, "девять", 9, "десять", 10, "одиннадцать", 11, "двенадцать", 12, "тринадцать", 13, "четырнадцать", 14, "пятнадцать", 15,"шестнадцать", 16,"семнадцать", 17, "восемнадцать", 18, "девятнадцать", 19 ,"двадцать", 20, "тридцать", 30, "сорок", 40, "пятьдесят", 50, "шестьдесят", 60, "семьдесят", 70, "восемьдесят", 80, "девяносто", 90,"сто",100,"двести",200,"триста",300,"четыреста",400,"пятьсот",500,"шестьсот",600,"семьсот",700,"восемьсот",800,"девятьсот",900);
my @sl = ("один","два","три","четыре","пять","шесть","семь","восемь","девять","десять","одиннадцать","двенадцать","тринадцать","четырнадцать","пятнадцать","шестнадцать","семнадцать","восемнадцать","девятнадцать","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто","сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот");
#Заменяем злоебучие символы, написанные в латинице
$str =~ tr/m/т/;
$str =~ tr/e/е/;
$str =~ tr/o/о/;
$str =~ tr/a/а/;
$str =~ tr/u/и/;
$str =~ tr/p/р/;
$str =~ tr/c/с/;
message "[АвтоБот] Перевели на русский: \"$str\".\n", "success";
my ($str1, $str2, $str3) = split(/ /, $str);
my $tmp;
foreach $tmp (@sl){
if ($str1 =~/^.?$tmp.?$/) {
message "[АвтоБот] Распознал: \"$tmp\".\n", "success";
$str1 = $tmp;
}
}
foreach $tmp (@sl){
if ($str2 =~/^.?$tmp.?$/) {
message "[АвтоБот] Распознал: \"$tmp\".\n", "success";
$str2 = $tmp;
}
}
foreach $tmp (@sl){
if ($str3 =~/^.?$tmp.?$/) {
message "[АвтоБот] Распознал: \"$tmp\".\n", "success";
$str3 = $tmp;
}
}
$code = $sn{$str1}+$sn{$str2}+$sn{$str3};
message "[АвтоБот] Итого в граммах: \"$code\".\n", "success";
return $code;
}
return 1;