Форум Oni

Русскоязычный форум поклонников игры «Они» от Bungie

  • Здравствуйте, Гость

#261 16-01-2009 12:36:09

Маи (жен.)
Спецагент TCTF
Откуда: Размечтались
Регистрация: 16-11-2008
Сообщений: 217
Профиль

Re: Вопросы по написанию игровых скриптов

Никак... А жалко...


Нам ONI НАВСЕГДА!!!!
Кто так не думает - БОЛДА!!!

Оффлайн

 

#262 16-01-2009 12:47:27

doktordulit (муж.)
Элитный спецназ TCTF
Откуда: Рига
Регистрация: 07-10-2008
Сообщений: 478
Профиль

Re: Вопросы по написанию игровых скриптов

Я где-то читал что можно,но не помню где!


http://yoursmileys.ru/tsmile/stamp/t2708.gif

Оффлайн

 

#263 16-01-2009 13:06:14

awp_master.pro^no clear* (муж.)
Полицейский TCTF
Откуда: питер
Регистрация: 21-12-2008
Сообщений: 98
Профиль

Re: Вопросы по написанию игровых скриптов

МОЖНО,ЭТО ДЕЛАЕТСЯ С ПОМОЩЬЮ СПЛИТА ЧЕРЕЗ РЕСУРСЫ


шоу начинается!

Оффлайн

 

#264 16-01-2009 13:13:29

doktordulit (муж.)
Элитный спецназ TCTF
Откуда: Рига
Регистрация: 07-10-2008
Сообщений: 478
Профиль

Re: Вопросы по написанию игровых скриптов

???А поточней???


http://yoursmileys.ru/tsmile/stamp/t2708.gif

Оффлайн

 

#265 16-01-2009 14:24:13

awp_master.pro^no clear* (муж.)
Полицейский TCTF
Откуда: питер
Регистрация: 21-12-2008
Сообщений: 98
Профиль

Re: Вопросы по написанию игровых скриптов

в ресурсах есть бинаркм с ботами,их характеристики(каждого персонажа на нужном уровне)там прописан маршрут,посмотри,не так тяжело


шоу начинается!

Оффлайн

 

#266 16-01-2009 16:42:23

geyser (муж.)
Учёный Синдиката
Откуда: угадайте
Регистрация: 24-06-2007
Сообщений: 1352
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

Нет, awp, патрули - это дело десятое. dulit ведь спрашивает о том, как заставить чела пойти, а не ходить...
Так что с следует упомянуть ai2_movetoflag(Chelovek, 42). Доступных в ресурсах флагов обычно хватает.
А понятие о патрулях здесь понадобится разве что для того, чтобы чел не уходил оттуда, куда пошёл.
И опять-таки можно обойтись без ресурсов, а использовать своевременный ai2_setjobstate(Chelovek).

Uncle-Istvan: только chr_inv_reset(Chelovek). Заодно у чела пропадёт весь инвентарь, кроме сбрасываемого после смерти.

Маи: ЦЫЦ!


Если у тебя есть фонтан, заткни его; дай отдохнуть и фонтану.

Оффлайн

 

#267 16-01-2009 17:11:25

awp_master.pro^no clear* (муж.)
Полицейский TCTF
Откуда: питер
Регистрация: 21-12-2008
Сообщений: 98
Профиль

Re: Вопросы по написанию игровых скриптов

нет,как я понял он пишет "Появился маленький вопросец!Как заставить кого-нибудь идти куда-нибудь?" т.е. он хочет чтобы чел ходил по точкам туда,куда ему надо-патрулировать...doktordulit,ты сам поясни чего хочешь,а то идти куда-нибудь-это понятие растяжимое


шоу начинается!

Оффлайн

 

#268 17-01-2009 20:28:06

doktordulit (муж.)
Элитный спецназ TCTF
Откуда: Рига
Регистрация: 07-10-2008
Сообщений: 478
Профиль

Re: Вопросы по написанию игровых скриптов

Я имею в виду чтобы человек пошел к заданой точке,и там остался.


http://yoursmileys.ru/tsmile/stamp/t2708.gif

Оффлайн

 

#269 18-01-2009 00:50:11

Sellin (муж.)
Рабочий
Откуда: Москва-Елец
Регистрация: 17-01-2009
Сообщений: 18
Профиль

Re: Вопросы по написанию игровых скриптов

Люди, мож повторяюсь, но читать все это лень
Итак - 1) файл warehouse_cutscene
самое начало файла - cm_interpolate_block KonCamFoot02 300
                          sleep f260
что значит f? Если это число фреймов слипа, то почему в большинстве остальных файлов после слипа секунд нет: sleep 260

2) Долго думал, не совсем понял, что значит # перед некоторыми командами? # first hit on ledge

3)         cm_interpolate KonCamFoot01 0
    cm_interpolate_block KonCamFoot02 300
    sleep f260
            #cm_interpolate KonCamChest01 0
    #cm_interpolate_block KonCamChest02 180
    #sleep f120

Все это работает следующим образом, как я понимаю: камера нацелена на ногу Коноко (KonCamFoot01), так как время равно 0, то при этом никуда не движется, далее - она движется (cm_interpolate_block - запрещает ей делать что-либо, пока она не выполнит следующую команду, то есть движок временно блочится?) до какой-то точки на ноге (KonCamFoot02) и движется 5 секунд после чего перекур 260 фреймов, как бы перерыв между кадрами. Все ли правильно?
Теперь собственно вопрос - где можно найти/изменить/содать новые положения этих камер?

4)  swing_cutscene - как это понимается? это обрезание анимации? или прерывание трека анимации? или что?

5) playback kerr KerrSet - запуск проигрыша чего? что за KerrSet?

6) где можно найти приписку уровня (имеется ввиду очередность загрузки папок/очередность уровней), чтобы можно было менять их очередность/вставлять новые (в идеале)

7) letterbox 0
    chr_full_health 0
    give_powerup ammo
    give_powerup ammo
    give_powerup ammo
    chr_delete griffin
    chr_delete kerr
    s1
    yhealth

опять же первый уровень, когда Коноко пообщалась с Гриффином
что значат выделенные команды? без них у меня лично игра в этом месте виснит

8) файл - neuro_main.bsl

присутствует следующая строка - neuro_cs_intro - это отсылка к файлу neuro_cutscene.bsl? то есть в мейне заскрипчены все отсылки ко всем файлам в пределах папки, а также жрет глобал?

9) предыдущий файл, следующая команда - save_game 1 autosave - а где сохраняется, что была использованна эта команда (чтобы потом, после перезагрузки это сохранение было в списке доступных?

Вопросы есть еще, но неоформленные, надо подумать, и сформулировать, прежде чем задавать...

Отредактировал(а) Sellin (18-01-2009 01:50:32)


http://onimia.ru/gbook/img/oni.gif  А хто это тут у нас? Мукадик... Бедняжка, головка бо-бо? Давай помогу...  "Хрусть"

Оффлайн

 

#270 18-01-2009 02:49:04

geyser (муж.)
Учёный Синдиката
Откуда: угадайте
Регистрация: 24-06-2007
Сообщений: 1352
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

Ребята, не злоупотребляйте цветным текстом, а то на светлом фоне темы Carbon очень неудобно читать - особенно дальтонику.

"Люди, мож повторяюсь, но читать все это лень"
Так и быть, попробую притвориться, что мне не влом отвечать тем, кому лень читать справочники. К тому же вопросы грамотные, это всегда радует.

1) параметр у "sleep" по умолчанию во фреймах, а зачем кое-где приписывали "f" - не знаю; наверное, пережиток.

2) на удивление бестолковый вопрос - "это же бубль-гум", то бишь "закомментированные" строчки. В данном случае просто ля-ля о том, что написано рядом: анимация сама по себе лишена звуков, поэтому приземление приходится озвучивать отдельно.

