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

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

Готика 2: НВ Out Of My Way

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
  • Первое сообщение
  • #1
редакция от 1 марта 2023 года.
один архув с аудио репликами и субтитрами. второй архив со скриптами. два архива лишние, удалить не смог. у правильного архива в название указано "оно"
***
настройки восприятия можно изменить в файле gothic.ini. параметры по умолчанию
DIST_MoveNpc=300
DIST_PERC_MOVENPC=100
***
  • реплики собраны в посте #3 топика Готика 2: НВ - Out Of My Way
  • Сердце "проекта", цикл ZS_MoveNpcWait в посте #4 Готика 2: НВ - Out Of My Way
  • C_AmIFRIENDLY - у героя есть «друзья». Какие то есть изначально, какие то появляются по сюжету, какие то в рамках фракционных отношений. Друзья не бьют героя и не хомят ему на ровном месте. Друзья говорят «Привет друг». пост про друзей #5 Готика 2: НВ - Out Of My Way
  • C_AmIStronger - если НПС не друг героя и достаточно крепок, то он будет угрожать герою. Проверка на то крут НПС или нет в посте #6 Готика 2: НВ - Out Of My Way
 

Вложения

  • 2023_01_03_G2_OUTOFMYWAY_RU_SPEECH.zip
    1,7 MB · Просмотры: 15
  • оно_2023_01_03_G2_OUTOFMYWAY_scripts.zip
    9,9 KB · Просмотры: 15
  • 2023_03_10_G2_OUTOFMYWAY_scripts.zip
    10,7 KB · Просмотры: 9
  • 2023_03_13_G2_OUTOFMYWAY_scripts.zip
    10,9 KB · Просмотры: 10
Последнее редактирование:

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.081
Благодарности
1.901
Баллы
320
Добавить поле в класс плагином не получиться.
А проверку, думаю, можно сделать этими функциями:
Daedalus:
// Возвращает ID парсера по его имени parName
// (см. теги и наименования парсеров/DAT файлов)
func int Par_GetParserID(var string parName);

// Возвращает ID символа symName из парсера parId
func int Par_GetSymbolID(var int parId, var string symName);
Т.е. нужно узнать, существует ли символ C_SVM.WHERETO
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
вообщем я прошёл игру с данной штукой. в целом ощущения приятные, но есть ряд НО:
1. сейчас есть условно три сценария: 1. агрессивный, 2. нейтральный и 3. дружески. вот нейтральный сценарий по ощущениям нуждается в доработке :)
2. более детально надо проработать межфракционные отношения. когда законопослушные граждане грубо разговаривают с ополчением это сродни провокации :) то есть тесты лучше делать в третей главе.

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

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
в целом ощущения приятные, но есть ряд НО:
1) ну он же сейчас орет: "Убирайся" и руками машет. Думаешь чего-то не хватает?
Ну как вариант:
1я секунда - "Убирайся"
3я секунда - машет руками.
7я секунда - "Ты дашь пройти или нет?"
9я секунда - опять машет руками
:oops:
2) т.е. та табличка, которую мы составили не совсем актуальна и не правильна?
3) а вот с этим жопэ... и врядли вообще осуществимо.
Даже если мы распарсим все квесты непися, и будем идти от того, закончен ли квест, то квест может закончиться и негативно для болванчика, соответственно и менять
self.npcType = NPCTYPE_FRIEND в этом случае не нужно...
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
по 1 пунку. надо наверное брать фразы из Готики 1 и пробовать с ними. может будет бодрее.

***

2) т.е. та табличка, которую мы составили не совсем актуальна и не правильна?
она актуально и правильно. но при прохождение игры стало понятно, что требуется доработка.

***

3.
Даже если мы распарсим все квесты непися, и будем идти от того, закончен ли квест, то квест может закончиться и негативно для болванчика, соответственно и менять
self.npcType = NPCTYPE_FRIEND в этом случае не нужно...
в ручном режиме управлять таким проектом может только Владимир Владимирович. я думаю достаточно просто держать этот момент в памяти и не заострять постоянно на него внимание, так как это не "косяк" данного проекта. в целом смена отношения НПС к герою должна быть неотъемлемой частью общего "ИИ". а так получается что помог ты диего, что убил его, что кинул его, что первый раз увидел - всё едино для Диего :) поэтому про это можно будет подумать потом.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
по 1 пунку. надо наверное брать фразы из Готики 1 и пробовать с ними. может будет бодрее.
ладно. Вот вырезанные файлы фраз("дай пройти" и "с дороги") озвучка снежков
но как их в касс запихать, если это невозможно?
Или вообще отдельный класс создать и на нем реализовать?
 

