Страница 2 из 2

Re: Classic RO

Добавлено: Ср мар 20, 2013 12:34 pm
4epT
как щас помню.. 16 января 2010 года, за окном снежок пархает.. ничто не предвещало беды..
и тут в 00:43 на тебе :lol:
как раз 3 года и 2 месяца

Re: Classic RO

Добавлено: Вт мар 26, 2013 1:30 am
Kissa2k
Маленький плагин для обхода "бот зощиты" вашего сервера.
И проверьте tables/servers.txt, там должно быть: serverEncoding Russian
8PvXOYQDV3g_cr.jpg
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 секунд:
и что-то мне подсказывает, что лучше ответ отправлять как-то так:

Код: Выделить всё

Commands::run("talk num $answer");
а то мало ли структура пакетов измениться..

Re: Classic RO

Добавлено: Вт мар 26, 2013 9:44 am
Kissa2k
4epT писал(а):и что-то мне подсказывает, что лучше ответ отправлять как-то так:

Код: Выделить всё

Commands::run("talk num $answer");
а то мало ли структура пакетов измениться..
Так это тоже самое.
Впрочем наверное да, стоит переделать.. обновлено по пожеланиям 4epT'a

Re: Classic RO

Добавлено: Вт мар 26, 2013 11:14 am
4epT
давай ещё для хорошего тона добавим:

Код: Выделить всё

message "Отправляем ответ: $2\n";
Commands::run("talk num $2");