Łóżko 2419 2

O temacie

Autor StarFighter

Zaczęty 2.07.2010 roku

Wyświetleń 2419

Odpowiedzi 2

StarFighter

StarFighter

Użytkownicy
posty65
  • Użytkownicy
Przeglądając skrypty natknąłem się na plik sleepabit.d
Postanowiłem, że zrobię "wyro śmierci" czyli łóżko, które zabija tych, którzy na nim śpią (jest to logiczne gdyż znajduje się w niebezpiecznej lokacji, później miałem zamiar dorobić random, oraz wyłączyć to, jeśli oczyścimy okolicę)

Oto plik sleepabit2.d Dużo tego jest jednak sam środek i koniec jest niemal taki sam jak w normalnym sleepabit.d

Cytuj
//****************************
//       PC_Sleep
//****************************

func void PC_Sleep2 (var int t)
{
   AI_StopProcessInfos(self);      // [SK] ->muss hier stehen um das update zu gewährleisten
   self.aivar[AIV_INVINCIBLE]=FALSE;
   if   (Wld_IsTime(00,00,t,00))   
   {
      Wld_SetTime   (t,00);
   }
   else
   {
      t = t + 24;
      Wld_SetTime   (t,00);
   };
   
   PrintScreen   ("Zostałeś zamordowany we śnie", -1,-1,"font_old_20_white.tga",3);
   hero.attribute[ATR_HITPOINTS] = 0;
      

   //-------- AssessEnterRoom-Wahrnehmung versenden --------
   PrintGlobals      (PD_ITEM_MOBSI);
   Npc_SendPassivePerc   (hero,   PERC_ASSESSENTERROOM, NULL, hero);      //...damit der Spieler dieses Feature nicht zum Hütteplündern ausnutzt!
};



func void SLEEPABIT_S2 ()
{
   var C_NPC her;    her = Hlp_GetNpc(PC_Hero);
   var C_NPC rock; rock = Hlp_GetNpc(PC_Rockefeller);
   
   //***ALT** if   (Hlp_GetInstanceID (self)== Hlp_GetInstanceID (Hero)) // MH: geändert, damit kontrollierte NSCs nicht schlafen können!
   if ( (Hlp_GetInstanceID(self)==Hlp_GetInstanceID(her))||(Hlp_GetInstanceID(self)==Hlp
_GetInstanceID(rock)) )
   {   
      self.aivar[AIV_INVINCIBLE]=TRUE;
      Ai_ProcessInfos (her);
   };
};

   




//-------------------- Gar nicht schlafen -------------------------

INSTANCE PC_NoSleep2 (c_Info)

{
   npc            = PC_Hero;
   nr            = 999;
   condition      = PC_NoSleep2_Condition;
   information      = PC_NoSleep2_Info;
   important      = 0;
   permanent      = 1;
   description      = DIALOG_ENDE;
};

FUNC INT PC_NoSleep2_Condition()
{      
      return 1;
};

func VOID PC_NoSleep2_Info()
{
   AI_StopProcessInfos (self);
   self.aivar[AIV_INVINCIBLE]=FALSE;
   
};

//---------------------- morgens --------------------------------------

INSTANCE PC_SleepTime_Morning2 (C_INFO)
{
   npc            = PC_Hero;
   condition      = PC_SleepTime_Morning2_Condition;
   information      = PC_SleepTime_Morning2_Info;
   important      = 0;
   permanent      = 1;
   description      = "Śpij do następnego poranka";
};

FUNC INT PC_SleepTime_Morning2_Condition()
{      
      return 1;
};

func void PC_SleepTime_Morning2_Info ()
{
   PC_Sleep2 (8);   // SN: geändert, da um 7 Uhr noch keiner der NSCs wach ist!
};

//--------------------- mittags -----------------------------------------

INSTANCE PC_SleepTime_Noon2 (C_INFO)
{
   npc            = PC_Hero;
   condition      = PC_SleepTime_Noon2_Condition;
   information      = PC_SleepTime_Noon2_Info;
   important      = 0;
   permanent      = 1;
   description      = "Śpij do południa";
};

