Sen 5632 0

O temacie

Autor RafalBudzis

Zaczęty 18.08.2011 roku

Wyświetleń 5632

Odpowiedzi 0

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy

RafalBudzis

Sen
2011-08-18, 15:40(Ostatnia zmiana: 2011-08-18, 17:40)
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


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