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
//****************************
// 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:
self.aivar[AIV_INVINCIBLE]=FALSE;
if (Wld_IsTime(00,00,t,00))
{
Wld_SetTime (t,00);
}
else
{
t = t + 24;
Wld_SetTime (t,00);
};
func void SLEEPABIT_S1 ()
{
var C_NPC her; her = Hlp_GetNpc(PC_Hero);
var C_NPC rock; rock = Hlp_GetNpc(PC_Rockefeller);