3) Нет, не всё правильно. Подробное объяснение есть здесь: http://wiki.oni2.net/AE:Authoring_custo ... animations
a) камера рывком (за 0 фреймов) принимает положение и направление, задаваемые OBANKonCamFoot01
b) выполнение инструкций блокируется, пока не завершилась предыдущая интерполяция (a) - то есть в данном случае всё равно что не блокируется - а затем положение и направление камеры начинают потихоньку меняться, с расчётом на то, что через 5 секунд они совпадут с OBANKonCamFoot02
c)  260 фреймов спустя после начала интерполяции (b) начинается следующая, а именно: камера рывком (за 0 фреймов) принимает положение и направление OBANKonCamBack01 - оттуда, где была, а именно - пройдя 86.667% пути от OBANKonCamFoot01 до OBANKonCamFoot02.
И ещё - никаких "точек на ноге". Просто камера должна плавно проползти мимо Коноки на уровне ног (а потом показать её со спины, а потом сбоку). Для этого сделали некоторое количество ключевых положений/направлений для камеры (минимальная анимация как раз из одного такого ключевого момента состоит), назвали соответственно, а потом интерполируют между ними попарно. OBAN - это онишный формат анимации какого-либо объекта относительно вселенной: используется для камер, дверей, движущихся объектов, а также для необычных перемещений персонажей (езда на мотоцикле, полёт, лифты, и т.п.).

4) это не зашитая функция движка, а пользовательская. Просто из функции с названием void swing() вызывается другая функция, с названием void swing_cutscene(). Лежит эта вторая функция там же, в warehouse_cutscene.bsl, но могла бы лежать в любом другом файле *.bsl в папке данного уровня или в global, так что советую в таких случаях юзать поиск - пользовательские функции часто вызывают одна другую. Название "swing" - это о том, как Конока повисла на руках и "качнулась" под крышу.

5) FILMKerrSet. FILM - это формат записи ввода с клавиатуры и мыши, записанный разработчиками (с помощью клавиш F9, F10 и F11), а потом применяемый к персонажам, чтобы они как-то замысловато бегали, прыгали и крутились, взаимодействовали с уровнем, или просто становились в нужное место. В данном случае FILM именно такой, минимальный, из одного положения и направления. Поэтому команда просто ставит персонажа с именем kerr "на место". А могла бы заставить прыгать, если бы в FILMKerrSet были сохранены прыжки.

6) Это сложно, и не обходится без моддинга ресурсов. Порядок уровней определяется числом в названии файла (level1_Final и т.п.)? Файл этот нельзя просто так переименовать (или перенумеровать), потому что с его имени в момент создания снята контрольная сумма и запихана в сам файл - для проверки "целости и сохранности" содержимого. Поэтому любой перемещённый или добавленный уровень придётся "паковать" заново - ОниСплитом. Заодно надо будет переименовать ресурсы ONLV, AKEV и др., так как им соответствует имя скриптовой папки. Ещё надо будет поменять/добавить названия уровней в ONLD, или просто номера поменять, в зависимости от того, что нужно. И опять же запаковать заново, но уже нулевой уровень (level0_Final или "плагин").

7) Тот же совет, что и (4) - юзай поиск. На этот раз речь идёт о функциях void s1(string) и void yhealth(string), которые лежат в warehouse_level_scripts.bsl. Как видишь, любой файл может ссылаться на любую функцию в любом другом файле. Порядок загрузки файлов и порядок функций в них не важен (в случае BSL; в других языках вроде C на функцию можно сослаться только если она была "объявлена" до того места, откуда ссылаются).