FUNC INT PC_SleepTime_Noon2_Condition()
{      
      return 1;
};

func void PC_SleepTime_Noon2_Info ()
{
   PC_Sleep2 (12);
};

//---------------------- abend --------------------------------------

INSTANCE PC_SleepTime_Evening2 (C_INFO)
{
   npc            = PC_Hero;
   condition      = PC_SleepTime_Evening2_Condition;
   information      = PC_SleepTime_Evening2_Info;
   important      = 0;
   permanent      = 1;
   description      = "Śpij do następnego wieczora";
};

FUNC INT PC_SleepTime_Evening2_Condition()
{      
      return 1;
};

func void PC_SleepTime_Evening2_Info ()
{
   PC_Sleep2 (19);
};

//------------------------ nacht -----------------------------------------

instance PC_SleepTime_Midnight2 (C_INFO)
{
   npc            = PC_Hero;
   condition      = PC_SleepTime_Midnight2_Condition;
   information      = PC_SleepTime_Midnight2_Info;
   important      = 0;
   permanent      = 1;
   description      = "Śpij do północy";
};

FUNC INT PC_SleepTime_Midnight2_Condition()
{      
      return 1;
};

func VOID PC_SleepTime_Midnight2_Info()
{
   PC_Sleep2 (0);   
};

Następnie skopiowałem i wstawiłem w spacerze łóżko. Zmieniłem sleepabit na sleepabit2, dałem apply i activate.
Później próbowałem z sleepabit2.d
W spacerze przy naprawianiu skryptu błędów nie ma
Aha, i najważniejsze (tyle się rozpisałem, a nie napisałem na czym polega problem): postać podchodzi do łóżka, kładzie się na nie i nie wyświetla się żadne okno dialogowe  (nie gram na kodach i podchodzę bezimiennym!)

Bardzo proszę o pomoc. To mi jest naprawdę potrzebne.

PS. Jeżeli ktoś mógłby mi wytłumaczyć kilka rzeczy, tj. przełożyć ze skryptowego na nasze, co poniższe rzeczy oznaczają, bo nie do końca rozumiem:

Cytuj
self.aivar[AIV_INVINCIBLE]=FALSE;

Cytuj
if   (Wld_IsTime(00,00,t,00))   
   {
      Wld_SetTime   (t,00);
   }
   else
   {
      t = t + 24;
      Wld_SetTime   (t,00);
   };
Cytuj
func void SLEEPABIT_S1 ()
{
   var C_NPC her;    her = Hlp_GetNpc(PC_Hero);
   var C_NPC rock; rock = Hlp_GetNpc(PC_Rockefeller);
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Cytuj
Następnie skopiowałem i wstawiłem w spacerze łóżko. Zmieniłem sleepabit na sleepabit2, dałem apply i activate.
A nie powinno być SLEEPABIT_S2? Wpisz dużymi literami...

if (Wld_IsTime(00,00,t,00))
{
Wld_SetTime (t,00);
}
else
{
t = t + 24;
Wld_SetTime (t,00);
};
Ustawia czas.

var C_NPC her; her = Hlp_GetNpc(PC_Hero);
var C_NPC rock; rock = Hlp_GetNpc(PC_Rockefeller);
Inicjuje i przypisuje zmiennym wartości typu C_NPC, zmiennym odpowiada odpowiedni NPC.

Sulejman

Sulejman

Użytkownicy
Piotrek
posty237
Propsy229
Profesjabrak
  • Użytkownicy
  • Piotrek
Cytuj
self.aivar[AIV_INVINCIBLE]=FALSE;
Podczas korzystania z mobów wykonuje się odwrotną operację:
Cytuj
self.aivar[AIV_INVINCIBLE]=TRUE;
Wtedy jesteśmy nietykalni. Ustawienie tej zmiennej na FALSE (lub 0/NULL) po odejściu od moba sprawia, że NPC i potwory na nas reagują. Jeśli usuniesz oba zapisy potwory będą mogły atakować Cię podczas korzystania z danego moba.
 


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