• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Не стесняюсь спросить....

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Нужно чтобы такое произошло в самом начале игры.

Если тебя не пугает наличие циклической функции, то запустить что-то при старте игры можно так.

В циклической функции пишешь фрагмент:
Код:
if(hero.aivar[ХХХХХХХХХХ])
{
  if(hero.aivar[ХХХХХХХХХХ] == 1)
  {
    ... //Действие 1
  }
  else if(hero.aivar[ХХХХХХХХХХ] == 2)
  {
    ... //Действие 2
  }
   ...
  else if(hero.aivar[ХХХХХХХХХХ] == 99)
  {
    ... //Действие 99
  };
  hero.aivar[ХХХХХХХХХХ] = 0;
};

Аиварина aivar[ХХХХХХХХХХ] выбирается из числа тех, которые редко используются неписями, а для ГГ вообще не актуальны. В Г2, навскидку, это aivar[AIV_DeathInvGiven] или aivar[AIV_PASSGATE]. Можно завести для этой цели отдельную аиварину, но это, как мне кажется, расточительство. Изменяя значение этой аиварины в нужный момент, можно запускать выполнение того или иного действия.

В инстанции ГГ прописываешь значение этой аиварины, например:

Код:
aivar[ХХХХХХХХХХ] = 99;

При старте игры будет запущена циклическая функция, и будет выполнено соответствующее действие, в данном случае - Действие 99.

Если нужно запустить диалог "сам с собою", то следует прописать там:

Код:
  else if(hero.aivar[ХХХХХХХХХХ] == 99)
  {
    hero.aivar[AIV_INVINCIBLE] = TRUE;
    AI_ProcessInfos(hero);
  };

Ну и инстанцию диалога нужно создать, в условии которой прописать if(hero.aivar[ХХХХХХХХХХ] == 99). :)
 

Bjorn++

Участник форума
Регистрация
28 Июн 2011
Сообщения
1.063
Благодарности
46
Баллы
235
Если тебя не пугает наличие циклической функции, то запустить что-то при старте игры можно так.

В циклической функции пишешь фрагмент:
Код:
if(hero.aivar[ХХХХХХХХХХ])
{
  if(hero.aivar[ХХХХХХХХХХ] == 1)
  {
    ... //Действие 1
  }
  else if(hero.aivar[ХХХХХХХХХХ] == 2)
  {
    ... //Действие 2
  }
   ...
  else if(hero.aivar[ХХХХХХХХХХ] == 99)
  {
    ... //Действие 99
  };
  hero.aivar[ХХХХХХХХХХ] = 0;
};

Аиварина aivar[ХХХХХХХХХХ] выбирается из числа тех, которые редко используются неписями, а для ГГ вообще не актуальны. В Г2, навскидку, это aivar[AIV_DeathInvGiven] или aivar[AIV_PASSGATE]. Можно завести для этой цели отдельную аиварину, но это, как мне кажется, расточительство. Изменяя значение этой аиварины в нужный момент, можно запускать выполнение того или иного действия.

В инстанции ГГ прописываешь значение этой аиварины, например:

Код:
aivar[ХХХХХХХХХХ] = 99;

При старте игры будет запущена циклическая функция, и будет выполнено соответствующее действие, в данном случае - Действие 99.

Если нужно запустить диалог "сам с собою", то следует прописать там:

Код:
  else if(hero.aivar[ХХХХХХХХХХ] == 99)
  {
    hero.aivar[AIV_INVINCIBLE] = TRUE;
    AI_ProcessInfos(hero);
  };

Ну и инстанцию диалога нужно создать, в условии которой прописать if(hero.aivar[ХХХХХХХХХХ] == 99). :)
Эээ.... всё конечно хорошо. Но ты мне объяснил так, будто я всю жизнь занимаюсь программированием :D
Ну ладно... где хоть это всё это писать? в каком *.d файле?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
где хоть это всё это писать? в каком *.d файле?

Гм, я в некотором замешательстве. То есть, "циклическая функция" у тебя вопросов не вызвала?

Файл или файлы скрипта можешь создать сам с любым, удобным для тебя названием/названиями. Важнее, где расположить их в очереди. У меня скрипт с циклической функцией расположен ближе к началу списка. Желательно, чтобы скрипт Story_Globals.d стоял выше. Файл с инстанцией диалога можно кинуть рядом с остальными скриптами диалогов с неписями или с МОБСИ-диалогами.

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

Melonslise

Участник форума
Регистрация
19 Окт 2014
Сообщения
179
Благодарности
19
Баллы
175
Народ, как изменить матриал/звук MOB'а? Когда хожу по деревянному домику, то звук травы.
P.S. где "MOB" там soundMaterial:Wood, но звук всё же травы.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Народ, как изменить матриал/звук MOB'а? Когда хожу по деревянному домику, то звук травы.
P.S. где "MOB" там soundMaterial:Wood, но звук всё же травы.
Чтобы материалы применились к объектам, нужно чтобы записи о матрериалах были в ZENе (а не во внешних файлах, которые читает Spacer), в котором находятся эти объекты, для этого нужно перекомпилировать сам ZEN.
 

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
Кто ни будь может помочь создать функцию B_AssessDamage() для Готики 1?
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Чтобы материалы применились к объектам, нужно чтобы записи о матрериалах были в ZENе (а не во внешних файлах, которые читает Spacer), в котором находятся эти объекты, для этого нужно перекомпилировать сам ZEN.
Нет, какраз во внешних файлах, чтоб модели скомпилились спейсером, ибо только в этом случае материал модели переписывается. + важно имя метариала
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Чтобы материалы применились к объектам, нужно чтобы записи о матрериалах были в ZENе