8) То же самое. Да, это вызов пользовательской функции, определённой в другом файле. Вывод об уникальности "мэйна" неверен. Да, движок запускает функцию void main() при загрузке уровня, а она в свою очередь вызывает кучу зашитых и пользовательских функций. Однако не все пользовательские функции достигаются таким способом. Очень многие функции движок вызывает непосредственно, а не через main(). Например, когда Конока умирает , как правило, вызывается функция you_lose. Когда Конока куда-то заходит или использует консоль какую-нибудь - опять-таки вызываются некоторые пользовательские функции, напрямую из движка. Названия этих функций определены во всевозможных OBJC, которые хранятся в ресурсах уровня. Естественно, имена прописанные в OBJC и в *.bsl должны быть согласованы.

9) save_game по заказу меняет состояние сохраночного файла persist.dat. Кроме того Они меняет этот файл при загрузке каждого уровня, чтобы отметить там текущие (последние загруженные) уровень и сохранку. Некоторые настройки также меняют состояние persist.dat, ну и команда killed_griffen(bool) тоже.


Если у тебя есть фонтан, заткни его; дай отдохнуть и фонтану.

Оффлайн

 

#271 19-01-2009 12:51:33

doktordulit (муж.)
Элитный спецназ TCTF
Откуда: Рига
Регистрация: 07-10-2008
Сообщений: 478
Профиль

Re: Вопросы по написанию игровых скриптов

Ладно,толком ничего не ппонял поэтому напишу поэтапно:
1-Как заставить человека идти в заданную точку и там остатся?
2-Как заставить персонажа ходить после команды lock_keys?
3-Как заставить чела идти за тобой?


http://yoursmileys.ru/tsmile/stamp/t2708.gif

Оффлайн

 

#272 19-01-2009 13:41:53

Мih@ 
Регистрация: 27-08-2006
Сообщений: 826
Профиль

Re: Вопросы по написанию игровых скриптов

doktordulit написал(а):

Как заставить человека идти в заданную точку и там остатся?

geyser написал(а):

Так что с следует упомянуть ai2_movetoflag(Chelovek, 42). Доступных в ресурсах флагов обычно хватает.

Где Chelovek - персонаж, 42 - номер "точки". -_-

doktordulit написал(а):

Как заставить персонажа ходить после команды lock_keys?

Командой lock_keys с перечислением тех keys, которые нужно разлочить. Например, если кроме ходьбы ничего не нужно:
    lock_keys keys_movement
Ещё есть keys_reload, keys_hypo, keys_walk, keys_inventory, keys_action, keys_pause, keys_attack, keys_crouch, keys_jump. Или, если нужно всё сразу:
    lock_keys keys_all

doktordulit написал(а):

Как заставить чела идти за тобой?

Есть, например, ai2_followme(char);, где char - тело, которое должно идти. При этом персонаж будет идти строго до той точки, в которой был игрок в момент исполнения команды. Можно закинуть в рекурсивную функцию, которая будет до смены флага повторять персонажу его задачу с заданным шагом, корректируя целевые координаты.

Оффлайн

 

#273 20-01-2009 13:58:37

doktordulit (муж.)
Элитный спецназ TCTF
Откуда: Рига
Регистрация: 07-10-2008
Сообщений: 478
Профиль

Re: Вопросы по написанию игровых скриптов

И исчо один вопрос!Как сделать так чтобы все остановились и не двигались,и как это убрать?


http://yoursmileys.ru/tsmile/stamp/t2708.gif

Оффлайн

 

#274 20-01-2009 16:26:17

Мih@ 
Регистрация: 27-08-2006
Сообщений: 826
Профиль

Re: Вопросы по написанию игровых скриптов

doktordulit написал(а):

Как сделать так чтобы все остановились и не двигались

    ai2_allpassive 1

doktordulit написал(а):

и как это убрать?

    ai2_allpassive 0

Например, так.

Оффлайн

 

#275 20-01-2009 16:33:24

doktordulit (муж.)
Элитный спецназ TCTF
Откуда: Рига
Регистрация: 07-10-2008
Сообщений: 478
Профиль

Re: Вопросы по написанию игровых скриптов

