Плагин AntiBotkiller - диалог с НПЦ, требующим ввода чисел
Модератор: 4epT
Re:
на самом деле непонятно не черта куда что вводить ....moonlight писал(а):карочи исправляюсь. вот тот аотибот
Код: Выделить всё
# ======================= # АвтоБот 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;
вот мой диалог бота
[АвтоБот] 0 "".
[АвтоБот] 1 "[Антибот]".
[АвтоБот] 2 "Привет. Я твой новый антибот.".
[АвтоБот] 3 "Чтобы попасть в игру надо ввести код: 9320".
[АвтоБот] 4 "".
остается два вопроса куда в плагин вписать строчку с кодом чтоб он отсортировал мусор от кода то есть бля бля бля от 9320
и что делают эти строки
$reactOnNPC{msg}[3] =~ s/> //;
$reactOnNPC{msg}[4] =~ s/> //;
... если они отвечают в какой строке типо код смотреть или нет...
и надоли стирать одну из них в моем случае: $reactOnNPC{msg}[4] =~ s/> //;
Или я ваще нето говорю и несу полный бред .... я в етой фитчи не секу ))) в заранее спс за помощь

Re: Плагин AntiBotkiller - диалог с НПЦ, требующим ввода чисел
Ребят вот такая вот фигня как обойти помогите пожалуйста


- 4epT
- macro-маньячина
- Сообщения: 2795
- Зарегистрирован: Чт дек 21, 2006 1:23 pm
- Сервер RO:: 4game
- Discord: ya4ept#8494
- Контактная информация:
Re: Плагин AntiBotkiller - диалог с НПЦ, требующим ввода чисел
на ZenyRO раньше была подобная защита, в общем проштудируй тут, хотя там открытого ответа для тебя нету, нужно будет доработать для своих нужд