Гм, в мод-фиксе есть деревья с прозрачными для прохождения кронами. Свойства крон, как я понимаю, сохранились в самих моделях. Можно положить их даже к оригинальному ZENу игрового мира, и свойства останутся. Нужно попробовать действительно перекомпилировать модели с деревянным материалом (мосты, переходы в БЛ, вышеназванную лачугу ...).

создать функцию B_AssessDamage() для Готики 1

Что значит "создать"? Разве её там нет? Или нужно создать альтернативу для какого-то особого случая? Если да, то так и говори, вряд ли ты найдёшь здесь экстрасенса, читающего твои мысли. :)
 
Последнее редактирование:

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Гм, в мод-фиксе есть деревья с прозрачными для прохождения кронами. Свойства крон, как я понимаю, сохранились в самих моделях. Можно положить их даже к оригинальному ZENу игрового мира, и свойства останутся. Нужно попробовать действительно перекомпилировать модели с деревянным материалом (мосты, переходы в БЛ, вышеназванную лачугу ...).



Что значит "создать"? Разве её там нет? Или нужно создать альтернативу для какого-то особого случая? Если да, то так и говори, вряд ли ты найдёшь здесь экстрасенса, читающего твои мысли. :)
К слову о материалах внешних, примерно через 2 недельки релиз AST и обновление готик сорсера до версии 3.15 и там все это будет упрощено.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Походу свойства материалов сохраняются и в моделях и в ЗЕНе. Пробовал открывать и то и другой через HEX редактор. В моделях класс zCMaterial встречается от 1 до нескольких раз в зависимости от количества, а в компилированном зене их может быть и по несколько сотен. По крайней мере я всегда стараюсь перекомпилировать все модели и все ZEN'ы игры в моде после работы с материалами. Может быть и такое, что в модели свойство материала задано одно, а в ЗЕНе дургое, отсюда например свежеотрезанная голова Бладвина в Яркендаре имеет одну текстуру, а на Ирдорате другую т.к. в ЗЕНе Ирдората свойства материала головы скорее всего прописаны другие и конфликтуют, от чего получается забавный момент в игре.. Ну и прочие конфликты при совпадении материалов.

Нет, какраз во внешних файлах, чтоб модели скомпилились спейсером, ибо только в этом случае материал модели переписывается. + важно имя метариала
При запуске Спейсера то да, подгружаются внешние материалы из PML файлов... При перекомпиляции ЗЕНа, новые материалы в ЗЕН также берутся оттуда. А сама игра уже использует записи из ЗЕНа, или из самой модели.
 
Последнее редактирование:

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
Что значит "создать"? Разве её там нет? Или нужно создать альтернативу для какого-то особого случая? Если да, то так и говори, вряд ли ты найдёшь здесь экстрасенса, читающего твои мысли.
Я не нашел, если есть то скажи как она называется. Мне нужна функция которая срабатывает каждый раз когда ГГ наносит урон НПС или монстру.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
В файле скрипта AI\AI_Intern\perception.d прописаны наборы восприятий, в том числе строчка:
Npc_PercEnable(self,PERC_ASSESSDAMAGE,ZS_ReactToDamage);

Из приведённого примера видно, что за обработку восприятия повреждения отвечает функция-состояние ZS_ReactToDamage. Но если посмотришь состояние атаки ZS_Attack, то там прописана своя функция:
Npc_PercEnable(self,PERC_ASSESSDAMAGE,B_CombatReactToDamage);

У монстров есть своя функция. В принципе, в различных условиях можно для одного и того же восприятия использовать разные функции обработки.
 

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
А функция когда НПС убегает, и получает люлей вдогонку?
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
При запуске Спейсера то да, подгружаются внешние материалы из PML файлов... При перекомпиляции ЗЕНа, новые материалы в ЗЕН также берутся оттуда. А сама игра уже использует записи из ЗЕНа, или из самой модели.
Игра берет из зена только для самого зена, а вобы берут мат из своих моделей, а конфликты бывают изза похожих имен
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
А функция когда НПС убегает, и получает люлей вдогонку?

Когда неписи убегают (ZS_Flee), у них отключаются все восприятия, кроме восприятия магии. То есть, на повреждения они не реагируют.
 

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
Я в функцию ZS_Flee вставил строку Npc_PercEnable(self,PERC_ASSESSDAMAGE,B_AssessDamage); вроде работает:)

p.s. Точнее в ZS_Flee_Loop
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Я в функцию ZS_Flee вставил строку Npc_PercEnable(self,PERC_ASSESSDAMAGE,B_AssessDamage); вроде работает:)

p.s. Точнее в ZS_Flee_Loop
Зачем в луп то? В инициализацию состояния кидай в самый конец
 
Сверху Снизу