Вложения

  • SOUND.7z
    569,8 KB · Просмотры: 5

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
пока напишем "в ручном" режиме, без класса. если проект вырастит, то сделаем новый класс с помощью юнион.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Какой-то движ, вникать лень. Что тут происходит?
 

Lorddemonik

★★★★★
Редактор раздела
Регистрация
17 Дек 2011
Сообщения
1.113
Благодарности
581
Баллы
350

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
Какой-то движ, вникать лень. Что тут происходит?
G2 addon. пока ничего интересного. тестируем что написали до этого.

****

пока напишем "в ручном" режиме, без класса
субтитры. может быть по науке можно делать как то иначе.
Daedalus:
func void B_SayMAKEWAY_index()  // эту функцию не надо вызывать. техническая, для индексации субтитров
{
    // русские субтиры
    AI_Output(self, self, "SVM_1_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_2_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_3_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_4_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_5_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_6_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_7_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_8_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_9_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_10_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_11_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_12_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_13_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_14_MAKEWAY");  // Дай мне пройти!
    AI_Output(self, self, "SVM_15_MAKEWAY");  // Дай мне пройти!
};


Daedalus:
func void B_SayMAKEWAY(var C_NPC slf, var C_Npc oth)
{
    var string files; files = Str_Format("SVM_%i_MAKEWAY",slf.voice);
    Hlp_PrintConsole(files);
   
    Npc_ClearAIQueue(slf);
    AI_Output(slf, oth , files); // нужен "индекс" субтитров. см B_SayMAKEWAY_index
};
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
AI_Output(slf, oth , files); // нужен "индекс" субтитров. см B_SayMAKEWAY_index
А зачем?
там же одна и та же фраза, просто разными голосами.
Сделать тут
AI_Output(slf, oth , files); // Дай мне пройти!

ЗЫ. надо на будущее еще подумать на счет гендера неписей...
Где-то когда-то видел прогу, которая из мужского голоса делает женские...
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
скорее всего я отвечу некорректно на данный вопрос :) субтитры формирует движок при компиляции скриптов путём "обхода" файлов скриптов. в нашем случае в строчке отсутствует название файла в кавычках ;-)
Пост автоматически объединён:

Для тех, кто интересуется почему закомментированы субтитры.

Естественно что при компиляции скриптов все комментарии удаляются, но Spacer вылавливает их и сохраняет в файле ouinfo.inf. Из него Spacer впоследствии создает правильные ou.bin и ou.cls файлы. Именно поэтому, если вам нужно создать субтитры, то необходимо после описания AI_Output функции использовать комментарии. Комментарий заканчивается в конце строки.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
субтитры формирует движок при компиляции скриптов путём "обхода" файлов скриптов.
т.е. получается, идет обход функции B_SayMAKEWAY_index, индексируются субтитры.
далее вызывается функция B_SayMAKEWAY, и вот тут вопрос. Что будет в виде субтитров?
нужен "индекс" субтитров. см B_SayMAKEWAY_index
или
Дай мне пройти!
:oops:
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
Что будет в виде субтитров?
самый простой вариант посмотреть на новый файл csl

4. Компилятор DAT и OU:
А. Плагин имеет механизм создания OU (.bin и .csl). При этом созданная библиотека чище, чем собранная средствами Spacer или GothicSourcer (см. дополнительные параметры запуска).
Б. Плагин может пересобирать DAT файлы по отдельности (см. дополнительные параметры запуска).
В. Плагин может сохранить новый DAT и OU после их изменения через инъекции (см. параметры ini и консольные команды), при этом имена таких файлов будут иметь суффикс '.edited', то есть плагин не перезаписывает оригинальные файлы.

Следующие консольные команды предназначены для сохранения КОПИЙ DAT и OU файлов в ручном режиме и списка строковых переменных.
HTML:
Parser SaveDat OU - скомпилировать OU.Edited.bin


