имитация выхода в чар селект

Разработка новых функций.

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

Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

имитация выхода в чар селект

Сообщение Antarx »

Проблема следующая: хочется, чтобы бот (саг, прист, кузнец, супруг - не важно) по команде из какого-нибудь коннект-плагина появлялся в игре, кидал требуемые обкасты и уходил обратно в небытиё. Оно, конечно, получается сочетанием дисконнекта и релог много, но в таком случае бот довольно долго появляется в игре. Можно, конечно, дисконнектиться и делать ai off в момент выбора персонажа, но это малость по-уродски.

Отсюда, что требуется в идеале: плагин, регистрирующий команды входа/выхода в чарселект.
Проблемы:
1. Вход в чарселект я в ОК честно не нашёл, а переводить отснифанные пакеты в перл я немного не умею.
2. У меня так и не получилось нормально зарегистрировать чат/консоль команду в плагине.
3. Эта гадость ещё и не должна конфликтовать с оставшейся частью ОК, и методов обхода помимо неудобного ai manual не представляю.

PS Теоретически, такой плагин должен быть не сильно длиннее doCommand, собственно, потому и надеюсь на помощь. Кроме того, хочется нормальную реализацию, поскольку штука в условиях агрессивного к ботам сервера довольно нужная.
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

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

говорят, что коры могут общаться друг с другом, даже если они не подконнекчены (?)

Я пока не представляю как 1 бот будет пробуждать другого, пока тот не законнекчен..

А так, по идее можно было "ловить" окно с чатом и делать паузу..

типо как в char_recreate.pl:

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

my $hooks = Plugins::addHooks(['charSelectScreen', \&pauseChar, undef]); 
sub pauseChar { 
***
} 
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
Gans
Грамотный
Сообщения: 162
Зарегистрирован: Вт дек 26, 2006 12:20 pm

Сообщение Gans »

Правду говорят. Могут обмениваться данными через т.н. bus.

Чар селект по-моему сделать очень сложно, ОперКора кажется это просто-напросто не умеет.

Добавлено спустя 1 минуту 30 секунд:

Кажется, выгоднее в нужный момент запустить из одной Коры другую (просто вызвать еще один exe-шник). Но я не знаю, как такое сделать.
Изображение
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

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

Gans, автору время-деньги..
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx »

Gans
если ещё и экзешник запускать, процесс запуска совсем затянется...

4epT
проблема не в том, чтобы связать ботов - оно сделано до нас уже минимум 3 плагинами.
указанного кода в указанном плагине честно не нашёл... :(
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

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

Antarx, потому что "pauseChar" это я уже "придумал"
в оригенала - там "delChar" ;)

а что за "минимум 3 плагинами"??
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Re: имитация выхода в чар селект

Сообщение piroJOKE »

Antarx писал(а):Оно, конечно, получается сочетанием дисконнекта и релог много, но в таком случае бот довольно долго появляется в игре.
Давай-ка кое-что уточним. "Долго" - это сколько?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx »

piroJOKE
долго - это секунд 6. Весь процесс логина, выбора персонажей и всего остального с учётом пауз довольно долгий, а сильно уменьшать его не хотелось бы...

4epT
имеются ввиду всевозможные коммандеры.

по поводу функции удаления: я малость не понял, выходит ли оно вообще в чарселект :(
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

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

смотри кора грузится, доходит до окошка "charSelectScreen" мы это ловим и запускаем процедуру "pauseChar" (её ещё написать нада, ну там внутри может быть 1 строчка, типо пауза)

Далее ждём внешнего знака от другой коры (как?)

ну и собстна залогиневаемся:

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

sub loginChar {
my (undef, $args) = @_;
#Логинимся чаром в 0ом слоте
sendCharLogin($net,$chars[0]);
$timeout{'charlogin'}{'time'} = time;
##????зачем эта строчка:
$args->{return} = 1;
}
Дальше работает макрос, который кастит чувака и делает релог

Далее кора доходит до окошка "charSelectScreen" мы это ловим... ну и т.д.

ЗЫ: давай-ка по конкретнее какие именно ты имел в виду 3 плагина?
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Я наконец-то понял, чо вы тако делаете. Просто хотите паузу в логин воткнуть, ы?

Токо там есть одна делать. Пока клиент стоит на выборе чара, он посылает раз в N секунд серверу "я еще жив..." - вот этим надо озаботиться.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

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

забавный русский язык очепятаешь 2 буквы местами и получится новое слово и разбирай потом чё автар написать хотел :)

