Вот вытащил и handsFree плагина то что мне показалось похожим на проверку:
Код: Выделить всё
$count -= !($reach[$x][$y] = $field->isWalkable ($x, $y));
Модератор: 4epT
Код: Выделить всё
$count -= !($reach[$x][$y] = $field->isWalkable ($x, $y));
Тебе уже советовали поискать примеры использования eval'a в макросах. Ищешь, как какая-нибудь функция вызывается из макроса, потом смотришь, как та же функция вызывается в коде. Смотришь, чем отличается их вызов, делаешь соответствующие выводы.Святой Инквизитор писал(а):Но упорно не могу понять как это присобачить к эвалу и макросу в целом....
Код: Выделить всё
eval $::field->isWalkable(104, 224)
Код: Выделить всё
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
}