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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

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

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

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Звуки похоже на удары об что-либо - об дерево, об металл и что-то еще.
Это звуки, воспроизводимые движком при ударах чего-то обо что-то. К посту прикреплён файл из мод-кита к Г1. Там есть полезные комментарии, например, эти:
Daedalus:
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// COLLISION SOUNDS //////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

// Defaults (CS_MHL, CS_MHM ...) werden benutzt, wenn der im Game auftauchenden Collisions-Situation
// kein Script-Sound zugeordnet wurde, bei dem die Materialien (o.д.) passen.

//////////////////////////////////////////////////////

// Materialkьrzel:
// ---------------
// WO - Wood
// ME - Metal
// ST - Stone
// FL - Flesh
// WA - Water
// EA - Earth
// SA - Sand
// UD - Undefined

// Event-Kategorien:
// -----------------

// IAI - Item Attacks Item, ьberwiegend Parade beim Schertkampf
// IAM - Item Attacks Model, Spieler drescht mit der Waffe auf einen NPC ein
// IAL - Item Attacks Level, Spieler haut mit der Waffe vor eine Wand
// IAO - Item Attacks Object, Spieler haut mit der Waffe auf ein Objekt, meistens die gleichen Waves wie bei IAL

// IHL - Item Hits Level, ein Gegenstand fдllt auf den Boden
// IHO - Item Hits Object, ein Gegenstand fдllt auf ein Objekt, meistens Brьcken etc.

// MAM - Model Attacks Model, Spieler brдt seinem Gegenьber im Faustkampf eins ьber

// MAL - ?!?!?!? - Model Attacks Level, Spieler trifft mit dem Fausthieb eine Wand
// MAO - ?!?!?!? - Model Attacks Object, Spieler boxt vor einen Tisch. Naja...



Есть неиспользованные звуки ... Они могут быть задействованы или есть ограничение?
Если движок работает с данной группой коллизий, то можно, наверное, добавить инстанции для неиспользуемых звуков. Но не факт, что движок работает со всеми группами. В Г1, например, движок не вызывает звуки при ударе оружием по объектам и поверхности меша, и не только их.
 

Вложения

  • SfxInst.d.txt
    137,3 KB · Просмотры: 118

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Если движок работает с данной группой коллизий, то можно, наверное, добавить инстанции для неиспользуемых звуков. Но не факт, что движок работает со всеми группами. В Г1, например, движок не вызывает звуки при ударе оружием по объектам и поверхности меша, и не только их.
Спасибо. Глянул в Г2Мдк. Из всего списка можно восстановить всего парочку, немного, но уже хорошо.
//new
instance CS_IAL_ME_WO_01(C_SFX_DEF)
{
file = "CS_IAL_ME_WO_01.wav";
vol = 80;
};

//new
instance CS_IAI_ME_ME_A8(C_SFX_DEF)
{
file = "CS_IAI_ME_ME_09.wav";
vol = 60;
};
Остальное вызывает баги.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Кстати, на мой вкус, большинство звуков коллизий в ресурсах игры отвратительные. Возможно, поэтому не все из них были задействованы в игре. Если заниматься восстановлением звуков, то, наверное, одновременно с этим стоит подыскать и что-то более приличное. Можно посмотреть в других играх, как это оформлено и потырить звуки оттуда.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Используются уже
CS_IAI_ME_ME_01.wav
CS_IAI_ME_ME_02.wav
CS_IAI_ME_ME_03.wav
CS_IAI_ME_ME_04.wav
CS_IAI_ME_ME_05.wav
CS_IAI_ME_ME_06.wav
CS_IAI_ME_ME_07.wav
CS_IAI_ME_ME_08.wav

Эти одинаковые по звуку (нет необходимости возвращать)
CS_MAM_FL_FL_01.wav
CS_MAM_FL_FL_02.wav
CS_MAM_FL_FL_03.wav
CS_MAM_FI_FL_01.wav
CS_MAM_FI_FL_02.wav
CS_MAM_FI_FL_03.wav

Эти описаны как багнутые.
CS_IHL_ME_ST.wav
CS_IHL_ME_ME.wav
CS_IHL_FL_UD.wav

//тут совсем не понятно. UD - неизвестно, остальное дерево, вода, металл.
//Предмет по уровню чем?
CS_IAL_UD_WO_01.wav
CS_IAL_UD_WA_01.wav
CS_IAL_UD_UD_01.wav
CS_IAL_UD_ME_01.wav