piroJOKE, вливайся :wink:

спс за инфу, по моим подсчётам клиент отсылает 1 раз в 10 сек пакет:
87 01 ## ## ## ##
(pJ: стёр ID из пакета...)

Заебалси я всё делать, но какой-то результат есть. Своял плагинчек pause_charSelect.pl. Он стопорит кору на окне выбора чара и делает паузу в 90 сек, причём каждые 10 сек отсылает пакет "х0187 6":

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

## Плагин тестировался на OpenKore 2.0.4 (SVN5979)
## Делаем паузу в окне выбора чара.
## Автор 4epT©
#####################################

package pause_charSelect;

use strict;
use encoding 'utf8';
use Plugins;
use Globals qw($accountID %config %timeout $messageSender);
use Log qw(message);
use Utils::Win32;
use Misc;

Plugins::register('pause_charSelect', 'Делаем паузу в окне выбора чара', \&onUnload);

my $hooks = Plugins::addHooks(['charSelectScreen', \&pauseChar, undef]);

sub onUnload {
	message "pause_charSelect plugin cleaning up\n", "system";
	Plugins::delHooks($hooks);
}

sub pauseChar {
	my (undef, $args) = @_;
	my ($time) = 90;
	for ( ; $time > 0; $time = $time-10) {
		message "Пауза $time сек..\n", "system";
		sleep 10;
		$messageSender->sendBanCheck($accountID);
	}
	Utils::Win32::playSound('sounds\fuzz.wav');
	message "Логинемся!!!\n", "system";
	$messageSender->sendCharLogin($config{char});
	$timeout{charlogin}{time} = time;
	$args->{return} = 1;
}
Нефига не понимаю зачем тут нужны строчки:
use Misc;
my (undef, $args) = @_;
$args->{return} = 1;
Но без них в игру входит тока со второго раза. Т.е. 90 сек ждём, потом пытаемся залогинеться, нас не пускают -> дисконнект, ждём 90 сек и нормально заходим..

Осталось придумать как пробудить кору. Тогда эти 90 сек можно заменить на "пока нет сигнала >> спим и отсылаем пакет каждые 10 сек"


А ещё я подумал что всё это зря делается. Если грамотно использовать опцию pauseMapServer, то мы также сделаем нужную нам паузу..
Ну зато можете поздравить меня с первым моим плагенчиком :twisted:


позже..

Потестил с "pauseMapServer 30" - облом, т.к. не посылаются пакеты "х0187 6"
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Это фигня, 4epT, мы ж гонимся за скоростью, а ты влепил sleep 10. Ну... и?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Antarx
Бывалый
Сообщения: 640
Зарегистрирован: Вс янв 07, 2007 5:56 am

Сообщение Antarx »

мда... оно работает, конечно, но только я в принципе не представляю, как из sleep 10 выходить.

плагины, блин, ну dccommander, о котором в плагинах висит моя тема, icqcommander varg'а, buscommander (или как-то так) на форуме ок. вполне себе работают, вот только как их подружить с твоим плагином без потери их функциональности.

PS Но всё же спасибо за помощь ;)
PPS А может всё же лучше зарегистрировать пару консольных команд?
PPPS А как перл реагирует на попытку запустить другой саб при запущенном предыдущем, и как можно один из них экстренно завершить?
Превосходство некоторых людей над окружающими одни считают несправедливостью, требующей уравнивания, другие - неполноценностью недовольных.
Выбор взгляда за Вами...
Изображение :)
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

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

piroJOKE, ну можно же придумать и 2-й цикл, который периодически будет проверять, скажем наличие "внешнего воздействия"

ну если не sleep, то что ещё может кору затормозить?
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

4epT
Надо разобраться, какой цикл работает при ai off + relog 999999 ---> и вот ему и отдавать управление...
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Ответить