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

O temacie

Autor Laxus

Zaczęty 19.03.2020 roku

Wyświetleń 4800

Odpowiedzi 9

Laxus

Laxus

Użytkownicy
posty3
Propsy2
Profesjabrak
  • Użytkownicy
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:11
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ć?
 

outlander

outlander

Użytkownicy
posty462
Propsy234
ProfesjaReżyser
  • Użytkownicy
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

pawbuj

Użytkownicy
posty1623
Propsy135
ProfesjaSkrypter
  • Użytkownicy
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ć?

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

Laxus

Użytkownicy
posty3
Propsy2
Profesjabrak
  • Użytkownicy
Cytuj
podeślij mi nowy kod na ZS_Sleep

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

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();
    };
};

I jakieś stałe:

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 = "";

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

Z bugiem:
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;
};

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

Unpatch:

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;
};

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

pawbuj

pawbuj

Użytkownicy
posty1623
Propsy135
ProfesjaSkrypter
  • Użytkownicy
w skryptach UnPatcha 0.7 nie ma tych stałych...przynajmniej u mnie ten kod inaczej wygląda..
 

Laxus

Laxus

Użytkownicy
posty3
Propsy2
Profesjabrak
  • Użytkownicy
W oryginalnych skryptach g1, też ich nie widziałem. Możliwe że ja je jakoś dziwnie dekompilowałem.

Przed chwilą się z tym uporałem.

https://www.sendspace.com/file/5hohoo

U mnie działa. Co prawda to jest najbardziej rozbudowany mod świata, bo poza usunięciem tego błędu nic nie wnosi :)

Ale może komuś się przyda do czegoś, póki ktoś nie stworzy jakiegoś porządniejszego.

 

pawbuj

pawbuj

Użytkownicy
posty1623
Propsy135
ProfesjaSkrypter
  • Użytkownicy
Chyba tam link jest żle wklejony, bo nie mogę pobrać.

Z Mozilli poszło, miałem problem z Operą.
 

Gonzo100100

Gonzo100100

Użytkownicy
posty4
Profesjabrak
  • Użytkownicy
Czy można prosić o ponowny upload tego moda co rzekomo naprawia rutyny, że NPC nie chodzą spać?
 

Kirgo2

Kirgo2

Użytkownicy
posty20
Propsy4
ProfesjaGracz
  • Użytkownicy
Wrzucam nowy link do moda naprawiającego omawianego buga, bo poprzedni link wygasł. Mod autorstwa @Laxus

https://forum.gothic.org.pl/threads/gothic-1-npc-nie-kładą-się-spać-sleep-fix.26617/
 

bogu9821

bogu9821

Użytkownicy
posty406
Propsy185
ProfesjaProgramista
  • Użytkownicy
Przez te polskie znaki trochę popsuty jest link.
 
while(false) Do();


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