upd.
Интересует момент. Из-за чего может ломаться вставка НПС после использования AI_StopProcessInfos
Пример. Имеем диалог с НПС. После диалога с ним идет вставка НПС в указанную область. Расстояние от Башни Ксардаса до Ворот с ополченцем Мики
Так вот, у игрока вышло так, что заспавнилось два НПС в той точке, причем, сколько сам не пытался повторить, так и не вышло это провернуть.
В оригинале есть примеры когда вставка идет до AI_StopProcessInfos, так и после.
Как игрок это сделал? Поговори с НПС, отказался от предложения, а потом согласился.
Вот код. Есть предположение, что влияет расстояние до вставки НПС
Daedalus:
func void b5_9000_mage_search1_yes()
{
    AI_Output(other,self,"B5_9000_Mage_Search1_yes_15_00");    //О ком ты говоришь? И что я могу сделать для них?
    AI_Output(self,other,"B5_9000_Mage_Search1_yes_03_01");    //Они здесь со мной, трое Воинов Темного ордена.
    AI_Output(self,other,"B5_9000_Mage_Search1_yes_03_02"); //Один из них это барон фон Валькенбург.
    AI_Output(self,other,"B5_9000_Mage_Search1_yes_03_03"); //Ты найдешь его по дороге, ведущей из города на ферму.
    AI_Output(self,other,"B5_9000_Mage_Search1_yes_03_04");    //Встреться с ним и выполни задание, которое он тебе даст.
    AI_Output(self,other,"B5_9000_Mage_Search1_yes_03_05"); //Когда ты закончишь с ним, возвращайся ко мне, и я расскажу тебе, каков твой следующий шаг.
    AI_Output(self,other,"B5_9000_Mage_Search1_yes_03_06"); //Не волнуйся, я подожду тебя здесь. Мое время течет иначе, нежели твое...
    Info_ClearChoices(b5_9000_mage_search1);
    Wld_InsertNpc(B5_9001_DRAKASH,"NW_CITY_TO_FOREST_02");
    MIS_Mroczne_Tajemnice = LOG_RUNNING;
    Log_CreateTopic(TOPIC_Mroczne_Tajemnice,LOG_MISSION);
    //Log_SetTopicStatus(TOPIC_Mroczne_Tajemnice,LOG_Running);
    b_logstatus(TOPIC_Mroczne_Tajemnice,LOG_Running);
    B_LogEntry(TOPIC_Mroczne_Tajemnice,"Мне нужно найти воина Темного ордена барона фон Валькенбурга. Когда я выполню его задание, мне нужно будет вернуться к Имперанону.");
    SUCHE_BEGONNEN = TRUE;
    AI_StopProcessInfos(self);
};

func void b5_9000_mage_search1_no()
{
    AI_Output(other,self,"B5_9000_Mage_Search1_no_15_00");    //Сам не знаю... Мне нужно все обдумать.
    AI_Output(self,other,"B5_9000_Mage_Serach1_no_03_01");    //Хорошо, я буду тебя ждать. Только если ты не выберешь другой Путь и Истину.
    //Info_ClearChoices(b5_9000_mage_search1);
    SUCHE_BEGONNEN = FALSE;
    AI_StopProcessInfos(self);
};

func void b5_9000_mage_startsearch_info() 
{
    AI_Output(other,self,"B5_9000_Mage_StartSearch_15_00"); //Я все обдумал. Я готов.
    AI_Output(self,other,"B5_9000_Mage_StartSearch_03_01"); //Хорошо. Итак, слушай.
    AI_Output(self,other,"B5_9000_Mage_StartSearch_03_02");    //Здесь со мной находятся трое воинов Темного ордена.
    AI_Output(self,other,"B5_9000_Mage_StartSearch_03_03"); //Один из них - это барон фон Валькенбург.
    AI_Output(self,other,"B5_9000_Mage_StartSearch_03_04"); //Ты найдешь его по дороге, ведущей из города на ферму.
    AI_Output(self,other,"B5_9000_Mage_StartSearch_03_05");    //Встреться с ним и выполни задание, которое он тебе даст.
    AI_Output(self,other,"B5_9000_Mage_StartSearch_03_06"); //Когда закончишь с ним, возвращайся ко мне, я расскажу тебе о твоем следующем шаге.
    AI_Output(self,other,"B5_9000_Mage_StartSearch_03_07"); //Не волнуйся, я подожду тебя здесь. Мое время течет иначе, нежели твое...
    Wld_InsertNpc(B5_9001_DRAKASH,"NW_CITY_TO_FOREST_02");
    Log_CreateTopic(TOPIC_Mroczne_Tajemnice,LOG_MISSION);
    //Log_SetTopicStatus(TOPIC_Mroczne_Tajemnice,LOG_Running);
    b_logstatus(TOPIC_Mroczne_Tajemnice,LOG_Running);
    B_LogEntry(TOPIC_Mroczne_Tajemnice,"Мне нужно найти воина Темного ордена барона фон Валькенбурга. Когда я выполню его задание, мне нужно будет вернуться к Имперанону.");
    SUCHE_BEGONNEN = TRUE;
    AI_StopProcessInfos(self);
};
 
Последнее редактирование:

Venzern

Участник форума
Регистрация
24 Фев 2008
Сообщения
692
Благодарности
211
Баллы
220
Народ, вопрос из разряда тупых (на мой взгляд):

