Cześć. Jeden koleś mi zgłaszał, że crashują mu dwa spośród czterech umieszczonych w ER trialogów.
Mógłby mi ktoś pomóc znaleźć błąd? Przyznaję, że pisałem je trochę na czuja.
Ważna rzecz: po zainstalowaniu System Packa nie crashują. Gdzie może leżeć błąd?
instance TRIA_UrbanFighter (C_INFO)
{
npc = GRD_201_Jackal;
nr = 1;
condition = TRIA_UrbanFighter_condition;
information = TRIA_UrbanFighter_info;
important = true;
permanent = false;
//description = "TRIALOGTEST";
};
func int TRIA_UrbanFighter_condition()
{
if MIS_ZmianaLorenza == LOG_RUNNING && UrbanIdzie == true
// (VLK_565_Buddler.aivar[AIV_PARTYMEMBER] == TRUE) &&
{
return TRUE;
};
};
func void TRIA_UrbanFighter_info()
{
var c_npc Szakal; Szakal = Hlp_GetNpc(GRD_201_Jackal);
var c_npc Urban; Urban = Hlp_GetNpc(VLK_565_Buddler);
TRIA_Invite(Urban); // Lade Gardist in diesen Dialog ein
TRIA_Start(); // Starte das Gespräch
TRIA_Next(Szakal);
DIAG_Reset();
MDL_REMOVEOVERLAYMDS (Urban, "HUMANS_DRUNKEN.MDS");
AI_GotoNpc(Szakal, Urban);
AI_GotoNpc(hero, Urban);
AI_Output (self, other, "TRIA_UrbanFighter_S"); //Czego tu?
AI_Output (hero, self, "TRIA_UrbanFighter_0F"); //CZEŚĆ!
AI_TurnToNpc(self, hero);
AI_Output (self, other, "TRIA_UrbanFighter_00"); //Co, do cholery?!
DIAG_Reset();
TRIA_Next(Urban);
DIAG_Reset();
AI_TurnToNpc(Urban, hero);
AI_Output (self, hero, "TRIA_UrbanFighter_01"); //Już dotarliśmy? To on? Ten sukinsyn się awanturuje?
//AI_GotoNpc(Urban, Szakal);
DIAG("Nervous", 1, 2);
TRIA_Cam("CAMERASTART");
AI_GotoNpc(self, Szakal);
DIAG("No", 0, 1);
AI_TurnToNpc(self, Szakal);
AI_Output (Urban, other, "TRIA_UrbanFighter_02"); //Ej ty! Zaraz dostaniesz w mordę!
//AI_TurnToNpc (self,other);
// Held soll sich während des nächsten Satzes verschwörerisch umsehen
// AI_Output (other, self, "TRIA_UrbanFighter_03"); //Ich habe ein wenig Gold dabei, kommen wir damit ins Geschäft?
// Held soll sich jetzt wieder normal bewegen
// Starte Kamerafahrt
// Held redet nun mit Gardist (self = Gardist, other = Hero)
//TRIA_Next(Urban);
//DIAG_Reset();
TRIA_Finish(); // und Ende
//Npc_ExchangeRoutine (Urban,"Start");
AI_StopProcessInfos (Szakal);
AI_StopProcessInfos (Urban);
Npc_SetTarget (Urban,Szakal);
AI_StartState (Urban,ZS_ATTACK,1,"");
Npc_SetTarget (Szakal,Urban);
AI_StartState (Szakal,ZS_ATTACK,1,"");
UrbanPobity = true;
};
i drugi crashujący:
instance TRIA_KillFingers (C_INFO)
{
npc = ORG_850_Wedge;
nr = 10;
condition = TRIA_KillFingers_condition;
information = TRIA_KillFingers_info;
important = true;
permanent = false;
};
func int TRIA_KillFingers_condition()
{
if ( (Npc_GetDistToNpc (hero,self) < 900) && (Npc_KnowsInfo (other, DIA_Organisator_LookingForWedge)) && (MIS_HandDed == LOG_RUNNING) )
{
return TRUE;
};
};
func void TRIA_KillFingers_info()
{
var c_npc Wedge; Wedge = Hlp_GetNpc(ORG_850_Wedge); // Ihm gehört der Dialog
var c_npc Fingers; Fingers = Hlp_GetNpc(STT_331_Fingers);
//TRIA_Invite(Fingers); // Lade Robotnik in diesen Dialog ein
TRIA_Invite(Fingers); // Lade Fingers in diesen Dialog ein
TRIA_Start(); // Starte das Gespräch
// Der Held und Wedge müssen/dürfen nicht eingeladen werden. Sie sind sowieso im Dialog.
// Held redet nun mit Wedge (self = Wedge, other = Hero)
TRIA_Next(Wedge);
DIAG_Reset();
AI_Output (self, other, "TRIA_KillFingers_0F"); //Odejdź stąd! Nie mieszaj się! Ten sukinsyn na to zasługuje.
AI_TurnToNpc(self, STT_331_Fingers);
AI_Output (self, other, "TRIA_KillFingers_00"); //Najwyższa pora wyrównać rachunki!
// Held redet nun mit Fingers (self = Fingers, other = Hero)
TRIA_Next(Fingers);
DIAG_Reset();
AI_GotoNpc(self, hero);
AI_TurnToNpc(self, hero);
AI_Output (self, hero, "TRIA_KillFingers_01"); //Zrób coś, do cholery!
AI_Output (HERO, self, "TRIA_KillFingers_02"); //Moment! O co tu w ogóle chodzi?
AI_Output (self, hero, "TRIA_KillFingers_03"); //Ten kretyn chce mnie zabić! Nie pozwól mu na to!
DIAG("Nervous", 1, 2);
// Held soll sich jetzt wieder normal bewegen
// Starte Kamerafahrt
TRIA_Cam("CAMERASTART");
// Held redet nun mit Fingers (self = Fingers, other = Hero)
TRIA_Next(Wedge);
DIAG_Reset();
AI_GotoNpc(self, other);
DIAG("No", 0, 1);
AI_TurnToNpc (self,other);
AI_Output (self, other, "TRIA_KillFingers_04"); //Mówiłem ci, żebyś się nie wtrącał. Długo czekałem na ten moment...
AI_Output (self, other, "TRIA_KillFingers_05"); //Wszystko zaczęło się jakieś kilkanaście lat temu... To było jeszcze gdy obaj byliśmy wolni.
AI_Output (self, other, "TRIA_KillFingers_06"); //Co tu dużo mówić. Nasze życie wyglądało podobnie. Obaj byliśmy członkami Gidli Złodziei w Khorinis.
AI_Output (self, other, "TRIA_KillFingers_07"); //Ja dołączyłem trochę później. Rączka miał już wtedy tytuł arcymistrza złodziejskiego fachu na wyspie. Był najlepszym złodziejem.
AI_Output (self, other, "TRIA_KillFingers_08"); //Jednak ja także szybko robiłem postępy. Znałem na pamięć schematy budowy zamków, potrafiłem poruszać się bezszelestnie.
AI_Output (self, other, "TRIA_KillFingers_09"); //Miałem smykałkę do brudnych interesów i zawsze potrafiłem się wyplątać z niewygodnych zarzutów.
AI_Output (self, other, "TRIA_KillFingers_10"); //Jako, że Rączka miał w ręku całą Gildię to wszyscy musieli wykonywać jego zlecenia. Ja nie byłem wyjątkiem.
AI_Output (self, other, "TRIA_KillFingers_11"); //Miałem obrabować bogatego mieszczanina. Grubas, lubiący lekkie kobiety i alkohol był szanowany, bo zapłacił za budowę jednego z okrętów wojennych.
AI_Output (self, other, "TRIA_KillFingers_12"); //Nic prostszego. Wszedłem do chaty, zabrałem to co trzeba, a gdy wychodziłem przez okno spostrzegłem, że cały dom jest otoczony przez strażników miejskich.
AI_Output (self, other, "TRIA_KillFingers_13"); //Spoglądali na mnie z chłodnymi wyrazami twarzy i poprawiali spusty od wycelowanych prosto w moją głowę kusz. Wiedziałem, że ktoś mnie wsypał.
AI_Output (self, other, "TRIA_KillFingers_14"); //To był Rączka! Trafiłem do Kolonii!
TRIA_Cam("");
TRIA_Next(Fingers);
DIAG_Reset();
AI_TurnToNpc(self, Wedge);
AI_Output (self, other, "TRIA_KillFingers_15"); //Ty nic nie rozumiesz! To nie ciebie mieli pojmać strażnicy, tylko tego bogacza! To wszystko to był czysty zbieg okoliczności. Przypadek! Niefart!
AI_Output (self, other, "TRIA_KillFingers_16"); //Okazało się, że jego fortuna została zbudowana na oszustwach i machlojkach. Nie wydałbym nikogo należącego do Gildii. Nie ważne o ile lepszy byłby ode mnie!
AI_Output (self, other, "TRIA_KillFingers_17"); //Ten mieszczanin również trafił do Kolonii. Kilka dni po tobie. Dołączył do Starego Obozu, a raczej został zagoniony do pracy w kopalni.
AI_Output (self, other, "TRIA_KillFingers_18"); //Jak widać fortuna mu nie pomogła. Śmiało, zostaw mnie i idź do Starej Kopalni zapytać o niego jakiegoś dostatecznie starego Strażnika.
TRIA_Cam("");
// Held redet nun wieder mit Wedge (self = Wedge, other = Hero)
TRIA_Next(Wedge);
DIAG_Reset();
// Held soll sich jetzt fragend Artikulieren
DIAG("NotSure", 0, 1);
AI_TurnToNpc(self, Fingers);
AI_Output (self, other, "TRIA_KillFingers_19"); //Myślisz, że w to uwierzę? Już po tobie!
// Kamerafahrt Ende
TRIA_Cam("");
TRIA_Finish(); // und Ende
Info_ClearChoices (TRIA_KillFingers);
Info_AddChoice (TRIA_KillFingers, "(pomóż Rączce)", TRIA_KillFingers_HELP);
Info_AddChoice (TRIA_KillFingers, "(nic nie rób)", TRIA_KillFingers_NOPE);
B_LogEntry (CH1_HandDed,"Przed Nowym Obozem znalazłem Rączkę i Klina. Obaj kłócili się o jakąś zażyłość z przeszłości. Klin uważa, że Rączka wydał go straży miejskiej przez co ten trafił do Kolonii. Z kolei Cień przedstawia dość silne alibi, które jednak wymaga potwierdzenia. Muszę stanąć przed wyborem komu zaufam. ");
};
FUNC VOID TRIA_KillFingers_HELP ()
{
var c_npc Wedge; Wedge = Hlp_GetNpc(ORG_850_Wedge); // Ihm gehört der Dialog
var c_npc Fingers; Fingers = Hlp_GetNpc(STT_331_Fingers);
AI_Output (other, self, "TRIA_KillFingers_HELP_01"); //Nie pozwolę na to!
//ScreenFX_FadeAndPassTime(0,0,0,"later...",1000);
PlayVideo ("er_cutscene_fingersalive.bik");
AI_Output (self, other, "TRIA_KillFingers_HELP_02"); //Argh! Raniłeś mnie! Ty sukinsynu!
AI_Output (other, self, "TRIA_KillFingers_HELP_03"); //Lepiej wróć do obozu i opatrz tę ranę. My już lepiej pójdziemy.
Info_ClearChoices (TRIA_KillFingers);
AI_StopProcessInfos (self);
Npc_ExchangeRoutine (Wedge, "start");
B_LogEntry (CH1_HandDed,"Nie pozwoliłem na śmierć Rączki. Raniłem Klina moją bronią zanim ten zdążył cokolwiek zrobić.");
HeroPermitToKillFingers = false;
};
FUNC VOID TRIA_KillFingers_NOPE ()
{
var c_npc Wedge; Wedge = Hlp_GetNpc(ORG_850_Wedge); // Ihm gehört der Dialog
var c_npc Fingers; Fingers = Hlp_GetNpc(STT_331_Fingers);
AI_Output (other, self, "TRIA_KillFingers_NOPE_01"); //To nie moja sprawa.
PlayVideo ("er_cutscene_fingersdie.bik");
//ScreenFX_FadeAndPassTime(0,0,0,"later...",1000);
Npc_ExchangeRoutine (STT_331_Fingers, "upadek");
B_KillNPC (STT_331_Fingers);
AI_Output (self, other, "TRIA_KillFingers_NOPE"); //Mądry wybór. Sprawiedliwości stało się zadość.
Info_ClearChoices (TRIA_KillFingers);
AI_StopProcessInfos (self);
Npc_ExchangeRoutine (Wedge, "start");
B_LogEntry (CH1_HandDed,"Pozwoliłem Klinowi zabić Rączkę. Przypuszczam, że to co mówił było prawdą i Cień zasłużył na śmierć. Zresztą to nie moja sprawa. Muszę powiedzieć Diego, że jego człowiek nie żyje.");
HeroPermitToKillFingers = true;
};
a to np dialog który NIE crashuje:
instance TRIA_BramaPlac (C_INFO)
{
npc = PC_THIEF;
nr = 10;
condition = TRIA_BramaPlac_condition;
information = TRIA_BramaPlac_info;
important = true;
permanent = false;
//description = "TRIALOGTEST";
};
func int TRIA_BramaPlac_condition()
{
if (Npc_GetDistToWP(hero,"OW_PATH_1_16_6")<300)
//&& (kapitel == 10)
{
return TRUE;
};
};
func void TRIA_BramaPlac_info()
{
var c_npc Diego; Diego = Hlp_GetNpc(PC_THIEF); // Ihm gehört der Dialog
//var c_npc Robotnik; Robotnik = Hlp_GetNpc(VLK_2004_Robotnik);
var c_npc Gardist; Gardist = Hlp_GetNpc(GRD_254_Orry);
//TRIA_Invite(Robotnik); // Lade Robotnik in diesen Dialog ein
TRIA_Invite(Gardist); // Lade Gardist in diesen Dialog ein
TRIA_Start(); // Starte das Gespräch
// Der Held und Diego müssen/dürfen nicht eingeladen werden. Sie sind sowieso im Dialog.
// Held redet nun mit Diego (self = Diego, other = Hero)
TRIA_Next(Diego);
DIAG_Reset();
AI_Output (self, other, "TRIA_BramaPlac_0F"); //Zaraz to załatwię!
AI_TurnToNpc(self, GRD_254_Orry);
AI_Output (self, other, "TRIA_BramaPlac_00"); //Cholera, ruszać się chłopaki!
// Held redet nun mit Robotnik (self = Robotnik, other = Hero)
//TRIA_Next(Robotnik);
//DIAG_Reset();
//AI_GotoNpc(self, other);
//AI_TurnToNpc(self, Diego);
//AI_Output (self, other, "TRIA_BramaPlac_01"); //Już się robi!
//AI_TurnAway (self,other);
//AI_Output (self, other, "TRIA_BramaPlac_02"); //Ej, tam na górze. Otwierać!
//AI_TurnToNpc (self,other);
// Held soll sich während des nächsten Satzes verschwörerisch umsehen
// DIAG("Nervous", 1, 2);
// AI_Output (other, self, "TRIA_BramaPlac_03"); //Ich habe ein wenig Gold dabei, kommen wir damit ins Geschäft?
// Held soll sich jetzt wieder normal bewegen
// Starte Kamerafahrt
TRIA_Cam("CAMERASTART");
// Held redet nun mit Gardist (self = Gardist, other = Hero)
TRIA_Next(Gardist);
DIAG_Reset();
AI_GotoNpc(self, other);
DIAG("No", 0, 1);
AI_TurnToNpc (self,PC_THIEF);
AI_Output (self, other, "TRIA_BramaPlac_04"); //A kogóż my tu mamy, toć to Diego. Myślałem, że zostaniesz chwilę dłużej, dlatego zamknąłem.
// Held redet nun wieder mit Diego (self = Diego, other = Hero)
TRIA_Next(Diego);
DIAG_Reset();
// Held soll sich jetzt fragend Artikulieren
DIAG("NotSure", 0, 1);
AI_TurnToNpc(self, GRD_254_Orry);
AI_Output (self, other, "TRIA_BramaPlac_05"); //Nie, spodziewałem się przesyłki z zewnątrz, ale jej nie otrzymałem.
AI_Output (self, other, "TRIA_BramaPlac_06"); //Bullit często się tu zjawia?
//AI_TurnToNpc(other, self);
// Kamerafahrt Ende
TRIA_Cam("");
// Diego soll zornig reagieren
TRIA_Next(Gardist);
DIAG_Reset();
DIAG("Angry", 0, 4);
AI_TurnToNpc (self,PC_THIEF);
AI_Output (self, other, "TRIA_BramaPlac_07"); //Ta... Co jakiś czas wpada.
// Held soll sich jetzt wieder normal bewegen
TRIA_Next(Diego);
DIAG_Reset();
AI_TurnToNpc(self, GRD_254_Orry);
AI_Output (self, other, "TRIA_BramaPlac_08"); //Będę się musiał tym zająć. No, otwieraj już!
TRIA_Next(gardist);
DIAG_Reset();
AI_TurnToNpc (self,PC_THIEF);
AI_Output (self, other, "TRIA_BramaPlac_09"); //Robi się!
TRIA_Finish(); // und Ende
Npc_ExchangeRoutine (Diego, "start");
Npc_ExchangeRoutine (Gardist, "afterstart");
Wld_SendUnTrigger ("EVT_OW_STARTLOCKOUT_MOVER");
Wld_SetObjectRoutine (20,00,"EVT_OW_STARTLOCKOUT_MOVER",1);
Wld_SetObjectRoutine (06,00,"EVT_OW_STARTLOCKOUT_MOVER",0);
AI_StopProcessInfos (PC_THIEF);
};
Widzi tu ktoś coś czego ja nie widzę?