Как уменьшить зону(радиус) атаки гомункула? [не решено]

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

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

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Ditmar
Энтузиаст
Сообщения: 93
Зарегистрирован: Вс дек 24, 2006 1:07 pm

Как уменьшить зону(радиус) атаки гомункула? [не решено]

Сообщение Ditmar »

Как сделать, что бы гомункул атаковал монстров, например в радиусе 10 клеток от стоящего алхимика и не забегал на охоту дальше.
Я так понимаю вопрос решает правкой файла Homunculus.pm, но разобраться оказалось в нём крайне тяжело.

В config.txt установлен параметр:
attackDistance 10

Я так понимаю в Homunculus.pm, отвечает за это этот кусочек:
} elsif ($target->{type} ne 'Unknown' && $attackSeq->{monsterPos} && %{$attackSeq->{monsterPos}}
&& distance(calcPosition($target), calcPosition($char->{homunculus})) <= $attackSeq->{attackMethod}{maxDistance}) {
# Monster is within attack range; stop moving
AI::Homunculus::dequeue;
AI::Homunculus::dequeue if (AI::Homunculus::action eq "route");
Правка calcPosition($char->{homunculus}) на calcPosition($char) не помогла.

Все равно частенько гомункул убегает из зоны видимости алхимика и алхимику приходиться топать за гомом, как ему приказывает блок "auto follow"

Так вот очень интересен ответ знающих людей, где я, и что пропустил?

Что значит {attackMethod} ?
Гость

Сообщение Гость »

Подойди к проблеме с другйо сороны ) Я просто удалил, чтобы хим за гомом бежал :)

PS А ты гомом играешь через Xkore? Или у тебя через консоль работает?
Ditmar
Энтузиаст
Сообщения: 93
Зарегистрирован: Вс дек 24, 2006 1:07 pm

Сообщение Ditmar »

Через консоль. Если удалить блок #auto follow, то гомункул забегает за предел и подвисает.
Еще там есть вариант когд гомункул too far и lost
Гость

Сообщение Гость »

А можно как-нить чтоб химик сидел в городе и гума кормил?(но лишь када у того сытость 11 и чтоб кормил 1 раз)
megabotovod
Энтузиаст
Сообщения: 55
Зарегистрирован: Чт мар 13, 2008 3:37 pm

Сообщение megabotovod »

Ну что, кто нибудь решил эту проблему?
А то на форуме ничего не нашел=((
kisloid
Энтузиаст
Сообщения: 142
Зарегистрирован: Пн дек 10, 2007 8:22 pm

Сообщение kisloid »

а меня бы устроил вариант аналогичный "Don't moove" в mirai, чтобы гом стоял с химом и никуда вообще не ходил, приманивая мобов болтами :)
megabotovod
Энтузиаст
Сообщения: 55
Зарегистрирован: Чт мар 13, 2008 3:37 pm

Сообщение megabotovod »

ну это палево по мойму.....
Fagot
Новичок
Сообщения: 4
Зарегистрирован: Сб мар 29, 2008 7:39 am
Откуда: МСК

Сообщение Fagot »

kisloid
а ты через ОК гома ставиш???
megabotovod писал(а):ну это палево по мойму.....
ничего непалевно а всё даже норм
Alekseer
Грамотный
Сообщения: 164
Зарегистрирован: Сб июн 21, 2008 1:43 am

Сообщение Alekseer »

на офе автокаст болтов звпрещён -)
I hear Thunder but there is no rain. This kind of Thunder breaks walls and brings pain.
VoLKAnO
Новичок
Сообщения: 8
Зарегистрирован: Вс сен 14, 2008 11:41 pm
Контактная информация:

Сообщение VoLKAnO »

боты на офе тоже кста-ти запрещены! :D
еее
kisloid
Энтузиаст
Сообщения: 142
Зарегистрирован: Пн дек 10, 2007 8:22 pm

Сообщение kisloid »

Fagot писал(а):kisloid
а ты через ОК гома ставиш???
через хкор1, по другому никак. а тот мой пост имеет в виду, что согласен почти на всё, лишь бы более менее нормально работал гом в обычном режиме коры (использовал какой-то аи), чтобы я мог несколько гомов запускать.. в хкор1 это не получается ведь )
kronas
Новичок
Сообщения: 12
Зарегистрирован: Сб мар 15, 2008 6:52 pm

Сообщение kronas »

Люди ну что кто нить решил проблему?
То что XKor1 работает без проблем ето понятно, но намного нужнее XKor0 так как вылетаю очень часто.
Я перековырял почти весь конф, радиус ну никак не уменьшается и при превышении клеток эдак 15ти (похрен даже что будет написано в Роуд Стэп гом на него с высокой колокольни какал :) ), хим резво бежит к гому до упора и потом обратно.
Сразу скажу, со скилами гома это несвязанно никак 100% уже проверенно тысячу раз.
П.С. Нубоноиды пишущие что прем и не прем давно не вылетают пишут полный БРЕД, всё до сих пор летабельно и даже очень.

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

Вот немного помыслил, но незнаю правильно или нет.
automacro himm {
monster all
call aioff
run-once 1
}
macro aioff {
do ai
}

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

П.С. Сильно не глумитесь просто самому интересно, работает такое или нет или гдето отшибка.

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

Вот что нашел интересного, интересна именно цыферка и то где она стоит.
# Determine which of these spots are snipable
my $best_spot;
my $best_dist;
for my $spot (@stand) {
# Is this spot acceptable?
# 1. It must have LOS to the target ($realMonsterPos).
# 2. It must be within $config{followDistanceMax} of
# $masterPos, if we have a master.
if (checkLineSnipable($spot, $realMonsterPos) &&
(distance($spot, $char->{pos_to}) <= 15)) {
# FIXME: use route distance, not pythagorean distance
my $dist = distance($realMyPos, $spot);
if (!defined($best_dist) || $dist < $best_dist) {
$best_dist = $dist;
$best_spot = $spot;

Я вот подумал а если ее изменить ну скажем на 9, что будет?
Аватара пользователя
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"
kronas
Новичок
Сообщения: 12
Зарегистрирован: Сб мар 15, 2008 6:52 pm

Сообщение kronas »

да не то, но что то очень близкое. всёравно ведь есть же какое то уравнение где прописана эта хрень. Но реально хим бежит загомом только если тот превышает барьер в 15 шагов

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

MAX_DISTANCE);
main::ai_route($field{name}, $x, $y, distFromGoal => $distFromGoal, attackOnRoute => 1, noSitAuto => 1);
AI::Homunculus::args->{lost_route} = 1 if (AI::Homunculus::action eq 'route');
message TF("Trying to find your homunculus at location %d, %d (you are currently at %d, %d)\n", $x, $y, $char->{pos_to}{x}, $char->{pos_to}{y}), 'homunculus';
}

вот неочень понятный кусочек. Я его лично понимаю так: Если дистанцыя превышена больше чем на РоутСтэп, либо РоутСтэп+1клетка свыше, то бежим за гомом?

Добавлено спустя 12 минут 32 секунды:

Походу сам Плаг имеет баг в этом деле и на нём всё стопорится. ведь по хорошему счёту у гома нужно уменьшить дистанцыю на 2 клетки и все проблемы пропадут.
Ещё раз повторяюсь реч не идёт об XKor1, в котором всё работает как часы.
П.С. Мог бы заплатить за исправленный плаг. Кому интересно стучите в ЛС. Условие одно, я проверяю и только после плачу, т.к. простым взглядом на код ничего не увидиш. Кому интересно стучим, кому не интересно решаем проблему все вместе тут.

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

Вот ещё кусочек, ну тут всё просто, этот кусок можно смело убивать т.к. лучше без него чем с ним. Т.к. даже АИ самого РО может так затупить и гом потеряется, имхо тут спасения нет.

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

# auto-follow
		} elsif (
			$AI::Homunculus::homun_AI == 2
			&& AI::action eq "move"
			&& !$char->{sitting}
			&& !AI::args->{mapChanged}
			&& !AI::args->{time_move} != $char->{time_move}
			&& !timeOut(AI::args->{ai_move_giveup})
			&& $homun_dist < MAX_DISTANCE
			&& (AI::Homunculus::isIdle
				|| blockDistance(AI::args->{move_to}, $char->{homunculus}{pos_to}) >= MAX_DISTANCE)
			&& (!defined AI::Homunculus::findAction('route') || !AI::Homunculus::args(AI::Homunculus::findAction('route'))->{follow_route})
		) {
			AI::Homunculus::clear('move', 'route');
			if (!checkLineWalkable($char->{homunculus}{pos_to}, $char->{pos_to})) {
				homunculus_route($char->{pos_to}{x}, $char->{pos_to}{y});
				AI::Homunculus::args->{follow_route} = 1 if (AI::Homunculus::action eq 'route');
				debug sprintf("Homunculus follow route (distance: %.2f)\n", $char->{homunculus}->distance()), 'homunculus';

			} elsif (timeOut($char->{homunculus}{move_retry}, 0.5)) {
				# No update yet, send move request again.
				# We do this every 0.5 secs
				$char->{homunculus}{move_retry} = time;
				# NOTE:
				# The default LUA uses sendHomunculusStandBy() for the follow AI
				# however, the server-side routing is very inefficient
				# (e.g. can't route properly around obstacles and corners)
				# so we make use of the sendHomunculusMove() to make up for a more efficient routing
				$messageSender->sendHomunculusMove($char->{homunculus}{ID}, $char->{pos_to}{x}, $char->{pos_to}{y});
				debug sprintf("Homunculus follow move (distance: %.2f)\n", $char->{homunculus}->distance()), 'homunculus';
			}
Осталось найти где ставится дистанцыя и выпрямить ей руки чтобы она рабьотала хотябы, а то в конфиге гом на неё ну никак не реагирует.
Ответить