Classic RO

Обсуждение особенностей разных пиратских серверов

Модератор: 4epT

Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: Classic RO

Сообщение 4epT »

как щас помню.. 16 января 2010 года, за окном снежок пархает.. ничто не предвещало беды..
и тут в 00:43 на тебе :lol:
как раз 3 года и 2 месяца
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Re: Classic RO

Сообщение Kissa2k »

Маленький плагин для обхода "бот зощиты" вашего сервера.
И проверьте tables/servers.txt, там должно быть: serverEncoding Russian
8PvXOYQDV3g_cr.jpg
8PvXOYQDV3g_cr.jpg (9.42 КБ) 3072 просмотра

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

# 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

Сообщение 4epT »

Kissa2k, эмм.. а твой плагинчик случаем не будет потом вмешиваться во все НПЦ, которые требуют ввести число?
Посмотри как тут сделано, т.е. мы отправляем ответ сразу после появления задания, не дожидаясь приглашения ввода.

Добавлено спустя 4 минуты 6 секунд:
и что-то мне подсказывает, что лучше ответ отправлять как-то так:

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

Commands::run("talk num $answer");
а то мало ли структура пакетов измениться..
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Re: Classic RO

Сообщение Kissa2k »

4epT писал(а):и что-то мне подсказывает, что лучше ответ отправлять как-то так:

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

Commands::run("talk num $answer");
а то мало ли структура пакетов измениться..
Так это тоже самое.
Впрочем наверное да, стоит переделать.. обновлено по пожеланиям 4epT'a
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: Classic RO

Сообщение 4epT »

давай ещё для хорошего тона добавим:

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

message "Отправляем ответ: $2\n";
Commands::run("talk num $2"); 
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Ответить