Odliczanie Mini-Bossów do zabicia 2564 11

O temacie

Autor lucki666

Zaczęty 24.01.2021 roku

Wyświetleń 2564

Odpowiedzi 11

lucki666

lucki666

Użytkownicy
posty130
Propsy64
ProfesjaSkrypter
  • Użytkownicy
W świecie umieściłem określoną liczbę Mini-bossów, powiedzmy 10 i chcę wykorzystać odliczanie ile zostało, podobnie jak miało to miejsce przy zabijaniu brzytwiaków w kanionie. Niemniej wyskakują błędy i nie potrafię ogarnąć jak to naprawić.

Plik: Gothic II\_Work\Data\Scripts\Content\Story\B_Content\B_CountMiniBoss

Spoiler
FUNC INT C_AllMiniBossDead ()
{
   if Npc_IsDead (SMeatbug)
   && Npc_IsDead (SGiant_DesertRat)
   && Npc_IsDead (SKeiler)
   && Npc_IsDead (SSwamprat)
   && Npc_IsDead (SBlattcrawler)
   && Npc_IsDead (SScavenger_Demon)
   && Npc_IsDead (SOrcBiter)
   && Npc_IsDead (SSwampDrone)
   && Npc_IsDead (SHarpie)
   && Npc_IsDead (SSwampshark)
   {
      return TRUE;
   }
   else
   {
      return FALSE;
   };   
};

FUNC int C_IAmMiniBoss (var C_NPC slf)
{
   var C_NPC BOSS01;    BOSS01 = Hlp_GetNpc(SMeatbug);
   var C_NPC BOSS02;    BOSS02 = Hlp_GetNpc(SGiant_DesertRat);
   var C_NPC BOSS03;    BOSS03 = Hlp_GetNpc(SKeiler);
   var C_NPC BOSS04;    BOSS04 = Hlp_GetNpc(SSwamprat);
   var C_NPC BOSS05;    BOSS05 = Hlp_GetNpc(SBlattcrawler);
   var C_NPC BOSS06;    BOSS06 = Hlp_GetNpc(SScavenger_Demon);
   var C_NPC BOSS07;    BOSS07 = Hlp_GetNpc(SOrcBiter);
   var C_NPC BOSS08;    BOSS08 = Hlp_GetNpc(SSwampDrone);
   var C_NPC BOSS09;    BOSS09 = Hlp_GetNpc(SHarpie);
   var C_NPC BOSS10;    BOSS10 = Hlp_GetNpc(SSwampshark);
   

   if ((Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(BOSS01))
   ||   (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(BOSS02))
   ||   (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(BOSS03))
   ||   (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(BOSS04))
   ||   (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(BOSS05))
   ||   (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(BOSS06))
   ||   (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(BOSS07))
   ||   (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(BOSS08))
   ||   (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(BOSS09))
   ||   (Hlp_GetInstanceID(slf) == Hlp_GetInstanceID(BOSS10)))
   {
      return TRUE;
   }
   else
   {   
      return FALSE;
   };      
   
};


FUNC VOID B_CountMiniBoss ()
{
   var string MiniBossText;
   var string MiniBossLeft;
   MiniBossLeft = IntToString (10 - MiniBossBodyCount);
   MiniBossText = ConcatStrings(MiniBossLeft, PRINT_MiniBosLeft);
   AI_PrintScreen   (MiniBossText, -1, YPOS_GOLDGIVEN, FONT_ScreenSmall, 2);
};


Oraz dodana linijka do pliku: Gothic II\_Work\Data\Scripts\Content\AI\Human\ZS_Human\ZS_Dead (i tutaj pojawia się błąd podczas sprawdzania)

Spoiler
   // ------ Greg ------
   if C_IAmCanyonRazor (self) == TRUE
   {
      CanyonRazorBodyCount = CanyonRazorBodyCount +1;
      if (MIS_Addon_Greg_ClearCanyon == LOG_RUNNING)
      {
         B_CountCanyonRazor ();
      };
   };
   if C_IAmMiniBoss (self) == TRUE                  <---Linijka 35/ Line 35
   {
      MiniBossBodyCount = MiniBossBodyCount +1;
      if (MIS_MiniBoss == LOG_RUNNING)
      {
         B_CountMiniBoss ();
      };
   };

   
   // ------ Sumpfdrohne -------
   if (self.aivar[AIV_MM_REAL_ID] == ID_SWAMPDRONE)
   {
      if (Npc_GetDistToNpc(self, other) < 300)
      {
         other.attribute[ATR_HITPOINTS] -= 50;
         //Npc_ChangeAttribute(other, ATR_HITPOINTS, -50);
      };
   };

