Register

Автор Тема: Как определить $n ?  (Прочитано 8423 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Карина

  • Завсегдатай
  • *
  • Сообщений: 81
  • Карма: 2
  • Здравствуйте, я ваша тётя!
Как определить $n ?
« : 14.06.07, 18:17:34 »
В комнате А стоит чар.
Из комнаты Б в комнату А заходит неагрессивный моб.
Как ему напасть на чара?

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

Что делать?  ::)
Ваша тётя

Оффлайн Maikroft

  • Братство Ронинов
  • Герой
  • ****
  • Сообщений: 2063
  • Карма: -38
  • He B Ce6e
Re: Как определить $n ?
« Ответ #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

  • Гость
Re: Как определить $n ?
« Ответ #2 : 14.06.07, 19:03:41 »
entry_prog 100

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


Оффлайн Карина

  • Завсегдатай
  • *
  • Сообщений: 81
  • Карма: 2
  • Здравствуйте, я ваша тётя!
Re: Как определить $n ?
« Ответ #3 : 14.06.07, 19:29:34 »
Проверяло. Все работает.

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

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

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

Оффлайн Maikroft

  • Братство Ронинов
  • Герой
  • ****
  • Сообщений: 2063
  • Карма: -38
  • He B Ce6e
Re: Как определить $n ?
« Ответ #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

  • Бессмертные
  • Победитель нежити
  • *****
  • Сообщений: 613
  • Карма: 5
Re: Как определить $n ?
« Ответ #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

  • Братство Ронинов
  • Герой
  • ****
  • Сообщений: 2063
  • Карма: -38
  • He B Ce6e
Re: Как определить $n ?
« Ответ #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

Оффлайн Карина

  • Завсегдатай
  • *
  • Сообщений: 81
  • Карма: 2
  • Здравствуйте, я ваша тётя!
Re: Как определить $n ?
« Ответ #7 : 14.06.07, 20:32:38 »
О, $r я проглядела :)
Лучшим вариантом в моем случае будет

if mortsinarea($i)
  mpkill $r
endif

Но только mortsinarea($i) пока тоже в демке не работает: [*****] BUG: Unknown ifcheck :(
Ваша тётя

Оффлайн Maikroft

  • Братство Ронинов
  • Герой
  • ****
  • Сообщений: 2063
  • Карма: -38
  • He B Ce6e
Re: Как определить $n ?
« Ответ #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

  • Путешественник
  • **
  • Сообщений: 344
  • Карма: -2
Re: Как определить $n ?
« Ответ #9 : 15.07.07, 10:05:25 »
если я не ошибась - то на сайте арды был хелп по этому поводу, и если стоит у чара флаг агр - то велосипед изобретать ВООБЩЕ не нужно. а вот проверка по поводу >51 - это вообще жесть :) имма и так не убьешь :)
Ваше место - стойло!!!

Оффлайн Nurien

  • Путешественник
  • **
  • Сообщений: 344
  • Карма: -2
Re: Как определить $n ?
« Ответ #10 : 15.07.07, 11:19:21 »
карина, нифига не въеду, нафига тебе это "если"? не проще $_ или как там в арде?
Ваше место - стойло!!!