Проверка - свободна ли клетка в макросах [решено]

Всё, что касается макро-плагина.

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

Правила форума
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
Аватара пользователя
Святой Инквизитор
Грамотный
Сообщения: 455
Зарегистрирован: Вт окт 28, 2008 3:57 am
Сервер RO:: DarkRO
Откуда: Далёкая и тёмная страна Украина
Контактная информация:

Проверка - свободна ли клетка в макросах [решено]

Сообщение Святой Инквизитор »

Так как плагин handsFree пока не доработан решил просто присобачить проверку на свободную клетку к макросу...

Вот вытащил и handsFree плагина то что мне показалось похожим на проверку:

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

$count -= !($reach[$x][$y] = $field->isWalkable ($x, $y));
Но упорно не могу понять как это присобачить к эвалу и макросу в целом....
Последний раз редактировалось Святой Инквизитор Пт дек 19, 2008 3:33 am, всего редактировалось 1 раз.
Изображение Изображение
Настрою конфиг, напишу макрос - не дорого.
Стучать в асю (есть в профиле).
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Re: Проверка - свободна ли клетка в макросах

Сообщение vit »

Святой Инквизитор писал(а):Но упорно не могу понять как это присобачить к эвалу и макросу в целом....
Тебе уже советовали поискать примеры использования eval'a в макросах. Ищешь, как какая-нибудь функция вызывается из макроса, потом смотришь, как та же функция вызывается в коде. Смотришь, чем отличается их вызов, делаешь соответствующие выводы.
Аватара пользователя
Святой Инквизитор
Грамотный
Сообщения: 455
Зарегистрирован: Вт окт 28, 2008 3:57 am
Сервер RO:: DarkRO
Откуда: Далёкая и тёмная страна Украина
Контактная информация:

Re: Проверка - свободна ли клетка в макросах

Сообщение Святой Инквизитор »

vit
Ладно.. вот нашёл $field->isWalkable($x, $y) Но как это преобразить в эвале не знаю!!!
Насколько я понял $field это название карты(путь к карте)... но как это присобачить к эвалу додуматься не могу... подскажите опытные люди...

Пробовал так @eval(Field::isWalkable($randx, $randy)) но не работает(

Добавлено спустя 6 минут 15 секунд:
попытка №2:
@eval($.map->@eval(Field::isWalkable($randx, $randy)))
попытка №3:
@eval($.map->Field::isWalkable($randx, $randy))

Добавлено спустя 1 минуту 48 секунд:
Попытка №4 (что граничит с маразмом):
@eval(Field::$.map->isWalkable($randx, $randy))

Добавлено спустя 1 минуту 56 секунд:
Попытка №5 (ещё один маразм):
@eval(Field::$field->isWalkable($randx, $randy))
Изображение Изображение
Настрою конфиг, напишу макрос - не дорого.
Стучать в асю (есть в профиле).
vit
Бывалый
Сообщения: 624
Зарегистрирован: Вс мар 25, 2007 9:18 pm
Сервер RO:: localhost
Откуда: Санкт-Петербург

Re: Проверка - свободна ли клетка в макросах

Сообщение vit »

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

eval $::field->isWalkable(104, 224)
Там же пишется, какая ошибка в эвале. Из нее можно понять, в чем проблема...
Аватара пользователя
Святой Инквизитор
Грамотный
Сообщения: 455
Зарегистрирован: Вт окт 28, 2008 3:57 am
Сервер RO:: DarkRO
Откуда: Далёкая и тёмная страна Украина
Контактная информация:

Re: Проверка - свободна ли клетка в макросах

Сообщение Святой Инквизитор »

Уря Уря!!! Буду знать на будущее... Огромное спасибо...!!!

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

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

automacro yggbeat1 {

	map prt_maze03
	notMonster Baphomet Jr
	run-once 1
	priority 5
	exclusive 1
	call beat1
}

macro beat1 {
		$myx = @eval($::char->{pos}{x})
		$myy = @eval($::char->{pos}{y})
:prev
		$randx = $myx  + @random("-3", "-2", "-1", "0", "1", "2", "3")
		$randy = $myy  + @random("-3", "-2", "-1", "0", "1", "2", "3")
		$bool1 = @eval (Misc::checkLineSnipable ({x => $myx, y => $myy}, {x => $randx, y => $randy}))
		$bool3 = @eval($::field->isWalkable($randx, $randy))
		log $bool3

		if ($bool1 != 1) goto prev
		if ($bool3 != 1) goto prev

		do sl 79 @eval($randx) @eval($randy) 10
		do c @warp prt_maze03
		release yggbeat1
}

automacro yggbeat2 {

	map prt_maze03
	monster Baphomet Jr
	run-once 1
	priority 5
	exclusive 1
	call beat2
}

macro beat2  {
		$mobx = @arg ("$.lastMonsterPos", 1)
		$moby = @arg ("$.lastMonsterPos", 2)
		$myx = @eval($::char->{pos}{x})
		$myy = @eval($::char->{pos}{y})
		$bool1 = @eval (Misc::checkLineSnipable ({x => $myx, y => $myy}, {x => $mobx, y => $moby}))
		$bool2 = @eval (Utils::distance({x => $myx, y => $myy}, {x => $mobx, y => $moby}))

		if ($bool1 != 1) goto nextstep
		if ($bool2 > 6) goto nextstep
		do sl 79 @eval($mobx) @eval($moby) 10
		pause 1
		goto warp
:nextstep
		log Can't reach the target!!!!
:prev
		$randx = $myx  + @random("-3", "-2", "-1", "0", "1", "2", "3")
		$randy = $myy  + @random("-3", "-2", "-1", "0", "1", "2", "3")
		$bool1 = @eval (Misc::checkLineSnipable ({x => $myx, y => $myy}, {x => $randx, y => $randy}))
		$bool3 = @eval($::field->isWalkable($randx, $randy))
		log $bool3

		if ($bool1 != 1) goto prev
		if ($bool3 != 1) goto prev

		do sl 79 @eval($randx) @eval($randy) 10
:warp
		do c @warp prt_maze03
		release yggbeat2
}
Тему Под Гриф решено!
Изображение Изображение
Настрою конфиг, напишу макрос - не дорого.
Стучать в асю (есть в профиле).
Ответить