=( Вопросов не осталось...


http://yoursmileys.ru/tsmile/stamp/t2708.gif

Оффлайн

 

#276 20-01-2009 17:28:20

geyser (муж.)
Учёный Синдиката
Откуда: угадайте
Регистрация: 24-06-2007
Сообщений: 1352
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

Мih@ написал(а):

Есть, например, ai2_followme(char);, где char - тело, которое должно идти. При этом персонаж будет идти строго до той точки, в которой был игрок в момент исполнения команды. Можно закинуть в рекурсивную функцию, которая будет до смены флага повторять персонажу его задачу с заданным шагом, корректируя целевые координаты.

Вообще-то такая функциональность по идее должна быть только у ai2_comehere. Возможно, в случае ai2_followme имеет место косяк в движке. На данный момент самым грамотным решением проблемы является специальное "нейтральное поведение" (NEUT). Смысл в том, что персонаж с таким поведением будет ходить за игроком по всему уровню, как будто хочет поговорить, но говорить не будет. Поведение можно вроде бы менять в рантайме.


Если у тебя есть фонтан, заткни его; дай отдохнуть и фонтану.

Оффлайн

 

#277 20-01-2009 17:55:32

Мih@ 
Регистрация: 27-08-2006
Сообщений: 826
Профиль

Re: Вопросы по написанию игровых скриптов

geyser написал(а):

Возможно, в случае ai2_followme имеет место косяк в движке.

Ну, хотя бы не как в случае с Крикунами. ) Однако имхо было бы логично дать этой функции ещё булеву входную данную для включения/выключения преследования.
А возможно без извращений переопределить ai2_followme глобальной рекурсивной функцией с тем же ai2_comehere, чтобы оно было отключаемым, например, по смене переменной? И распространялось на любое количество персонажей, и было единой функцией (не тридцать функций с тридцатью флажками и не навороты с уймой вспомогательных переменных и расчётов >_<).
Например, если есть возможность повесить на персонажа какую-нибудь двоичную метку и иметь возможность её писать/читать...

geyser написал(а):

Поведение можно вроде бы менять в рантайме.

Скриптами/консолью? Как именно? Помню, был такой ai2_neutralbehavior, но не помню, чтобы он использовался иначе как с "none", и не вникал в сакральный смысл.

Оффлайн

 

#278 20-01-2009 20:39:53

geyser (муж.)
Учёный Синдиката
Откуда: угадайте
Регистрация: 24-06-2007
Сообщений: 1352
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

Ну, хотя бы не как в случае с Крикунами. )

Ну, Крикунов-то мы починили, слава Мукаду (и ракеты и даже взрыв камикадзе). Это всё одна малина.

Однако имхо было бы логично дать этой функции ещё булеву входную данную для включения/выключения преследования.

Естественно, если эффект функции постоянный, а не как сейчас, то флажок станет необходимым. Либо функция-пара ai2_stopfollowingme =)

А возможно без извращений переопределить ai2_followme глобальной рекурсивной функцией с тем же ai2_comehere, чтобы оно было отключаемым, например, по смене переменной?

Да, возможно глобально заскриптить рекурсивную функцию, хранящую имя любого чела, и с заданным интервалом применяющую к нему ai2_comehere (это аналог Арены и других похожих скриптов попроще: он чреват перегрузкой стека вызовов, который не опустошается, и при одной ежефреймной рекурсивной петле приводит к нехватке памяти за считанные часы). С выключателем на данный момент сложнее: у персов есть куча флажков, которые можно сетить, но читать их нельзя. Единственное решение на данный момент - это глобальный выключатель, который прекращает все преследования, после чего можно возобновить те преследования, которые должны продолжаться. Я рекомендую вникнуть в сакральный смысл NEUT (см. ниже), ибо это намного правильнее скриптовой рекурсии.

И распространялось на любое количество персонажей, и было единой функцией (не тридцать функций с тридцатью флажками и не навороты с уймой вспомогательных переменных и расчётов >_<).

