Online MUD игра АРДА

Общедоступные => Строительство и программы => Тема начата: Лидаэн от 28.01.08, 13:10:33

Название: Немного об использовании AWE
Отправлено: Лидаэн от 28.01.08, 13:10:33
 Как ни странно, AWE знает немало игроков. Некоторые даже пользуются им 8)
Предлагаю скидывать в данную тему интересные, странные, неправильные... Короче всё, что AWE вытворяет над билдерами.
Всем любителям флуда писать в данную тему не рекомендуется, пустые сообщения буду резать. Для фраз "это никому не надо" и т.д. и т.п. просьба создать другую ветку.
Название: Re: Немного об использовании AWE
Отправлено: Лидаэн от 28.01.08, 13:12:56
Первый сюрприз приподнес тригер моба hour_prog
Справка AWE:
hour_prog (время) - срабатывает каждый час начиная с заданного(? ? ? ? ?)
По смыслу, можно понять, что если задать: "hour_prog 0", то программа будет срабатывать 1 раз в час, 24 часа в сутки (так же мне описали действие тригера другие игроки знающие AWE).
Это не так. На самом деле в промежуток с 0 до 1 часа ночи моб будет спамить заданную программу примерно раз в секунду.
Поэтому что бы получить срабатывание программы примерно 1 раз в час Арды необходимо использовать rand_prog или if rand()
Сопутствующий вопрос (скорее всего к Иммам): rand_prog - не рекомендуется использовать (см справку AWE), распространяется ли это на if rand()?
Второй сопутствующий вопрос: у кого есть что нибудь по использованию script_prog - просьба тельнуть - справка на эту тему пуста... :(
Название: Re: Немного об использовании AWE
Отправлено: Deyar от 28.01.08, 13:47:58
Мне кажется там висит time_prog на каждый час. Но еще перед выполнением команды включается задержка на пару бтиков рандомно, там вроде есть такой оператор. Как, например, задержка после взмахивания посохом у Тени в лососотне, только в лососотне она на игрока, а у поварихи на моба. Я щас уже не помню его, щас поищу )
Название: Re: Немного об использовании AWE
Отправлено: Eanke от 28.01.08, 14:22:43
По Алдарилу:
Цитировать
hour_prog <arg>

Параметры: число от 0 до 23 - местное время мада.

Срабатывает в указанное время мада в течении одного часа.

Программу можно использовать на моба или комнату.

 
Пример:
>hour_prog 9
триггер отрабатывает в течении часа, с 9 до 10 утра.

 
Особенности.

Данный триггер вызывается для проверки регулярно при обновлении мобов. Поэтому за один час по времени мада, он будет запускаться несколько раз(около 20). Этой особенностью hour_prog отличается от триггера time_prog, который запускается только один раз в указанное время мада.
В полночь время 24 часа, а не 0.

 Почему не рекомендуется использовать rand_prog, написанно в справке AWE.
if rand() - это проверка условия, его вполне можно использовать.

time_prog сработает ОДИН раз в указанное время.
Название: Re: Немного об использовании AWE
Отправлено: Deyar от 28.01.08, 15:26:46
Воооот, вроде то, что хочет Лидаэн, как мну кажется)

time_prog 0
MPDELAY SELF 1-2-3-4-5(на выбор)
и тут сама мобпрога

time_prog 1
MPDELAY SELF 1-2-3-4-5(на выбор)
и тут тоже сама мобпрога

ну итп. можно рандом на делэй кинуть, чтоб когда 2 когда 10

нет? :)
Название: Re: Немного об использовании AWE
Отправлено: Лидаэн от 06.02.08, 20:41:24
О пустых строках в программах.
Когда-то  писал программы на "взрослых" языках программирования. И считал что например конструкция

if {условие}

if {условие}
чего-то там
endif
endif

имеет право на жизнь. Пустыми строками выделял блоки программы и было просто и понятно.
В AWE немножко не так. Приведённая выше программа не будет работать до тех пор, пока имеется пустая строка. В справке я этого не помню, или просто пропустил мимо внимания как нечто необъяснимое :)

Напрягало отсутствие возможности вставки комментариев.
Спасибо Эстэли, она подсказала что:
// Это блок искуственного интеллекта моего моба!!!
воспринимается AWE как комментарий. Стало проще. В справке опять же не помню такого.
Название: Re: Немного об использовании AWE
Отправлено: Лидаэн от 06.02.08, 20:49:10
Совсем забыл)
rand_prog с небольшими параметрами (до 5 примерно) по словам Аланны можно использовать, если в небольших количествах. Становятся доступны многие программы и интересные алгоритмы.
Если я правильно понял Аланну, это не является секретной информацией, просто она не успела обновить справку. Надеюсь меня не стукнут за это сообщение:)
Название: Re: Немного об использовании AWE
Отправлено: Лидаэн от 29.02.08, 19:52:53
Не знаю, глюк это или недокументированная особенность - помещаю сюда..
Вводная: В комнате стоят 2 моба, например: linni и ilva (vnum моба ilva=10001)
У linni есть предмет jabot
Создаём программу:
death_prog
100
if mobinroom (10001) > 0
give jabot ilva
endif

Что должно произойти (я так считал): в момент смерти моб должен отдать жабо Ильве.
На практике, моб умирает и игрок забирает с трупа жабо.
Кто сможет объяснить почему - буду благодарен.
Название: Re: Немного об использовании AWE
Отправлено: Лидаэн от 29.02.08, 20:21:29
И ещё одна прога...
Те же действующие лица, моб linni и моб ilva (vnum моба ilva = 10001)
Изначально в комнате Ильвы нет, Линни стоит одна.
Вешаем прогу на Линни:

fight_prog
100
if mobinroom (10001) > 0
else
  yell Ильва, меня обижают!
  mpmload 10001
  mpecho Ильва прибежала доставая длинный ножик!
  mpforce ilva tell $n Ну все... Тебе не уйти злыдень!
  mpforce ilva kill $n
endif

Что должно произойти:
во время боя, если моба Ильва нет в комнате он создаётся, созданный моб угрожает игроку и сразу атакует. На практике (Лог):

Ударом кулака Линни не попадает в вас.
Ударом кулака Линни не попадает в вас.
Линни заорала 'Ильва, меня обижают!'
Ильва прибежала доставая длинный ножик!
Ильва говорит вам 'Ну все... Тебе не уйти злыдень!'
Ударом кинжала вы подкашиваете Линни!
...
...
look
Комната испытаний.
Тут проходят проверку программы и умирают проверочные мобы.
Выходы: север юг.
Линни сражаетсЯ с ВАМИ!
Ильва стоит ковыряя в носу.
...
Поток серных брызг <-размельчает-> Линни!
Линни убита!

look
Комната испытаний.
Тут проходят проверку программы и умирают проверочные мобы.
Выходы: север юг.
Лужица крови вытекла из чьего-то трупа.
У ваших ног лежит труп Линни.
Мозги Линни лежат в луже крови.
Ильва стоит ковыряя в носу.

Как видно из лога, переменная $n определена правильно и ей присвоен игрок (сработавший tell), но нападать моб почему то не хочет.
Иногда Ильва успевает сасистить и нападает на игрока, но не всегда и это не то, что мне надо.
Кто сможет объяснить что не так - большое спасибо.
Название: Re: Немного об использовании AWE
Отправлено: Deyar от 29.02.08, 21:16:59
Я с мобпрогами еще не дружу, но разве не надо нечто, типа:

mpforce ilva kill $n
заменить на
mpforce ilva<VNUM моба> kill $n
или
mpforce ilva<VNUM моба> mpkill $n
?
Название: Re: Немного об использовании AWE
Отправлено: Лидаэн от 29.02.08, 21:26:18
Цитировать
заменить на
mpforce ilva<VNUM моба> kill $n
В нашем случае не принципиально - двух мобов Ильва в комнате не будет по определению, так же как не может появиться и игрока с однокоренным именем.
Цитировать
mpforce ilva<VNUM моба> mpkill $n
Не понял откуда взялось mpkill, вообще впервые об этом слышу. А откуда это?
Название: Re: Немного об использовании AWE
Отправлено: Eanke от 29.02.08, 21:37:24
mpkill
 
Моб начинает атаковать того, кто инициировал триггер.

Синтаксис:
mpkill $n

Сработает, если программа висит на мобе.
Хотя в твоем случае скорее надо просто написать:

mpforce ilva10001 murder $n


З.Ы. А у тебя так и есть пробел между mobinroom и (10001)? Я просто думала, что его там быть не должно :)
Название: Re: Немного об использовании AWE
Отправлено: Eanke от 29.02.08, 21:47:39
Ага.. Покопалась в мобпрогах :) Деяр был прав)

mpforce ilva10001 mpkill $n
Название: Re: Немного об использовании AWE
Отправлено: Лидаэн от 29.02.08, 22:00:34
Цитировать
З.Ы. А у тебя так и есть пробел между mobinroom и (10001)? Я просто думала, что его там быть не должно
Пробела нет, это я по инерции поставил. Кстати сейчас для интереса проверил - оказывается и с пробелом прекрасно работает.
Цитировать
mpforce ilva10001 mpkill $n
Проверил - работает. Спасибо.
Остался первый вопрос - почему жабо не отдаётся Ильве. Хотя это можно обойти, просто любопытно если кто-то сможет обосновать.
Название: Re: Немного об использовании AWE
Отправлено: Eanke от 29.02.08, 23:13:22
Ну, как вариант, попробовать прописать для жабо и ильвы внамы..
Так вроде бы все правильно.
Название: Re: Немного об использовании AWE
Отправлено: Alanna от 04.03.08, 21:47:31
У меня подобная программа работает. Надеюсь, Лидаэн "100" написал не в программе, а в триггере? И жабо в инвентаре, а не надето? И все все видят?
Для отладки программ полезно вставлять "трассировку" - строки типа mpecho 1, mpecho 2 и т.д., чтобы видеть, как отрабатывается программа.
Название: Re: Немного об использовании AWE
Отправлено: Лидаэн от 11.03.08, 15:02:11
Вопрос:
"mpopenpassage", "mpclosepassage" открывает и закрывает проход между комнатами.
Имеется ли возможность задать краткое описание выводимое по команде "скан" в открываемом направлении?
Почему-то я этого не нашёл.. может не так или плохо искал?
Название: Re: Немного об использовании AWE
Отправлено: Alanna от 11.03.08, 20:16:35
Такой возможности пока нет. Тем не менее, в прошлом году оператор mpopenpassage был доработан. Теперь он позволяет устанавливать флаги создаваемого выхода, ключ и ключевые слова. Это использовано в "Лабиринте проклятых". Как будет время, дополню файл bulletin.txt и включу туда доработки за 2007 год.