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

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

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

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

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
873
Благодарности
501
Баллы
245
Как сделать чтобы НПС был телохранителем другого НПС. чтобы когда мы атаковали этого "Другого НПС", именно этот "Телохранитель" атаковал нас. А то он в сторонку отходит и болеет
Если есть необходимость перейти на личности,то есть такой вариант:
В файле B_AssessFightSound.d ,можно перед последними тремя строками :
Npc_ClearAIQueue(self);
B_ClearPerceptions(self);
AI_StartState(self,ZS_WatchFight,0,"");
прописать:
if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Vasia)) && (Hlp_GetInstanceID(victim) == Hlp_GetInstanceID(Petia))
{
B_Attack(self,other,AR_GuildEnemy,0);
return;
};
где Vasia ,будет заступником для Petia.
Соответственно необходимо Васю с Петей прописать в Npc_Globals.d
PS AR_GuildEnemy может варьироваться по твоему усмотрению,думаю сам разберешься.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.577
Благодарности
4.171
Баллы
915
Ну-у-у, это уже действительно частный случай. Кстати, зачем прописывать причину атаки AR_GuildEnemy, если это приведёт к добиванию поверженного агрессора? Лучше уж дать причину AR_GuardStopsFight, с которой Ларес бьёт морду наехавшему на ГГ вышибале Мо.
 

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
873
Благодарности
501
Баллы
245
зачем прописывать причину атаки AR_GuildEnemy
Как говорится:что под руку подвернулось(перед тем как написать пост,я наскоро протестил работоспособность этого кода).Конечно варианты могут быть различные,о чем и сообщил в посте.
А то, что случай частный-согласен,но ведь Melonslise и говорил о частностях(личный телохранитель для определенного НПЦ).Если я правильно его понял.
 
Последнее редактирование:

Melonslise

Участник форума
Регистрация
19 Окт 2014
Сообщения
179
Благодарности
19
Баллы
175
О спасибо, ребят. Но если заглянуть в скрипт телохранителей и Эстебана, то можно увидеть, что гильдия у них одинаковая и телохранители защищают Эстебана, хотя если кого-то избить из баедитов, другие не будут за них заступаться
 

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
873
Благодарности
501
Баллы
245
О спасибо, ребят. Но если заглянуть в скрипт телохранителей и Эстебана, то можно увидеть, что гильдия у них одинаковая и телохранители защищают Эстебана, хотя если кого-то избить из баедитов, другие не будут за них заступаться
Опять же из B_AssessFightSound.d
// Дальше нападающий и жертва являются только людьми!
// --------------------------------------------------
// если нападающий ГГ является переодетым бандитом или жертва ГГ является переодетым бандитом
if((C_PlayerIsFakeBandit(self,other) == TRUE) || (C_PlayerIsFakeBandit(self,victim) == TRUE))
// и (нападающий бандит или жертва бандит)
&& ((other.guild == GIL_BDT) || (victim.guild == GIL_BDT))
{
// если свидетель бандит
if(self.guild == GIL_BDT)
{
// если свидетель и нападающий являются охранниками Эстебана
if(self.aivar[AIV_STORYBANDIT_ESTEBAN] == TRUE) && (other.aivar[AIV_STORYBANDIT_ESTEBAN] == TRUE)
{
// свидетель атакует жертву
B_Attack(self,victim,AR_NONE,0);
return;
};
// если свидетель и жертва являются охранниками Эстебана
if(self.aivar[AIV_STORYBANDIT_ESTEBAN] == TRUE) && (victim.aivar[AIV_STORYBANDIT_ESTEBAN] == TRUE)
{
// свидетель атакует нападающего
B_Attack(self,other,AR_NONE,0);
return;
};
 

Melonslise

Участник форума
Регистрация
19 Окт 2014
Сообщения
179
Благодарности
19
Баллы
175
Ок, спасибо!

Никто не подкинет ссылку на туториал по добавке своих мобов(моделей) в игру?
 

cool_er

Участник форума
Регистрация
23 Мар 2015
Сообщения
118
Благодарности
42
Баллы
190
Ок, спасибо!

Никто не подкинет ссылку на туториал по добавке своих мобов(моделей) в игру?
А зачем целый туториал-то? Вот что надо делать:
  1. Устанавливаешь плагины Керракса на Макс\Блендер(Ничего сложного, просто тыкаешь кнопки "далее" в инсталлере, и выбираешь папку с редактором в качестве папки для установки).
  2. Моделишь предмет\мир (что и как зависит от тебя).
  3. Нажимаешь на экспорт(расположение кнопки зависит от редактора).
  4. В качестве типа выбираешь "kerrax 3d studio mesh (.3ds)" если моделил мир\предмет, или "kerrax ascii model (.asc)" если моделил тело\доспехи\анимацию.
  5. Если делал мир, то можно просто открыть .3ds файл.
  6. Если делал VOB, то в спейсере в поле visual выбираешь свой .3ds файл.
  7. Если делал предмет\доспехи и т.д, то в инстанции предмета вписываешь в параметре "visual = " имя .3ds файла.

Каждый .3ds файл должен быть сохранен в специальной папке, например оружие ближнего боя сохраняется в data\Meshes\Items\IT_Weapons, а руны в data\Meshes\Items\IT_Runen.
 

Melonslise

Участник форума
Регистрация
19 Окт 2014
Сообщения
179
Благодарности
19
Баллы
175
А зачем целый туториал-то? Вот что надо делать:
  1. Устанавливаешь плагины Керракса на Макс\Блендер(Ничего сложного, просто тыкаешь кнопки "далее" в инсталлере, и выбираешь папку с редактором в качестве папки для установки).
  2. Моделишь предмет\мир (что и как зависит от тебя).
  3. Нажимаешь на экспорт(расположение кнопки зависит от редактора).
  4. В качестве типа выбираешь "kerrax 3d studio mesh (.3ds)" если моделил мир\предмет, или "kerrax ascii model (.asc)" если моделил тело\доспехи\анимацию.
  5. Если делал мир, то можно просто открыть .3ds файл.
  6. Если делал VOB, то в спейсере в поле visual выбираешь свой .3ds файл.
  7. Если делал предмет\доспехи и т.д, то в инстанции предмета вписываешь в параметре "visual = " имя .3ds файла.

Каждый .3ds файл должен быть сохранен в специальной папке, например оружие ближнего боя сохраняется в data\Meshes\Items\IT_Weapons, а руны в data\Meshes\Items\IT_Runen.
Почему я не могу использлвать этот файл как VOB? Вроде коллизия с игроком есть, а текстуры напрочь не видно. В чем дело?
 

Вложения

  • monastery_new.rar
    213,8 KB · Просмотры: 82

cool_er

Участник форума
Регистрация
23 Мар 2015
Сообщения
118
Благодарности
42
Баллы
190
Почему я не могу использлвать этот файл как VOB? Вроде коллизия с игроком есть, а текстуры напрочь не видно. В чем дело?
А ты при экспорте нажал на параметры рядом с полем "переименовывать материалы"и выбрал _work/tools/data/matlib.ini ? Также "переименовывать материалы" должно быть выбрано. А текстуры стандартные выбирал?
 

Melonslise

Участник форума
Регистрация
19 Окт 2014
Сообщения
179
Благодарности
19
Баллы
175
А ты при экспорте нажал на параметры рядом с полем "переименовывать материалы"и выбрал _work/tools/data/matlib.ini ? Также "переименовывать материалы" должно быть выбрано. А текстуры стандартные выбирал?
Ну этот меш я взял с modderdatenbank'а с немецкого вога :{ , так что я не знаю. Когда открываю как меш все есть, а когда вставляю MOB, то текстур нет :(
 

cool_er

Участник форума
Регистрация
23 Мар 2015
Сообщения
118
Благодарности
42
Баллы
190
Ну этот меш я взял с modderdatenbank'а с немецкого вога :{ , так что я не знаю. Когда открываю как меш все есть, а когда вставляю MOB, то текстур нет :(
А зачем вообще это вставлять как воб? По идеи это должно быть частью меша, возможно для воба слишком много полигонов. Даже если я пере-экспортирую меш, то текстуры воба не отображаются, в режиме меша всё нормально.
 

Melonslise

Участник форума
Регистрация
19 Окт 2014
Сообщения
179
Благодарности
19
Баллы
175
А зачем вообще это вставлять как воб? По идеи это должно быть частью меша, возможно для воба слишком много полигонов. Даже если я пере-экспортирую меш, то текстуры воба не отображаются, в режиме меша всё нормально.
Нет способа использовать это как MOB? Очень нужно
 

cool_er

Участник форума
Регистрация
23 Мар 2015
Сообщения
118
Благодарности
42
Баллы
190
Нет способа использовать это как MOB? Очень нужно
Только что проверил. Отображается только если порезать модель на мелкие части. Но резать будет геморройно, поэтому можно ставить только как часть модельки мира.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Нет способа использовать это как MOB? Очень нужно
Нельзя, даже если и сделать, то будет очень много проблем( то же рахрезение) предел для вобов по количеству вершин в модели что то около 2000
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Нет способа использовать это как MOB? Очень нужно

А тебя не смущает, что мобы имеют ряд особенностей, например, отрисовываются на ограниченной дистанции?

Правильный путь - мергить этот меш к остальному мешу игрового мира. Скорее всего, потребуется правка обоих мешей в Максе или другом 3d-редакторе.
 

Melonslise

Участник форума
Регистрация
19 Окт 2014
Сообщения
179
Благодарности
19
Баллы
175
Помогите ребят
Сурсер указывает на это
Код:
func int DIA_BODYGUARD_FISH_Condition()
{
   if((MIS_FishRations == LOG_Running) && (Npc_HasItems(other, ITFO_FISH >= 1)))
   {
     return TRUE;
   };
};
и говорит это: "Error: Cannot convert from type int to instance"
 

Melonslise

Участник форума
Регистрация
19 Окт 2014
Сообщения
179
Благодарности
19
Баллы
175
После ITFO_FISH нужно скобку закрывать.
(Npc_HasItems(other, ITFO_FISH) >= 1)
Ох не заметил. Спасибо

Тут еще проблемка: после разговора с нпс должна появляться запись про торговлю в лагере (я создал TOPIC_Traders_Con), но запись в общей информации не появляестя
 
Последнее редактирование:

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.954
Благодарности
1.488
Баллы
465
В диалоге должно быть прописано что-то вроде этого
Код:
Log_CreateTopic(TOPIC_Traders_Con,LOG_NOTE);
B_LogEntry(TOPIC_Traders_Con,"Торговец N торгует разными вещами по хорошей цене");
И в скрипте LOG_Constants_Notes.d должно быть прописано
Код:
const string TOPIC_Traders_Con = "???";
 
Последнее редактирование:

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
Можете пожалуйста помочь создать шрифт, в котором всего один символ размером 512X512?
 
Сверху Снизу