Online MUD игра АРДА
Общедоступные => Строительство и программы => Тема начата: Карина от 14.06.07, 18:17:34
-
В комнате А стоит чар.
Из комнаты Б в комнату А заходит неагрессивный моб.
Как ему напасть на чара?
Допустим, проверка mortsinarea покажет, что таки в комнате чар стоит,
но при этом $n остается неопределенной и mpkill $n не срабатывает.
Кроме того, неизвестно, сколько чаров стоит в комнате, если их несколько,
и непонятно на кого нападать.
Что делать? ::)
-
Песец. ;)
entry_prog 100
if isnpc($n)
mpkill $n
Проверяло. Все работает.
P.S. Или надо чтобы mob напал на какого-либо определенного человека? ;)
-
entry_prog 100
emote давит черного таракана как таракана!
mpadvance $n 2
c 'облако газа'
всплак
goto 10
say slayme
-
Проверяло. Все работает.
Странно, у меня не работает.
И странный ты алгоритм вообще приводишь.
if isnpc($n) true если $n - моб.
А мне надо напасть на чара.
if ispc($n) тоже не срабатывает.
Срабатывает, если чар приходит в комнату к мобу.
А мне надо еще если моб приходит в комнату к чару, чтоб етот моб етого чара тюкнул.
-
1. Вешаем entry_prog на mob'а. Программа будет срабатывать если mob войдет в другую комнату, в данном случае, ту, в которой находится $n.
2. if ispc($n). //Проверяем, если $n - игрок. В первом случае опечаталось, прошу прощения. ;)
3. mpkill $n. //Если проверка на $n прошла успешно, убиваем $n.
4. endif. //Конец.
Дней 5 назад писало подобную чушь, у меня все работало.
P.P.S.
Функция вызывается из move_char, отвечающее за передвижение в пространстве.
При передвижении выполняется последовательность отработки триггеров:
enrty_prog на моба (когда он передвигается).
enrty_prog на комнату.
greet_prog на моба (когда входят в его локацию).
greet_prog на предмет.
Триггер на моба выполняет функция mprog_entry_trigger.
-
Карина, тебе нужна переменная $r:
if isdefined($r)
mpkill $r
endif
Правда, проверка isdefined в демо-версии пока отсутствует. Вместо нее можно попробовать проверку if mortcount(0)>0, хотя этот вариант хуже (не вдаваясь в подробности). Если неясно заранее, что будет значить $n, $r и т.п., можно ввести в программу для отладки строки типа mpecho N1 - $N1
mpecho R1 - $R1
-
isdefined
В первый раз слышу о такой.
if mortcount(0)>0
Зачем?.. Переменная $r уже подразумевает под собой то, что в комнате находится хотя бы один игрок.
P.S. С переменной $r полностью согласно.
-
О, $r я проглядела :)
Лучшим вариантом в моем случае будет
if mortsinarea($i)
mpkill $r
endif
Но только mortsinarea($i) пока тоже в демке не работает: [*****] BUG: Unknown ifcheck :(
-
Мда. Зачем все усложнять? ;)
mortinarea
проверка: есть ли в игровой зоне игрок с указанным именем (проверяет только смертных) [уровень игрока меньше 51].
$i
Выдает имя моба на котором висит программа, первое из списка в поле Name.
P.S. А вообще надоело смеяться. ;)
-
если я не ошибась - то на сайте арды был хелп по этому поводу, и если стоит у чара флаг агр - то велосипед изобретать ВООБЩЕ не нужно. а вот проверка по поводу >51 - это вообще жесть :) имма и так не убьешь :)
-
карина, нифига не въеду, нафига тебе это "если"? не проще $_ или как там в арде?