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

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

Справочник модостроения

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
  • Первое сообщение
  • #1
Обновление справочника
Справочник ZenGin Reference 2.2 был написан с нуля. Поэтому большую часть времени пришлось потратить на повторную работу по переносу уроков, библиотеки и пр.

Я выложил текущую версию справки, так как обещал, что обновление будет в июле. Однако справка, все еще не закончена.

В справку включено множество статей с сайта World of Players, а также переводы с сайтов World of Gothic.DE и TheModders.org.

Добавлены справочники: Gothic Starter и INI файлы, Daedalus, MARVIN и некоторые другие. Некоторые из них пока в процессе наполнения.

Изменено индексирование справки.

Версию для Mozilla я постараюсь выложить в скором времени.

Справочник включает обновленный каталог моделей, в которые вошли модели из G3, TES IV и TES V.

Библиотека моделей

Библиотека моделей представлена в виде RAR архива и в виде VDF-тома.

RAR Архив. Чтобы модели можно было использовать достаточно разархивировать библиотеку в папку Gothic/_work с игрой.

VDF том. Чтобы модели можно было использовать достаточно сохранить том в папку Gothic 2\Data.

Патч для библиотеки моделей

Патч необходимо скопировать в папку IE ZenGin Reference\js\ с заменой оригинального.

Запуск и установка справочника

Так как справочник создавался с нуля, его нельзя устанавливать в ту же папку в которую установлена предыдущая версия справки.

Текущая версия справки представлена в виде RAR архива. Почему не самоустанавливающийся SFX? Ну некоторые считают его неудобным.

Для запуска каталога после его разархивации, необходимо запустить файл VOB.html из папки IE ZenGin Reference. Файл находится практически в самом низу папки.

Заметки по использованию справочника в Mozilla и Internet Explorer 11

Internet Explorer 11 при тестировании работал со всеми вкладками справочника и каталогов.

Mozilla имеет ряд недостатков, в частности не отображает некоторую Flash анимацию в категории "Доспехи". В любом случае, в следующей версии справочника категория "Доспехи" будет изменена и вместо Flash будут использоваться картинки. Доспехи будут состоять из трех подкатегорий: доспехи, одежда и мантии.

Браузеры Chrome и Opera не работают со справкой, так как блокируют фреймы (по крайней мере у меня), но вы можете попробовать :)

Наполнение справочника

Если вы заметили в справке какую-то ошибку сообщите мне в этой ветке форума. Чем больше исправим, тем точней будет справочник.

Также, если вы хотите пополнить справочник своими статьям по модостроению, или знаете ссылки на страницы с интересными статьями, то просьба тоже указывать их здесь. Авторство естественно будет сохранено. Свои статьи можете прислать в DOC или RTF формате.
 

Вложения

  • ZenGin Reference.png
    ZenGin Reference.png
    67,9 KB · Просмотры: 1.075
  • ZenGin Reference 5.png
    ZenGin Reference 5.png
    853,9 KB · Просмотры: 1.055
  • ZenGin Reference 2.png
    ZenGin Reference 2.png
    187,4 KB · Просмотры: 1.156
  • ZenGin Reference 3.png
    ZenGin Reference 3.png
    437,1 KB · Просмотры: 1.142
  • ZenGin Reference 4.png
    ZenGin Reference 4.png
    1.011,3 KB · Просмотры: 1.234
Последнее редактирование:

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.001
Благодарности
969
Баллы
295
второе неудобство - это необходимость указывать и отслеживать какой именно распорядок выполняет Npc.
Данную функцию удобно использовать что бы привести непослушного НПС в чувства.
Например если НПС стоит не там где должен или не в то время в какое должен. так она бы могла очень помочь членам КВ, которые по каким то причинам ушли не туда. таким образом недостаток этой функции превращается в её преимущество, так как не надо придумывать проверки что бы понять что НПС не там где должен быть ;-)
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.001
Благодарности
969
Баллы
295
neromont, супер! а можно добавить ещё блок что это так же можно сделать с помощью ZMODELPROTOEXTENDER ;-)
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
neromont, супер! а можно добавить ещё блок что это так же можно сделать с помощью ZMODELPROTOEXTENDER ;-)
Неплохо бы, но я до плагинов еще не добрался :)
Кинь ссылку, где о нем можно почитать.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.001
Благодарности
969
Баллы
295
Кинь ссылку, где о нем можно почитать.


***

в таком случае файл HumanS.LEAN_WALL.MDS будет иметь примерно такой вид

