Wpis w dzienniku po śmierci postaci 3949 5

O temacie

Autor NieFenir

Zaczęty 8.11.2021 roku

Wyświetleń 3949

Odpowiedzi 5

NieFenir

NieFenir

Użytkownicy
posty5
Profesjabrak
  • Użytkownicy
Cześć! Mam pytanie, chciałbym stworzyć zadanie, gdzie postać zleca nam zabicie innej postaci i teraz: chciałbym zrobić tak, że po zabiciu tej postaci pojawia się wpis w dzienniku, tylko nie mam pojęcia jak. I potem, jaki powinien być warunek w dialogu, że ta postać jest martwa?

Z góry dziękuję za odpowiedzi i życzę miłego dnia lub nocy!
 

Yetem12

Yetem12

Użytkownicy
posty211
Propsy48
Profesjabrak
  • Użytkownicy
Wystarczyło sprawdzić jak to jest zrobione np. dla dialogu Akila gdy zabijemy najemników.


instance DIA_Akil_Hallo (C_INFO)
{
npc = BAU_940_Akil;
nr = 4;
condition = DIA_Akil_Hallo_Condition;
information = DIA_Akil_Hallo_Info;
permanent = FALSE;
description = "Gibt's Schwierigkeiten?";
};
func int DIA_Akil_Hallo_Condition ()
{
if !(Npc_IsDead (Alvares))
&&  !(Npc_IsDead (Engardo))
{
return TRUE;
};
};
func void DIA_Akil_Hallo_Info ()
{
AI_Output  (other, self, "DIA_Akil_Hallo_15_00"); //Gibt's Schwierigkeiten?
AI_Output  (self, other, "DIA_Akil_Hallo_13_01"); //(schwitzt) ... äh ... nein nein ... es ist alles in Ordnung. (nervös) Es ... ist besser, wenn du jetzt gehst.
AI_Output  (other, self, "DIA_Akil_Hallo_15_02"); //Bist du sicher?
AI_Output  (self, other, "DIA_Akil_Hallo_13_03"); //äh ... ja, ja ... es ist alles in Ordnung. Du ... äh ... ich ... Ich kann jetzt nicht mit dir reden.

Log_CreateTopic (TOPIC_AkilsSLDStillthere, LOG_MISSION);
Log_SetTopicStatus(TOPIC_AkilsSLDStillthere, LOG_RUNNING);
B_LogEntry (TOPIC_AkilsSLDStillthere,"Akils Hof wird von Söldnern bedroht.");

Akils_SLDStillthere = TRUE;
AI_StopProcessInfos (self);
};


   if    !(Npc_IsDead (Alvares))
   &&  !(Npc_IsDead (Engardo))   
   {
      return TRUE;
   };

 

NieFenir

NieFenir

Użytkownicy
posty5
Profesjabrak
  • Użytkownicy
Dzięki bardzo! Ale chciałbym jeszcze wiedzieć jak zrobić by po zabiciu jakiejś postaci pojawiał się wpis w dzienniku, tzn. od razu po zgonie takiej postaci. Nie wiem gdzie mogę znaleźć wzorzec takiego questa w plikach.

Albo by quest kończył się wraz ze śmiercią jakiejś postaci, o coś takiego mi chodzi.

Post połączony: 2021-11-09, 22:02
Mam jeszcze taki problem - do warunku ze zgonem postaci, dajmy, nazywa się xyz, którą sam zrobiłem (działa normalnie, pojawia się w grze), to gdy wpisuję Npc_IsDead(xyz) spacer wywala błąd o nieznanym identyfikatorze.
 

Yetem12

Yetem12

Użytkownicy
posty211
Propsy48
Profesjabrak
  • Użytkownicy
To podobnie jak masz w sytuacji jak zabijesz Kruka albo Smoka-Ożywieńca:
W: AI/Humans/ZS_Human/ZS_Dead masz na końcu:
func int zs_dead_loop()Gdzie wywoływana jest funkcja: b_dragonkillcounter(self);
Jej implementacja jest w: Story/B_Content/B_DragonKillCounter i tam masz np. warunek logiczny gdy zginie Kruk:
if(Hlp_GetInstanceID(current_dragon) == Hlp_GetInstanceID(ravn))
{
if(RAVENISDEAD == FALSE)
{
PlayVideoEx("EXTRO_RAVEN.BIK",TRUE,FALSE);
RAVENISDEAD = TRUE;
b_removenpc(myxir_adw);
};
};

Albo smok-ożywieniec gdzie dodatkowo masz wpis w dzienniku i tp na jakiś waypoint:
if(current_dragon.aivar[AIV_MM_REAL_ID] == ID_DRAGON_UNDEAD)
{
UNDEADDRAGONISDEAD = TRUE;
Log_CreateTopic(TOPIC_BACKTOSHIP,LOG_MISSION);
Log_SetTopicStatus(TOPIC_BACKTOSHIP,LOG_RUNNING);
b_logentry(TOPIC_BACKTOSHIP,PRINT_DRAGKILLCOUNT);
AI_Teleport(hero,"UNDEAD_ENDTELEPORT");
if((hero.guild == GIL_MIL) || (hero.guild == GIL_PAL))
{
PlayVideoEx("EXTRO_PAL.BIK",TRUE,FALSE);
}
else if((hero.guild == GIL_SLD) || (hero.guild == GIL_DJG))
{
PlayVideoEx("EXTRO_DJG.BIK",TRUE,FALSE);
}
else
{
PlayVideoEx("EXTRO_KDF.BIK",TRUE,FALSE);
};
};

Co do błędu parsowania na tym XYZ, musisz zdefiniować zmienną globalną od NPC w:
Content/Story/NPC_Globals
 

NieFenir

NieFenir

Użytkownicy
posty5
Profesjabrak
  • Użytkownicy
Poszperam i spróbuję, dzięki wielkie za pomoc.
 

Yetem12

Yetem12

Użytkownicy
posty211
Propsy48
Profesjabrak
  • Użytkownicy
Jeśli pomogłem nie pogardziłbym otrzymaniem propsa :D
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry