поиск скоплений мобов на определенном участке(нужно ли?)

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

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

Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

поиск скоплений мобов на определенном участке(нужно ли?)

Сообщение Rumata »

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

то есть найти максимальное скопление мобов и вдарить по ним гластом так чтобы все здохли :)

написал небольшую подпрограмку

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

sub GENOCIDE {
	my $MobN = scalar(ai_getAggressives(1, 1));					# кол-во мобов в зоне видимости
	my $MobCount = $config{'MobCount'};						# кол-во мобов для срабатывания скила или спела
	return 0 if ($MobN < $MobCount);
	my $Rs = $config{'RadiusSkil'};						# радиус скила или спела
	my $Rcl = $config{'RadiusSight'};						# радиус макс края действия скила, если не задан = 20
	if (!$Rcl) {$Rcl = 20;}
	my $GmyPos = $char->{pos};
	my $Xleft;								# левый край конечного площади действия скила
	my $Xrght = ($GmyPos->{x} + $Rcl);						# правый край ....
	my $Yup = ($GmyPos->{y} + $Rcl);						# верхний край .....
	my $Ydown;								# нижний край ......
	my $search ;
	my $searchX;
	my $searchY;
	my $Gpos = $char->{pos_for};
						
	if (($GmyPos->{x} - $Rcl) >= 0) {
		$Xleft = ($GmyPos->{x} - $Rcl);
	} else {
		$Xleft = 0;
	}
	if (($GmyPos->{y} - $Rcl) >= 0) {
		$Ydown = ($GmyPos->{y} - $Rcl);
	} else {
		$Ydown = 0;
	}

	my @GmonsterIDs = ai_getAggressives(1, 1);

	for (my $iy = $Yup; $iy > ($Ydown+2*$Rs); $iy--) {				# $ix и $iy верхний-левый угол площади с радиусом $Rs
		for (my $ix = $Xleft; $ix < ($Xrght-2*$Rs); $ix++) {
			$Gpos->{x} = ($ix+$Rs);					# $pos->{x} и $pos->{y} - центр площади
			$Gpos->{y} = ($iy-$Rs);
			next if (!checkLineSnipable($GmyPos, $Gpos));			# следующая позиция площади если мы не можем попасть в эту
			my $MobIN = 0;						# кол-во мобов в данной площади
			for my $GmonsterID (@GmonsterIDs) {
				my $Gmonster = $monsters{$GmonsterID};
				next if (!checkMonsterCleanness($Gmonster));
				if (($Gmonster->{pos_to}{x} >= $ix)
					&& ($Gmonster->{pos_to}{x} <= (2*$Rs+$ix))
					&& ($Gmonster->{pos_to}{y} <= $iy)
					&& ($Gmonster->{pos_to}{y} >= ($iy-2*$Rs))) {
					$MobIN++;
				}
			}
			next if ($MobIN < $MobCount);
			next if ($MobIN <= $search);
			$search = $MobIN;
			$searchX = $Gpos->{x};
			$searchY = $Gpos->{y};
		}
	}
	return 0 if (!$search);
	return $searchX, $searchY;
}
вобчем если задать в конфиге
MobCount N, где N - минимальное кол-во мобов по которому мы вдарим
RadiusSkil N, где N - радиус действия скила или спела
RadiusSight N, где N - радиус макс края действия скила, если не задан = 20 (clientsight)

то данная подпрограмма для скажем определенного скила будет искать скопления мобов в поле видимости с условием что по ним мы можем выстрелить и что их кол-во >= MobCount (хотя она вообче будет искать самое максимальное скопление).

ну соответственно и вернет либо 0 если нет таких скоплений, либо координаты для испольхования скила\спела.

ниче не тестил, просто набросал пока сырую версию, если оно нужно нам в коре то займусь оптимизацией, если нет, то так и скажите :)
Последний раз редактировалось Rumata Вт окт 21, 2008 3:39 am, всего редактировалось 2 раза.
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Сообщение Kissa2k »

Отлично, только наверное лучше сделать это в виде плагина..
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Сообщение Rumata »

потер позор свой :)
Последний раз редактировалось Rumata Вт окт 21, 2008 9:31 pm, всего редактировалось 1 раз.
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Сообщение Rumata »

потер еще один позор свой :)
Последний раз редактировалось Rumata Вт окт 21, 2008 9:32 pm, всего редактировалось 1 раз.
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Сообщение Rumata »

вобчем все готово, работает по типу:

attackSkillSlot Arrow Shower {
GENOCIDE 1
GminMOB 3
Gradius 2
GmaxDIST 20

lvl 2
dist 20
sp > 12
inLockOnly 0
monsters Poring, Fabre, Pupa
maxCastTime 1
timeout 1
maxUses 10
}

с лучником то работает надо бы потестить на маге, естьу кого магопроизводный бот на время с любим дист спелом? верну :)



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

да и еще если у кого есть точные сетки (поле на которое распространяется удар) действия скилов и спелов (для града стрел, боулинга, брандиша , гаста и процчих) выложите здесь плиzz
Wak
Начинающий
Сообщения: 23
Зарегистрирован: Вт мар 18, 2008 5:26 pm
Контактная информация:

Сообщение Wak »

бот на время с любим дист спелом? верну
есть, в асю))) 465 261 600
If u lose the cake - u lose it all!~
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Сообщение Rumata »

спасибо позже стукну в аську, сервак отвиснет - потестю сначала еще немного в разных ситуациях, потом закину в плагин и вот потом уже напишу :)
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Сообщение Rumata »

народ, никогда не играл магаопроизводными и персов нет подбных щас, подскажите такие скилы по типу гаста и или вермилиона как у них выглядит площадь удара, например
для гаста написано Target: Area 9x9 - она круглая с диаметром 9, или это квадрат 9x9 где мы в центре (4 блока до каждого края)? угловые точки тоже входят в зону поражения?

ХХХХХХХХХ
ХХХХХХХХХ
ХХХХХХХХХ
ХХХХХХХХХ
ХХХХ@ХХХХ
ХХХХХХХХХ
ХХХХХХХХХ
ХХХХХХХХХ
ХХХХХХХХХ
Fury Fox
Энтузиаст
Сообщения: 102
Зарегистрирован: Сб июн 16, 2007 8:02 am

Сообщение Fury Fox »

В РО все квадратное, имхо. Вроде бы ты нарисовал правильно.
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Rumata
:)
Идеш на арену, берёш приста чтобы бедного подопытного отхиливал, или сам хилялся.
И начинаеш мерять.

Вообще, Fury Fox неправ. Есть скилы у которых площадь овальная, ГК например иммет площадь вообще левую.
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Сообщение Rumata »

потер, нашел решение
Rumata
Грамотный
Сообщения: 235
Зарегистрирован: Ср фев 14, 2007 10:52 am

Сообщение Rumata »

тему в мусор плиз, создаю тему в плагинах с готовым решением...
Ответить