телепорт бота при касте моба / получение координат бота

Дополнения к OpenKore, расширяющиее её функциональность, называются плагинами.

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

Кроот
Энтузиаст
Сообщения: 85
Зарегистрирован: Пт июл 27, 2007 7:28 pm

телепорт бота при касте моба / получение координат бота

Сообщение Кроот »

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

automacro mystun {
$x = @eval($::char->{pos}{x})
$y = @eval($::char->{pos}{y})
console /Monster (.*) is casting Stun Attack on location ($x, $y)/
call {
do tele
}
#run-once 1
}
собственно описание идеи, хочеться чтобы в тот момент когда меня пытается застунить моб (стун эт координаты $x $y), бот бы телепортировался, проблема со считывание координат бота. что я делаю нетак?
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Вообще-то в Коре есть "авоид" скиллов мобов. См. монкортролл. Но, там Кора не телепортируется, а отходит от точки каста.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Кроот
Энтузиаст
Сообщения: 85
Зарегистрирован: Пт июл 27, 2007 7:28 pm

Сообщение Кроот »

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

Сообщение piroJOKE »

Кроот
Я не думаю, что у тебя х и у вычисляются вообще. :twisted: Оно так не умеет.

Скорее надо поставить реакцию на скилл, а координаты считать уже в теле макроса. Но это (может быть) тоже будет лажа, потому што тогда они (координаты) уже могут измениццо. Впрочем +- лапость спасает.
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"
Кроот
Энтузиаст
Сообщения: 85
Зарегистрирован: Пт июл 27, 2007 7:28 pm

Сообщение Кроот »

хм..
ПЖ про то что она так неумеет сомневаюсь, макрос пишу наерное первый раз оО, пример с вычислением координат дернул из макроса "варп для гилды" 4ерта, теперь хотелось бы узнать конкретно что значат строчки

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

$::char->{pos}{y}
как понимаю именно это и снимает координаты бота

Аиб0
записать вычисления в исполняемую часть макроса нельзя, т.к. мне сначала надо знать куда кастуется стун, а для этого я и пытаюсь вычислить координаты бота, а по твоей идее все бутет происходить наоборот
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

Кроот писал(а):записать вычисления в исполняемую часть макроса нельзя, т.к. мне сначала надо знать куда кастуется стун
Можно использовать в исполняемой части макроса оператор goto и метки, и таким образом решать, надо ли телепортироваться(посмотри макрос товарища мантикоры - там полно таких примеров).
Аватара пользователя
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"
Кроот
Энтузиаст
Сообщения: 85
Зарегистрирован: Пт июл 27, 2007 7:28 pm

Сообщение Кроот »

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

automacro mstun {
console /Attack on location ($x, $y)/
	call {
	if $x = @eval($::char->{pos}{x}) go to xok
	go to notmy
	:xok
	if $y = @eval($::char->{pos}{y}) go to yok
	go to notmy
	:yok
	pause 0.5
	do tele
	:notmy
	}
	#run-once 1
}
если ты про это то непашет, как понимаю реакции на консоль нету т.к. по мнению коры там херь какаято
а вопрос такой, возможноли вычислять координаты перса в одном макросе, спецом предназначеным для вычисления, и уже на ранее вычесленным данным пытаться составить второй макрос с реакцией консоли на расчитаные координаты, переноситсяли $X $Y из одного макроса в другой?
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

Кроот писал(а):

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

automacro mstun {
console /Attack on location ($x, $y)/
	call {
	if $x = @eval($::char->{pos}{x}) go to xok
	go to notmy
	:xok
	if $y = @eval($::char->{pos}{y}) go to yok
	go to notmy
	:yok
	pause 0.5
	do tele
	:notmy
	}
	#run-once 1
}
если ты про это то непашет, как понимаю реакции на консоль нету т.к. по мнению коры там херь какаято
Фуф, какой ужос :D .

1).Реакция на консоль - ну дак пропиши там то, что тебе надо(т е то, что пишется в консоли именно в этом случае)
Как я понимаю, это что-то вроде:
Monster Wolf (0) is casting Ground Attack on you (time 500ms)
Ну дык и напиши:
console /Monster Wolf .* is casting Ground Attack on you.*/
А то пишешь какой-то бред...

2).run-once и release пропиши уж, а то врядли работать будет...

3.
if $x = @eval($::char->{pos}{x}) go to xok
ужос....
а) все условие оператора if надо писать в скобках.
if (условие) goto метка
б)проверка условия на равенство, надо писать == а не =
в)оператор goto пишется слитно.
Кроот
Энтузиаст
Сообщения: 85
Зарегистрирован: Пт июл 27, 2007 7:28 pm

