Próbuję stworzyć "czas na funkcjach". Już tłumaczę:
1. Na początku dodałem zmienne dni:
// to w pliku Story_Globals.d
var int PONIEDZIALEK;
var int WTOREK;
var int SRODA;
var int CZWARTEK;
var int PIATEK;
var int SOBOTA;
var int NIEDZIELA;
2. Aby od czegoś zacząć do pierwszego dialogu w grze, który po prostu musi się odbyć, czyli rozomwa z Diego dodaję wartości przyjmując, że jest poniedziałek:
FUNC VOID Info_Diego_Gamestart_Info()
{
AI_Output(self,hero,"Info_Diego_Gamestart_11_00"); //Nazywam się Diego.
AI_Output(hero,self,"Info_Diego_Gamestart_15_01"); //Jestem...
AI_Output(self,hero,"Info_Diego_Gamestart_11_02"); //Nie interesuje mnie kim jesteś. Jesteś tu nowy - a do mnie należy dbanie o nowych. Na razie to tyle...
AI_Output(self,hero,"Info_Diego_Gamestart_11_03"); //Jeśli chcesz jeszcze trochę pożyć, słuchaj się mnie, ale oczywiście nie będę ci przeszkadzał w ewentualnej próbie samobójstwa. To jak będzie?
PONIEDZIALEK = TRUE;
WTOREK = FALSE;
SRODA = FALSE;
CZWARTEK = FALSE;
PIATEK = FALSE;
SOBOTA = FALSE;
NIEDZIELA = FALSE;
B_Kapitelwechsel(1);
};
3. Teraz napisałem TO, aby dni się zmieniały i tutaj pierwszy problem, gdyż nie wiem gdzie to dać i co zrobić, żeby działało automatycznie w ciągu gry: (koncepcja jest taka, że gdyby była godzina 23.59 to dzień zmieniałby się na następny z tą jedną minutą straty)
{
if (Wld_IsTime (23,59)) && (PONIEDZIALEK == TRUE)
{
PONIEDZIALEK = FALSE;
WTOREK = TRUE;
}
else if (Wld_IsTime (23,59)) && (WTOREK == TRUE)
{
WTOREK = FALSE;
SRODA = TRUE;
}
else if (Wld_IsTime (23,59)) && (SRODA == TRUE)
{
SRODA = FALSE;
CZWARTEK = TRUE;
}
else if (Wld_IsTime (23,59)) && (CZWARTEK == TRUE)
{
CZWARTEK = FALSE;
PIATEK = TRUE;
}
else if (Wld_IsTime (23,59)) && (CZWARTEK == TRUE)
{
CZWARTEK = FALSE;
PIATEK = TRUE;
}
else if (Wld_IsTime (23,59)) && (PIATEK == TRUE)
{
PIATEK = FALSE;
SOBOTA = TRUE;
}
else if (Wld_IsTime (23,59)) && (SOBOTA == TRUE)
{
SOBOTA = FALSE;
NIEDZIELA = TRUE;
}
else if (Wld_IsTime (23,59)) && (NIEDZIELA == TRUE)
{
NIEDZIELA = FALSE;
PONIEDZIALEK = TRUE;
};
};
4. I kwestia snu w łóżku: (plik Sleepabit.d)
//****************************
// PC_Sleep
//****************************
func void PC_Sleep (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 ("Sen dobrze ci zrobił.", -1,-1,"font_old_20_white.tga",3);
hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS_MAX];
hero.attribute[ATR_MANA] = hero.attribute[ATR_MANA_MAX];
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_S1 ()
{
var C_NPC her; her = Hlp_GetNpc(PC_Hero);
var C_NPC rock; rock = Hlp_GetNpc(PC_Rockefeller);
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_NoSleep (c_Info)
{
npc = PC_Hero;
nr = 999;
condition = PC_NoSleep_Condition;
information = PC_NoSleep_Info;
important = 0;
permanent = 1;
description = DIALOG_ENDE;
};
FUNC INT PC_NoSleep_Condition()
{
return 1;
};
func VOID PC_NoSleep_Info()
{
AI_StopProcessInfos (self);
self.aivar[AIV_INVINCIBLE]=FALSE;
};
//---------------------- morgens --------------------------------------
INSTANCE PC_SleepTime_Morning (C_INFO)
{
npc = PC_Hero;
condition = PC_SleepTime_Morning_Condition;
information = PC_SleepTime_Morning_Info;
important = 0;
permanent = 1;
description = "Śpij do następnego poranka";
};
FUNC INT PC_SleepTime_Morning_Condition()
{
return 1;
};
func void PC_SleepTime_Morning_Info ()
{
if (Wld_IsTime (08,01,23,59)) && (PONIEDZIALEK == TRUE)
{
PONIEDZIALEK = FALSE;
WTOREK = TRUE;
PC_Sleep (8);
}
else if (Wld_IsTime (08,01,23,59)) && (WTOREK == TRUE)
{
WTOREK = FALSE;
SRODA = TRUE;
PC_Sleep (8);
}
else if (Wld_IsTime (08,01,23,59)) && (SRODA == TRUE)
{
SRODA = FALSE;
CZWARTEK = TRUE;
PC_Sleep (8);
}
else if (Wld_IsTime (08,01,23,59)) && (CZWARTEK == TRUE)
{
CZWARTEK = FALSE;
PIATEK = TRUE;
PC_Sleep (8);
}
else if (Wld_IsTime (08,01,23,59)) && (PIATEK == TRUE)
{
PIATEK = FALSE;
SOBOTA = TRUE;
PC_Sleep (8);
}
else if (Wld_IsTime (08,01,23,59)) && (SOBOTA == TRUE)
{
SOBOTA = FALSE;
NIEDZIELA = TRUE;
PC_Sleep (8);
}
else if (Wld_IsTime (08,01,23,59)) && (NIEDZIELA == TRUE)
{
NIEDZIELA = FALSE;
PONIEDZIALEK = TRUE;
PC_Sleep (8);
}
else if (Wld_IsTime (00,00,07,59))
{
PC_Sleep (8);
};
};
//--------------------- mittags -----------------------------------------
INSTANCE PC_SleepTime_Noon (C_INFO)
{
npc = PC_Hero;
condition = PC_SleepTime_Noon_Condition;
information = PC_SleepTime_Noon_Info;
important = 0;
permanent = 1;
description = "Śpij do południa";
};
FUNC INT PC_SleepTime_Noon_Condition()
{
return 1;
};
func void PC_SleepTime_Noon_Info ()
{
if (Wld_IsTime (12,01,23,59)) && (PONIEDZIALEK == TRUE)
{
PONIEDZIALEK = FALSE;
WTOREK = TRUE;
PC_Sleep (12);
}
else if (Wld_IsTime (12,01,23,59)) && (WTOREK == TRUE)
{
WTOREK = FALSE;
SRODA = TRUE;
PC_Sleep (12);
}
else if (Wld_IsTime (12,01,23,59)) && (SRODA == TRUE)
{
SRODA = FALSE;
CZWARTEK = TRUE;
PC_Sleep (12);
}
else if (Wld_IsTime (12,01,23,59)) && (CZWARTEK == TRUE)
{
CZWARTEK = FALSE;
PIATEK = TRUE;
PC_Sleep (12);
}
else if (Wld_IsTime (12,01,23,59)) && (PIATEK == TRUE)
{
PIATEK = FALSE;
SOBOTA = TRUE;
PC_Sleep (12);
}
else if (Wld_IsTime (12,01,23,59)) && (SOBOTA == TRUE)
{
SOBOTA = FALSE;
NIEDZIELA = TRUE;
PC_Sleep (12);
}
else if (Wld_IsTime (12,01,23,59)) && (NIEDZIELA == TRUE)
{
NIEDZIELA = FALSE;
PONIEDZIALEK = TRUE;
PC_Sleep (12);
}
else if (Wld_IsTime (00,00,11,59))
{
PC_Sleep (12);
};
};
//---------------------- abend --------------------------------------
INSTANCE PC_SleepTime_Evening (C_INFO)
{
npc = PC_Hero;
condition = PC_SleepTime_Evening_Condition;
information = PC_SleepTime_Evening_Info;
important = 0;
permanent = 1;
description = "Śpij do wieczora";
};
FUNC INT PC_SleepTime_Evening_Condition()
{
return 1;
};
func void PC_SleepTime_Evening_Info ()
{
if (Wld_IsTime (19,01,23,59)) && (PONIEDZIALEK == TRUE)
{
PONIEDZIALEK = FALSE;
WTOREK = TRUE;
PC_Sleep (19);
}
else if (Wld_IsTime (19,01,23,59)) && (WTOREK == TRUE)
{
WTOREK = FALSE;
SRODA = TRUE;
PC_Sleep (19);
}
else if (Wld_IsTime (19,01,23,59)) && (SRODA == TRUE)
{
SRODA = FALSE;
CZWARTEK = TRUE;
PC_Sleep (19);
}
else if (Wld_IsTime (19,01,23,59)) && (CZWARTEK == TRUE)
{
CZWARTEK = FALSE;
PIATEK = TRUE;
PC_Sleep (19);
}
else if (Wld_IsTime (19,01,23,59)) && (PIATEK == TRUE)
{
PIATEK = FALSE;
SOBOTA = TRUE;
PC_Sleep (19);
}
else if (Wld_IsTime (19,01,23,59)) && (SOBOTA == TRUE)
{
SOBOTA = FALSE;
NIEDZIELA = TRUE;
PC_Sleep (19);
}
else if (Wld_IsTime (19,01,23,59)) && (NIEDZIELA == TRUE)
{
NIEDZIELA = FALSE;
PONIEDZIALEK = TRUE;
PC_Sleep (19);
}
else if (Wld_IsTime (00,00,18,59))
{
PC_Sleep (19);
};
};
//------------------------ nacht -----------------------------------------
instance PC_SleepTime_Midnight (C_INFO)
{
npc = PC_Hero;
condition = PC_SleepTime_Midnight_Condition;
information = PC_SleepTime_Midnight_Info;
important = 0;
permanent = 1;
description = "Śpij do północy";
};
FUNC INT PC_SleepTime_Midnight_Condition()
{
return 1;
};
func VOID PC_SleepTime_Midnight_Info()
{
if (Wld_IsTime (00,01,23,59)) && (PONIEDZIALEK == TRUE)
{
PONIEDZIALEK = FALSE;
WTOREK = TRUE;
PC_Sleep (0);
}
else if (Wld_IsTime (00,01,23,59)) && (WTOREK == TRUE)
{
WTOREK = FALSE;
SRODA = TRUE;
PC_Sleep (0);
}
else if (Wld_IsTime (00,01,23,59)) && (SRODA == TRUE)
{
SRODA = FALSE;
CZWARTEK = TRUE;
PC_Sleep (0);
}
else if (Wld_IsTime (00,01,23,59)) && (CZWARTEK == TRUE)
{
CZWARTEK = FALSE;
PIATEK = TRUE;
PC_Sleep (0);
}
else if (Wld_IsTime (00,01,23,59)) && (PIATEK == TRUE)
{
PIATEK = FALSE;
SOBOTA = TRUE;
PC_Sleep (0);
}
else if (Wld_IsTime (00,01,23,59)) && (SOBOTA == TRUE)
{
SOBOTA = FALSE;
NIEDZIELA = TRUE;
PC_Sleep (0);
}
else if (Wld_IsTime (00,01,23,59)) && (NIEDZIELA == TRUE)
{
NIEDZIELA = FALSE;
PONIEDZIALEK = TRUE;
PC_Sleep (0);
};
};
No i to by było na tyle. Proszę o pomoc z tą 3. No i opinie, czy to wogóle zadziała?
Kombinuję z tym, bo łatwo byłoby mi po prostu wpisywać np. if (dzień tygonia == TRUE/FALSE) w warunkach i było by to wygodniejsze.
