Pomoce
http://themodders.org/index.php?/topic/206-jak-sprawdzi-godzine-w-gothicu/Jeżeli nie wiesz co do czego poczytaj o monologach ;)
http://themodders.org/index.php?/topic/5917-monologi/Nie uważacie ze spanie w Gothic`u nie jest realne ? Przecież jak można spać co do minuty dziś wam pokaże jak zrobić trochę bardziej realistyczny sen do Gothic`a 2. Temat będę rozbudowywał aby każdy mógł wybrać sposób spania dla swojej modyfikacji.
Sposób 1 Dla:Gothic 2
Opis: Postać śpi 9 godzin między 20:00 a 7:59 a między 8:00 a 19:59 drzemie 1 godzinę. Jeżeli jest "przeklęta" przez poszukiwacza nie może zasnąć.
Spoiler
Skrypt:
func void PC_Sleep (var int t)
{
AI_StopProcessInfos(self);
PLAYER_MOBSI_PRODUCTION = MOBSI_NONE;
self.aivar[AIV_INVINCIBLE]=FALSE;
Wld_StopEffect("DEMENTOR_FX");
if (SC_IsObsessed == TRUE)
{
//PrintScreen (PRINT_SleepOverObsessed, -1,-1,FONT_Screen,2);
PrintScreen ("Dziś chyba nie zasnę", -1,-1,FONT_Screen,2);
}
else
{
if Wld_IsTime(08,00,19,59)
{
t = Wld_GetTimeHour() + 1;
Wld_SetTime (t,00);
};
if Wld_IsTime(20,00,7,59)
{
t = Wld_GetTimeHour() + 9;
if (Wld_IsTime(00,00,t,00))
{
Wld_SetTime (t,00);
}
else
{
t = t + 24;
Wld_SetTime (t,00);
};
};
PrintScreen (PRINT_SleepOver, -1,-1,FONT_Screen,2);
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);
};
Przykład dialogu:
INSTANCE PC_SleepTime_Real (C_INFO)
{
npc = PC_Hero;
condition = PC_SleepTime_Real_Condition;
information = PC_SleepTime_Real_Info;
important = 0;
permanent = 1;
description = "Odpoczywaj ...";
};
FUNC INT PC_SleepTime_Real_Condition()
{
if (PLAYER_MOBSI_PRODUCTION == MOBSI_SLEEPABIT)
{
return 1;
};
};
func void PC_SleepTime_Real_Info ()
{
PC_Sleep (0);//liczba ta jest obojętna
};
Sposób 2 Dla:Gothic 1
Opis: Postać śpi 9 godzin między 20:00 a 7:59 a między 8:00 a 19:59 drzemie 1 godzinę.
Spoiler
Skrypt:
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(08,00,19,59)
{
t = Wld_GetTimeHour() + 1;
Wld_SetTime (t,00);
PrintScreen ("Drzemka dobrze ci zrobiła.", -1,-1,"font_old_20_white.tga",3);
};
if Wld_IsTime(20,00,7,59)
{
t = Wld_GetTimeHour() + 9;
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];
//-------- AssessEnterRoom-Wahrnehmung versenden --------
PrintGlobals (PD_ITEM_MOBSI);
Npc_SendPassivePerc (hero, PERC_ASSESSENTERROOM, NULL, hero);
};
Przykład dialogu:
INSTANCE PC_SleepTime_Real (C_INFO)
{
npc = PC_Hero;
condition = PC_SleepTime_Real_Condition;
information = PC_SleepTime_Real_Info;
important = 0;
permanent = 1;
description = "Odpoczywaj ...";
};
FUNC INT PC_SleepTime_Real_Condition()
{
return 1;
};
func void PC_SleepTime_Real_Info ()
{
PC_Sleep (0);//liczba ta jest obojętna
};
Najpierw podmieniamy skrypt funkcji PC_sleep na nasz potem usuwamy wpisy monologu zostawiamy tylko koniec i dodajemy nasz skrypt. No i musimy jeszcze dodać funkcje orcwarrior`a do sprawdzania godziny którą używamy w naszym skrypcie
Spoiler
func int Wld_GetTimeHour()
{
var int hh;
hh = 0;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 1;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 2;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 3;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 4;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 5;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 6;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 7;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 8;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 9;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 10;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 11;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 12;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 13;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 14;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 15;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 16;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 17;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 18;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 19;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 20;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 21;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 22;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
hh = 23;
if Wld_IsTime(hh,0,hh,59)
{return hh;};
};
Mam Nadzieje ze się spodoba ;) Niestety nie mam gdzie sprawdzić czy skrypt jest bez błędów