Как chr_wait_animation, что ли? На фига? Не вижу проблемы с отдельной инструкцией на преследование для каждого чела. Проще надо жить, боярин.
А насчёт "наворотов с уймой вспомогательных переменных и расчётов" - я, наверно, не понимаю, что имеется в виду. Какие расчёты? Но это и неважно.
Всё равно ai2_followme не работает, NEUT - работает, а что касается доводки движка - в твоём случае - флаг в руки утопающим, ты уж извини. Давно пора.
А то легко, конечно, навороты с переменными и расчётами перебросить из скриптов в движок... "Ничего в этом сложного нет - если мама готовит обед."

Например, если есть возможность повесить на персонажа какую-нибудь двоичную метку и иметь возможность её писать/читать...

Если есть желание и время - присоединяйся к проекту ReOni/Daodan. Благодаря Маковому движку все функции и переменные уже проименованы, хотя в ASM по-прежнему приходится вникать в каждом конкретном случае. Если умеешь хучить на Си или можешь научиться - хучь. Если не умеешь или не хочешь на Си - переписывай и добавляй ASMовый код, и собирай движок заново. А всевозможные заказы - устарели как идея. Было время - хачил один только СФеЛи, а теперь все только об этом и говорят, даже те, кто в ASMе ни бум-бум.

geyser написал(а):

Поведение можно вроде бы менять в рантайме.

Скриптами/консолью? Как именно? Помню, был такой ai2_neutralbehavior, но не помню, чтобы он использовался иначе как с "none", и не вникал в сакральный смысл.

Консоль - это всего лишь интерфейс для скриптов. Насчёт ai2_neutralbehavior - я и сам видел "none", но понятия не имел, как им пользоваться =)
Только сегодня вот пристал к Нео и всё выяснилось. Оказывается, NEUTы имеют имя, просто оно на вики и OniStuff помечено, как "space for notes".
Поэтому в лабе, например, можно использовать ai2_neutralbehaviour Floor1_Sci_1 "Give VDG Pistol (CivFem)" - и сайентесса станет дарить шокер.
Ну и конечно, таким образом можно включать и выключать безглючный аналог ai2_followme, без скриптовых рекурсий и ASMовых экспериментов. Ура.


Если у тебя есть фонтан, заткни его; дай отдохнуть и фонтану.

Оффлайн

 

#279 21-01-2009 03:12:00

Мih@ 
Регистрация: 27-08-2006
Сообщений: 826
Профиль

Re: Вопросы по написанию игровых скриптов

geyser написал(а):

Как chr_wait_animation, что ли? На фига?

Не совсем. Чтобы как раз "проще жилось". =)
Просто куча функций и флажков - это тридцать/пятьдесят/стопицот функций вида ai2_followmexx и столько же переменных. Для раздельного управления. Если функция не глобальна (или все персонажи не глобальны), то можно было бы написать по одной на персонажа, но это изврат. Если же функции будут просто пронумерованы, то в случае достаточно динамично устроенного уровня (где следование может одеваться/сниматься по триггерам, состояниям здоровья и прочая) будет весьма неприятно выискивать ту функцию, которая свободна, и делать привязки к её переменной.
Более сложный вариант - закинуть всю эту возню в одну главную функцию, которая будет записывать, кому какая функция+переменная присвоены, искать и вызывать свободную. Можно даже сделать переменные привязки собственностью [условно -_-] этой материнской функции, и как раз ей приделать входной флажок вкл/выкл.
Это очень плохой и извращенский выход, но с точки зрения эксплуатации не особо отличится от "нормального" followme.

geyser написал(а):

Всё равно ai2_followme не работает, NEUT - работает, а что касается доводки движка - в твоём случае - флаг в руки утопающим, ты уж извини. Давно пора.

И в мыслях не было, только надежда, вдруг там пару байт достаточно подправить, чтоб оно заработало как надо. +)

geyser написал(а):

Если есть желание и время - присоединяйся к проекту ReOni/Daodan.

Как будут - присоединюсь. Пока что всё это видится очень сложным. о_О

geyser написал(а):

