Online MUD игра АРДА
Общедоступные => Строительство и программы => Тема начата: Лидаэн от 28.01.08, 13:10:33
-
Как ни странно, AWE знает немало игроков. Некоторые даже пользуются им 8)
Предлагаю скидывать в данную тему интересные, странные, неправильные... Короче всё, что AWE вытворяет над билдерами.
Всем любителям флуда писать в данную тему не рекомендуется, пустые сообщения буду резать. Для фраз "это никому не надо" и т.д. и т.п. просьба создать другую ветку.
-
Первый сюрприз приподнес тригер моба 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 - просьба тельнуть - справка на эту тему пуста... :(
-
Мне кажется там висит time_prog на каждый час. Но еще перед выполнением команды включается задержка на пару бтиков рандомно, там вроде есть такой оператор. Как, например, задержка после взмахивания посохом у Тени в лососотне, только в лососотне она на игрока, а у поварихи на моба. Я щас уже не помню его, щас поищу )
-
По Алдарилу:
hour_prog <arg>
Параметры: число от 0 до 23 - местное время мада.
Срабатывает в указанное время мада в течении одного часа.
Программу можно использовать на моба или комнату.
Пример:
>hour_prog 9
триггер отрабатывает в течении часа, с 9 до 10 утра.
Особенности.
Данный триггер вызывается для проверки регулярно при обновлении мобов. Поэтому за один час по времени мада, он будет запускаться несколько раз(около 20). Этой особенностью hour_prog отличается от триггера time_prog, который запускается только один раз в указанное время мада.
В полночь время 24 часа, а не 0.
Почему не рекомендуется использовать rand_prog, написанно в справке AWE.
if rand() - это проверка условия, его вполне можно использовать.
time_prog сработает ОДИН раз в указанное время.
-
Воооот, вроде то, что хочет Лидаэн, как мну кажется)
time_prog 0
MPDELAY SELF 1-2-3-4-5(на выбор)
и тут сама мобпрога
time_prog 1
MPDELAY SELF 1-2-3-4-5(на выбор)
и тут тоже сама мобпрога
ну итп. можно рандом на делэй кинуть, чтоб когда 2 когда 10
нет? :)
-
О пустых строках в программах.
Когда-то писал программы на "взрослых" языках программирования. И считал что например конструкция
if {условие}
if {условие}
чего-то там
endif
endif
имеет право на жизнь. Пустыми строками выделял блоки программы и было просто и понятно.
В AWE немножко не так. Приведённая выше программа не будет работать до тех пор, пока имеется пустая строка. В справке я этого не помню, или просто пропустил мимо внимания как нечто необъяснимое :)
Напрягало отсутствие возможности вставки комментариев.
Спасибо Эстэли, она подсказала что:
// Это блок искуственного интеллекта моего моба!!!
воспринимается AWE как комментарий. Стало проще. В справке опять же не помню такого.
-
Совсем забыл)
rand_prog с небольшими параметрами (до 5 примерно) по словам Аланны можно использовать, если в небольших количествах. Становятся доступны многие программы и интересные алгоритмы.
Если я правильно понял Аланну, это не является секретной информацией, просто она не успела обновить справку. Надеюсь меня не стукнут за это сообщение:)
-
Не знаю, глюк это или недокументированная особенность - помещаю сюда..
Вводная: В комнате стоят 2 моба, например: linni и ilva (vnum моба ilva=10001)
У linni есть предмет jabot
Создаём программу:
death_prog
100
if mobinroom (10001) > 0
give jabot ilva
endif
Что должно произойти (я так считал): в момент смерти моб должен отдать жабо Ильве.
На практике, моб умирает и игрок забирает с трупа жабо.
Кто сможет объяснить почему - буду благодарен.
-
И ещё одна прога...
Те же действующие лица, моб 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), но нападать моб почему то не хочет.
Иногда Ильва успевает сасистить и нападает на игрока, но не всегда и это не то, что мне надо.
Кто сможет объяснить что не так - большое спасибо.
-
Я с мобпрогами еще не дружу, но разве не надо нечто, типа:
mpforce ilva kill $n
заменить на
mpforce ilva<VNUM моба> kill $n
или
mpforce ilva<VNUM моба> mpkill $n
?
-
заменить на
mpforce ilva<VNUM моба> kill $n
В нашем случае не принципиально - двух мобов Ильва в комнате не будет по определению, так же как не может появиться и игрока с однокоренным именем.
mpforce ilva<VNUM моба> mpkill $n
Не понял откуда взялось mpkill, вообще впервые об этом слышу. А откуда это?
-
mpkill
Моб начинает атаковать того, кто инициировал триггер.
Синтаксис:
mpkill $n
Сработает, если программа висит на мобе.
Хотя в твоем случае скорее надо просто написать:
mpforce ilva10001 murder $n
З.Ы. А у тебя так и есть пробел между mobinroom и (10001)? Я просто думала, что его там быть не должно :)
-
Ага.. Покопалась в мобпрогах :) Деяр был прав)
mpforce ilva10001 mpkill $n
-
З.Ы. А у тебя так и есть пробел между mobinroom и (10001)? Я просто думала, что его там быть не должно
Пробела нет, это я по инерции поставил. Кстати сейчас для интереса проверил - оказывается и с пробелом прекрасно работает.
mpforce ilva10001 mpkill $n
Проверил - работает. Спасибо.
Остался первый вопрос - почему жабо не отдаётся Ильве. Хотя это можно обойти, просто любопытно если кто-то сможет обосновать.
-
Ну, как вариант, попробовать прописать для жабо и ильвы внамы..
Так вроде бы все правильно.
-
У меня подобная программа работает. Надеюсь, Лидаэн "100" написал не в программе, а в триггере? И жабо в инвентаре, а не надето? И все все видят?
Для отладки программ полезно вставлять "трассировку" - строки типа mpecho 1, mpecho 2 и т.д., чтобы видеть, как отрабатывается программа.
-
Вопрос:
"mpopenpassage", "mpclosepassage" открывает и закрывает проход между комнатами.
Имеется ли возможность задать краткое описание выводимое по команде "скан" в открываемом направлении?
Почему-то я этого не нашёл.. может не так или плохо искал?
-
Такой возможности пока нет. Тем не менее, в прошлом году оператор mpopenpassage был доработан. Теперь он позволяет устанавливать флаги создаваемого выхода, ключ и ключевые слова. Это использовано в "Лабиринте проклятых". Как будет время, дополню файл bulletin.txt и включу туда доработки за 2007 год.