Сообщение Кроот »

[Jan 1 00:50:15 2008.49] Monster Wolf (0) is casting Stun Attack on location (269, 261) - (time 1500ms)
тут еще всякая инфа типа "а нас ударил этот"
[Jan 1 00:50:17 2008.99] [dist=1] Monster Wolf (0): *$!@#*
[Jan 1 00:50:17 2008.60] [ 98/ 16] Monster Wolf(0) uses Stun Attack on you - Dmg: 227 (delay 7.2)
вот кусок из лога, если реагировать на консоль по твоему методу то винговаться будет позно т.к. стун уже получен, недумаешь что надо пытаться сваливать в момент када на тебя идет каст, нэ?

про арфографические ошибки полностью согласен, косячу епт(
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Сообщение vit »

Кроот писал(а):
[Jan 1 00:50:15 2008.49] Monster Wolf (0) is casting Stun Attack on location (269, 261) - (time 1500ms)
тут еще всякая инфа типа "а нас ударил этот"
[Jan 1 00:50:17 2008.99] [dist=1] Monster Wolf (0): *$!@#*
[Jan 1 00:50:17 2008.60] [ 98/ 16] Monster Wolf(0) uses Stun Attack on you - Dmg: 227 (delay 7.2)
вот кусок из лога, если реагировать на консоль по твоему методу то винговаться будет позно т.к. стун уже получен, недумаешь что надо пытаться сваливать в момент када на тебя идет каст, нэ?

про арфографические ошибки полностью согласен, косячу епт(
Гыг, а я те про что писал то? Разве не именно про то, когда каст идет? :)
vit писал(а):1).Реакция на консоль - ну дак пропиши там то, что тебе надо(т е то, что пишется в консоли именно в этом случае)
Как я понимаю, это что-то вроде:
Monster Wolf (0) is casting Ground Attack on you (time 500ms)
Ну дык и напиши:
console /Monster Wolf .* is casting Ground Attack on you.*/
P.S:Короче, свой макрос напишешь сам, он элементарный(еще доку по макросам тебе было бы не плохо перечитать хорошенько).
Кроот
Энтузиаст
Сообщения: 85
Зарегистрирован: Пт июл 27, 2007 7:28 pm

Сообщение Кроот »

млин Вит, ну глянь повнимательнее)
is casting Stun Attack on location
када идет каст, в этот момент и должен винговаться,
uses Stun Attack on you
када стун собственно состаялся, винговаться незя в стуне, смерть бота
вот загвоздка и состоит в том чтоб уловить момент каста стуна в мои координаты,
ну и впринципе
сам вопрос каста в нашего перса/ нашего моба, он много где еще может быть применим поэтому мне и охота расковырять вот эту строчку

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

console /bla bla bla on location ($x, $y)/
чтоб автомакрос запускался, када нас удволетворяют координаты
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Кроот
Еще раз. Либо делай плагин (но ты его не сделаешь), либо сначала лови в макросе факт каста скилла "bla bla bla on location", а внутри тела макроса проверяй х, у ("на меня ли это скастовано?").

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

Короче. Фигня это всё!

Первое, что следует сделать, это испытать опцию skillcancel в файле mon_control.txt. Возможно, этого будет предостаточно.

Если этого окажется недостаточно, используем эту же функцию, но переделываем ее работу. Вот это место:

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

		# Skill area casting -> running to monster's back
		my $ID;
		if ($dist > 0 && AI::action eq "attack" && ($ID = AI::args->{ID}) && (my $monster2 = $monstersList->getByID($ID))) {
				{........}
		}
Весь код {........} выкидываем, заменяем его на нечто вроде Commands::run('tele');

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

Кстати, там рядом есть заглушка для подлючения плагина, Plugins::callHook('is_casting', ..... ); ну, это если всё это оформить по уму, внешним плагином.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid »

Кроот
Код:
console /bla bla bla on location ($x, $y)/
Как ты себе это представляешь? Это эе регэксп, регулярное выражение! Срочно читать памятку по регекспам! Не сработает никогда =)
viewtopic.php?t=1302
И к тому же тебе так делать не нужно.
Но можно:
Monster (.*) is casting (.*) on location \((\d+), (\d+)\) что то в этом роде.

piroJOKE

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

Вот, например, так:

automacro Heaven {
spell Heaven's Drive
exclusive 1
call {
log This is a cast on me! Im at $.pos
do tele
do c Hehe
log Now Im at $.pos
}
}

П.С. Тут было мое ворчание и нудеж - все погрызено злым сусликом!
Ответить