т.е. получается
я в спейсере и движке "два по пять". лучше спросить у тех кто понимает ;-)
 
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
Das Herzstück auf das wir uns konzentrieren ist die KI. Gothic war meiner Ansicht nach schon immer ein Vorreiter von lebendiger Spielwelt und Simulation. Das wollen wir im Remake natürlich auch wieder in den Fokus rücken. Dabei wollen wir weit über das hinausgehen, was der Originaltitel geboten hat und eine noch lebendigere Worldsimulation bieten.
авторы ремейка рассказали как ИИ помогает им экономить людские ресурсы, что бы люди занятые на проекте могли например общаться с фан базой.. мне вот интересно, а с ElderGamer вообще кто нибудь связывался? ну так.. просто спросить, что он в целом там делал последние десять лет, что может посоветовать или просто что то рассказать? какие у него мысли в целом есть... нет? )

***
  • переписал "тайминг" в ZS_MoveNpcWait_Loop в связи с тем что YOUDEAFORWHAT длинная
  • добавил func void B_Say_SVM_Overlay(var C_NPC slf, var C_Npc oth, var string files) с вызовом AI_OutputSVM_Overlay, что бы НПС мог вытащить оружие
  • остальные реплики идут без оверлея
  • звук и файлы под "субтитры"находятся в отдельном архиве, для вариативности. то есть можно будет например сделать звук на польском, а субтитры на украинском.

Daedalus:
    // русские субтитры
