Open Kor-Angar opened 5 years ago
а как можно сделать что бы Jergan осматривал труп Снеппера? :-)
Можно, но крайне криво и ненадежно. Распиши, что он должен делать. Идти на гору и проигрывать анимацию обыска? А если на горе будут другие снепперы? А если ГГ его опередит, обчистит труп и он исчезнет? Как отследить момент обыска трупа ГГ? В какой момент возвращать Джергана в лагерь? Как долго он должен обыскивать труп?
привет. вот у меня Джерган идёт к трупу Снеппера Лидера
instance DIA_Jergan_Leader(C_Info)
{
npc = VLK_4110_Jergan;
nr = 3;
condition = DIA_Jergan_Leader_Condition;
information = DIA_Jergan_Leader_Info;
// permanent = FALSE;
important = TRUE; // Jergan обращается к Герою
};
func int DIA_Jergan_Leader_Condition()
{
if((Npc_GetDistToWP(self,"OW_NEWMINE_04") < 1000) && Npc_IsDead(NewMine_LeadSnapper) && (NewMine_LeadSnapper_Spawned == TRUE))
{
return TRUE;
};
};
func void DIA_Jergan_Leader_Info()
{
AI_Output(self,other,"DIA_Jergan_Leader_13_00"); //Ты убил вожака стаи. И как - ты забрал когти этого зверя?
if(Npc_HasItems(other,ItAt_ClawLeader) || (Lutero_Krallen == LOG_SUCCESS))
{
AI_Output(other,self,"DIA_Jergan_Leader_15_01"); //Да.
AI_Output(self,other,"DIA_Jergan_Leader_13_02"); //Они стоят целое состояние. Есть люди, которые коллекционируют такие вещи.
AI_Output(self,other,"DIA_Jergan_Leader_13_03"); //Если ты найдешь правильного покупателя, то получишь за них целую кучу золота.
if(Lutero_Krallen == LOG_SUCCESS)
{
AI_Output(other,self,"DIA_Raoul_TROLLFELL_ja_15_00"); //Продано.
};
}
else
{
AI_Output(other,self,"DIA_Jergan_Leader_15_04"); //Нет.
AI_Output(self,other,"DIA_Jergan_Leader_13_05"); //Это ты зря. Я уверен, они стоят целое состояние.
Info_AddChoice(DIA_Jergan_Leader,"Мне это не интересно.",DIA_Jergan_Leader_rechnung_hastrecht);
if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == FALSE)
{
Info_AddChoice(DIA_Jergan_Leader,"Покажи мне, как отделять когти.",DIA_Jergan_Teach_Info);
};
Npc_ExchangeRoutine(self,"LeadSnapper"); // Jergan идёт к трупу Снеппера
};
};
func void DIA_Jergan_Leader_rechnung_hastrecht()
{
AI_Output(other,self,"DIA_Raoul_TROLL_rechnung_hastrecht_15_00"); //Мне это не интересно.
Info_ClearChoices(DIA_Jergan_Leader);
// CreateInvItems(self,ItAt_ClawLeader,2); // Jergan добавляем когти Снеппера
Wld_InsertNpc(NewMine_LeadSnapper,"OW_ORC_LOOKOUT_2_01"); // создаём Лидера Снепперов
B_KillAnimal(NewMine_LeadSnapper); // убиваем Лидера Снепперов
DIA_Jergan_EXIT_Info();
};
хотелось бы что бы он там не столбом стоял а обыскивал труп снеппера:-)
Npc_ExchangeRoutine(self,"LeadSnapper"); // Jergan идёт к трупу Снеппера
А когда он пойдет обратно? Что сменит ему распорядок дня? Как избежать ситуации, когда он будет обыскивать пустое место после пропажи трупа?
DIA_Jergan_EXIT_Info();
Используй просто AI_StopProcessInfos(self);
хотелось бы что бы он там не столбом стоял а обыскивал труп снеппера:-)
Смотри распорядок дня Рангара, который копается в ящиках Мартина:
func void Rtn_PalCampKlau_321()
{
TA_Stand_Drinking(4,0,23,0,"NW_CITY_BEER_06");
TA_Pick_FP(23,0,4,0,"NW_CITY_PALCAMP_15");
};
Занятие TA_Pick_FP также используют крестьяне, которые копаются на грядках.
DIA_Jergan_EXIT_Info(); Используй просто AI_StopProcessInfos(self);
не срабатывала AI_StopProcessInfos(self); решил попробовать DIA_Jergan_EXIT_Info(); тоже не помогло :-(
Занятие TA_Pick_FP также используют крестьяне, которые копаются на грядках.
спасибо
не срабатывала AI_StopProcessInfos(self); решил попробовать DIA_Jergan_EXIT_Info(); тоже не помогло :-(
Диалог не завершается? Возможно, тут смена распорядка дня мешает. Нужно сначала завершать диалог и уже потом менять распорядок. То есть, в таком порядке:
AI_StopProcessInfos(self);
Npc_ExchangeRoutine(self,"LeadSnapper");
И если используешь принудительное завершение диалога, то эта команда не нужна:
Info_ClearChoices(DIA_Jergan_Leader);
Она нужна для очистки текущего диалогового окна: действие кнопок "НАЗАД" и необходимая операция перед Info_AddChoice (добавлением новых опций-разветвлений в текущий диалог).
Она нужна для очистки текущего диалогового окна: действие кнопок "НАЗАД" и необходимая операция перед Info_AddChoice (добавлением новых опций-разветвлений в текущий диалог).
instance DIA_Test(C_Info) { npc = VLK_4110_Jergan; nr = 3; condition = DIA_Test_Condition; information = DIA_Test_Info; important = TRUE; };
func int DIA_Test_Condition() { return TRUE; };
func void DIA_Test_Info() { AI_Output(self,other,"DIA_Test_13_00"); //Да или нет? Info_ClearChoices(DIA_Test); Info_AddChoice(DIA_Test,"ЗАКОНЧИТЬ",DIA_Test_Info_exit); Info_AddChoice(DIA_Test,"НАЗАД",DIA_Test_Info_back); Info_AddChoice(DIA_Test,"Да.",DIA_Test_Info_yes); Info_AddChoice(DIA_Test,"Нет.",DIA_Test_Info_no); };
func void DIA_Test_Info_exit() { AI_StopProcessInfos(self); };
func void DIA_Test_Info_back() { Info_ClearChoices(DIA_Test); };
func void DIA_Test_Info_yes() { AI_Output(other,self,"DIA_Test_13_01"); //Да. };
func void DIA_Test_Info_no() { AI_Output(other,self,"DIA_Test_13_02"); //Нет. };
если не делать
AI_Output(other,self,"DIA_Raoul_TROLL_rechnung_hastrecht_15_00"); //Мне это не интересно.
Info_ClearChoices(DIA_Jergan_Leader);
а сделать вот так
func void DIA_Jergan_Leader_Info()
{
AI_Output(self,other,"DIA_Jergan_Leader_13_00"); //Ты убил вожака стаи. И как - ты забрал когти этого зверя?
if(Npc_HasItems(other,ItAt_ClawLeader) || (Lutero_Krallen == LOG_SUCCESS))
{
AI_Output(other,self,"DIA_Jergan_Leader_15_01"); //Да.
AI_Output(self,other,"DIA_Jergan_Leader_13_02"); //Они стоят целое состояние. Есть люди, которые коллекционируют такие вещи.
AI_Output(self,other,"DIA_Jergan_Leader_13_03"); //Если ты найдешь правильного покупателя, то получишь за них целую кучу золота.
if(Lutero_Krallen == LOG_SUCCESS)
{
AI_Output(other,self,"DIA_Raoul_TROLLFELL_ja_15_00"); //Продано.
};
}
else
{
AI_Output(other,self,"DIA_Jergan_Leader_15_04"); //Нет.
AI_Output(self,other,"DIA_Jergan_Leader_13_05"); //Это ты зря. Я уверен, они стоят целое состояние.
Info_ClearChoices(DIA_Jergan_Leader);
Info_AddChoice(DIA_Jergan_Leader,"Мне это не интересно.",DIA_Jergan_Leader_rechnung_hastrecht);
if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == FALSE)
{
Info_AddChoice(DIA_Jergan_Leader,"Покажи мне, как отделять когти.",DIA_Jergan_Teach_Info);
// }
// else
// {
// Npc_ExchangeRoutine(self,"LeadSnapper"); // Jergan идёт к трупу Снеппера
};
};
};
func void DIA_Jergan_Leader_rechnung_hastrecht()
{
AI_Output(other,self,"DIA_Raoul_TROLL_rechnung_hastrecht_15_00"); //Мне это не интересно.
// Info_ClearChoices(DIA_Jergan_Leader);
// CreateInvItems(self,ItAt_ClawLeader,2); // Jergan добавляем когти Снеппера
Wld_InsertNpc(NewMine_LeadSnapper,"OW_ORC_LOOKOUT_2_01"); // создаём Лидера Снепперов
B_KillAnimal(NewMine_LeadSnapper); // убиваем Лидера Снепперов
// DIA_Jergan_EXIT_Info();
AI_StopProcessInfos(self);
Npc_ExchangeRoutine(self,"LeadSnapper"); // Jergan идёт к трупу Снеппера
};
то получится вот так
а как сделать что бы Ёрган не пошёл, а быстро побежал?:-)
а вот если так сделать то работает
instance DIA_Jergan_Leader(C_Info)
{
npc = VLK_4110_Jergan;
nr = 3;
condition = DIA_Jergan_Leader_Condition;
information = DIA_Jergan_Leader_Info;
// permanent = FALSE;
important = TRUE; // Jergan обращается к Герою после убийства лидера Снепперов
};
func int DIA_Jergan_Leader_Condition()
{
if((Npc_GetDistToWP(self,"OW_NEWMINE_04") < 1000) && Npc_IsDead(NewMine_LeadSnapper) && (NewMine_LeadSnapper_Spawned == TRUE))
{
return TRUE;
};
};
func void DIA_Jergan_Leader_Info()
{
AI_Output(self,other,"DIA_Jergan_Leader_13_00"); //Ты убил вожака стаи. И как - ты забрал когти этого зверя?
if(Npc_HasItems(other,ItAt_ClawLeader) || (Lutero_Krallen == LOG_SUCCESS))
{
AI_Output(other,self,"DIA_Jergan_Leader_15_01"); //Да.
AI_Output(self,other,"DIA_Jergan_Leader_13_02"); //Они стоят целое состояние. Есть люди, которые коллекционируют такие вещи.
AI_Output(self,other,"DIA_Jergan_Leader_13_03"); //Если ты найдешь правильного покупателя, то получишь за них целую кучу золота.
if(Lutero_Krallen == LOG_SUCCESS)
{
AI_Output(other,self,"DIA_Raoul_TROLLFELL_ja_15_00"); //Продано.
};
}
else
{
AI_Output(other,self,"DIA_Jergan_Leader_15_04"); //Нет.
AI_Output(self,other,"DIA_Jergan_Leader_13_05"); //Это ты зря. Я уверен, они стоят целое состояние.
// Info_ClearChoices(DIA_Jergan_Leader);
Info_AddChoice(DIA_Jergan_Leader,"Мне это не интересно.",DIA_Jergan_Leader_rechnung_hastrecht);
if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == FALSE)
{
Info_AddChoice(DIA_Jergan_Leader,"Покажи мне, как отделять когти.",DIA_Jergan_Teach_Info);
};
Npc_ExchangeRoutine(self,"LeadSnapper"); // Jergan идёт к трупу Снеппера
};
};
func void DIA_Jergan_Leader_rechnung_hastrecht()
{
AI_Output(other,self,"DIA_Raoul_TROLL_rechnung_hastrecht_15_00"); //Мне это не интересно.
Info_ClearChoices(DIA_Jergan_Leader);
// CreateInvItems(self,ItAt_ClawLeader,2); // Jergan добавляем когти Снеппера
Wld_InsertNpc(NewMine_LeadSnapper,"OW_ORC_LOOKOUT_2_01"); // создаём Лидера Снепперов
B_KillAnimal(NewMine_LeadSnapper); // убиваем Лидера Снепперов
AI_StopProcessInfos(self);
};
единственной что не срабатывает AI_StopProcessInfos(self); после реплики "Мне это не интересно."
https://www.youtube.com/watch?v=uLDXdG3hfXc&feature=youtu.be
единственной что не срабатывает AI_StopProcessInfos(self); после реплики "Мне это не интересно."
Перенеси её выше:
func void DIA_Jergan_Leader_rechnung_hastrecht()
{
AI_Output(other,self,"DIA_Raoul_TROLL_rechnung_hastrecht_15_00"); //Мне это не интересно.
AI_StopProcessInfos(self);
// CreateInvItems(self,ItAt_ClawLeader,2); // Jergan добавляем когти Снеппера
Wld_InsertNpc(NewMine_LeadSnapper,"OW_ORC_LOOKOUT_2_01"); // создаём Лидера Снепперов
B_KillAnimal(NewMine_LeadSnapper); // убиваем Лидера Снепперов
};
Перенеси её выше
спасибо, помогло
подскажи плиз, я вот такое добавил в файл, а оно не срабатывает :-)
instance DIA_Jergan_LeadSnapper(C_Info)
{
npc = VLK_4110_Jergan;
nr = 3;
condition = DIA_Jergan_LeadSnapper_Condition;
information = DIA_Jergan_LeadSnapper_Info;
// permanent = FALSE;
important = TRUE; // Jergan обращается к Герою
};
func int DIA_Jergan_LeadSnapper_Condition()
{
if(Npc_GetDistToWP(self,"OW_ORC_LOOKOUT_2_01") < 1000)
{
return TRUE;
};
};
func void DIA_Jergan_LeadSnapper_Info()
{
AI_Output(self,other,"DIA_Jergan_Gegend_13_01"); //Если ты хочешь выжить, беги от всего, что тебе встретится.
if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == FALSE)
{
CreateInvItems(self,ItAt_ClawLeader,2); // Jergan добавляем когти Снеппера
};
AI_StopProcessInfos(self);
Npc_ExchangeRoutine(self,"Fajeth"); // Jergan возвращется к Фаджету
};
и в земле что то он не ковыряется
func void Rtn_LeadSnapper_4110()
{
TA_Pick_FP (8,0,23,0,"OW_ORC_LOOKOUT_2_01"); // Вожак Снепперов
TA_Pick_FP (23,0,8,0,"OW_ORC_LOOKOUT_2_01"); // Вожак Снепперов
};
новую игру начать надо или сейв до входа в долину рудников тоже подойдёт? :-)
Если добавляется новый диалог или новый распорядок дня, то только новая игра.
Соблюдай оформление!
func void Rtn_LeadSnapper_4110()
{
TA_Pick_FP(8,0,23,0,"OW_ORC_LOOKOUT_2_01");
TA_Pick_FP(23,0,8,0,"OW_ORC_LOOKOUT_2_01");
};
и в земле что то он не ковыряется
В мире должны находиться специальные точки с определенными именами, на которых люди выполняют нужные анимации. Конечно же, таких точек в этом месте нет. Нужно копать функцию ZS_Pick_FP_Loop() и прописывать исключения для Джергана.
а как сделать что бы Ёрган не пошёл, а быстро побежал?:-)
Опять же - исключения в ZS_Pick_FP_Loop().
Напишу всё, не глядя в сурсер и не проверяя в игре:
func void ZS_Pick_FP()
{
Perception_Set_Normal();
B_ResetAll(self);
if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Jergan))
{
AI_SetWalkMode(self,NPC_RUN);
}
else
{
AI_SetWalkMode(self,NPC_WALK);
};
if(Npc_GetDistToWP(self,self.wp) > TA_DIST_SELFWP_MAX)
{
AI_GotoWP(self,self.wp);
};
};
func int ZS_Pick_FP_Loop()
{
if((Npc_GetStateTime(self) >= 7) && Hlp_Random(2))
{
if(Npc_IsOnFP(self,"PICK") && Wld_IsFPAvailable(self,"PICK"))
{
AI_GotoNextFP(self,"PICK");
AI_PlayAni(self,"T_PLUNDER");
Npc_SetStateTime(self,0);
}
else if(Npc_IsOnFP(self,"PICK") || (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Jergan)))
{
AI_PlayAni(self,"T_PLUNDER");
Npc_SetStateTime(self,0);
};
AI_SetWalkMode(self,NPC_WALK);
}
else if(Npc_GetStateTime(self) >= 7)
{
if(Npc_IsOnFP(self,"PICK") || (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Jergan)))
{
AI_PlayAni(self,"T_PLUNDER");
};
AI_SetWalkMode(self,NPC_WALK);
};
if(!Npc_IsOnFP(self,"PICK") && Wld_IsFPAvailable(self,"PICK"))
{
AI_GotoFP(self,"PICK");
};
return LOOP_CONTINUE;
};
func void ZS_Pick_FP_End()
{
};
отлично. заработало :-) https://www.youtube.com/watch?v=42Kq8__Yw3A&feature=youtu.be
Общая мысль такая:
instance DIA_Jergan_Teach(C_Info)
{
npc = VLK_4110_Jergan;
nr = 9;
condition = DIA_Jergan_Teach_Condition;
information = DIA_Jergan_Teach_Info;
permanent = TRUE;
// description = B_BuildLearnString("Покажи мне, как отделять когти",B_GetLearnCostTalent(other,NPC_TALENT_TAKEANIMALTROPHY,TROPHY_Claws));
description = B_BuildLearnString(NAME_TROPHY_Claws,B_GetLearnCostTalent(other,NPC_TALENT_TAKEANIMALTROPHY,TROPHY_Claws));
};
func int DIA_Jergan_Teach_Condition()
{
if(Npc_KnowsInfo(other,DIA_Jergan_Claw) && (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == FALSE))
{
return TRUE;
};
};
func void DIA_Jergan_Teach_Info()
{
AI_Output(other,self,"DIA_Jergan_Teach_15_00"); //Покажи мне, как отделять когти.
if(B_TeachPlayerTalentTakeAnimalTrophy(self,other,TROPHY_Claws))
{
AI_Output(self,other,"DIA_Jergan_Teach_13_01"); //Когти нужно отрубить одним точным и резким ударом. Тут нельзя колебаться, иначе ты испортишь трофей.
AI_Output(self,other,"DIA_Jergan_Teach_13_02"); //Таким образом ты можешь отделять не только когти снепперов, но также ящеров и мракорисов.
Info_ClearChoices(DIA_Jergan_Leader);
if(Npc_GetDistToWP(self,"OW_ORC_LOOKOUT_2_01") < 1000)
{
B_GiveInvItems(self,other,ItAt_ClawLeader,1); // отдаём когти снеппера
}
else if((Npc_IsDead(NewMine_LeadSnapper)) && (NewMine_LeadSnapper_Spawned == TRUE))
{
Wld_InsertNpc(NewMine_LeadSnapper,"OW_ORC_LOOKOUT_2_01"); // создаём Лидера Снепперов
CreateInvItems(NewMine_LeadSnapper,ItAt_ClawLeader,2); // добавляем когти в Лидера Снепперов
B_KillAnimal(NewMine_LeadSnapper); // убиваем Лидера Снепперов
}
else if(NewMine_LeadSnapper_Spawned == TRUE)
{
CreateInvItems(NewMine_LeadSnapper,ItAt_ClawLeader,2); // добавляем когти в Лидера Снепперов
};
};
};
instance DIA_Jergan_Leader(C_Info)
{
npc = VLK_4110_Jergan;
nr = 3;
condition = DIA_Jergan_Leader_Condition;
information = DIA_Jergan_Leader_Info;
// permanent = FALSE;
important = TRUE; // Jergan обращается к Герою после убийства лидера Снепперов
};
func int DIA_Jergan_Leader_Condition()
{
if((Npc_GetDistToWP(self,"OW_NEWMINE_04") < 1000) && Npc_IsDead(NewMine_LeadSnapper) && (NewMine_LeadSnapper_Spawned == TRUE))
{
return TRUE;
};
};
func void DIA_Jergan_Leader_Info()
{
AI_Output(self,other,"DIA_Jergan_Leader_13_00"); //Ты убил вожака стаи. И как - ты забрал когти этого зверя?
if(Npc_HasItems(other,ItAt_ClawLeader) || (Lutero_Krallen == LOG_SUCCESS))
{
AI_Output(other,self,"DIA_Jergan_Leader_15_01"); //Да.
AI_Output(self,other,"DIA_Jergan_Leader_13_02"); //Они стоят целое состояние. Есть люди, которые коллекционируют такие вещи.
AI_Output(self,other,"DIA_Jergan_Leader_13_03"); //Если ты найдешь правильного покупателя, то получишь за них целую кучу золота.
if(Lutero_Krallen == LOG_SUCCESS)
{
AI_Output(other,self,"DIA_Raoul_TROLLFELL_ja_15_00"); //Продано.
};
}
else
{
AI_Output(other,self,"DIA_Jergan_Leader_15_04"); //Нет.
AI_Output(self,other,"DIA_Jergan_Leader_13_05"); //Это ты зря. Я уверен, они стоят целое состояние.
// Info_ClearChoices(DIA_Jergan_Leader);
Info_AddChoice(DIA_Jergan_Leader,"Мне это не интересно.",DIA_Jergan_Leader_rechnung_hastrecht);
if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == FALSE)
{
Info_AddChoice(DIA_Jergan_Leader,"Покажи мне, как отделять когти.",DIA_Jergan_Teach_Info);
};
Npc_ExchangeRoutine(self,"LeadSnapper"); // Jergan идёт к трупу Снеппера
};
};
func void DIA_Jergan_Leader_rechnung_hastrecht()
{
AI_Output(other,self,"DIA_Raoul_TROLL_rechnung_hastrecht_15_00"); //Мне это не интересно.
AI_StopProcessInfos(self);
Wld_InsertNpc(NewMine_LeadSnapper,"OW_ORC_LOOKOUT_2_01"); // создаём Лидера Снепперов
B_KillAnimal(NewMine_LeadSnapper); // убиваем Лидера Снепперов
// Npc_ExchangeRoutine(self,"LeadSnapper"); // Jergan идёт к трупу Снеппера
};
instance DIA_Jergan_LeadSnapper(C_Info)
{
npc = VLK_4110_Jergan;
nr = 3;
condition = DIA_Jergan_LeadSnapper_Condition;
information = DIA_Jergan_LeadSnapper_Info;
// permanent = FALSE;
important = TRUE; // Jergan обращается к Герою
};
func int DIA_Jergan_LeadSnapper_Condition()
{
if(Npc_GetDistToWP(self,"OW_ORC_LOOKOUT_2_01") < 1000)
{
return TRUE;
};
};
func void DIA_Jergan_LeadSnapper_Info()
{
AI_Output(self,other,"DIA_Jergan_Gegend_13_01"); //Если ты хочешь выжить, беги от всего, что тебе встретится.
if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == FALSE)
{
CreateInvItems(self,ItAt_ClawLeader,2); // Jergan добавляем когти Снеппера
};
AI_StopProcessInfos(self);
Npc_ExchangeRoutine(self,"Fajeth"); // Jergan возвращется к Фаджету
};
instance VLK_4110_Jergan(Npc_Default)
{
name[0] = "Джерган";
guild = GIL_NONE;
id = 4110;
voice = 13;
flags = 0;
npcType = npctype_main;
aivar[AIV_ToughGuy] = TRUE;
B_SetAttributesToChapter(self,5);
fight_tactic = FAI_HUMAN_STRONG;
// EquipItem(self,ItMw_2h_Sld_Axe); // Двуручный топор урон 60
EquipItem(self,ItMW_Addon_Hacker_1h_01); // Мачете 1р урон 100
B_CreateAmbientInv(self);
B_SetNpcVisual(self,MALE,"Hum_Head_Bald",Face_N_Whistler,BodyTex_N,ITAR_Leather_L); // Кожанный доспех
Mdl_SetModelFatness(self,1);
Mdl_ApplyOverlayMds(self,"Humans_Militia.mds"); // Militia - походка НПС
B_GiveNpcTalents(self);
// B_SetFightSkills(self,75);
B_AddFightSkill (self, NPC_TALENT_1H, 80); // - талант владени¤ одноручем
B_AddFightSkill (self, NPC_TALENT_2H, 50); // - талант владени¤ двуручем
B_AddFightSkill (self, NPC_TALENT_BOW, 60); // - талант владени¤ луком
B_AddFightSkill (self, NPC_TALENT_CROSSBOW, 30); // - талант владени¤ арболетом
daily_routine = Rtn_Start_4110;
};
func void Rtn_Start_4110()
{
TA_Sit_Campfire(8,0,23,0,"OW_STAND_JERGAN");
TA_Sit_Campfire(23,0,8,0,"OW_STAND_JERGAN");
};
func void Rtn_Fajeth_4110()
{
TA_Sit_Campfire(8,0,23,0,"OW_NEWMINE_04");
TA_Sit_Campfire(23,0,8,0,"OW_NEWMINE_04");
};
func void Rtn_LeadSnapper_4110()
{
TA_Pick_FP (8,0,23,0,"OW_ORC_LOOKOUT_2_01"); // Вожак Снепперов
TA_Pick_FP (23,0,8,0,"OW_ORC_LOOKOUT_2_01"); // Вожак Снепперов
};
Сам снеппер , убрал когти
instance NewMine_LeadSnapper(Mst_Default_Snapper)
{
name[0] = "Вожак стаи";
level = 16; // 12
B_SetVisuals_Snapper();
Npc_SetToFistMode(self);
Mdl_SetModelScale(self,1.1,1.1,1.1);
attribute[ATR_HITPOINTS_MAX] = 160;
attribute[ATR_HITPOINTS] = 160;
// CreateInvItems(self,ItAt_ClawLeader,1); //
};
Билгот при добавления Лидера Снепперов, проверка на навык снятия когтей
instance DIA_Bilgot_KNOWSLEADSNAPPER(C_Info)
{
npc = VLK_4120_Bilgot;
nr = 4;
condition = DIA_Bilgot_KNOWSLEADSNAPPER_Condition;
information = DIA_Bilgot_KNOWSLEADSNAPPER_Info;
permanent = FALSE;
description = "Расскажи мне, что ты знаешь. И я вытащу тебя отсюда!";
};
func int DIA_Bilgot_KNOWSLEADSNAPPER_Condition()
{
if(Npc_KnowsInfo(other,DIA_Bilgot_Hilfe) && (MIS_Fajeth_Kill_Snapper == LOG_Running))
{
return TRUE;
};
};
func void DIA_Bilgot_KNOWSLEADSNAPPER_Info()
{
AI_Output(other,self,"DIA_Bilgot_KNOWSLEADSNAPPER_15_00"); //Расскажи мне, что ты знаешь. И я вытащу тебя отсюда!
AI_Output(self,other,"DIA_Bilgot_KNOWSLEADSNAPPER_05_01"); //Я знал, что могу рассчитывать на тебя. Так что будь внимателен. Я довольно долго наблюдаю за снепперами.
AI_Output(self,other,"DIA_Bilgot_KNOWSLEADSNAPPER_05_02"); //Они очень хитры и могут, ну, как бы... общаться. Они никогда не ходят поодиночке и нападают только стаей.
AI_Output(self,other,"DIA_Bilgot_KNOWSLEADSNAPPER_05_03"); //Но есть еще кое-что. Среди них есть один особенный. Он редко показывается, но я видел его.
AI_Output(self,other,"DIA_Bilgot_KNOWSLEADSNAPPER_05_04"); //Другие снепперы низко кланяются, когда проходят мимо него, но никогда не отходят далеко.
AI_Output(self,other,"DIA_Bilgot_KNOWSLEADSNAPPER_05_05"); //Пока этот зверь не тронется с места, ни один снеппер поблизости даже не шевельнется.
AI_Output(other,self,"DIA_Bilgot_KNOWSLEADSNAPPER_15_06"); //Где мне найти этого кровожадного зверя?
AI_Output(self,other,"DIA_Bilgot_KNOWSLEADSNAPPER_05_07"); //Я видел его на ступенях старой сторожевой башни.
AI_Output(other,self,"DIA_Bilgot_KNOWSLEADSNAPPER_15_08"); //Отлично. Мне кажется, я понял. Спасибо!
AI_Output(self,other,"DIA_Bilgot_KNOWSLEADSNAPPER_05_09"); //Помни, ты дал мне слово!
NewMine_LeadSnapper_Spawned = TRUE;
Wld_InsertNpc(NewMine_LeadSnapper,"OW_ORC_LOOKOUT_2_01");
if (PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_Claws] == TRUE)
{
CreateInvItems(NewMine_LeadSnapper,ItAt_ClawLeader,2); // добавляем когти Снеппера
};
B_LogEntry(TOPIC_FajethKillSnapper,"Билгот рассказал мне о вожаке стаи снепперов. Он должен быть у старой сторожевой башни.");
Log_CreateTopic(TOPIC_BilgotEscort,LOG_MISSION);
Log_SetTopicStatus(TOPIC_BilgotEscort,LOG_Running);
B_LogEntry(TOPIC_BilgotEscort,"Билгот хочет, чтобы я вывел его из долины.");
};
Заметь, что реплика
AI_Output(other,self,"DIA_Raoul_TROLL_rechnung_hastrecht_15_00"); //Мне это не интересно.
произносится с красными субтитрами внизу экрана (как фоновые разговоры), а не с белыми субтитрами вверху экрана (как обычные диалоги). Чтобы было как со всеми диалогами, после этой реплики ГГ нужно добавить какую-нибудь реплику Джергана или команду AI_WaitTillEnd(self,other) (эта команда ещё не проверялась, но должно сработать - хочу попробовать исправить такие случаи неправильных субтитров в диалогах с Джорой, Болтаном и ещё кем-то).
или команду AI_WaitTillEnd(self,other) (эта команда ещё не проверялась, но должно сработать
работает https://www.youtube.com/watch?v=wF0PMyR9UNE&feature=youtu.be
не требуется. хотя по идеи должен требоваться. и эту ситуация теперь можно исправить Внёс правки в скрипт и все почти получилось https://www.youtube.com/watch?v=MjJDfmFyT9s обрати внимание что есть даже диалог про то что снял ли герой когти и варианты не снял.
Сам снеппер , убрал когти
Билгот при добавления Лидера Снепперов, проверка на навык снятия когтей
Jergan при изучение навыка проверка на смерть Лидера Снепперов + вставлялся ли он в мир
_Originally posted by @Kor-Angar in https://github.com/dosinabox/g2nr_unofficial_update/issues/123#issuecomment-544244836_