Modding Gothica > Pytania i problemy

NPC nie kładą się spać - Gothic 1

(1/2) > >>

Laxus:
Witam.

Mam pewien problem. Chciałem sobie przejść ponownie Gothica 1 z jakąś nieco odświeżoną grafiką i po paru dniach męki z instalowaniem patchy, wywalaniem z gry, czy psuciem się save'ów po zapisie podczas deszczu (tu chyba najbardziej szlag mnie trafił, bo już myślałem że gra działa  :D ), w końcu udało mi się dojść do starego obozu bez konsultacji z psychiatrą. Lecz jak się okazało po czasie, chwile szczęścia z grania w Gothica minęły, bo ujawnił się dziwny błąd.

NPC w ogóle nie śpią, co znacznie utrudnia okradanie chat. Siedzą przeważnie na stołku, a jak wczytam grę to się kładą, po kilku sekundach wstają i znowu wracają na stołek (o ile po drodze coś im nie przeszkodzi  :D ).

Mógłby mi ktoś pomóc, jak naprawić ten błąd. Dodam że nie jestem moderem, więc proszę o jakieś proste odpowiedzi. Myślę, że to któraś z poprawek to powoduje, albo coś zainstalowałem w niepoprawnej kolejności.

Lista zainstalowanych elementów, wg. kolejności:

1. Gothic 1 - czysta gra, wersja Steam
2. Gothic 1 PlayerKit 1.08k
3. Gothic 1 PlayerKit 2.8
4. G1Classic System Pack 1.8
5. GD3D11 Clockwork Edition v17.6.4
6. 4GB patch
7. Big Nature Mod 1.0.1
8. FreeAimingPatch
9. Gothic 1 DX11 Normalmaps
10. MorOrs Mod
11. Texture Pack By Artemiano
12. ReShade NeuroFunkeR Edition + Real-light
13. Gothic 1 3D+ 2.0.21.11.2012

Post połączony: 2020-03-19, 18:11Na anglojęzycznych stronach znalazłem jakieś rozwiązanie. Unpatch do Gothica eliminuje ten problem, lecz patch zmienia napisy na angielskie. Czy idzie coś z tym zrobić?

outlander:
Problem leży w samym gothicu. Jedyne rozwiązanie to mod, który to poprawia, ale nie ma takiego, który skupiałby się tylko na tym błędzie. Edycja rozszerzona to naprawia, ale z tego co widzę celujesz raczej w klasyczną wersję G1.

pawbuj:

--- Cytuj ---Na anglojęzycznych stronach znalazłem jakieś rozwiązanie. Unpatch do Gothica eliminuje ten problem, lecz patch zmienia napisy na angielskie. Czy idzie coś z tym zrobić?
--- Koniec cytatu ---

Możesz zdekompilowac skrypty Unpatcha i zrobić patch na pakiecie Ninja, który będzie działał na wszytskich modach do G1. Jak nie będziesz wiedział jak to chociaz podeślij mi nowy kod na ZS_Sleep to ci pomogę.

BTW i tak miałem zrobić taki mini patch do G1. Chociażby naprawa błedu z switchami do moverów.

Laxus:

--- Cytuj ---podeślij mi nowy kod na ZS_Sleep
--- Koniec cytatu ---

Nie wiem czy o to chodzi, bo nigdy niczego nie modowałem.


--- Kod: ---func void zs_sleep() {
    printdebugnpc(pd_ta_frame, ÿ17489);
    b_setperception(self);
    ai_setwalkmode(self, npc_walk);
    if(!c_bodystatecontains(self, bs_mobinteract)) {
        if(hlp_strcmp(npc_getnearestwp(self), self.wp) == 0) {
            ai_gotowp(self, self.wp);
        };
    };
    ai_startstate(self, zs_sleepbed, 1, ÿ17490);
};

func void zs_sleepbed() {
    printdebugnpc(pd_ta_frame, ÿ17491);
    lightsleepperception();
    if(wld_ismobavailable(self, ÿ17492)) {
        ai_usemob(self, ÿ17493, 1);
    }
    else if(wld_ismobavailable(self, ÿ17495) || wld_ismobavailable(self, ÿ17494)) {
        ai_usemob(self, ÿ17496, 1);
        ai_usemob(self, ÿ17497, 1);
    }
    else {
        ai_startstate(self, zs_standaround, 1, ÿ17498);
    };
};

func int zs_sleepbed_loop() {
    printdebugnpc(pd_ta_loop, ÿ17499);
    if(((!npc_getbodystate(self)) == bs_mobinteract) || ((!npc_getbodystate(self)) == bs_mobinteract_interrupt) && (npc_getstatetime(self) > 3)) {
        ai_startstate(self, zs_sitaround, 1, ÿ17500);
    };
    ai_wait(self, 1.0);
    return loop_continue;
};

func void zs_sleepbed_end() {
    printdebugnpc(pd_ta_frame, ÿ17501);
    if(wld_istime(7, 0, 8, 30)) {
        b_say(self, ÿinstance_help, ÿ17502);
    };
    ai_usemob(self, ÿ17503, -1);
    ai_usemob(self, ÿ17504, -1);
    ai_usemob(self, ÿ17505, -1);
};

func void b_sleepquietsound() {
    printdebugnpc(pd_ta_detail, ÿ17506);
    if((npc_getdisttonpc(self, other) < perc_dist_dialog) && npc_canseenpcfreelos(self, other)) {
        ai_startstate(self, zs_wakeup, 0, ÿ17507);
    }
    else {
        b_tossandturn();
    };
};

--- Koniec kodu ---

I jakieś stałe:


--- Kod: ---const string ÿ17489 = "ZS_Sleep";
const string ÿ17490 = "";
const string ÿ17491 = "ZS_SleepBed_Loop";
const string ÿ17492 = "BED";
const string ÿ17493 = "BED";
const string ÿ17494 = "BEDLOW";
const string ÿ17495 = "BEDHIGH";
const string ÿ17496 = "BEDHIGH";
const string ÿ17497 = "BEDLOW";
const string ÿ17498 = "";
const string ÿ17499 = "ZS_SleepBed_Loop";
const string ÿ17500 = "";
const string ÿ17501 = "ZS_SleepBed_End";
const string ÿ17502 = "$AWAKE";
const string ÿ17503 = "BEDHIGH";
const string ÿ17504 = "BEDLOW";
const string ÿ17505 = "BED";
const string ÿ17506 = "B_SleepQuietSound";
const string ÿ17507 = "";

--- Koniec kodu ---
Post połączony: 2020-03-20, 12:20Z tego co widzę różni się 1 linijka w funkcji zs_sleepbed_loop.

Z bugiem:

--- Kod: ---func int zs_sleepbed_loop() {
    printdebugnpc(pd_ta_loop, ÿ17635);
    if((!c_bodystatecontains(self, bs_mobinteract)) && (npc_getstatetime(self) > 3)) {
        ai_startstate(self, zs_sitaround, 1, ÿ17636);
    };
    ai_wait(self, 1.0);
    return loop_continue;
};

--- Koniec kodu ---

!c_bodystatecontains(self, bs_mobinteract)) && (npc_getstatetime(self) > 3

Unpatch:


--- Kod: ---func int zs_sleepbed_loop() {
    printdebugnpc(pd_ta_loop, ÿ17499);
    if(((!npc_getbodystate(self)) == bs_mobinteract) || ((!npc_getbodystate(self)) == bs_mobinteract_interrupt) && (npc_getstatetime(self) > 3)) {
        ai_startstate(self, zs_sitaround, 1, ÿ17500);
    };
    ai_wait(self, 1.0);
    return loop_continue;
};

--- Koniec kodu ---

!npc_getbodystate(self)) == bs_mobinteract) || ((!npc_getbodystate(self)) == bs_mobinteract_interrupt) && (npc_getstatetime(self) > 3

pawbuj:
w skryptach UnPatcha 0.7 nie ma tych stałych...przynajmniej u mnie ten kod inaczej wygląda..

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej