Страница 1 из 7

Пьяная походка - Drunked walking / вычисление точки встречи

Добавлено: Вт май 15, 2007 5:19 pm
Click
Route.pm
$self->{new_x} = $self->{solution}[$self->{index}]{x};
$self->{new_y} = $self->{solution}[$self->{index}]{y};

###############################################################
# Drinked walking
# by Click and kLabMouse
###############################################################
# Config options:
# # Enable drinked randowm walking
# route_randomWalk_drinked 1
# # How much beers bot allready drinked
# route_randomWalk_how_much_drinked 3
###############################################################
if (($config{route_randomWalk_drinked})&&($stepsleft > 2)&&(!AI::inQueue("ai_follow","ai_partyfollow","ai_items_take","ai_skillUse","ai_skillUse2","attack","gather","sit","stand","take"))) {
my $pjanostj = $config{route_randomWalk_how_much_drinked};
my @rectBlock = calcRectArea2($self->{new_x}, $self->{new_y}, $pjanostj, 0);
my $blockCount = scalar(@rectBlock);
my $loopCount = 0;
my $new_pos;
do {
$new_pos = $rectBlock[int(rand($blockCount))];
$loopCount++;
} while ((!$field->isWalkable($new_pos->{x}, $new_pos->{y})
|| !checkLineWalkable($pos, $new_pos))
&& ($blockCount > $loopCount));

$self->{new_x} = $new_pos->{x};
$self->{new_y} = $new_pos->{y};
}
###############################################################
# Drinked walking end
###############################################################

# But first, check whether the distance of the next point isn't abnormally large.
# If it is, then we've moved to an unexpected place. This could be caused by auto-attack,
# for example.
my %nextPos = (x => $self->{new_x}, y => $self->{new_y});
Эти строчки добавить в конфиг:
route_randomWalk_drinked 1
route_randomWalk_how_much_drinked 3
рекомендуемые значения route_randomWalk_how_much_drinked 2 или 3

PS: В идеале "$stepsleft > 1", но сильно увеличивается пляска вокруг моба, поэтому рекомендую 2 или 3.

PPS: Можно конечно попробовать "$stepsleft > 1" заменить на условие "если в аи нет атаки"

Добавлено: Вт май 15, 2007 5:46 pm
piroJOKE
Клик, я это пожалуй все-таки в "идеи" засуну.

Добавлено: Вт май 15, 2007 6:23 pm
lirikpl
говорим спасибо:мыше,клику оба приложили достаточно усилий и бессоных ночей.
остается только атаку исправить..самое сложное блин))))
и тогда фига ботика отличишь так просто :twisted:
а на данный момент, блудят все как человеки,а ханты еще и атакуют на дистанции,получаем человекоподбного ханта))))

Добавлено: Вт май 15, 2007 8:26 pm
Exeller
Куды это дело сувать то.....расширение у него "pm" а не "pl" .

Добавлено: Вт май 15, 2007 8:33 pm
lirikpl
там написано Route.pm

Добавлено: Вт май 15, 2007 8:38 pm
Exeller
Ну Route.pm вопрос от этого не изменился...... :bc

Добавлено: Вт май 15, 2007 10:42 pm
Click
ищем в том файле строчки
$self->{new_x} = $self->{solution}[$self->{index}]{x};
$self->{new_y} = $self->{solution}[$self->{index}]{y};

После них вписывает код патча
###############################################################
# Drinked walking
# by Click and kLabMouse
###############################################################
# Config options:
# # Enable drinked randowm walking
# route_randomWalk_drinked 1
# # How much beers bot allready drinked
# route_randomWalk_how_much_drinked 3
###############################################################
if (($config{route_randomWalk_drinked})&&($stepsleft > 2)&&(!AI::inQueue("ai_follow","ai_partyfollow","ai_items_take","ai_skillUse","ai_
.....
.....
###############################################################
# Drinked walking end
###############################################################

А дальше опять продолжается тело файла
# But first, check whether the distance of the next point isn't abnormally large.
# If it is, then we've moved to an unexpected place. This could be caused by auto-attack,
# for example.
my %nextPos = (x => $self->{new_x}, y => $self->{new_y});


Ну да я конечно согласен, что нужно сильно подумать, чтоб разобраться как это вставить, темболее если расширение не pl

Добавлено: Вт май 15, 2007 11:21 pm
kLabMouse
киирр
ГГг. На щёт атаки моба. В процесе. Правда я сильно подзабыл геометрию, поетому очень сложно реализовать всё. Но думаю найдутся умельцы которые помогут.

В общем: Задача очень проста на первый взгляд: Есть тогка где щас моб, есть точка куда движется моб, есть его скорость. Есть точка где стоим мы, есть наша скорость движения. Найти точку сопрекосновения с прямой движения моба.
В общем, всё бы было просто. Но я паока только нарыл как найти синус угла движения к мобу, но как найти точку соприкосновения пока не понял.


Поетому, кто может. Добро пожаловать.

Добавлено: Ср май 16, 2007 12:17 am
piroJOKE
КМ, я немного с Кликом побеседовал на эту тему, имхо что-то вы загибаете опять не то.
Предположим, моб агрессивный. Разве он не изменит свою траекторию движения, покуда ты к нему будешь подходить? :(

Добавлено: Ср май 16, 2007 12:50 am
kLabMouse
piroJOKE
В общем Да, но и с етом можно совладать

Добавлено: Ср май 16, 2007 12:19 pm
miniBot
piroJOKE писал(а):Предположим, моб агрессивный. Разве он не изменит свою траекторию движения, покуда ты к нему будешь подходить?
kLabMouse писал(а):В общем Да, но и с етом можно совладать
С этим совладать нужно сначала, потомучто плясок больше именно с агрессорами

Добавлено: Ср май 16, 2007 12:22 pm
piroJOKE
Это самое... "пляски" у нас ваще где-то в другой теме, уже были. И под сабж они не сильно-то и подходят. :)

По сабжу... походка не понравилось. Прикольно конечно, но не то, что хотелось бы. Ну мож для суппорта оно и неплохо, а для одиночки... выглядит странно.

Добавлено: Ср май 16, 2007 6:58 pm
lirikpl
а какие пляски то??стандартный бот атакует просто повторяя движения моба,то есть топая по его стопам,если он переместился естественно,с теми кто на месте все шоколадно.,а выскакиваний из толпы как раньше больше нет,вот надо избежать этого преследования моба и как ггрил мышь,найти точку соприкосновения атаки.
ps походка отличная,уж не как стандартный ботяра по рельсам в депо следует

Добавлено: Ср май 16, 2007 11:11 pm
kLabMouse
киирр писал(а):походка отличная,уж не как стандартный ботяра по рельсам в депо следует
Вот именно того, чтоб не топал как рельсам мы и добивались.

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

Хотя в движения пяного водителя оно очень даже хорошо вписалось, главное не давать ему пить много пива, иначе будет выглядеть как-бы пользователь вообще не знает куда собрался идти.

Добавлено: Ср май 16, 2007 11:35 pm
lirikpl
kLabMouse писал(а):главное не давать ему пить много пива, иначе будет выглядеть как-бы пользователь вообще не знает куда собрался идти.
гг на 4+ он начинает иногда обратно идти,смешно в городе особенно,типо идет идет,аа нее пойду обратно,не лучше туда.. Ик аа. где же ларек то?
1-3 оптимально,в общем
видел бы ты те первые идейные версии...после которых он не хотел по нормальной траектории ходить,то есть ходьба замыкалась и он по небольшому кругу ходил,соответственно не лута ни фига,ток вайпоинтами типо стэп сэпэктора можно было выпрямить :o брр