Closed Kor-Angar closed 3 years ago
А что, собственно, ты пытаешься сделать?
это в рамках того момента о котором я периодически говорю: в начале игры у НПС сразу не подключаются humans_1hST2, humans_1hST1, humans_2hST1, humans_2hST2 это происходит в т.ч. и в твоём неоф. обновление. возможно связано с рендером. или возможно как то связано с диалогами.
то есть продвинутые бойцы имеют самую простую стойку
а в Готик 1 я полноценно ещё не играл но при тесте это у всех.
возможно после каких то диалогов в процессе всё станет норм. поэтому я и пытаюсь их как то в чувства привести :-)
Вообщем я решил вынести это для Gothic 1 в отдельный файл. Вроде работает. Посмотри своим опытным взглядом код
// *************************************************************************
// Gothic 1 NotR
// **************************************************************************
func void B_AddFightSkill(var C_Npc slf,var int Talent,var int Skill)
{
/// Устанавливаем круг Магии :-)
if(Talent == NPC_TALENT_MAGE)
{
Npc_SetTalentSkill(slf,NPC_TALENT_MAGE,Skill);
};
/// Одноручное
if(Talent == NPC_TALENT_1H)
{
if (Skill == 2)
{
Npc_SetTalentSkill(slf,NPC_TALENT_1H,2);
Mdl_ApplyOverlayMds(slf,"humans_1hST2.mds");
}
else if (Skill == 1)
{
Npc_SetTalentSkill(slf,NPC_TALENT_1H,1);
Mdl_ApplyOverlayMds(slf,"humans_1hST1.mds");
}
else if (Skill == 0)
{
Npc_SetTalentSkill(slf,NPC_TALENT_1H,0);
Mdl_RemoveOverlayMds(slf,"humans_1hST1.MDS");
Mdl_RemoveOverlayMds(slf,"humans_1hST2.MDS");
};
};
***
};
Вроде правильно. Потом ещё в игре посмотрю.
в игре такого не было :-) это я для Готики 1 писал на движке Готики 2.
Так и для г2нв надо так же сделать, нет?
в НВ он явно прописан вот тут
func void B_AddFightSkill(var C_Npc slf,var int talent,var int percent)
{
if(talent == NPC_TALENT_1H)
{
slf.HitChance[NPC_TALENT_1H] += percent;
if(slf.HitChance[NPC_TALENT_1H] > 100)
{
slf.HitChance[NPC_TALENT_1H] = 100;
};
if(slf.HitChance[NPC_TALENT_1H] < 0)
{
slf.HitChance[NPC_TALENT_1H] = 0;
};
if(slf.HitChance[NPC_TALENT_1H] >= 60)
{
Npc_SetTalentSkill(slf,NPC_TALENT_1H,2);
Mdl_ApplyOverlayMds(slf,"humans_1hST2.mds");
}
else if(slf.HitChance[NPC_TALENT_1H] >= 30)
{
Npc_SetTalentSkill(slf,NPC_TALENT_1H,1);
Mdl_ApplyOverlayMds(slf,"humans_1hST1.mds");
}
else
{
Npc_SetTalentSkill(slf,NPC_TALENT_1H,0);
Mdl_RemoveOverlayMds(slf,"humans_1hST1.MDS");
Mdl_RemoveOverlayMds(slf,"humans_1hST2.MDS");
};
но в г2НВ много кода, один отправляет к другому. B_SetFightSkills --> B_RaiseFightTalent --> B_AddFightSkill
возможно где то что то теряется или не срабатывает.
Я пересмотрел стримы и не могу понять при каких условиях такая фигня происходит. она происходит где то в начале игры при каких то условиях, а потом всё становится нормально. возможно после того как герой научится чему нибудь.
надо будет мне просто поставить чистый НВ с неоф. обновлением, телепортироваться к андре и ударить его. а потом тоже самое сделать поставив сверху рендер. а потом с каким то настройками, пока баг не появится :-)
Привет! Мне кажется или первая надпись выглядит интригующей? :-)
потом всё становится нормально. возможно после того как герой научится чему нибудь.
Скорее всего, после загрузки сохранения.
привет привет. подскажи https://github.com/Kor-Angar/G1/issues/6
а NPC может использовать факел?
что то у меня от удара орка ущерб считается без учёта от оружия. только от силы :-(
а NPC может использовать факел?
Может. Но как его заставить - не знаю. Нужно экспериментировать.
что то у меня от удара орка ущерб считается без учёта от оружия. только от силы :-(
Покажи файл проекта _Intern/Constants.d
Может. Но как его заставить - не знаю. Нужно экспериментировать.
Покажи файл проекта _Intern/Constants.d
что то у меня от удара орка ущерб считается без учёта от оружия. только от силы :-(
добавил гильдию GIL_ORC, поменял разведчика гильдию на GIL_ORC, ущерб стал считать корректно
Покажи файл проекта _Intern/Constants.d
вот так пока сделал. вроде работает.
//const int GIL_SEPERATOR_ORC = 58; // Gothic 2 NotR
//const int GIL_ORC = 59; // Gothic 2 NotR
CONST INT GIL_ORCSCOUT = 59; // Gothic 1 NotR
//const int GIL_FRIENDLY_ORC = 60; // Gothic 2 NotR
CONST INT GIL_ORCSLAVE = 60; // Gothic 1 NotR
//const int GIL_UNDEADORC = 61;
//const int GIL_DRACONIAN = 62; // Gothic 2 NotR
CONST INT GIL_ORCWARRIOR = 62; // Gothic 1 NotR
соответсвенно надо по такому же принципу будет проверить еще нежить и гоблинов :-) ну эта когда глубина мысли осознается :_)
глянь своим глазом алмазом как время будет https://github.com/Kor-Angar/G1/issues/8
Посмотри плиз https://github.com/Kor-Angar/G2_NotR_Kor_Angar/issues/2
Инстанции Рода в Минентале добавил обучение с отсылкой на инстанцию Рода в Хориносе. есть в таких случая какие то подводные камни? :-)
instance DIA_RodDJG_Teach(C_Info)
{
npc = DJG_702_Rod;
nr = 3;
condition = DIA_RodDJG_Teach_Condition;
information = DIA_Rod_Teach_Info;
permanent = TRUE;
description = "Я хочу научиться лучше владеть двуручным оружием!";
};
func int DIA_RodDJG_Teach_Condition()
{
if(Npc_IsDead(SwampDragon))
{
return TRUE;
};
};
Вооде норм. Но для новых диалогов нужно начало новой игры.
Подскажи пожалуйста как можно через Npc_OwnedByNpc(item,self) проверить есть в рюкзаке собственное оружие и если есть то одеть?
Вопрос сложный. Для такой проверки нужно перебирать инвентарь, а в скриптах нет циклов. Их добавляет расширитель zParserExtender, в теории можно как-то это сделать с его помощью, но я не копала в его сторону. Вообще все люди автоматически экипируют самое лучшее по урону оружие из того что могут поднять, и из скриптов это не регулируется. Нельзя заставить кого-либо надеть что-то меньшее по урону. Можно проверять наличие определенного оружия перед началом торговли, но когда ГГ уйдет за область отрисовки и вернется, персонаж всё равно опять нацепит самое лучшее оружие по урону. В Г1 я вручную настраивала параметры почти каждого торговца и создавала для них именное оружие - самое лучшее по урону в игре под их установленную силу/ловкость.
с торговцами я разобрался :-)
@dosinabox подскажи, пожалуйста, такой вопрос
// Владелец
var func owner; // Владелец предмета.
var int ownerGuild; // Какой гильдии принадлежит предмет.
var int disguiseGuild; // Смена гильдии Npc при экипировке предмета.
owner это func, а ownerGuild int. это же принципиально разные вещи? значит и использовать это можно совсем по разному.. можешь пару примеров привести или ссылку дать где почитать
Всякие вопросы к D36 в рамках моей сборки Gothic
B_SetFightSkills.d