func void Ru_SVM_index()  // эту функцию не нужно вызывать. используется для субтитров
{
    /********************************************************
         !!!   имя файлов "ЗАГЛАВНЫМИ БУКВАМИ"  !!!
    ********************************************************/
 
    AI_Output(self, self, "SVM_1_MAKEWAY");    //Дай мне пройти!
    AI_Output(self, self, "SVM_2_MAKEWAY");    //Дай мне пройти!
    AI_Output(self, self, "SVM_3_MAKEWAY");    //Дай мне пройти!
    AI_Output(self, self, "SVM_4_MAKEWAY");    //Дай мне пройти!
    AI_Output(self, self, "SVM_5_MAKEWAY");    //Дай мне пройти!
    AI_Output(self, self, "SVM_6_MAKEWAY");    //Дай мне пройти!
    AI_Output(self, self, "SVM_7_MAKEWAY");    //Дай мне пройти.
    AI_Output(self, self, "SVM_8_MAKEWAY");    //Можно пройти?
    AI_Output(self, self, "SVM_9_MAKEWAY");    //Дай мне пройти!
    AI_Output(self, self, "SVM_10_MAKEWAY");    //Дай мне пройти!
    AI_Output(self, self, "SVM_11_MAKEWAY");    //Можно пройти?
    AI_Output(self, self, "SVM_12_MAKEWAY");    //Дай мне пройти!
    AI_Output(self, self, "SVM_13_MAKEWAY");    //Дай мне пройти.
    AI_Output(self, self, "SVM_14_MAKEWAY");    //Отойди!


    AI_Output(self, self,  "SVM_1_YOUDEAFORWHAT");    //Ты оглох? ДВИГАЙСЯ!
    AI_Output(self, self,  "SVM_2_YOUDEAFORWHAT");    //Исчезни, или я займусь тобой!
    AI_Output(self, self,  "SVM_3_YOUDEAFORWHAT");    //Сколько раз говорить?! Дай мне пройти!
    AI_Output(self, self,  "SVM_4_YOUDEAFORWHAT");    //С дороги, или ты пожалеешь!
    AI_Output(self, self,  "SVM_5_YOUDEAFORWHAT");    //Ты глухой или ищешь неприятностей?
    AI_Output(self, self,  "SVM_6_YOUDEAFORWHAT");    //Исчезни! Мне что - нужно вбить это в твою тупую башку?
    AI_Output(self, self,  "SVM_7_YOUDEAFORWHAT");    //Ищешь неприятностей? Убирайся отсюда!
    AI_Output(self, self,  "SVM_8_YOUDEAFORWHAT");    //Я что - должен вбить это в твою тупую башку? Убирайся отсюда!
    AI_Output(self, self,  "SVM_9_YOUDEAFORWHAT");    //Ну же, отойди с дороги!
    AI_Output(self, self,  "SVM_10_YOUDEAFORWHAT");    //Я что, должен вбить это в твою тупую башку? Убирайся отсюда!
    AI_Output(self, self,  "SVM_11_YOUDEAFORWHAT");    //Я что, должен вбить это в твою тупую башку? Убирайся отсюда!
    AI_Output(self, self,  "SVM_12_YOUDEAFORWHAT");    //Ты глухой или ищешь неприятностей?
    AI_Output(self, self,  "SVM_13_YOUDEAFORWHAT");    //Ты ищешь неприятностей? Убирайся отсюда!
    AI_Output(self, self,  "SVM_14_YOUDEAFORWHAT");    //А теперь исчезни!



    AI_Output(self, self, "SVM_1_OUTOFMYWAY");    //С дороги, парень!
    AI_Output(self, self, "SVM_2_OUTOFMYWAY");    //С дороги!
    AI_Output(self, self, "SVM_3_OUTOFMYWAY");    //С дороги, парень!
    AI_Output(self, self, "SVM_4_OUTOFMYWAY");    //С дороги!
    AI_Output(self, self, "SVM_5_OUTOFMYWAY");    //Ну же, мне нужно пройти!
    AI_Output(self, self, "SVM_6_OUTOFMYWAY");    //Эй, посторонись!
    AI_Output(self, self, "SVM_7_OUTOFMYWAY");    //С дороги!
    AI_Output(self, self, "SVM_8_OUTOFMYWAY");    //В сторону!
    AI_Output(self, self, "SVM_9_OUTOFMYWAY");    //Отойди!
    AI_Output(self, self, "SVM_10_OUTOFMYWAY");    //Прочь с дороги!
    AI_Output(self, self, "SVM_11_OUTOFMYWAY");    //Отойди!
    AI_Output(self, self, "SVM_12_OUTOFMYWAY");    //Ну же, мне нужно пройти!
    AI_Output(self, self, "SVM_13_OUTOFMYWAY");    //Уйди с дороги!
    AI_Output(self, self, "SVM_14_OUTOFMYWAY");    //Дай мне пройти.
 
 
     AI_Output(self, self, "SVM_1_FRIENDLYGREETINGS");    //Привет.
    AI_Output(self, self, "SVM_2_FRIENDLYGREETINGS");    //Привет.
    AI_Output(self, self, "SVM_3_FRIENDLYGREETINGS");    //Эй, парень.
    AI_Output(self, self, "SVM_4_FRIENDLYGREETINGS");    //Приветствую.
    AI_Output(self, self, "SVM_5_FRIENDLYGREETINGS");    //Привет, друг!
    AI_Output(self, self, "SVM_6_FRIENDLYGREETINGS");    //Привет!
    AI_Output(self, self, "SVM_7_FRIENDLYGREETINGS");    //Привет!
    AI_Output(self, self, "SVM_8_FRIENDLYGREETINGS");    //Привет!
    AI_Output(self, self, "SVM_9_FRIENDLYGREETINGS");    //Привет!
    AI_Output(self, self, "SVM_10_FRIENDLYGREETINGS");    //Привет!
    AI_Output(self, self, "SVM_11_FRIENDLYGREETINGS");    //Привет!
    AI_Output(self, self, "SVM_12_FRIENDLYGREETINGS");    //Привет, друг!
    AI_Output(self, self, "SVM_13_FRIENDLYGREETINGS");    //С тобой все в порядке?
    AI_Output(self, self, "SVM_14_FRIENDLYGREETINGS");    //Приветствую.
    AI_Output(self, self, "SVM_15_FRIENDLYGREETINGS");    //Привет!
 
};


в принципе сразу стало душевнее :)

***

Daedalus:
 // нужны доп файлы для "индекса" субтитров. см архив с речью

func void B_Say_nigga(var C_NPC slf, var C_Npc oth, var string files)
{
    Hlp_PrintConsole(Str_Format("       B_Say_nigga [%s %i] AIV_StateTime [%i] -- > %s",slf.name, slf.id, slf.aivar[AIV_StateTime],files));
    Npc_ClearAIQueue(slf);
    //AI_OutputSVM_Overlay(slf, oth , files);
    AI_Output(slf, oth , files);
};

func void B_Say_MAKEWAY(var C_NPC slf, var C_Npc oth)
{
    var string files;
    files = Str_Format("SVM_%i_MAKEWAY",slf.voice);
    B_Say_nigga(slf,oth,files);
};

func void B_Say_OUTOFMYWAY(var C_NPC slf, var C_Npc oth)
{
    var string files;
    files = Str_Format("SVM_%i_OUTOFMYWAY",slf.voice);
    B_Say_nigga(slf,oth,files);
};

