Форум online MUD игры АРДА
22.06.18, 14:05:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости:
 
   Начало   Помощь Поиск Календарь Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как определить $n ?  (Прочитано 7093 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Карина
Завсегдатай
*

Карма: 2
Офлайн Офлайн

Сообщений: 77


Здравствуйте, я ваша тётя!


« : 14.06.07, 18:17:34 »

В комнате А стоит чар.
Из комнаты Б в комнату А заходит неагрессивный моб.
Как ему напасть на чара?

Допустим, проверка mortsinarea покажет, что таки в комнате чар стоит,
но при этом $n остается неопределенной и mpkill $n не срабатывает.
Кроме того, неизвестно, сколько чаров стоит в комнате, если их несколько,
и непонятно на кого нападать.

Что делать?  Roll Eyes
Записан

Ваша тётя
Maikroft
Братство Ронинов
Герой
****

Карма: -38
Офлайн Офлайн

Сообщений: 2063


He B Ce6e


« Ответ #1 : 14.06.07, 18:29:32 »

Песец. ;)

Цитировать
entry_prog 100

if isnpc($n)
mpkill $n

Проверяло. Все работает.


P.S. Или надо чтобы mob напал на какого-либо определенного человека? ;)
Записан

Jedem das Seine
Mel in ore, verba in lacis, fel in corde, fraus in fractis
mell
Гость
« Ответ #2 : 14.06.07, 19:03:41 »

entry_prog 100

emote давит черного таракана как таракана!
mpadvance $n 2
c 'облако газа'
всплак
goto 10
say slayme

Записан
Карина
Завсегдатай
*

Карма: 2
Офлайн Офлайн

Сообщений: 77


Здравствуйте, я ваша тётя!


« Ответ #3 : 14.06.07, 19:29:34 »

Проверяло. Все работает.

Странно, у меня не работает.
И странный ты алгоритм вообще приводишь.
if isnpc($n) true если $n - моб.
А мне надо напасть на чара.

if ispc($n) тоже не срабатывает.

Срабатывает, если чар приходит в комнату к мобу.
А мне надо еще если моб приходит в комнату к чару, чтоб етот моб етого чара тюкнул.
Записан

Ваша тётя
Maikroft
Братство Ронинов
Герой
****

Карма: -38
Офлайн Офлайн

Сообщений: 2063


He B Ce6e


« Ответ #4 : 14.06.07, 19:37:08 »

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.
Записан

Jedem das Seine
Mel in ore, verba in lacis, fel in corde, fraus in fractis
Alanna
Бессмертные
Победитель нежити
*****

Карма: 5
Офлайн Офлайн

Сообщений: 614



« Ответ #5 : 14.06.07, 20:10:53 »

Карина, тебе нужна переменная $r:
if isdefined($r)
  mpkill $r
endif
Правда, проверка isdefined в демо-версии пока отсутствует. Вместо нее можно попробовать проверку if mortcount(0)>0, хотя этот вариант хуже (не вдаваясь в подробности). Если неясно заранее, что будет значить $n, $r и т.п., можно ввести в программу для отладки строки типа mpecho N1 - $N1
mpecho R1 - $R1
Записан

Легконогая
Maikroft
Братство Ронинов
Герой
****

Карма: -38
Офлайн Офлайн

Сообщений: 2063


He B Ce6e


« Ответ #6 : 14.06.07, 20:19:57 »

Цитировать
isdefined

В первый раз слышу о такой.

Цитировать
if mortcount(0)>0

Зачем?.. Переменная $r уже подразумевает под собой то, что в комнате находится хотя бы один игрок.


P.S. С переменной $r полностью согласно.
Записан

Jedem das Seine
Mel in ore, verba in lacis, fel in corde, fraus in fractis
Карина
Завсегдатай
*

Карма: 2
Офлайн Офлайн

Сообщений: 77


Здравствуйте, я ваша тётя!


« Ответ #7 : 14.06.07, 20:32:38 »

О, $r я проглядела Smiley
Лучшим вариантом в моем случае будет

if mortsinarea($i)
  mpkill $r
endif

Но только mortsinarea($i) пока тоже в демке не работает: [*****] BUG: Unknown ifcheck Sad
Записан

Ваша тётя
Maikroft
Братство Ронинов
Герой
****

Карма: -38
Офлайн Офлайн

Сообщений: 2063


He B Ce6e


« Ответ #8 : 14.06.07, 20:36:07 »

Мда. Зачем все усложнять? ;)

 
Цитировать
mortinarea

проверка: есть ли в игровой зоне игрок с указанным именем (проверяет только смертных) [уровень игрока меньше 51].

Цитировать
$i

Выдает имя моба на котором висит программа, первое из списка в поле Name.


P.S. А вообще надоело смеяться. ;)
Записан

Jedem das Seine
Mel in ore, verba in lacis, fel in corde, fraus in fractis
Nurien
Путешественник
**

Карма: -2
Офлайн Офлайн

Сообщений: 344



« Ответ #9 : 15.07.07, 10:05:25 »

если я не ошибась - то на сайте арды был хелп по этому поводу, и если стоит у чара флаг агр - то велосипед изобретать ВООБЩЕ не нужно. а вот проверка по поводу >51 - это вообще жесть Smiley имма и так не убьешь Smiley
Записан

Ваше место - стойло!!!
Nurien
Путешественник
**

Карма: -2
Офлайн Офлайн

Сообщений: 344



« Ответ #10 : 15.07.07, 11:19:21 »

карина, нифига не въеду, нафига тебе это "если"? не проще $_ или как там в арде?
Записан

Ваше место - стойло!!!
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0.104 секунд. Запросов: 24.