Przyzwane potwory 8057 0

O temacie

Autor Sergio

Zaczęty 2.01.2010 roku

Wyświetleń 8057

Odpowiedzi 0

Sergio

Sergio

Użytkownicy
Główny scenarzysta, skrypter i założyciel teamu
posty449
Propsy12
  • Użytkownicy
  • Główny scenarzysta, skrypter i założyciel teamu

Sergio

Przyzwane potwory
2010-01-02, 13:43(Ostatnia zmiana: 2010-01-02, 13:51)
Tutorial przeznaczony głównie dla gothic 2 (ale można też korzystać w gothic 1, wszystko opiera się na podobnych zasadach)

Zaczynajmy:

Wchodzimy w: _work/data/scripts/content/AI/Monster/RTN_Monster i tam
otwieramy plik ZS_MM_RTN_Summoned

Patrzymy na jego przednią część czyli to co wkleiłem poniżej.
Obok (na kolorowo) będą dopisane sprawy które w danych linijkach możemy bezpiecznie zmienić.

------------------------------------------------------------------------------------------
// ******************
// ZS_MM_Rtn_Summoned
// ******************

func void B_SummonedAssessTalk()
{
   Npc_ChangeAttribute (self, ATR_HITPOINTS, -self.attribute[ATR_HITPOINTS_MAX]);     //W tym miejscu możemy wstawić dowolną funkcję która będzie odpalana w momencie kliknięcia na potwora, w tym wypadku jest to jego śmierć
};

func void ZS_MM_Rtn_Summoned ()
{
   Npc_SetPercTime   (self,   1);
   Npc_PercEnable   (self,   PERC_ASSESSPLAYER,      B_MM_AssessPlayer);
   Npc_PercEnable   (self,   PERC_ASSESSENEMY,      B_MM_AssessEnemy);
   
   Npc_PercEnable   (self,   PERC_ASSESSMAGIC,        B_AssessMagic);
   Npc_PercEnable   (self,   PERC_ASSESSDAMAGE,      B_MM_AssessDamage);
   Npc_PercEnable   (self,  PERC_ASSESSFIGHTSOUND,    B_MM_AssessOthersDamage);
   
   if (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Wisp_Detector))
   {
      Npc_PercEnable    (self,   PERC_ASSESSTALK,    B_AssessTalk);
   }
   else
   {
      Npc_PercEnable    (self,   PERC_ASSESSTALK,    B_SummonedAssessTalk);
   };

   // FUNC
   
   B_SetAttitude (self, ATT_FRIENDLY);                 // tutaj z kolei możemy zmienić nastawienie przyzwanego potwora do bohatera ustawiając zamiast ATT_FRIENDLY (przyjazny) np. ATT_HOSTILE (wrogi)
   self.aivar[AIV_PARTYMEMBER] = TRUE;

   AI_StandUp (self);
   AI_SetWalkmode   (self, NPC_RUN);                    //tutaj regulujemy czy przyzwana postać poruszając się będzie biec czy chodzić, jeżeli chcemy by chodziła to przypuszczam że zamiast NPC_RUN należy wpisać NPC_WALK
};

func int ZS_MM_Rtn_Summoned_Loop()
{
   // ------ beim Spieler bleiben ------
   B_MM_WispDetect ();
   if (Npc_GetDistToNpc (self, hero) > 500)        //tutaj można regulować jak długi może być dystans między bohaterem a przyzwaną postacią, w tej chwili warunek jest taki że jeżeli postać znajdzie się w odległości ponad 5m od bohatera to...
   {
      AI_GotoNpc (self, hero);               //... uda się ona za nim
   }
   else //<= 500
   {
      if (Npc_GetStateTime(self) >= 1)
      {
         // ------ zum Spieler drehen ------
         if (!Npc_CanSeeNpc(self, hero))           //ta funkcja mówi że jeżeli przyzwany stwór (czy coś) nie będzie widzieć bohatera (zwróćcie uwagę na wykrzyknik, oznacza przeciwność) to...
         {
            AI_TurnToNpc (self, hero);       //...obróci się w jego stronę. Zamiast AI_TurnToNpc można ustawić dowolną funkcję
         };
         
         // ------ Summon Time -------
         self.aivar[AIV_SummonTime] = (self.aivar[AIV_SummonTime] + Npc_GetStateTime(self)); //weil AI_Goto länger dauern kann

         if (self.aivar[AIV_SummonTime] >= MONSTER_SUMMON_TIME)                                    
Npc_ChangeAttribute (self, ATR_HITPOINTS, -self.attribute[ATR_HITPOINTS_MAX]);   ///Ta funkcja jest najciekawsza i powinniście zwrócić na nią szczególną uwagę. Mówi że jeżeli czas życia przyzwanej postaci przekroczy czasu określony gdzieś tam to postać zginie. Zmieniając więc warunek if na np: IF (Hero.Level > 500) możemy sprawić że postać zginie dopiero gdy bohater przekroczy pięćsetny poziom. W ten sposób możemy więc sprawić że przyzwana postać nie zginie spowodu czasu. Będzie trzeba ją zabić. Dzięki tej funkcji możemy stworzyć sobie w gothicu wielką armię przyzwanych stworów i zasiać terror na całej mapie.
};
   
----------------------------------------------------------------------------

I na tym kończy się tutorial, mam nadzieję że uszczęśliwiłem nim kilka osób i czekam na komentarze. Jakbyście zauważyli jakieś błędy to proszę napisać.
Pozdrawiam
 



Zachęcam do oglądania mojego kanału na youtube, może nie jestem teraz jakimś mistrzem ale rozkręcam się. Hit na ten moment: http://www.youtube.com/watch?v=vzOXV0Nb658 Dla wszystkich tych którzy nie mają nic przeciw porcji śmiechu w oparciu o gothic.


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