PDA

Просмотр полной версии : Двигаться в свободную клетку


NewBotie123
01.04.2013, 07:56
Нашел плагин http://www.rofan.ru/viewtopic.php?t=6450
позволяет определить свободную точку вокруг чара (полезно для варпа)

Задача стоит немного другая:
На бг толпы народу нужно подойти к неписи (в зону видимости) на свободную клетку

Через обычный move быстро палят, занимая клетку где ты был в прошлый раз. Вот если бы можно было сначала проверить свободная ли клетка на которую хочешь встать, а потом уже move...(определить свободную не вокруг чара, а вокруг точки назначения, если она занята)

http://i047.radikal.ru/1304/6d/8fbc2ccbb542.jpg

Может не этим плагином, а просто вставать "на рандомную в зоне" есть способ?

4epT
01.04.2013, 09:29
можно конечно..
там расчёт отталкивается от координат чара ($x = $char->{pos}{x}) их надо заменить на произвольные координаты (которые вводятся с клавиатуры)

NewBotie123
01.04.2013, 09:54
Если я правильно понял, то для 120 70 будет так:

for ($x = 120 -$spread; $x <= 120 + $spread; $x++) {
for ($y = 70 -$spread; $y <= 70 + $spread; $y++) {

потом в макросе do free move ~

Поправь если не так))

но для этого бот должен видеть клетку вокруг которой он ищет свободную?
поэтому придется макросом move ~ только после поякления конечной точки в зоне видимости?

4epT
01.04.2013, 11:30
ну да, придётся сначала подойти на безопасное расстояние (чтобы увидеть нужное нам поле) и потом уже запускать работу плагина..

1. а вас там чё, так прям палят?
2. что если сделать тупой рандом?
3. если бот встанет на клетку с другим чуваком, то он не отойдёт в сторонку? (как это сделано на офе)

NewBotie123
01.04.2013, 11:58
1. Есть народ принципиальный на иРО)))
2. Подскажи как заменить тупой move в макросе))
3. В том-то и дело, что бот пытается влезть в клетку и несколько раз бегает туда-сюда: иногда 1-2 раза, но бывает что секунд 30 так бегает палится))и пока бегает не переходит на выполнение следующей строки макроса.

PS по картинке видно, что область видимости неписи напоминает букву Ш
её можно разбить на прямоугольники, только не придумаю как бы это использовать... с lockmap`ом разве что заморочиться.

ps боты в автоматической режиме делают все, но проблему "никуда не бегать" решил через follow 1 за несуществующим ником.

4epT
01.04.2013, 13:05
2. Подскажи как заменить тупой move в макросе))
это будет тот же move, только с рандомными координатами, типа:
do move @rand(x1,x2) @rand(y1,y2) (в синтаксисе могу напутать, пишу на память (http://ragbot.ru/wiki/%D0%9C%D0%B0%D0%BA%D1%80%D0%BE-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD))

ps боты в автоматической режиме делают все, но проблему "никуда не бегать" решил через follow 1 за несуществующим ником.
можно же просто отключить ему "route randomWalk" или "route randomWalk inTown"

Как тебе такой вариант:
automacro move1 {
условия при который надо топать к НПЦ
call {
do move 120 70 bat_room
}
}

automacro move2 {
location bat_room 118 72 122 68
timeout 1
call {
тут запускаем плагин поиска свободных координат
}
}

общая идея такая:
1. мы идём на координаты в bat_room на координаты 120 70
2. как только мы оказываемся где-то рядом с этими координатами (в данном случае на расстоянии двух клеток), то срабатывает наш плагин по поиску свободной клетки.
3. благополучно переходим на свободную клетку