Новости Вышел первый трейлер будущей космической РПГ Exodus
  • 344
  • 1
Студия Archetype Entertainment представила первый трейлер Exodus - научно-фантастической РПГ в духе Mass Effect. Её разработкой занимается команда во главе с ветераном BioWare Джеймсом Оленом. По...
Новости Новые скриншоты и детали Gothic Remake: изменения башни, орков и монстров
  • 968
  • 7
Также изменился и путь к башне. Теперь его охраняют големы, которые могут активно взаимодействовать с окружающей средой, делая прохождение более сложным. Стоит отметить, что даже затопленные руины...
Новости Path of Exile 2 - игра ворвалась в топ Steam и собрала 1,3 млн зрителей в Твиче
  • 932
  • 7
Тому кто знаком с диаблоидами, не стоит представлять данную игру. Первая часть была невероятно популярной и по праву носила звание лучшей ARPG среди Hack&Slash-игр. И вот вчера, 6 декабря...
Новости Ремейк "Готики 1" | Трейлер Showcase 2024
  • 7.806
  • 9
Новички, пришло время принять реальность и смириться с судьбой. Чувствуйте себя как дома в Долине Рудников, месте, полном опасностей, преступлений и жадности. Вам предстоит оставаться здесь очень...

Вопросы по скриптингу в Готике

Sans

Новичок
Участник форума
Регистрация
31 Авг 2018
Сообщения
15
Реакции
0
Баллы
6
Лучшие ответы
0
Ну мод файлу прописан путь к модам в папке с резервной копией игры, где я ставлю свои опыты и да я запускаю игру с той же папки, прям ручками, шаг за шагом в систем, перечитываю написано ли "тест" в конце папки (обозвал папку SnC 1.1 Test только корневую папку) на каждом шагу. В инишке он также прописан. В первом сообщении я писал что запуская готик лаунчер там есть отдельная иконка для моего мода ( MP 2.0 и отдельно MP 2.0 Sans). При том при каждой новой попытке удаляю старый ини-файл и пишу новый. Ну попробую поставить год 3000 и пойти отжимать от людей куртку и очки.

Ой боже. Если бы был всемирный конкурс на звания самого большого дебила, то я бы взял 2 место, потому-что я дебил. При упаковке я указывал папку _Work а указывать надо было ту папку в которой храниться папка _Work (Mod в моем случае). Да я знаю в инструкции было написано "сохраняйте структуру", на что я думал "да Васян, спасибо, ясен пень папки не удалять, не дурак же я". Я просто чисто случайно заметил что в ВДФке первая указаная папка скипается, и открывается уже только содержимое указаной папки. Решил проверить и воуля. Теперь когда моя огенная крапива стала пламенной пойду воевать с трусливыми мракорисами и драк.ящерами, а то они гады быстрые =\
 
Последнее редактирование:

artemraab

Новичок
Регистрация
19 Июл 2021
Сообщения
4
Реакции
3
Баллы
2
Лучшие ответы
0
Надеюсь, не ошибся темой, и такой вопрос ещё не задавали:
После того, как я создал доспех, привязал его к скелету, у меня возник вопрос, как добавить его в Готику2?
Нашел в интернете пару уроков, например:
Чтобы вставить эту броню в Готику, достаточно сделать экспорт сцены.
Выбираем File->Export…, далее выбираем тип ZenGin ASC Exporter (считаем, что экспортер уже установлен, ссылка на него есть чуть выше). Выбираем Export Model Mesh.
Сохраняем файл в директорию _work\data\Anims. Я назвал его temp_TPLS.asc
Прописываем в какой-нибудь инстанции брони
visual_change =”temp_TPLS”;
Компилируем скрипт, запускаем игру. И все. Броня в игре.
Но возникли вопросы:
1)
Может кто-нибудь объяснить, что это за «рыба» такая инстанция, и где её взять?
2)
Я так понимаю нужно будет обратно компилировать Humans.MSB ?
3)
Командой insern temp_TPLS ?
Надеюсь кто-нибудь сможет мне помочь, в решение этих вопросов.
Я так понимаю чтобы изменения по компилированным файлам в силу вступали нужно gothicstartermod запускать и галочку на texturenkonveriren ставить?
посмотрите мои скрины, почему в инвентаре броня не отображается но надеть можно (включенный инвентарь лагает люто при этом). кроме того, из порядка 20 наименований брони, только 5-6 импортировалось. а в прошлую попытку также было но другая броня импортировалась, которая сейчас недосутпна (после этого удалял готику и заново пробовал весь процесс переноса брони делать).
на скринах я выложил все добавленные изменения о брони в meshes, anims, textures, .asc файлы. 3ds только не делал, но некоторая броная и без них работает. сделал tplm броню 3ds закинул в items-armor где 3ds файлы, но броня не отображается при вводе insert tpl_armor_m, т.е. код срабататывает и пишет inserted как на скринах видно в консоли, но по факту брони нет в мире игровом.
 

Вложения

Последнее редактирование модератором:

Kor.Angar

Гвардеец
Команда форума
Редактор раздела
Модостроитель
Тестировщик
 
Участник форума
Регистрация
2 Июн 2019
Сообщения
1.472
Реакции
636
Баллы
250
Лучшие ответы
44
Всем привет! Подскажите пожалуйста а как мне отправить в "нокаут" НПС и начислить опыта? т.е. вот я оставляю НПС 1 жизнь,
self.attribute[ATR_HITPOINTS] = 1 ; а что делать дальше я забыл :-(


Код:
func void B_EdgeHurtNpc (var C_NPC attacker, var int damage)
{
    //    – Видел, как просеивают песок сквозь сито? – спросила она в ответ.
    //    Тон вопроса подхлестнул его внимание. Песок сквозь сито… Он кивнул.
    //    – А мы, Бене Гессерит, просеиваем людей, отделяя их от животных
    if (self.guild < GIL_SEPERATOR_HUM)
    && (self.attribute[ATR_HITPOINTS] <=  damage)
    {
        self.attribute[ATR_HITPOINTS] = 1 ;
        // теряет сознание
    }
    else
    {
        Npc_ChangeAttribute (self, ATR_HITPOINTS, -damage);
    };
    
    if    Npc_IsDead(self)
    {
        if    Npc_IsPlayer   (attacker)
        ||    (C_NpcIsHuman  (attacker) && attacker.aivar[AIV_PARTYMEMBER])
        ||    (C_NpcIsMonster(attacker) && attacker.aivar[AIV_MM_PARTYMEMBER])
        {
            B_DeathXP();    // vergibt XP an SC
        };
    };
};
 

Gorev

Новичок
Регистрация
26 Фев 2022
Сообщения
3
Реакции
1
Баллы
1
Лучшие ответы
0
Как декомпилировать формат MDH, MDM, MAN ?
 

Dodg

Новичок
Участник форума
Регистрация
28 Мар 2021
Сообщения
8
Реакции
0
Баллы
6
Лучшие ответы
0
Подскажите пожалуйста, хотел бы отобразить надпись на экране об состоянии, но в игре получается все в одной точке, как правильно вписывать значение x,y
Код:
//Happens every time a frame is redrawn during the game.

void Game_Loop() {

oCNpc* focusNpc = player->GetFocusNpc();

   if (focusNpc) {

  zSTRING npcattribute = focusNpc->GetAttribute(3);

     screen->PrintCY(99,npcattribute);

   if (focusNpc) {

   zSTRING npcattribute = focusNpc->GetAttribute(4);

    screen->PrintCY((70), npcattribute);

   if (focusNpc) {

    zSTRING npcattribute = focusNpc->GetAttribute(5);

   screen->PrintCY((44), npcattribute);
              }

          }

      }

  }
 

Вложения

Kor.Angar

Гвардеец
Команда форума
Редактор раздела
Модостроитель
Тестировщик
 
Участник форума
Регистрация
2 Июн 2019
Сообщения
1.472
Реакции
636
Баллы
250
Лучшие ответы
44
как правильно вписывать значение x,y
@Dodg, используй Print

***

Gratt сказал(а):
screen - это экземпляр zCView (можно посмотреть в файлах zView.h). Он имеет метод Print для вывода текста по координатам, PrintCX выравнивающий текст по горизонтали, PrintCY по вертикали и PrintCXY рисующий текст в центре экрана. В
 

Milaskus

Постоялец
Участник форума
Регистрация
13 Авг 2020
Сообщения
52
Реакции
70
Баллы
20
Лучшие ответы
0
Привет, Готик соурс выдает ошибку. Учусь диалоги создавать, хотел упорядочить чтобы было красиво.
1673458951702.png

Но точка с запятой есть, что не так? В данном случае я просто переписал структуру диалога с Сагитты, в её скрипте DIA_bau_980_sagitta.d всё ок, при компиляции..

///////////////////////////////////////////////
// Блок Входа стоит в конце (nr=999) + вечный показ конца диалога ////
///////////////////////////////////////////////
instance DIA_ADANOS_EXIT(C_INFO)
{
npc = kdw_1406_KDWmod_Adanos;
nr = 999;
condition = dia_adanos_exit_condition;
information = dia_adanos_exit_info;
permanent = TRUE;
description = DIALOG_ENDE;
};

func int dia_adanos_exit_condition()
{
return TRUE;
};
func void dia_adanos_exit_info()
{
AI_StopProcessInfos(self);
};
instance DIA_adanos_hallo(C_INFO)
{
npc = kdw_1406_KDWmod_Adanos;
nr = 4;
condition = dia_adanos_hallo_condition; // Вот тут указывает на ошибку.
information = dia_adanos_ hallo_info; // Либо тут
description = "Привет, кто ты?";
};
func int dia_adanos_hallo_condition()
{
return TRUE;
};
//////////////////////////////////////////////
//Связка other,self - говорит Безымянный //
// Связка self, other - диалог NPC //
//////////////////////////////////////////////
func void dia_adanos_hallo_info()
{
AI_Output(self,other,"DIA_Adanos_HALLO_15_00"); // диалог 1 (привет)
AI_Output(self,other,"DIA_Adanos_HALLO_17_01"); // диалог 2 (вот твоя задача)
Info_ClearChoices(dia_adanos_hallo); // Очищает диалог
Info_AddChoice(dia_adanos_hallo,DOALOG_BACK,dia_adanos_hallo_ende);
Info_Addchoice(dia_adanos_hallo,"Конечно",dia_adanos_hallo_yes);
Info_Addchoice(dia_adanos_hallo,"Я могу отказаться",dia_adanos_hallo_no);
Info_Addchoice(dia_adanos_hallo,"Мне надо подумать",dia_adanos_hallo_think); // Think- думать по англ.
};

func void dia_adanos_hallo_think()
{
AI_Output(other,self,"DIA_Adanos_hallo_think_15_00"); // Мне надо подумать...
AI_Output(self,other,"DIA_Adanos_hallo_think_17_01"); // Ты знаешь где меня найти
};
func void dia_adanos_hallo_no()
{
AI_Output(other,self,"DIA_Adanos_hallo_no_15_00"); // Я пожалуй откажусь
Info_ClearChoices(dia_adanos_hallo_no);
Info_AddChoice(dia_adanos_hallo,DIALOG_BACK,dia_adanos_ende);

};
func void dia_adanos_hallo_yes()
{
AI_Output(other,self,"DIA_Adanos_hallo_yes_15_00"); // Я согласен.



};
func void dia_danos_hallo_ende()
{
Info_ClearChoices(dia_adanos_hallo);
};
instance DIA_kdw_1406_Adanos ( C_INFO )
{
Npc = kdw_1406_KDWmod_Adanos;
Nr = 2;
Condition = DIA_kdw_1406_Adanos_Condition;
Information = DIA_kdw_1406_Adanos_Info;
Permanent = FALSE;
Description = "Я хочу вступить в гильдию Магов Воды.";
};

func int DIA_kdw_1406_Adanos_Condition () // Проверка на доступность диалога, тут то что не состоит в гильдии.
{
if( Other.guild == GIL_NONE )
{
return TRUE;
};
};

func void DIA_kdw_1406_Adanos_Info ()
{
AI_Output (Other, Self, "DIA_kdw_1406_Adanos_15_00"); //Я хочу вступить в гильдию Магов Воды
Info_CLearChoices (DIA_kdw_1406_Adanos);
Info_Addchoice (DIA_kdw_1406_Adanos, "Втупить", DIA_kdw_1406_Adanos_W);
Info_AddChoice (DIA_kdw_1406_Adanos, "Отказаться", DIA_kdw_1406_Adanos_E);
};

//Если он отказывается помогать, то
func void DIA_kdw_1406_Adanos_W ()
{
AI_Output(other,self,"DIA_kdw_1406_Adanos_W_03_00"); //Я готов!
AI_Output(self,other,"DIA_kdw_1406_Adanos_W_03_01"); //Служи мне сын Мой!!!
Npc_SetTrueGuild(other,GIL_KDW);
other.guild = GIL_KDW;
Snd_Play("LEVELUP");
Npc_ExchangeRoutine(lothar,"START");
AI_Output(self,other,"DIA_kdw_1406_Adanos_08_02"); //Держи свою мантию.
b_giveinvitems(self,other,ITAR_KDW_L_ADDON,1);
AI_Output(self,other,"DIA_kdw_1406_Adanos_08_03"); //Она защитит тебя!!!
sld_aufnahme = LOG_OBSOLETE;
kdf_aufnahme = LOG_OBSOLETE;
mil_aufnahme = LOG_OBSOLETE;
kdw_aufnahme = LOG_SUCCESS;
b_giveplayerxp(XP_BECOMEKDW); // Кол-во опыта за вступление.
Info_ClearChoices(dia_andre_join);
};

//Если игрок соглашается, то
func void DIA_kdw_1406_Adanos_E ()
{
AI_Output ( Other, Self, "dia_Dedroit_q_e_15_00" ); //Нет
AI_Output ( Self, Other, "dia_Dedroit_q_e_03_01" ); //!!!
};

func void DIA_kdw_1406_Adanos_exit()
{
AI_StopProcessInfos(self);
};
 
Последнее редактирование:

Kor.Angar

Гвардеец
Команда форума
Редактор раздела
Модостроитель
Тестировщик
 
Участник форума
Регистрация
2 Июн 2019
Сообщения
1.472
Реакции
636
Баллы
250
Лучшие ответы
44
убери пробел вот в этой строчке
information = dia_adanos_ hallo_info; // Либо тут
 

Milaskus

Постоялец
Участник форума
Регистрация
13 Авг 2020
Сообщения
52
Реакции
70
Баллы
20
Лучшие ответы
0

Milaskus

Постоялец
Участник форума
Регистрация
13 Авг 2020
Сообщения
52
Реакции
70
Баллы
20
Лучшие ответы
0
Привет, вопрос по миссиям. выдает ошибку "Неизвестный идентификатор: mis_BECOMEKDW = LOG_RUNNING;"
пользуюсь гайдом по созданию квеста от Неромонта. Делаю все как в примере. Откуда ошибка получается?
Теги: Программирование, Квест, Daedalus

Добавил: Neromont (08.04.2020)

прописал
LOG_Constants_Milaskus.d

const string LOGTEXT_MODKDW_VATRASTEACH = "Ватраc может обучить меня кругам магии и рунам Магов Воды.";
const string TOPIC_BECOMEKDW = "Вступление в маги воды";

И в закрытие топика
func void b_closetopics_milaskus()
{
/////////////////////////////////////////////////
b_closetopic(TOPIC_BECOMEKDW,kdw_aufnahme,0,2); ///закрыл кв до 2 главы.
b_closetopic(TOPIC_BECOMEKDW,mis_BECOMEKDW,0,1);
/////////////////////////////////////////////////
};



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
instance DIA_MOD_SATURAS_GILKDW(C_INFO)
{
npc = kdw_1400_addon_saturas_nw;
nr = 1;
condition = dia_mod_saturas_gilkdw_condition;
information = dia_mod_saturas_gilkdw_info;
permanent = FALSE;
description = "Ты примешь меня в Маги воды? Ватрас сказал что это возможно.";
};

func int dia_mod_saturas_gilkdw_condition()
{
if((dia_pedro_aufnahme_noperm == FALSE) && (kdw_mod_talk_vatras_join == TRUE))
{
return TRUE;
};
};

func void dia_mod_saturas_gilkdw_info()
{
AI_Output(other,self,"DIA_mod_Saturas_gilKDW_15_00"); //Ты примешь меня в Маги Воды? Ватрас сказал что это возможно.
AI_Output(self,other,"DIA_mod_Saturas_gilKDW_14_00"); //Что??? ВАТРАС... Назови хоть одну причину почему ты можешь стать магом?!
AI_Output(other,self,"DIA_mod_Saturas_gilKDW_15_01"); //Я помог Кавалорну когда на него напали бандиты,ищу того кто похищает людей.
AI_Output(other,self,"DIA_mod_Saturas_gilKDW_15_03"); //К тому же, я ищу Глаз Иноса. По словам Ксардаса только он сможет остановаить драконов в долине рудников.
AI_Output(other,self,"DIA_mod_Saturas_gilKDW_15_04"); //Но Я не могу попасть к паладинам чтобы забрать этот артефакт, пока не состаю в одном из сообществ.
AI_Output(self,other,"DIA_mod_Saturas_gilKDW_14_01"); //Хватит! (Грозно) При таких обстоятельствах, я думаю это возможно...
AI_Output(self,other,"DIA_mod_Saturas_gilKDW_14_01"); //Но сейчас у тебя есть более важные дела, Первым делом найди куда пропадают жители Хариниса!
Log_CreateTopic ( TOPIC_BECOMEKDW, LOG_MISSION );
Log_SetTopicStatus ( TOPIC_BECOMEKDW, LOG_RUNNING );
B_LogEntry ( TOPIC_BECOMEKDW, "Сатурас согласился с возможностью стать Магом Воды, если я найду причину пропажи жителей Хориниса. И надо не забыть про орнамент Лареса" );

mis_BECOMEKDW = LOG_RUNNING;
};

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




instance DIA_MOD_SATURAS_GILKDW_JOIN(C_INFO)
{
npc = kdw_1400_addon_saturas_nw;
nr = 700;
condition = dia_mod_saturas_gilkdw_join_condition;
information = dia_mod_saturas_gilkdw_join_info;
permanent = TRUE;
description = "Я могу стать Магом Воды?";
};





var int DIA_MOD_SATURAS_GILKDW_join_noperm;
func int dia_mod_saturas_gilkdw_join_condition()
{
if((MIS_BECOMEKDW == LOG_Running) && (DIA_MOD_SATURAS_GILKDW_join_noperm == FALSE) && (other.guild == GIL_NONE) && (lares_angekommen == TRUE))
{
return TRUE;
};
};



func void b_dia_mod_saturas_gilkdw_join_choice()
{
Info_ClearChoices(DIA_MOD_SATURAS_GILKDW_JOIN);
Info_AddChoice(DIA_MOD_SATURAS_GILKDW_JOIN,"Мне надо подумать.",dia_mod_saturas_gilkdw_no);
Info_AddChoice(DIA_MOD_SATURAS_GILKDW_JOIN,"Да, я желаю вступить в круг Магов Воды.",dia_mod_saturas_gilkdw_yes);
};





func void dia_mod_saturas_gilkdw_join_info()
{
AI_Output(other,self,"DIA_mod_Saturas_gilkdw_Join_info_15_00"); //Я могу стать Магом Воды?
if(mis_addon_vatras_wherearemissingpeople == LOG_SUCCESS)
{
AI_Output(self,other,"DIA_mod_Saturas_gilkdw_join_14_00"); // Ты узнал причину пропажи жителей острова?
AI_Output(other,self,"DIA_mod_Saturas_gilkdw_join_15_01"); // Да, я уже доложил Ватрасу.
}
else if(mis_addon_vatras_wherearemissingpeople == TRUE)
{
AI_Output(self,other,"DIA_mod_Saturas_gilkdw_join_14_00"); // Ты узнал причину пропажи жителей острова?
AI_Output(other,self,"DIA_mod_Saturas_gilkdw_join_15_01"); // Еще нет.
AI_Output(self,other,"DIA_mod_Saturas_gilkdw_join_14_00"); // (Разгневан)Тогда не беспокой меня пока не сделаешь то, что должен!!!
AI_StopProcessInfos(self);
}
else if(hero.guild != GIL_NONE)
{
AI_Output(self,other,"DIA_mod_Saturas_gilkdw_join_info_14_00"); // Ты являешься членом другой гильдии, и путь Мага Воды для тебя закрыт.
DIA_MOD_SATURAS_GILKDW_join_noperm = TRUE;
AI_StopProcessInfos(self);
}
else if(other.guild == GIL_NONE)
{
AI_Output(self,other,"DIA_mod_Saturas_gilkdw_join_info_14_01"); // Ты ТОЧНО готов вступить в Маги Воды?
b_dia_mod_saturas_gilkdw_join_choice();
}
else
{
AI_Output(self,other,"DIA_mod_Saturas_gilkdw_join_info_14_02"); //Твой рассказ меня убедил, к тому же Зло наступает и землетрясения что сейчас происходят предвестники больших проблем
AI_StopProcessInfos(self);
};
};
func void dia_mod_saturas_gilkdw_yes()
{
AI_Output(other,self,"DIA_mod_Saturas_gilKDW_yes_15_00"); //Да, я желаю вступить в круг Магов Воды.
AI_Output(self,other,"DIA_mod_Saturas_gilKDW_yes_14_01"); //Ммм... Ты помог нам выяснить кто стоит за пропажей людей в Хоринисе...
AI_Output(self,other,"Dia_mod_Saturas_gilKDW_yes_14_02"); //К томуже Ватрас тебе доверяет... Я не понимаю почему Ларес тебя поддерживает, видимо что то есть в тебе такое что я не могу понять
AI_Output(self,other,"Dia_mod_Saturas_gilKDW_yes_14_03"); //И Кавалорн встретив тебя сразу рассказал о Кольце Воды. Думаю я соглашусь...
AI_Output(other,self,"Dia_mod_Saturas_gilKDW_yes_15_01"); //Это значит я принят?
AI_Output(self,other,"Dia_mod_Saturas_gilKDW_yes_14_04"); //Да! И теперь я буду за тобой приглядывать, чтобы ты не натворил дел!!
Npc_SetTrueGuild(other,GIL_KDW);
other.guild = GIL_KDW;
Snd_Play("LEVELUP");
Npc_ExchangeRoutine(lothar,"START");
AI_Output(self,other,"Dia_mod_Saturas_gilKDW_14_05"); //Держи свою мантию.
b_giveinvitems(self,other,itar_kdw_l_addon,1);
AI_Output(self,other,"Dia_mod_Saturas_gilKDW_14_06"); //Служи Аданосу и неси равновесие в этот мир!!!
AI_Output(self,other,"Dia_mod_Saturas_gilKDW_14_07"); //По поводу твоего обучения я сейчас занят, Ватрас поможет тебе когда ты будешь в городе.
sld_aufnahme = LOG_OBSOLETE;
kdf_aufnahme = LOG_OBSOLETE;
mil_aufnahme = LOG_OBSOLETE;
kdw_aufnahme = LOG_SUCCESS;
b_giveplayerxp(XP_BECOMEKDW);
Info_ClearChoices(dia_mod_saturas_gilkdw);
Log_SetTopicStatus ( TOPIC_BECOMEKDW, LOG_Success );
B_LogEntry ( TOPIC_BECOMEKDW, "Я доказал Сатурасу что достоин стать магом." );

mis_BECOMEKDW = LOG_Success;

AI_StopProcessInfos(self);
};
 
Последнее редактирование:
Сверху Снизу