как щас помню.. 16 января 2010 года, за окном снежок пархает.. ничто не предвещало беды..
и тут в 00:43 на тебе
как раз 3 года и 2 месяца
Classic RO
Модератор: 4epT
Re: Classic RO
Маленький плагин для обхода "бот зощиты" вашего сервера.
И проверьте tables/servers.txt, там должно быть: serverEncoding Russian
И проверьте tables/servers.txt, там должно быть: serverEncoding Russian
Код: Выделить всё
# Anti-Bot plugin for ClassicRO server.
# This plugin is licensed under the GNU GPL.
# (C) 2013 Kissa2k
# https://ro-fan.ru/viewtopic.php?f=4&t=9755
package classicro;
use strict;
use Plugins;
use Globals;
use Log qw(message warning error);
use I18N qw(bytesToString stringToUTF8);
Plugins::register('classicro', 'Anti-Bot plugin for ClassicRO.', \&onUnload, \&onUnload);
my $hooks = (
Plugins::addHooks(
['packet/npc_talk', \&onNPCTalk, undef]
)
);
sub onUnload {
Plugins::delHooks($hooks);
}
my $color;
sub onNPCTalk {
my (undef, $args) = @_;
my $msg = unpack("Z*", substr($args->{RAW_MSG}, 8));
my $msg = I18N::stringToUTF8(I18N::bytesToString($msg));
if($msg =~ /\^(\w{6})(.*)\^000000 цветом:/){
$color = $1;
}elsif($msg =~ /\^(\w{6})(\d+)\^000000/){
if($1 eq $color){
sleep(3);
Commands::run("talk num $2");
}
}
}
1;
Последний раз редактировалось Kissa2k Вт мар 26, 2013 11:11 am, всего редактировалось 2 раза.
- 4epT
- macro-маньячина
- Сообщения: 2792
- Зарегистрирован: Чт дек 21, 2006 1:23 pm
- Сервер RO:: 4game
- Discord: ya4ept#8494
- Контактная информация:
Re: Classic RO
Kissa2k, эмм.. а твой плагинчик случаем не будет потом вмешиваться во все НПЦ, которые требуют ввести число?
Посмотри как тут сделано, т.е. мы отправляем ответ сразу после появления задания, не дожидаясь приглашения ввода.
Добавлено спустя 4 минуты 6 секунд:
и что-то мне подсказывает, что лучше ответ отправлять как-то так:
а то мало ли структура пакетов измениться..
Посмотри как тут сделано, т.е. мы отправляем ответ сразу после появления задания, не дожидаясь приглашения ввода.
Добавлено спустя 4 минуты 6 секунд:
и что-то мне подсказывает, что лучше ответ отправлять как-то так:
Код: Выделить всё
Commands::run("talk num $answer");
Re: Classic RO
Так это тоже самое.4epT писал(а):и что-то мне подсказывает, что лучше ответ отправлять как-то так:а то мало ли структура пакетов измениться..Код: Выделить всё
Commands::run("talk num $answer");
Впрочем наверное да, стоит переделать.. обновлено по пожеланиям 4epT'a
- 4epT
- macro-маньячина
- Сообщения: 2792
- Зарегистрирован: Чт дек 21, 2006 1:23 pm
- Сервер RO:: 4game
- Discord: ya4ept#8494
- Контактная информация:
Re: Classic RO
давай ещё для хорошего тона добавим:
Код: Выделить всё
message "Отправляем ответ: $2\n";
Commands::run("talk num $2");