Консоль - это всего лишь интерфейс для скриптов.

Она более рунтаймовая, учитывая, что эта нейтральность делается "одной строкой". )

geyser написал(а):

Ура.

Действительно ура и спасибо, да и куда более интересная штука "обнаружилась"... )

Оффлайн

 

#280 21-01-2009 05:57:09

geyser (муж.)
Учёный Синдиката
Откуда: угадайте
Регистрация: 24-06-2007
Сообщений: 1352
Профиль  Вебсайт

Re: Вопросы по написанию игровых скриптов

Это очень плохой и извращенский выход, но с точки зрения эксплуатации не особо отличится от "нормального" followme.

Что-то с интуицией по дизайну кода у тебя дела обстоят не особо лучше, чем в былые времена... конечно, скрипты - это не язык, но "на фига" городить "методы", которые ты сам вынужден называть "очень плохими и извращенскими"? То ты семиэтажно мудришь со спецификой какой-то очень конкретной проблемы, то вдруг ищешь каких-то суперглобальных решений - для ситуаций, которые ещё неизвестно когда и кому... Причём ладно бы - ограничился одной глобальной функцией и одной переменной - я же сказал, что этого достаточно, или нет? Дык ведь нет - "стопицот функций и столько же переменных"... Ну за что???
0) В-нулевых - ai2_followme на самом деле сломан не полностью, хотя функция была предназначена исключительно для дебага. Там что-то вроде слишком длинного интервала между апдейтами положения цели. В принципе, можно пофиксить, но всем реальным участникам процесса - мне, Нео - влом, потому что...
1) Во-первых, NEUT - это и есть "нормальный" ai2_followme. Человек по имени Лузер уже давно поделился идеальным для преследования профилем NEUT. А теперь - открытие века - NEUTы имеют-таки имена и их можно-таки сетить в рантайме. Очень хочется пожелать большего - мне, как специалисту - но, увы, нечего. Так что едем дальше.
2) Для экспериментов или альтернатив бинарному моддингу можно использовать следующий глобальный скрипт:

Код:

var int followme;
func FollowMe(string you, int tstep) {
ai2_comehere(you); sleep(tstep);
if(followme) fork FollowMe(you,tstep);
}

Контроль из скрипта-клиента осуществляется очень просто:
1) переменная followme сетится в 1
2) чтобы не мучиться с патрулями (если они есть), всем заспоуненным челам делаем ai2_idle(Chel);ai2_setjobstate(Chel);
2) для каждого преследователя делается по вызову, типа: FollowMe(ChelNomerRaz,60), FollowMe(ChelNomerDva,60), ...
3) после этого все они (ChelNomerRaz, ChelNomerDva, ...) бегают за игроком
4) приходит время избавиться от преследования со стороны ChelNomerRaz 
5) переменная followme сетится в 0, потом через пару секунд снова в 1
6) делается вызов FollowMe(ChelNomerDva,60)
7) ChelNomerRaz остаётся на месте, а ChelNomerDva по-прежнему бежит за нами
И после этого ты будешь жаловаться на "сложности жизни"?
Да побойся Мукада - если не мета-гнева, то мета-презрения.

"Пока что всё это видится очень сложным."
Ну-ну. Надеюсь ты понял - время подобных заказов прошло. Есть активные энтузиасты ASM, которые вот так вот улучшают движок, чтобы "проще жилось" - или контактируй их напрямую, или сам становись таким же.

"Она более рунтаймовая, учитывая, что"
Как знаешь... с консоли можно вбивать более одной строки одновременно, а скриптовый event - это такой же рантайм, как и консольный ввод. Отличия есть, но минимальные, и не в пользу консоли (у неё бывают глюки с вызовами вилок).


Если у тебя есть фонтан, заткни его; дай отдохнуть и фонтану.

Оффлайн

 

Board footer

© 2006-2024 Амэ & Mih@
ОНИмия – фан-сайт игры Oni
Движок форума - модифицированный PunBB