func void B_Say_YOUDEAFORWHAT(var C_NPC slf, var C_Npc oth)
{
    var string files;
    files = Str_Format("SVM_%i_YOUDEAFORWHAT",slf.voice);
    B_Say_nigga(slf,oth,files);
};

func void B_Say_FRIENDLYGREETINGS(var C_NPC slf, var C_Npc oth)
{
    var string files;
    files = Str_Format("SVM_%i_FRIENDLYGREETINGS",slf.voice);
    B_Say_nigga(slf,oth,files);
};


func void B_Say_SVM_Overlay(var C_NPC slf, var C_Npc oth, var string files)
{
    files = Str_Format("SVM_%i_%s",slf.voice, files);
    AI_OutputSVM_Overlay(slf, oth , files);
};

func void B_Say_SVM(var C_NPC slf, var C_Npc oth, var string files)
{
    files = Str_Format("SVM_%i_%s",slf.voice, files);
    B_Say_nigga(slf,oth,files);
};



можно еще какие то фразы поставить "друзьям". например ISaidWhatDoYouWant // Что я могу для тебя сделать?





смотри пост номер 3
 

Вложения

  • G2_OUTOFMYWAY_RU_SPEECH.zip
    1,7 MB · Просмотры: 4
  • G2_OUTOFMYWAY_scripts.zip
    9,6 KB · Просмотры: 3
Последнее редактирование:

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.928
Благодарности
557
Баллы
275
авторы ремейка рассказали как ИИ помогает им экономить людские ресурсы, что бы люди занятые на проекте могли например общаться с фан базой.. мне вот интересно, а с @ElderGamer вообще кто нибудь связывался? ну так.. просто спросить, что он в целом там делал последние десять лет, что может посоветовать или просто что то рассказать? какие у него мысли в целом есть... нет? )
Когда для TES V Skyrim объявили о запуске Creation Club и включении туда некоторых уже существующих модов, я реально радовался и полагал, что теперь сами разработчики напрямую подключат к процессу авторов многолетних неоф. патчей (правят просто безумное кол-во багов и т.п.), без которых, на мой взгляд, игру уже не стоит устанавливать. Но... "актуальнее" им показались новые шмотки и "режим выживания". :confused:
Впрочем, я попробую поинтересоваться об этом.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
проверку "на друзей" тоже походу надо выносить
Daedalus:
func int C_AmIFRIENDLY(var C_Npc slf, var C_Npc her)   // her это герой
{
    if  (Npc_GetAttitude(slf, her) == ATT_FRIENDLY)
    {
        return true;   
    };

    if (slf.npcType == NPCTYPE_FRIEND)
    {
        return true;   
    };
    
    // что бы бессмертные члены команды не выдали ГГ на орехи
    if (MIS_SCKnowsWayToIrdorath == TRUE)
    && (slf.flags == NPC_FLAG_IMMORTAL)
    {
        return true;   
    };
    
    // Ирдорат
    if (Kapitel == 6)
    // проверка на мир
    {
        return true;   
    }; 

// добавить проверку на пати

        return false;   

};


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

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
Модет тут установить именно драгонисланд? А не шестую главу...
и то и то переменная.
Kapitel устанавливается в STARTUP_DRAGONISLAND --> B_Kapitelwechsel
CurrentLevel устанавливается в INIT_DRAGONISLAND
если была бы функция которая проверяет именно в каком мире по факту находится герой, тогда имело бы смысл использовать её.


переменнаязначениегде устанавливается
Kapitel 6STARTUP_DRAGONISLAND --> B_Kapitelwechsel
CurrentLevel3 // const int DRAGONISLAND_ZEN = 3;
INIT_DRAGONISLAND
 
Последнее редактирование:

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
MW 7, эм... Яркендар же проверяется, как и хоринис с миненталем... щас по памяти, не у компа:
if (curent level == addonworld)
И дальше по тексту))
То же самое с ирдоратом можно...
Эт я к чему, к тому, что в одних модах по 2-3 главы, в других по 8-10...
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.000
Благодарности
968
Баллы
295
Эт я к чему, к тому, что в одних модах по 2-3 главы, в других по 8-10...

тогда надо самим записать свой маркер в INIT_DRAGONISLAND и по нему делать проверку. или в INIT_DRAGONISLAND поменять отношение команды на френд. или ещё что то. сложно придумать универсальный метод для всех модов :)
 
Сверху Снизу