Daedalus:
Model ("HuS")
{
    meshAndTree ("Hum_Body_Naked0.ASC" DONT_USE_MESH)

    aniEnum
    {
  
// ---------------------------------------------------------------------------------------------------------------
// LEAN_WALL
            ani            ()
            ani            ()
            aniAlias    ()
// ---------------------------------------------------------------------------------------------------------------
    }
}
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245


***

в таком случае файл HumanS.LEAN_WALL.MDS будет иметь примерно такой вид

Daedalus:
Model ("HuS")
{


    meshAndTree ("Hum_Body_Naked0.ASC" DONT_USE_MESH)


    aniEnum
    {
   
// ---------------------------------------------------------------------------------------------------------------
// LEAN_WALL
            ani            ()
            ani            ()
            aniAlias    ()
// ---------------------------------------------------------------------------------------------------------------
    }
}
Как я понимаю, читает по заголовку самого файла, а не по его содержимому?
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.001
Благодарности
969
Баллы
295
Как я понимаю, читает по заголовку самого файла, а не по его содержимому?
не рискну отвечать на данный вопрос :-D так как и ответ будет неправильный, а потом может оказаться что и вопрос был неправильный.

нельзя ли использовать LEAN_WALL в тех waypoint где НПС стучит молотком по дому? то есть не подойдут ли уже имеющиеся wp?
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
нельзя ли использовать LEAN_WALL в тех waypoint где НПС стучит молотком по дому? то есть не подойдут ли уже имеющиеся wp?
Нет. У MOBsi объектов имена другие. Привязка по именам. А плагин думаю оставить на блок уроков по анимации в дальнейшем.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.001
Благодарности
969
Баллы
295
neromont, а двери? не сможет ли НПС опереться на дверь? :) или о мачту "фонаря" ?
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.001
Благодарности
969
Баллы
295
neromont, круто. очень удобно например для собрания КВ, так как после КВ можно легко вернуть НПС на предыдущее расписание без "угадаек" и доп проверок.
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
neromont, круто. очень удобно например для собрания КВ, так как после КВ можно легко вернуть НПС на предыдущее расписание без "угадаек" и доп проверок.
Интересно почему в скриптах практически не используется.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.001
Благодарности
969
Баллы
295
это всё отголоски заложенного потенциала в Готики 1. в Готики 2 пошли по пути упрощения.
Daedalus:
// ***************************** Beim Krauthдndler ****************************************//
instance  PC_Psionic_HERB (C_INFO)
{
    npc                = PC_Psionic;                      
    condition        = PC_Psionic_HERB_Condition;
    information        = PC_Psionic_HERB_Info;    
    important        = 1;
    permanent        = 0;
   
};
FUNC int  PC_Psionic_HERB_Condition()
{
    if ( Npc_GetDistToWP(self, "PSI_WALK_06") < 800 )
    && (LesterGuide == 4)
    {
        return TRUE;
    };
};
FUNC void  PC_Psionic_HERB_Info()
{
    AI_Output      (self, other,"PC_Psionic_HERB_Info_05_01"); //Wenn du die Leiter raufsteigst, dann kommst du zu Kalom, dem Alchemisten. Hier unten steht Fortuno, der Krauthдndler.
    AI_Output      (self, other,"PC_Psionic_HERB_Info_05_02"); //Ich warte hier auf dich, aber lass dir nicht zu viel Zeit, sonst gehe ich wieder zurьck.
   
    LesterGuide = 0;
   
    Npc_ExchangeRoutine(self,"START");


    AI_StopProcessInfos(self);


    TA_BeginOverlay (self);
    TA_Stay(00,00,01,00,"PSI_32_HUT_EX");
    TA_EndOverlay (self);
};

Daedalus:
// ************************ EXIT **************************

INSTANCE DIA_GRD_219_Stone_Exit (C_INFO)
{
    npc            = GRD_219_Stone;
    nr            = 999;
    condition    = DIA_GRD_219_Stone_Exit_Condition;
    information    = DIA_GRD_219_Stone_Exit_Info;
    important    = 0;   
    permanent    = 1;
    description = DIALOG_ENDE;
};                      

FUNC INT DIA_GRD_219_Stone_Exit_Condition()
{
    return 1;
};