Oraz linijki do:
Gothic II\_Work\Data\Scripts\Content\Story\Story_Globals
Spoiler
var int MIS_MiniBoss;

Gothic II\_Work\Data\Scripts\Content\Story\Log_Entries\B_CloseTopics_Hoshi
Spoiler
B_CloseTopic   (TOPIC_INNOSEYE,MIS_MiniBoss,0,6);

Gothic II\_Work\Data\Scripts\Content\Story\Dialoge\DIA_NONE_100_Xardas
Spoiler
instance DIA_Xardas_TODO (C_INFO)       //E1
{
   npc          =    NONE_100_Xardas;
   nr          =    1;
   condition    =    DIA_Xardas_TODO_Condition;
   information    =    DIA_Xardas_TODO_Info;
   Permanent     =  FALSE;
   description    =    "Co możemy zrobić?";
};

func int DIA_Xardas_TODO_Condition ()
{   
   if (Kapitel < 3)   
   {
      return TRUE;
   };
};

func void DIA_Xardas_TODO_Info ()
{
   AI_Output (other, self, "DIA_Xardas_TODO_15_00"); //Co możemy zrobić?
   AI_Output (self, other, "DIA_Xardas_TODO_14_01"); //Tym razem sami sobie nie poradzimy. W walce ze smokami może nam pomóc tylko moc Innosa.
   AI_Output (self, other, "DIA_Xardas_TODO_14_02"); //W pobliskim mieście Khorinis stacjonuje oddział paladynów.
   AI_Output (self, other, "DIA_Xardas_TODO_14_03"); //W ich posiadaniu znajduje się pewien potężny artefakt, dzięki któremu możemy pokonać paskudne gady.
   AI_Output (self, other, "DIA_Xardas_TODO_14_04"); //Nazywają go 'Okiem Innosa'. Musisz koniecznie zdobyć to Oko.
   AI_Output (self, other, "DIA_Xardas_TODO_14_05"); //Ostrzeż paladynów o smokach i za wszelką cenę przekonaj ich dowódcę, by nam pomógł.
   AI_Output (self, other, "DIA_Addon_Xardas_Add_14_07"); //Gdy tylko z nim porozmawiasz, musisz odszukać artefakt Beliara.
   AI_Output (self, other, "DIA_Addon_Xardas_Add_14_08"); //To odpowiednik Oka Innosa - nie wolno dopuścić, aby wpadł w ręce sług zła.

   MIS_MiniBoss = LOG_RUNNING;

   Log_CreateTopic (TOPIC_INNOSEYE, LOG_MISSION);
   Log_SetTopicStatus(TOPIC_INNOSEYE, LOG_RUNNING);
   B_LogEntry (TOPIC_INNOSEYE,"W mieście Khorinis przebywa grupa paladynów. Mają ze sobą potężny artefakt, Oko Innosa, którego moc pomoże nam pokonać smoki. Muszę tylko przekonać paladynów, aby wsparli naszą sprawę.");
};


Błąd pojawia się w pliku ZS_Dead, od momentu dodanych przeze mnie linijek. Gdzie jest błąd, bo mi wydaje się, że ogarnąłem wszystko?
 

N1kX

N1kX

Użytkownicy
posty93
Propsy15
ProfesjaTłumacz
  • Zbanowany
What is the error? Maybe you need to define the function before calling it in zs_dead?

gothic.src

Story\B_Content\B_CountMiniBoss.d
***
AI\Human\ZS_Human\ZS_Dead.d
****
 

lucki666

lucki666

Użytkownicy
posty130
Propsy64
ProfesjaSkrypter
  • Użytkownicy
Błędy:

U:PAR: Undefined function : C_IAMMINIBOSS ( line 35)
U PAR : Expected '{' (line 35)
U PAR : Expected '=' (line 35)
U:PAR: Undefined function : = ( line 35)
U PAR : Expected ';' (line 35)
U PAR : Expected ';' (line 36)
U:PAR: Unknown identifier : MINIBOSSBODYCOUNT ( line 37)
U PAR : Expected ';' (line 37)
U:PAR: Unknown identifier : MINIBOSSBODYCOUNT ( line 37)
U PAR : Expected ';' (line 37)
U:PAR: Unknown identifier : 1 ( line 37)
U:PAR: Unknown identifier : B_COUNTMINIBOSS ( line 40)
U PAR : Expected ';' (line 40)
U:PAR: Unknown identifier : ) ( line 40)
 

N1kX

N1kX

Użytkownicy
posty93
Propsy15
ProfesjaTłumacz
  • Zbanowany
It also says that the engine does not know your function. It must be defined before it is called. I wrote an example in gothic.src
 

lucki666

lucki666

Użytkownicy
posty130
Propsy64
ProfesjaSkrypter
  • Użytkownicy
What do i have to add and where?
 

N1kX

N1kX

Użytkownicy
posty93
Propsy15
ProfesjaTłumacz
  • Zbanowany
Can you do this?

Plik: Gothic II\_Work\Data\Scripts\Content\Gothic.src

*******
Story\B_Content\B_Extro_AVI.d
Story\B_Content\B_LieselMaeh.d
Story\B_Content\B_IrrlichtBeep.d
Story\B_Content\B_Greg_ComesToDexter.d
Story\B_Content\B_Upgrade_Hero_HackChance.d
Story\B_Content\B_CountCanyonRazor.d
Story\B_Content\B_CountMiniBoss.d
Story\B_Content\B_MalcomExident.d
Story\B_Content\C_ArtefaktValues.d
Story\Dialog_Mobsis\B_PlayerMap.d
*****
 

lucki666

lucki666

Użytkownicy
posty130
Propsy64
ProfesjaSkrypter
  • Użytkownicy
I do this, but i have now:

U:PAR: Unknown identifier : MINIBOSSBODYCOUNT ( line 37)
U PAR : Expected ';' (line 37)
U:PAR: Unknown identifier : MINIBOSSBODYCOUNT ( line 37)
U PAR : Expected ';' (line 37)
U:PAR: Unknown identifier : 1 ( line 37)


U:PAR: Content\Story\B_Content\B_Couthminiboss.D Unknown identifier : MINIBOSSBODYCOUNT
 

Splash

Splash

Moderator
posty4207
Propsy3403
ProfesjaNierób
  • Moderator
Zadeklarowałeś w ogóle zmienną o takiej nazwie?
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

lucki666

lucki666

Użytkownicy
posty130
Propsy64
ProfesjaSkrypter
  • Użytkownicy
@Splash zrobiłem tak jak napisałem w pierwszym poście. Nie wiem co mógłbym zrobić więcej, dlatego utworzyłem tutaj wątek. Podpowiesz co masz dokładnie na myśli? Najlepiej jak najprościej. W co gdzie wejść/wpisać.
 

Splash

Splash

Moderator
posty4207
Propsy3403
ProfesjaNierób
  • Moderator
Ale błąd dotyczy tego, że parser nie rozpoznaje MiniBossBodyCount. Albo nie zadeklarowałeś tej zmiennej albo zadeklarowałeś ją w pliku, który jest parsowany po pliku B_CountMiniBoss. Poza tym nie polecam parsować skryptów Spacerem, bo w sytuacji kiedy napotka pierwszy błąd, dalsze błędy zazwyczaj nie mają sensu.
 
Nie zajmuję się multiplayerami do Gothica. Przestańcie zawracać mi tym głowę...
Ps. Siemekk ma downa i śpi w pufie

N1kX

N1kX

Użytkownicy
posty93
Propsy15
ProfesjaTłumacz
  • Zbanowany
You have not declared this variable MiniBossBodyCount  here.
Gothic II\_Work\Data\Scripts\Content\Story\Story_Globals
 

lucki666

lucki666

Użytkownicy
posty130
Propsy64
ProfesjaSkrypter
  • Użytkownicy
Wszystko działa. Wielkie dzięki za pomoc chłopaki.

Rzeczywiście zabrakło mi warunku B_CountMiniBoss w pliku Story_Globals, który przeoczyłem by dodać.
 


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