Новости Анонсирован ремастер Final Fantasy Tactics
  • 67
  • 0
Культовая пошаговая тактическая RPG от Square Enix получит второе дыхание. На проходящей выставке State of Play, где анонсируются игры для Play Station, состоялся анонс ремастера Final Fantasy...
Новости Моддеры Oblivion Remastered нашли способ внедрения абсолютно любых скриптов
  • 160
  • 0
Сообщество моддинга Oblivion Remastered (ORM) переживает настоящий расцвет. После долгих месяцев работы, энтузиасты научили игру работать с мощным скриптовым языком Lua, открыв перед создателями...
Новости Tainted Grail: The Fall of Avalon — Польская «Skyrim» теперь официально
  • 1.496
  • 24
23 мая 2025 после двух лет успешного раннего доступа в Steam польская студия Questline наконец представила свою фэнтези-RPG в полной версии. Tainted Grail: The Fall of Avalon доступна на ПК...
Новости CD Projekt RED представила юбилейный трейлер к 10-летию The Witcher 3: Wild Hunt
  • 1.015
  • 0
Польская студия CD Projekt Red порадовала поклонников франшизы «Ведьмак», выпустив особый видеообзор в честь десятилетия культовой RPG «Ведьмак 3: Дикая Охота». Что показали в трейлере...

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

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.512
Реакции
671
Баллы
265
Лучшие ответы
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
Сообщения
2
Реакции
1
Баллы
1
Лучшие ответы
0
Как декомпилировать формат MDH, MDM, MAN ?
 

Dodg

Новичок
Участник форума
Регистрация
28 Мар 2021
Сообщения
4
Реакции
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.512
Реакции
671
Баллы
265
Лучшие ответы
44
как правильно вписывать значение x,y
@Dodg, используй Print

***

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

Milaskus

Постоялец
Участник форума
Регистрация
13 Авг 2020
Сообщения
67
Реакции
79
Баллы
30
Лучшие ответы
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.512
Реакции
671
Баллы
265
Лучшие ответы
44
убери пробел вот в этой строчке
information = dia_adanos_ hallo_info; // Либо тут
 

Milaskus

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

Milaskus

Постоялец
Участник форума
Регистрация
13 Авг 2020
Сообщения
67
Реакции
79
Баллы
30
Лучшие ответы
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);
};
 
Последнее редактирование:
Сверху Снизу