func VOID DIA_GRD_219_Stone_Exit_Info()
{
    if ( Npc_KnowsInfo ( hero,  DIA_GRD_219_Stone4  ))
    {
        AI_StopProcessInfos    ( self );
       
        var C_NPC Stone;    Stone = Hlp_GetNpc ( GRD_219_Stone );

        TA_BeginOverlay (Stone);
            TA_Min (Stone, 00, 00, 00, 05, ZS_Position,"OCC_MERCS_HALLWAY_BACK"    );
            TA_Min (Stone, 00, 05, 00, 10, ZS_Position,"OCC_MERCS_ENTRANCE"        );
            TA_Min (Stone, 00, 10, 00, 15, ZS_Position,"OCC_SHADOWS_CORNER"        );   
            TA_Min (Stone, 00, 15, 00, 20, ZS_Position,"OCC_STABLE_ENTRANCE"    );
            TA_Min (Stone, 00, 20, 72, 00, ZS_Position,"OCC_STABLE_LEFT_FRONT"    );   
        TA_EndOverlay (Stone);
       
        AI_Output (self, other,"Info_EXIT_06_02"); //Wir sehen uns.

        AI_StopProcessInfos    ( self );
    }
    else {
        AI_Output (self, other,"Info_EXIT_06_03"); //Wir sehen uns.
                   
        AI_StopProcessInfos    ( self );
    };   
};
Интересно почему в скриптах практически не используется.
а при загрузки сохранения оверлей слетит?
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
это всё отголоски заложенного потенциала в Готики 1. в Готики 2 пошли по пути упрощения.
Daedalus:
// ***************************** Beim Krauthдndler ****************************************//
instance  PC_Psionic_HERB (C_INFO)
{
    npc                = PC_Psionic;                     
    condition        = PC_Psionic_HERB_Condition;
    information        = PC_Psionic_HERB_Info;   
    important        = 1;
    permanent        = 0;
  
};
FUNC int  PC_Psionic_HERB_Condition()
{
    if ( Npc_GetDistToWP(self, "PSI_WALK_06") < 800 )
    && (LesterGuide == 4)
    {
        return TRUE;
    };
};
FUNC void  PC_Psionic_HERB_Info()
{
    AI_Output      (self, other,"PC_Psionic_HERB_Info_05_01"); //Wenn du die Leiter raufsteigst, dann kommst du zu Kalom, dem Alchemisten. Hier unten steht Fortuno, der Krauthдndler.
    AI_Output      (self, other,"PC_Psionic_HERB_Info_05_02"); //Ich warte hier auf dich, aber lass dir nicht zu viel Zeit, sonst gehe ich wieder zurьck.
  
    LesterGuide = 0;
  
    Npc_ExchangeRoutine(self,"START");


    AI_StopProcessInfos(self);


    TA_BeginOverlay (self);
    TA_Stay(00,00,01,00,"PSI_32_HUT_EX");
    TA_EndOverlay (self);
};

Daedalus:
// ************************ EXIT **************************

INSTANCE DIA_GRD_219_Stone_Exit (C_INFO)
{
    npc            = GRD_219_Stone;
    nr            = 999;
    condition    = DIA_GRD_219_Stone_Exit_Condition;
    information    = DIA_GRD_219_Stone_Exit_Info;
    important    = 0;  
    permanent    = 1;
    description = DIALOG_ENDE;
};                     

FUNC INT DIA_GRD_219_Stone_Exit_Condition()
{
    return 1;
};

func VOID DIA_GRD_219_Stone_Exit_Info()
{
    if ( Npc_KnowsInfo ( hero,  DIA_GRD_219_Stone4  ))
    {
        AI_StopProcessInfos    ( self );
      
        var C_NPC Stone;    Stone = Hlp_GetNpc ( GRD_219_Stone );

        TA_BeginOverlay (Stone);
            TA_Min (Stone, 00, 00, 00, 05, ZS_Position,"OCC_MERCS_HALLWAY_BACK"    );
            TA_Min (Stone, 00, 05, 00, 10, ZS_Position,"OCC_MERCS_ENTRANCE"        );
            TA_Min (Stone, 00, 10, 00, 15, ZS_Position,"OCC_SHADOWS_CORNER"        );  
            TA_Min (Stone, 00, 15, 00, 20, ZS_Position,"OCC_STABLE_ENTRANCE"    );
            TA_Min (Stone, 00, 20, 72, 00, ZS_Position,"OCC_STABLE_LEFT_FRONT"    );  
        TA_EndOverlay (Stone);
      
        AI_Output (self, other,"Info_EXIT_06_02"); //Wir sehen uns.

        AI_StopProcessInfos    ( self );
    }
    else {
        AI_Output (self, other,"Info_EXIT_06_03"); //Wir sehen uns.
                  
        AI_StopProcessInfos    ( self );
    };  
};

а при загрузки сохранения оверлей слетит?
Нет. Проверял. Все работает.
 
Сверху Снизу