itemsTakeAuto_new - брать лут, не стоя на нем, а рядом с ним

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

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

Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

itemsTakeAuto_new - брать лут, не стоя на нем, а рядом с ним

Сообщение Cooot »

Перл, к сожалению, изучаю только несколько дней, поэтому не в состоянии справится сам с поставленной проблемой.

Заметил, что при itemsTakeAuto_new 1 бот (арчер) подбирает лут, становясь на ту же клетку, где лежит лут. Поискал в исходниках место, отвечающее за это, если не ошибаюсь, вот из CoreLogic.pm часть кода:

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

elsif ($dist > 1) {
			if (!$config{itemsTakeAuto_new}) {
				my (%vec, %pos);
				getVector(\%vec, $item->{pos}, $myPos);
				moveAlongVector(\%pos, $myPos, \%vec, $dist - 1);
				move($pos{x}, $pos{y});
			} else {
				my $pos = $item->{pos};
				message TF("Routing to (%s, %s) to take %s (%s), distance %s\n", $pos->{x}, $pos->{y}, $item->{name}, $item->{binID}, $dist);
				ai_route($field{name}, $pos->{x}, $pos->{y}, maxRouteDistance => $config{'attackMaxRouteDistance'});
			}

		}
Что здесь можно поправить, чтобы бот не доходил 1-2 клетки до лута?

___

(pJ: чуток подправил заголовок)
Изображение
Аватара пользователя
Aib0
Бывалый
Сообщения: 961
Зарегистрирован: Чт ноя 16, 2006 12:50 am
Контактная информация:

Сообщение Aib0 »

my $pos = $item->{pos};
Тут фиксить, я думаю.
Ну или можно тут
$pos->{x}, $pos->{y}
Wtf is "OpenKore"?

"What we're dealing with here is a total lack of respect for the law"
yonah
Грамотный
Сообщения: 161
Зарегистрирован: Ср ноя 15, 2006 9:49 pm

Сообщение yonah »

да вроде идеально работает
Аватара пользователя
Aib0
Бывалый
Сообщения: 961
Зарегистрирован: Чт ноя 16, 2006 12:50 am
Контактная информация:

Сообщение Aib0 »

Короче, тупая версия:
my $pos = $item->{pos};
+ if($pos->{x} > $myPos->{x})
+ {
+ $pos->{x} = $pos->{x}-2; /* 2 - это дистанция сбора лута*/
+ } else {
+ $pos->{x} = $pos->{x}+2;
+ }
+ if($pos->{y} > $myPos->{y})
+ {
+ $pos->{y} = $pos->{y}-2; /* 2 - это дистанция сбора лута*/
+ } else {
+ $pos->{y} = $pos->{y}+2;
+ }
message TF("Routing to (%s, %s) to take %s (%s), distance %s\n", $pos->{x}, $pos->{y}, $item->{name}, $item->{binID}, $dist);
ai_route($field{name}, $pos->{x}, $pos->{y}, maxRouteDistance => $config{'attackMaxRouteDistance'});
Тупо, по-индусски, но в 11 вечера мозга нету уже. Ну и не тестилось, да
Wtf is "OpenKore"?

"What we're dealing with here is a total lack of respect for the law"
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

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

я как понил это типо для арчеров которые где-то убили моба, а дойти не могут за лутом, т.к. там считается какой-то вектор.. (может координата считается неверно) ну вот мы типо и посылаем серверу идти на координату в которой валяется лут
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
yonah
Грамотный
Сообщения: 161
Зарегистрирован: Ср ноя 15, 2006 9:49 pm

Сообщение yonah »

невозможная ситуация (стрелы бьют только по прямой)
Klinik
Грамотный
Сообщения: 307
Зарегистрирован: Сб фев 16, 2008 1:42 am
Контактная информация:

Сообщение Klinik »

можно убить кавонить через обрыв например или если ты и моб на разных уровнях земли, на некоторых картах такое прокатывает
Изображение
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Не-не-не!
Расстояние 1 клетка, НЕ ДВЕ! Это важно!
Если оставить две, будут проблемы на офе (имхо!).

ЗЫ: И внимательно посмотреть, как это выглядит в клиенте.
В т.ч., как выглядит подход с взятием по диагонали.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Аватара пользователя
Aib0
Бывалый
Сообщения: 961
Зарегистрирован: Чт ноя 16, 2006 12:50 am
Контактная информация:

Сообщение Aib0 »

ПЖ, можно считать и вектор до итема, но лень)
Wtf is "OpenKore"?

"What we're dealing with here is a total lack of respect for the law"
Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Сообщение Cooot »

Aib0, если исправить дистанцию сбора лута на единицу, то прекрасно работает. Большое спасибо. Теперь бот не доходит одну клетку до лута и берет его оттуда, выглядит как если бы ты играл руками через клиент.
Изображение
Аватара пользователя
Aib0
Бывалый
Сообщения: 961
Зарегистрирован: Чт ноя 16, 2006 12:50 am
Контактная информация:

Сообщение Aib0 »

Гуд
Wtf is "OpenKore"?

"What we're dealing with here is a total lack of respect for the law"
Ответить