- Регистрация
- 17 Дек 2011
- Сообщения
- 1.113
- Благодарности
- 581
- Баллы
- 350
Ты когда текст читаешь, как это делаешь? Сверху вниз или свой способ?=)Я просто в восторге от ваших загадок...
Ты когда текст читаешь, как это делаешь? Сверху вниз или свой способ?=)Я просто в восторге от ваших загадок...
А в чем там проблема ?!Ты когда текст читаешь, как это делаешь? Сверху вниз или свой способ?=)
FUNC INT DIA_Abuyin_Zukunft_Condition()
{
if Npc_KnowsInfo (other, DIA_Abuyin_Weissagung)
&& (DIA_Abuyin_Zukunft_permanent == FALSE)
&& (Kapitel == 1)
{
return TRUE;
};
};
FUNC VOID DIA_Abuyin_Zukunft_Info()
{
AI_Output (other, self,"DIA_Abuyin_Zukunft_15_00");//Erzдhl mir von der Zukunft.
if B_GiveInvItems (other,self, ItMI_Gold, 25)
{
AI_Output (self, other,"DIA_Abuyin_Zukunft_13_01");//Gut, Suchender des Wissens. Ich werde mich nun in Trance begeben. Bist du bereit?
Info_ClearChoices (DIA_Abuyin_Zukunft);
Info_AddChoice (DIA_Abuyin_Zukunft,"Ich bin bereit",DIA_Abuyin_Zukunft_Trance);
}
else
{
AI_Output (self, other,"DIA_Abuyin_Zukunft_13_02");//Oh Vater der Mьnzen, fьr einen Blick in die Zeit bitte ich dich um eine Gabe von 25 Goldstьcken.
};
};
FUNC VOID DIA_Abuyin_Zukunft_Trance()
{
AI_PlayAni (self,"T_MAGRUN_2_HEASHOOT");
Wld_PlayEffect("SPELLFX_TELEPORT", self, self, 0, 0, 0, FALSE );
AI_Output (self, other,"DIA_Abuyin_Zukunft_Trance_13_00");//(Trance)... Orks ... sie bewachen einen Zugang ... ein alter Stollen ... das Tal der Minen ...
AI_Output (self, other,"DIA_Abuyin_Zukunft_Trance_13_01");//(Trance) ... Mдnner mit strahlenden Rьstungen ... ein Magier ... dein Freund ist bei ihnen ... er wartet auf dich ...
AI_Output (self, other,"DIA_Abuyin_Zukunft_Trance_13_02");//(Trance) ... Feuer! Ein Angriff ... ein mдchtiges Wesen ... die Flammen ... viele ... werden sterben ...
AI_Output (self, other,"DIA_Addon_Abuyin_Zukunft_Trance_13_00");//(Trance) ... was ist das ... ? Eine Stadt ... Ruinen ... Quarhodron in Jharkendar ...
AI_Output (self, other,"DIA_Addon_Abuyin_Zukunft_Trance_13_01");//(Trance) ... er wird gerufen ... Quarhodron in Jharkendar!
AI_PlayAni (self,"T_HEASHOOT_2_STAND");
AI_Output (self, other,"DIA_Abuyin_Zukunft_Trance_13_03");//... Tut mir Leid - die Vision ist vorьber. Ich sehe nichts mehr.
DIA_Abuyin_Zukunft_permanent = TRUE;
Abuyin_Zukunft = 1;
Info_ClearChoices (DIA_Abuyin_Zukunft);
B_GivePlayerXP ((XP_Ambient*4));
};
Почему посреди диалога возникает ?
Появляется опция "Я готов!". Когда игрок выбирает её, вызывается функция DIA_Abuyin_Zukunft_Trance.Info_AddChoice(DIA_Abuyin_Zukunft,"Я готов!",DIA_Abuyin_Zukunft_Trance);
Не могу понять принцип построения некоторых диалогов.На примере:
Как определяется,что будет читаться?Код:instance DIA_Abuyin_Zukunft(C_Info) { npc = VLK_456_Abuyin; nr = 2; condition = DIA_Abuyin_Zukunft_Condition; information = DIA_Abuyin_Zukunft_Info; permanent = TRUE; description = "Расскажи мне о будущем (заплатить 25 золотых)."; }; var int DIA_Abuyin_Zukunft_permanent; func int DIA_Abuyin_Zukunft_Condition() { if(Npc_KnowsInfo(other,DIA_Abuyin_Weissagung) && (DIA_Abuyin_Zukunft_permanent == FALSE) && (Kapitel == 1)) { return TRUE; }; }; func void DIA_Abuyin_Zukunft_Info() { AI_Output(other,self,"DIA_Abuyin_Zukunft_15_00"); //Расскажи мне о будущем. if(B_GiveInvItems(other,self,ItMi_Gold,25)) { AI_Output(self,other,"DIA_Abuyin_Zukunft_13_01"); //Хорошо, о, Жаждущий Знаний. Я сейчас войду в состояние транса. Ты готов? Info_ClearChoices(DIA_Abuyin_Zukunft); Info_AddChoice(DIA_Abuyin_Zukunft,"Я готов!",DIA_Abuyin_Zukunft_Trance); } else { AI_Output(self,other,"DIA_Abuyin_Zukunft_13_02"); //О, Отец Монет, я прошу у тебя 25 золотых в обмен на взгляд в туманное будущее. }; }; func void DIA_Abuyin_Zukunft_Trance() { AI_PlayAni(self,"T_MAGRUN_2_HEASHOOT"); Wld_PlayEffect("SPELLFX_TELEPORT",self,self,0,0,0,FALSE); AI_Output(self,other,"DIA_Abuyin_Zukunft_Trance_13_00"); //(в трансе) Орки... они охраняют вход... старый туннель... Долина Рудников... AI_Output(self,other,"DIA_Abuyin_Zukunft_Trance_13_01"); //(в трансе) Люди в сверкающих доспехах... маг... твой друг с ними... он ждет тебя... AI_Output(self,other,"DIA_Abuyin_Zukunft_Trance_13_02"); //(в трансе) Огонь! Нападение... могучего существа... пламя... многие... погибнут... AI_Output(self,other,"DIA_Addon_Abuyin_Zukunft_Trance_13_00"); //(в трансе) ...Что это?.. Город... Руины... Куарходрон из Яркендара... AI_Output(self,other,"DIA_Addon_Abuyin_Zukunft_Trance_13_01"); //(в трансе) ...Он был призван... Куарходрон из Яркендара! AI_PlayAni(self,"T_HEASHOOT_2_STAND"); AI_Output(self,other,"DIA_Abuyin_Zukunft_Trance_13_03"); //... Извини - видение кончилось. Больше я ничего не смог увидеть. DIA_Abuyin_Zukunft_permanent = TRUE; Abuyin_Zukunft = 1; Info_ClearChoices(DIA_Abuyin_Zukunft); B_GivePlayerXP(XP_Ambient * 4); };
AI_Output(self,other,"DIA_Abuyin_Zukunft_Trance_13_00"); //
или
AI_Output(self,other,"DIA_Addon_Abuyin_Zukunft_Trance_13_00"); //
Ведь условий никаких не стоит.
И как вообще должны подхватиться строчки "DIA_Addon_Abuyin_Zukunft...",
если инстанция диалога: "DIA_Abuyin_Zukunft"?
instance DIA_Abuyin_Zukunft(C_Info) //Объявили диалог у Абуина с некоторыми (переменными), методами
{
npc = VLK_456_Abuyin;
nr = 2;
condition = DIA_Abuyin_Zukunft_Condition;
information = DIA_Abuyin_Zukunft_Info;
permanent = TRUE;
description = "Расскажи мне о будущем (заплатить 25 золотых).";
};
var int DIA_Abuyin_Zukunft_permanent; //Объявили переменную числового значения
func int DIA_Abuyin_Zukunft_Condition() //Кондищен функция диалога
{
//Условие, в котором проверяется, чтобы текущая глава была первая, ГГ говорил с Абуином и объявленная ранее переменная равна FALSE
if(Npc_KnowsInfo(other,DIA_Abuyin_Weissagung) && (DIA_Abuyin_Zukunft_permanent == FALSE) && (Kapitel == 1))
{
return TRUE; //Если все верно, то возвращается у функции TRUE, и запуститься диалог
};
};
func void DIA_Abuyin_Zukunft_Info() //Функция диалога с Абуином
{
AI_Output(other,self,"DIA_Abuyin_Zukunft_15_00"); //Расскажи мне о будущем. //Здесь работает функция вызова диалога,
в котором ГГ говорит фразу после комментария,
а DIA_.... это название файла, в котором содержится озвучка диалога,
если файла нет, то и самой озвучки нет, диалог при этом пройдет, но с некоторой задержкой.
if(B_GiveInvItems(other,self,ItMi_Gold,25)) //Здесь ставиться условие, если ГГ заплатит Абуину, то будет проигрываться диалог, который стоит в скобках
{
AI_Output(self,other,"DIA_Abuyin_Zukunft_13_01"); //Хорошо, о, Жаждущий Знаний. Я сейчас войду в состояние транса. Ты готов?
Info_ClearChoices(DIA_Abuyin_Zukunft); //Функция очистки окна выбора диалогов
Info_AddChoice(DIA_Abuyin_Zukunft,"Я готов!",DIA_Abuyin_Zukunft_Trance); //Добавление в меню диалога ГГ "Я готов!", при выборе которой сработает вызов другой функции диалога
}
else //Если ГГ не заплатит 25 золотых, то проиграется следующий диалог
{
AI_Output(self,other,"DIA_Abuyin_Zukunft_13_02"); //О, Отец Монет, я прошу у тебя 25 золотых в обмен на взгляд в туманное будущее.
};
};
func void DIA_Abuyin_Zukunft_Trance() //Функция монолога, когда ГГ заплатит 25 золотых
{
AI_PlayAni(self,"T_MAGRUN_2_HEASHOOT"); //Функция проигрывания анимации Абуина (self)
Wld_PlayEffect("SPELLFX_TELEPORT",self,self,0,0,0,FALSE); //Функция проигрывания анимации PFX эффекта у Абуина (self)
//Диалоги проигрываются сверху-вниз, по номерам, которые указаны в файле диалога DIA_..._13_00 в этом случае, он будет проигрываться первым
AI_Output(self,other,"DIA_Abuyin_Zukunft_Trance_13_00"); //(в трансе) Орки... они охраняют вход... старый туннель... Долина Рудников...
AI_Output(self,other,"DIA_Abuyin_Zukunft_Trance_13_01"); //(в трансе) Люди в сверкающих доспехах... маг... твой друг с ними... он ждет тебя...
AI_Output(self,other,"DIA_Abuyin_Zukunft_Trance_13_02"); //(в трансе) Огонь! Нападение... могучего существа... пламя... многие... погибнут...
AI_Output(self,other,"DIA_Addon_Abuyin_Zukunft_Trance_13_00"); //(в трансе) ...Что это?.. Город... Руины... Куарходрон из Яркендара...
AI_Output(self,other,"DIA_Addon_Abuyin_Zukunft_Trance_13_01"); //(в трансе) ...Он был призван... Куарходрон из Яркендара!
AI_PlayAni(self,"T_HEASHOOT_2_STAND");
AI_Output(self,other,"DIA_Abuyin_Zukunft_Trance_13_03"); //... Извини - видение кончилось. Больше я ничего не смог увидеть.
DIA_Abuyin_Zukunft_permanent = TRUE; //Операция присваивания
Abuyin_Zukunft = 1; //Операция присваивания
Info_ClearChoices(DIA_Abuyin_Zukunft);
B_GivePlayerXP(XP_Ambient * 4); //Добавление ГГ опыта
};
В этом и было мое недопонимание.Названия файлов в нем не играют ни какой роли, функции отрабатываются сверху вних и по номерам диалогов, а два этих файла: DIA_Addon_Abuyin_Zukunft_Trance_13_00, были добавлены в аддоне..
На всякий случай 13 это номер голоса, а 00 это номер строки диалога.В этом и было мое недопонимание.
Я подумал,если DIA_Abuyin имеет номер 13_00,и DIA_Addon_Abuyin имеет номер 13_00(в одном и том же диалоге),то происходит какая-то вариативность.
Сейчас поэкспериментировал со своим нпс,все понял.
Всем спасибо.
Усем трямки в этой теме.
Имею идею добавить ГГ в Готике 2 фичу сбора статистики - кого и сколько ухлопал, чего и сколько нашел/спер/скрафтил и т.п. Ну, с чего начать самое начало, думаю, найду - то поставить, это скормить еще чему-нибудь, получить кучу распакованного файла и радоваться.
Собственно, раз тема для чайников, то, значит, можно задавать дилетантские вопросы? Их таки есть у меня:
1) Куда дальше копать? Имею подозрение, что, раз никаких визуальных штук менять не предполагается, то мне не нужно 3Д-моделирование, конвертирование музыки и возня с анимациями, а потребуется чистый скриптинг. Сталбыть, мне нужен будет мануал по синтаксису скриптового языка Готики и список соглашений об именовании всяких там переменных. Я прав?
2) Как вообще производится с точки зрения скриптования обработка всяких там взаимодействий ГГ с прочим? Ну, например, инвентарь, параметры и возможности героя находятся в скрипте героя, а их текущие значения и флаги берутся из файла сохранения либо изменяются внешними событиями. А вот, например, ГГ сковал меч - где записывается (и записывается ли) этот факт? Или ГГ собрал 200 яблок, 30 съел и 100 пустил на пироги - как/где это записано? Или ГГ вскрыл сундук и нашел 100 монет + 1 эссенцию маны - сами-то монеты и бутылка запишутся в инвентарь, возможно, в параметры героя запишется +1 успешное вскрытие. Но можно ли как-то зафиксировать, что именно столько монет и бутылок герой именно добыл из вскрытого им сундука?
3) Чтобы, например, не перегружать параметры героя и (возможно) избежать необходимости начинать новую игру, есть мысль собирать статистику просто в лог-файл, например, в формате "%дата_время% / %игровые_дата_время% / убил(съел, скрафтил) / %ID_вражины(предмета)% / %количество% / чем убил". Это вообще возможно (позволяет ли игра писать свой файл)? И как к этому вопросу лучше подступиться?
Спасибо заранее!
func void Use_Apple()
{
Npc_ChangeAttribute(self,ATR_HITPOINTS,HP_Apple); // восстановление хп
if(Npc_IsPlayer(self))
{
Apple_Bonus = Apple_Bonus + 1; // счетчик сколько съел
if(Apple_Bonus == 7) // если 7 съел
{
Print(PRINT_Eat1);// вывод сообщения
};
if(Apple_Bonus == 15) // если 15
{
Print(PRINT_Eat2);// вывод сообщения
};
if(Apple_Bonus == 25)// если 25
{
Print(PRINT_Eat3); // вывод сообщения
B_RaiseAttribute(self,ATR_STRENGTH,1); // повышение силы
Snd_Play("LevelUp"); // воспроизведение звука
Apple_Bonus = 0; // обнуление счетчика
};
};
};
instance DIA_Addon_Myxir_CITY_EXIT(C_Info)
{
npc = KDW_140300_Addon_Myxir_CITY;
nr = 999;
condition = DIA_Addon_Myxir_CITY_EXIT_Condition;
information = DIA_Addon_Myxir_CITY_EXIT_Info;
permanent = TRUE;
description = Dialog_Ende;
};
func int DIA_Addon_Myxir_CITY_EXIT_Condition()
{
return TRUE;
};
func void DIA_Addon_Myxir_CITY_EXIT_Info()
{
AI_StopProcessInfos(self);
};
instance DIA_Addon_Myxir_CITY_HelloCITY(C_Info)
{
npc = KDW_140300_Addon_Myxir_CITY;
nr = 5;
condition = DIA_Addon_Myxir_CITY_HelloCITY_Condition;
information = DIA_Addon_Myxir_CITY_HelloCITY_Info;
permanent = TRUE;
description = "Ты останешься в городе?";
};
func int DIA_Addon_Myxir_CITY_HelloCITY_Condition()
{
return TRUE;
};
var int DIA_Addon_Myxir_CITY_HelloCITY_OneTime;
func void DIA_Addon_Myxir_CITY_HelloCITY_Info()
{
AI_Output(other,self,"DIA_Addon_Myxir_CITY_HelloCITY_15_00"); //Ты останешься в городе?
AI_Output(self,other,"DIA_Addon_Myxir_CITY_HelloCITY_12_01"); //Кто-то из нас должен оставаться здесь, когда Ватраса в городе нет.
VatrasAbloeseIstDa = TRUE;
if((RavenIsDead == TRUE) && (DIA_Addon_Myxir_CITY_HelloCITY_OneTime == FALSE))
{
AI_Output(self,other,"DIA_Addon_Myxir_CITY_HelloCITY_12_02"); //Я хотел тебе сказать еще одну вещь.
AI_Output(self,other,"DIA_Addon_Myxir_CITY_HelloCITY_12_03"); //В Яркендаре ты совершил поистине героический подвиг.
AI_Output(other,self,"DIA_Addon_Myxir_CITY_HelloCITY_15_04"); //К сожалению, у меня еще есть незавершенные дела в Хоринисе.
AI_Output(self,other,"DIA_Addon_Myxir_CITY_HelloCITY_12_05"); //Это так, но я уверен, что ты справишься с ними, Хранитель.
AI_Output(other,self,"DIA_Addon_Myxir_CITY_HelloCITY_15_06"); //Увидим.
DIA_Addon_Myxir_CITY_HelloCITY_OneTime = TRUE;
B_GivePlayerXP(XP_Ambient);
};
};
instance DIA_Addon_Myxir_CITY_Teach(C_Info)
{
npc = KDW_140300_Addon_Myxir_CITY;
nr = 90;
condition = DIA_Addon_Myxir_CITY_Teach_Condition;
information = DIA_Addon_Myxir_CITY_Teach_Info;
permanent = TRUE;
description = "Научи меня этому языку.";
};
var int DIA_Addon_Myxir_CITY_Teach_NoPerm;
var int DIA_Addon_Myxir_CITY_Teach_OneTime;
func int DIA_Addon_Myxir_CITY_Teach_Condition()
{
if((Myxir_Addon_TeachPlayer == TRUE) && (DIA_Addon_Myxir_CITY_Teach_NoPerm == FALSE) && (DIA_Addon_Myxir_Teach_NoPerm == FALSE) && (DIA_Addon_Myxir_ADW_Teach_NoPerm == FALSE))
{
return TRUE;
};
};
func void DIA_Addon_Myxir_CITY_Teach_Info()
{
B_DIA_Addon_Myxir_TeachRequest();
if(DIA_Addon_Myxir_CITY_Teach_OneTime == FALSE)
{
Log_CreateTopic(TOPIC_Addon_KDWTeacher,LOG_NOTE);
B_LogEntry(TOPIC_Addon_KDWTeacher,LogText_Addon_MyxirTeach);
DIA_Addon_Myxir_CITY_Teach_OneTime = TRUE;
};
if((PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_1] == FALSE) || (PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_2] == FALSE) || (PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_3] == FALSE))
{
Info_ClearChoices(DIA_Addon_Myxir_CITY_Teach);
Info_AddChoice(DIA_Addon_Myxir_CITY_Teach,Dialog_Back,DIA_Addon_Myxir_CITY_Teach_BACK);
};
if(PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_1] == FALSE)
{
B_DIA_Addon_Myxir_TeachL1();
Info_AddChoice(DIA_Addon_Myxir_CITY_Teach,B_BuildLearnString(NAME_ADDON_LEARNLANGUAGE_1,B_GetLearnCostTalent(other,NPC_TALENT_FOREIGNLANGUAGE,LANGUAGE_1)),DIA_Addon_Myxir_CITY_Teach_LANGUAGE_1);
}
else if((PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_2] == FALSE) && (PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_1] == TRUE))
{
B_DIA_Addon_Myxir_TeachL2();
Info_AddChoice(DIA_Addon_Myxir_CITY_Teach,B_BuildLearnString(NAME_ADDON_LEARNLANGUAGE_2,B_GetLearnCostTalent(other,NPC_TALENT_FOREIGNLANGUAGE,LANGUAGE_2)),DIA_Addon_Myxir_CITY_Teach_LANGUAGE_2);
}
else if((PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_3] == FALSE) && (PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_1] == TRUE) && (PLAYER_TALENT_FOREIGNLANGUAGE[LANGUAGE_2] == TRUE))
{
B_DIA_Addon_Myxir_TeachL3();
Info_AddChoice(DIA_Addon_Myxir_CITY_Teach,B_BuildLearnString(NAME_ADDON_LEARNLANGUAGE_3,B_GetLearnCostTalent(other,NPC_TALENT_FOREIGNLANGUAGE,LANGUAGE_3)),DIA_Addon_Myxir_CITY_Teach_LANGUAGE_3);
}
else
{
B_DIA_Addon_Myxir_TeachNoMore();
DIA_Addon_Myxir_CITY_Teach_NoPerm = TRUE;
};
};
func void DIA_Addon_Myxir_CITY_Teach_LANGUAGE_X()
{
B_DIA_Addon_Myxir_Teach_LANGUAGE_X();
};
func void DIA_Addon_Myxir_CITY_Teach_BACK()
{
Info_ClearChoices(DIA_Addon_Myxir_CITY_Teach);
};
func void DIA_Addon_Myxir_CITY_Teach_LANGUAGE_1()
{
if(B_TeachPlayerTalentForeignLanguage(self,other,LANGUAGE_1))
{
DIA_Addon_Myxir_CITY_Teach_LANGUAGE_X();
};
Info_ClearChoices(DIA_Addon_Myxir_CITY_Teach);
};
func void DIA_Addon_Myxir_CITY_Teach_LANGUAGE_2()
{
if(B_TeachPlayerTalentForeignLanguage(self,other,LANGUAGE_2))
{
DIA_Addon_Myxir_CITY_Teach_LANGUAGE_X();
};
Info_ClearChoices(DIA_Addon_Myxir_CITY_Teach);
};
func void DIA_Addon_Myxir_CITY_Teach_LANGUAGE_3()
{
if(B_TeachPlayerTalentForeignLanguage(self,other,LANGUAGE_3))
{
DIA_Addon_Myxir_CITY_Teach_LANGUAGE_X();
};
Info_ClearChoices(DIA_Addon_Myxir_CITY_Teach);
};
...
fight_tactic = FAI_HUMAN_MASTER ;
...
HitChance [NPC_TALENT_1H] = 90; //Владение Одноручником
HitChance [NPC_TALENT_2H] = 60; //Владение Двуручником
HitChance [NPC_TALENT_BOW] = 60; //Умение обращаться с Луком
HitChance [NPC_TALENT_CROSSBOW] = 30; //Умение обращаться с Арбалетом
...
это я сразу понял и сделалВ условия нужно будет вставить наличие у ГГ определённого предмета (предмет лучше всего сделать единичным в мире - так он и будет типа как персональным).
диалогов в игре таких много, но вот обращение при условие это не часто. штраф к примеру. вообщем банально содрать не с чего :-DПоищи диалоги с параметром important = TRUE; - это как раз диалоги, в которых НПЦ сам обращается к ГГ.
instance DIA_Dexter_Kill(C_Info)
{
npc = BDT_1060_Dexter;
nr = 2;
condition = DIA_Dexter_Kill_Condition;
information = DIA_Dexter_Kill_Info;
permanent = FALSE;
important = TRUE;
};
func int DIA_Dexter_Kill_Condition()
{
if(Npc_IsInState(self,ZS_Talk) && ((Dexter_NoMoreSmallTalk == TRUE) || (Knows_Dexter == FALSE)))
{
return TRUE;
};
};
func void DIA_Dexter_Kill_Info()
{
if(Knows_Dexter == TRUE)
{
AI_Output(self,other,"DIA_Addon_Dexter_Add_09_02"); //(нападает) Считай, что сам напросился...
}
else
{
AI_Output(self,other,"DIA_Dexter_Kill_09_01"); //О, лучше ты здесь не появлялся. Ты не тот человек не в том месте.
};
MIS_Steckbriefe = LOG_OBSOLETE;
B_CheckLog();
B_Greg_ComesToDexter();
Info_ClearChoices(DIA_Dexter_Kill);
Info_AddChoice(DIA_Dexter_Kill,Dialog_Ende,DIA_Dexter_Kill_ENDE);
};
Пользуясь случаем хочу поблагодарить всех за исчерпывающие ответы на предыдущие вопросы :-D
Читаю значит я топик Создание NPC и вставка его в игру, вношу правки в персонажи и все у меня получается:-D
Придаю NPC индивидуальности строго по инструкции
Код:... fight_tactic = FAI_HUMAN_MASTER ; ... HitChance [NPC_TALENT_1H] = 90; //Владение Одноручником HitChance [NPC_TALENT_2H] = 60; //Владение Двуручником HitChance [NPC_TALENT_BOW] = 60; //Умение обращаться с Луком HitChance [NPC_TALENT_CROSSBOW] = 30; //Умение обращаться с Арбалетом ...
Запускаю игру, NPC стоит довольный как слон. Но талант при этом несмотря на высокий процент имеет значение "Боец", а мне надо "Мастер".
Вопрос: как прописать значение(обучен, боец, мастер) для соответствующего(1H,2H,BOW,CROSSBOW) таланта у NPC
к примеру
1h=мастер
2h=боец
BOW=боец
CROSSBOW=обучен
Вообщем я разобрался. так сделать нельзя. ибо все это определяется общей строчкой fight_tactic = FAI_HUMAN_MASTER ;
то есть, если чувак мастер, то он мастер прям во всем сразу :-D
2 lorddemonik1
Ой спасибо! Стало гораздо понятнее. На Диего проверил работает
instance DIA_DiegoNW_ItMw(C_Info)
{
npc = PC_Thief_NW;
nr = 1 ; //важность,т.е в где будет стоять строка в начале в конце в середине.
condition = DIA_DiegoNW_ItMw_Condition;
information = DIA_DiegoNW_ItMw_Info;
permanent = TRUE;
important = TRUE; //если false то диалог начинаете вы,если TRUE нпс начинает разговор с вами!
};
func int DIA_DiegoNW_ItMw_Condition()
{
If(Npc_hasItems(hero,ItMw_diego) >= 1)
{
return TRUE;
};
};
func void DIA_DiegoNW_ItMw_Info()
{
AI_Output(self,other,"DIA_Addon_Xardas_Hello_14_00"); // У тебя мое оружие, отдавай
B_GiveInvItems(other,self,ItMw_diego,1); // Забирает палку во время разговора, сделано, чтобы после диалога, не напал повторно ввиду того, что оружие не экипированно...
AI_StopProcessInfos(self);
B_Attack(self,other,AR_NONE,1);
};
Но хочется всё таки что была проверка на то, что оружие у ГГ экипировано. иначе как то странно получается