А как понять и где можно посмотреть, как лягут текстуры на броню? (кроме, как в игре каждый раз при замене текстуры)
Например открыв файл .asc (а где они лежат кстати или их нужно из чего то перегонять в этот формать в 3ds max ?) в 3ds max с плагинами Керракса и там уже смотреть?
 
Последнее редактирование:

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
А можно из TEX сделать tga или bmp?
 

Venzern

Участник форума
Регистрация
24 Фев 2008
Сообщения
692
Благодарности
211
Баллы
220
kraw, да, можно. Через GoMan пересохранить из .tex в .tga и .bmp спокойно.

goman.jpg
 
Последнее редактирование:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
А можно из TEX сделать tga или bmp?
Пользуй тулзу ЗедТех она с инишкой идет куда можешь прописать или дописать любые необходимые текстурки по именам помимо оригинальных которые там уже прописаны. Затем фотожабу юзай для всяких сохранений в форматы нужные и улучшений. Обратно в игру только компилом через двиг, а гоманы и прочее гауно в топку отправляй, ибо тут насоветуют всякого..
 

Blackshaman

Участник форума
Регистрация
21 Окт 2019
Сообщения
15
Благодарности
0
Баллы
100
Добрый день. Уважаемые мододелы, возникла одна идея, надеюсь на вашу помощь и советы по реализации. Хочу изменить руну Белиара 5 круга - Крик Смерти. В ванильном варианте он требует для применения 250 маны, наносит 666 урона и жрет всю ману. По моей задумке заклинание должно наносить урон по всей оставшийся мане*3 - вопрос, как расчитать это в игре. Насколько я понял, значение


const int SPL_COST_SKULL = 250;
const int SPL_DAMAGE_SKULL = 666;

instance SPELL_SKULL(C_SPELL_PROTO)
{
time_per_mana = 0;
damage_per_level = SPL_DAMAGE_SKULL;
damagetype = DAM_MAGIC;
targetcollectalgo = TARGET_COLLECT_FOCUS_FALLBACK_NONE;
};

Я так понимаю, значения типа const int SPL_DAMAGE_SKULL трогать нельзя, то есть не получится прописать ATR_MANA*3
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Не факт. Если данные из инстанции читаются перед каждым кастом заклинания, и в этот момент идентификатор self относится к магу, то да, будет работать, как задумано. Наверное.
 

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
del
 
Последнее редактирование:

Blackshaman

Участник форума
Регистрация
21 Окт 2019
Сообщения
15
Благодарности
0
Баллы
100
damage_per_level = self.attribute[ATR_MANA] * 3;
и никаких проблем быть не должно.
Спасибо. Как всегда я перемудрил )

Хм. В итоге игра вылетает при экипировке руны -_-

Экипировать удалось, но вылетает при касте.
 
Последнее редактирование:

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Как новой модели добавить звук?
Вот есть у нас Краулер.
Я поменял модельку, а звук остался тот же.
Это изменяется в mds файле или где-то еще?
 

WoOliN

Участник форума
Регистрация
13 Окт 2012
Сообщения
347
Благодарности
196
Баллы
210
Blackshaman, да, я там начудил при тесте на скорую руку и всё не так просто.
Придется сначала добавить новую переменную и создать для неё функцию (или вписать в какую-то существующую функцию), которая будет обновлять значение переменной при активации магии или после каждого каста, присваивая этой переменной значение hero.attribute[ATR_MANA] * 3
Только после этого нужно добавить эту переменную к значению урона руны, в виде, например, damage_per_level = 1 + новая переменная.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Как новой модели добавить звук?
Звуки, издаваемые тварюгами, привязаны к анимациям. Вот, например, зацикленная фаза анимации бега вперёд:
Daedalus:
ani            ("s_FistRunL"                1    "s_FistRunL"    0.0    0.0    M.    "Crw_Run_M02.asc"        F    5    15)
{
    *eventSFXGrnd    (5    "Sneak")
    *eventSFXGrnd    (10    "Sneak")
    *eventSFX    (6    "CRW_AMBIENT_SHORT"    EMPTY_SLOT    )
}

На 5-м и 10-м кадрах анимации запускается проигрывание звуков шагов. На 6-м кадре запускается проигрывание дополнительного звука, издаваемого при перемещении. Здесь даны названия инстанций звуков. Инстанции должны быть прописаны в скриптах SFX.DAT.
 

Blackshaman

Участник форума
Регистрация
21 Окт 2019
Сообщения
15
Благодарности
0
Баллы
100
Возникла идея по поводу баланса одноручного-двуручного оружия ближнего боя. Всегда раздражало что двуручи по факту в игре беспоплезны. Можно ли как то изменить бонус от силы к оружию? Например, чтобы к урону одноруча бонусом урона шло 80% силы гг, а двуручу - все 100%. Хотя бы для главного героя. Но я не нашел где прописаны бонусы от силы.
 
Сверху Снизу