Страница 2 из 2
Re: Classic RO
Добавлено: Ср мар 20, 2013 12:34 pm
4epT
как щас помню.. 16 января 2010 года, за окном снежок пархает.. ничто не предвещало беды..
и тут в 00:43
на тебе
как раз 3 года и 2 месяца
Re: Classic RO
Добавлено: Вт мар 26, 2013 1:30 am
Kissa2k
Маленький плагин для обхода "бот зощиты" вашего сервера.
И проверьте
tables/servers.txt, там должно быть: serverEncoding Russian
- 8PvXOYQDV3g_cr.jpg (9.42 КБ) 3084 просмотра
Код: Выделить всё
# 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;
Re: Classic RO
Добавлено: Вт мар 26, 2013 8:14 am
4epT
Kissa2k, эмм.. а твой плагинчик случаем не будет потом вмешиваться во все НПЦ, которые требуют ввести число?
Посмотри как тут сделано, т.е. мы отправляем ответ сразу после появления задания, не дожидаясь приглашения ввода.
Добавлено спустя 4 минуты 6 секунд:
и что-то мне подсказывает, что лучше ответ отправлять как-то так:
а то мало ли структура пакетов измениться..
Re: Classic RO
Добавлено: Вт мар 26, 2013 9:44 am
Kissa2k
4epT писал(а):и что-то мне подсказывает, что лучше ответ отправлять как-то так:
а то мало ли структура пакетов измениться..
Так это тоже самое.
Впрочем наверное да, стоит переделать.. обновлено по пожеланиям 4epT'a
Re: Classic RO
Добавлено: Вт мар 26, 2013 11:14 am
4epT
давай ещё для хорошего тона добавим:
Код: Выделить всё
message "Отправляем ответ: $2\n";
Commands::run("talk num $2");