Ostatnie wiadomości

41
Tylko że Twoje rozwiązanie działa inaczej.

Cytuj
Przetestowałem w Gothic 1. Funkcja działa bardzo fajnie. Jest tylko problem z godzinami od szóstej (rano) do dziesiątej (rano). O szóstej (rano) jest bardzo widno, podobnie o siódmej (rano). Dopiero o dziewiątej (rano) zaczyna się robić trochę bardziej wieczorowo ale o nocy też trudno tu mówić. Szczególnie ta ósma (rano) i dziewiąta (rano) odstają. Oprócz tego wszystko ładnie śmiga :)
Możesz pokazać jak to wygląda? Nie rozumiem czy to problem z niebem i mgłą, czy może po prostu światło się przebija?
42
ja bym skorzystał z wld_settime i jakiś trigger.
pamiętacie jak przejśc zadanie marco ma lek wysokości ?
A ja to robiłem dwa tygodnie temu i u mnie akurat zadziałało dopiero jak zrobiłem to z tym przeniesieniem zawartości z Intern.src do Gothic.src chociaż oczywiście nie wykluczam, że zwyczajnie mogłem spaprać coś innego. Pliki .src różnią się trochę między Gothiciem 1 a Gothic 2 co nie było wyszczególnione na stronie, gdzie było opisywane krok po kroku więc musiałem jako tytułowy „nowicjusz i noob” robić to po omacku - metodą prób i błędów.

Możemy zrobić tak, że dam po prostu adnotację, że jeżeli ktoś będzie miał podobny kłopot jak ja to niech spróbuje z tym przeniesieniem. Chyba, że coś co tutaj opisuje w dalszej perspektywie wiąże się ze szkodami w plikach to wtedy te punkty się po prostu skasuje. 

PS: Podejrzewam ale to tylko moje podejrzenie, bo nie jestem programistą, że może tu chodzić coś o „_INTERN\MAGIC_INTERN.D” w pliku Gothic.src ale tego już nie rozstrzygnę.
Jeżeli ktoś ma Gothica I bez IKARUSA to mógłby to sprawdzić czy bez przenoszenia z pliku Intern.src to zadziała.
No właśnie o to mi chodzi, że to tak zadziała (tak, testowałem osobiście już dawno temu) i po prostu dodajesz zmianę, która nic nie wnosi tak naprawdę.
Poza tym jeżeli działało to w oryginale to nie wiem czemu miałoby to nagle przestać działać po zwykłym dodaniu 2 linijek.
Też myślałem, że na jedno wychodzi - tj. że te
Ikarus\Ikarus\Ikarus_G1.src
LeGo\LeGo\Header_G1.src
wstawię po prostu pod
_INTERN\INTERN.SRC
i że otrzymam wtedy takie coś
_INTERN\INTERN.SRC
_INTERN\MAGIC_INTERN.D
Ikarus\Ikarus\Ikarus_G1.src
LeGo\LeGo\Header_G1.src
albo takie coś
_INTERN\INTERN.SRC
Ikarus\Ikarus\Ikarus_G1.src
LeGo\LeGo\Header_G1.src
_INTERN\MAGIC_INTERN.D
i że wtedy będzie działać. No bo niby logiczne, że "constants.d" i "classes.d" zawierają się w "Intern.src".

Tymczasem zadziałało mi dopiero gdy w pliku "Intern.src" zakomentowałem i jego zawartość przeniosłem do Gothic.src a bawiłem się nad tym chyba z dwie godziny próbując na różne sposoby. To chyba było z dwa tygodnie temu.

Jeżeli ktoś ma Gothica I bez IKARUSA to mógłby to sprawdzić czy bez przenoszenia z pliku Intern.src to zadziała.

W każdym razie opisałem w jaki sposób zrobiłem, że mi to działa, więc może komuś się przyda.
Przecież to przenoszenie zawartości z INTERN.SRC do GOTHIC.SRC nie ma sensu, bo i tak na jedno wychodzi.
_INTERN\INTERN.SRC
Ikarus\Ikarus\Ikarus_G1.src
LeGo\LeGo\Header_G1.src
_INTERN\MAGIC_INTERN.D
?
jeszcze mi zejdzie trochę bo się tego tykam jak pies jeża. dużo testowania.
Jakiś czas temu przy przy okazji chęci dodania trialogu musiałem zainstalować sobie także Ikarusa i LeGo. Na stronie internetowej https://gothic-modding-community.github.io/gmc/pl/zengin/scripts/extenders/ikarus/ jest opis instalacji ale niestety w kontekście Gothica I nie uwzględnia pewnej rzeczy, więc wrzucam tu na wypadek gdyby ktoś potrzebowała albo gdybym ja w przyszłości musiał ponownie to instalować do swojego Gothica.

EDIT: Tutaj jest pewna kontrowersja odnośnie punktu nr 8 tego mojego mini poradnika. Być może nie trzeba przenosić zawartości z "INTERN.SRC" do "GOTHIC.SRC". Jak chcesz to możesz spróbować instalacji Ikarusa bez tego przenoszenia zawartości z "INTERN.SRC" do "GOTHIC.SRC" a jak coś nie zadziała to wtedy spróbuj tym sposobem z punktu nr 8. Zrobisz jak uważasz.

Instalacja IKARUSA i LeGo do Gothica I - poradnik łopatologiczny

1. Wchodzisz na GitHuba https://github.com/Lehona/Ikarus i ściągasz całą zawartość.

Jak? Widzisz ten zielony przycisk "<CODE>"? Kliknij go i wybierz "Download.zip".

2. Teraz w Gothic\_work\Data\Scripts\Content stwórz folder do którego wypakujesz Ikarusa. Ja ten folder nazwałem po prostu "Ikarus".

3. Wypadkuj zawartość "Download.zip" do folderu Gothic\_work\DATA\scripts\Content\Ikarus.

4. Teraz w folderze Gothic\_work\DATA\scripts\Content\Ikarus powinien się pojawić nowy folder - to jest ten z rozpakowania. Po rozpakowaniu będzie nosił nazwę "Ikarus-master" or "Ikarus-X.X.X". Dla ułatwienia zmień tę nazwę po prostu na "Ikarus" - będziesz miał folder "Ikarus" w folderze "Ikarus"

Gothic\_work\DATA\scripts\Content\Ikarus\Ikarus

5. Jako, że instalujemy IKARUSA do Gothica I to potrzebujemy folder "EngineClasses_G1" i nie potrzebujemy folderu "EngineClasses_G2". Usuń folder "EngineClasses_G2", zostaw "EngineClasses_G1".


6. Teraz przechodzimy właśnie do tej części, której brakuje w poradniku z https://gothic-modding-community.github.io/gmc/pl/zengin/scripts/extenders/ikarus/setup/


7. By się nie rozpisywać. Musisz zmienić pewne rzeczy w pliku Gothic.src i INTERN.SRC

Oryginalne pliki wyglądają tak (UWAGA: przedstawiam tu tylko interesujące nas fragmenty tych dwóch plików .src więc nie kopiuj tego na pałę).

Oryginalne i niezmodyfikowane pliki:

oryginalny "Gothic.src"

_INTERN\INTERN.SRC
_INTERN\MAGIC_INTERN.D

oryginalny "Intern.src"
constants.d
classes.d

8. [WSPOMNIANA KONTROWERSJA] Teraz przenosimy rzeczy z pliku Intern.src do Gothic.src by móc pod nimi wkleić fragment dotyczący Ikarusa oraz LeGo.

Po wszystkim powinno to wyglądać tak:

"Gothic.src"


_INTERN\constants.d
_INTERN\classes.d
Ikarus\Ikarus\Ikarus_G1.src
LeGo\LeGo\Header_G1.src
_INTERN\MAGIC_INTERN.D

"Intern.src"
////////constants.d
////////classes.d

9. Instalacja LeGo przebiega analogicznie do instalacji IKARUSA więc już jej nie opisuję. Ściągasz pliki, tworzysz folder LeGo, rozpakowujesz do tego folderu zawartość ściągniętej z GitHuba paczki, usuwasz rzeczy z G2 (zobaczysz, że w https://github.com/Lehona/LeGo masz przy w nazwach niektórych plików G1 a w innych G2 - to te z G2 usuwasz).

W "Gothic.src" i "Intern.src" już nic nie "modzisz" bo stosowne rzeczy wprowadziłeś już przy okazji instalacji Ikarusa (w punkcie 9 tego poradnika)


10. Zagadnienie inicjalizacji masz opisane tutaj:

(Jako pierwsze zrób inicjalizację pod Ikarusa)
https://gothic-modding-community.github.io/gmc/pl/zengin/scripts/extenders/ikarus/setup/

(Potem uzupełnij tę inicjalizację o rzeczy dotyczące LeGo)
https://gothic-modding-community.github.io/gmc/pl/zengin/scripts/extenders/lego/setup/

Nie jest tego dużo. Po prostu zwiń to na sam dół i masz tam to opisane jak wół.



11. Jeżeli jednak będziesz mieć problem z dodaniem tej inicjalizacji do Startup.d to podrzucam tutaj kilka rzeczy, które pomogą ci przez to przebrnąć. 

Spoiler
W pliku Startup.d (plik znajduje się w folderze Gothic\_work\DATA\scripts\Content\Story) na samej górze tego pliku Startup.d wklej po prostu coś takiego

FUNC VOID INIT_GLOBAL()
{
    // Init Ikarus
    MEM_InitAll ();
    // Init LeGo
    LeGo_Init(LeGo_All)
};

W przypadku Gothica I musisz jeszcze do każdej funkcji "func VOID INIT_" wstawić "Init_Global();"

UWAGA: Tego "Init_Global();" wstawiasz do fukcji "func VOID INIT_" a NIE do funkcji "VOID STARTUP_"

Dla ułatwienia wrzucam fragment jak powinno to wyglądać:

Spoiler
func VOID STARTUP_DEMONTOWER ()
{
   STARTUP_SUB_DEMONTOWER ();
};

func VOID INIT_DEMONTOWER ()
{
    Init_Global();
   INIT_SUB_DEMONTOWER ();
};



func VOID STARTUP_FREEMINCAMP ()
{
   STARTUP_SUB_FREEMINECAMP ();
};

func VOID INIT_FREEMINCAMP ()
{
    Init_Global();
   INIT_SUB_FREEMINECAMP ();
};




func VOID STARTUP_PSICAMP ()
{
    STARTUP_SUB_PSICAMP ();
};

func VOID INIT_PSICAMP ()
{
    Init_Global();
   INIT_SUB_PSICAMP ();
};



func VOID STARTUP_NEWCAMP ()
{
    STARTUP_SUB_NEWCAMP ();
};

func VOID INIT_NEWCAMP ()
{
    Init_Global();
    INIT_SUB_NEWCAMP ();
};



func VOID STARTUP_OLDCAMP ()
{
    STARTUP_SUB_OLDCAMP ();
};

func VOID INIT_OLDCAMP ()
{
    Init_Global();
    INIT_SUB_OLDCAMP ();
};



func VOID STARTUP_SURFACE ()
{
    STARTUP_SUB_SURFACE ();
};

func VOID INIT_SURFACE ()
{
    Init_Global();
    INIT_SUB_SURFACE ();
};



Tych rzeczy nie musisz z kolei wstawiać do "sublokacji". Czyli tam gdzie masz funckje zaczynające się na "func VOID INIT_SUB_" tam nie musisz wstawiać. Przykład "func VOID INIT_SUB_PSICAMP ()"

Spoiler
func VOID INIT_SUB_PSICAMP ()
{
/**************************************************************
**                STARTUP_LIGHTS IN PSICAMP                  **
**************************************************************/
Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_01",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_01",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_01",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_02",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_02",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_02",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_03",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_03",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_03",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_04",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_04",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_04",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_05",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_05",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_05",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_06",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_06",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_06",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_07",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_07",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_07",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_08",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_08",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_08",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_09",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_09",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_09",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_10",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_10",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_10",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_11",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_11",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_11",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_12",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_12",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_12",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_13",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_13",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_13",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_14",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_14",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_14",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_15",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_15",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_15",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_16",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_16",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_16",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_17",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_17",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_17",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_18",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_18",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_18",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_19",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_19",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_19",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_20",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_20",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_20",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_21",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_21",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_21",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_22",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_22",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_22",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_23",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_23",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_23",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_24",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_24",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_24",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_25",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_25",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_25",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_26",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_26",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_26",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_27",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_27",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_27",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_28",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_28",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_28",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_29",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_29",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_29",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_30",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_30",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_30",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_31",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_31",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_31",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_32",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_32",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_32",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_33",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_33",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_33",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_34",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_34",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_34",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_35",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_35",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_35",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_36",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_36",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_36",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_37",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_37",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_37",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_38",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_38",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_38",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_39",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_39",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_39",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_40",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_40",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_40",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_41",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_41",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_41",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_42",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_42",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_42",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_43",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_43",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_43",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_44",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_44",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_44",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_45",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_45",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_45",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_46",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_46",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_46",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_47",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_47",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_47",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_48",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_48",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_48",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_49",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_49",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_49",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_50",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_50",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_50",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_51",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_51",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_51",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_52",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_52",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_52",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_53",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_53",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_53",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_54",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_54",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_54",0);

Wld_SetObjectRoutine (00,00,"PC_CRYSTALLIGHT_55",1);
Wld_SetObjectRoutine (20,00,"PC_CRYSTALLIGHT_55",1);
Wld_SetObjectRoutine (05,00,"PC_CRYSTALLIGHT_55",0);

/**************************************************************
**        PORTALRAUMZUWEISUNG IM PSICAMP          **
**************************************************************/
Wld_AssignRoomToGuild("PSIH01",GIL_NOV); //OK nlhu01 - nlhu32               
Wld_AssignRoomToGuild("PSIH02",GIL_NOV); //defekt       
Wld_AssignRoomToGuild("PSIH03",GIL_NOV); //defekt
Wld_AssignRoomToGuild("PSIH04",GIL_NOV);
Wld_AssignRoomToGuild("PSIH05",GIL_NOV);
Wld_AssignRoomToGuild("PSIH06",GIL_NOV); //defekt
Wld_AssignRoomToGuild("PSIH07",GIL_NOV); //defekt
Wld_AssignRoomToGuild("PSIH08",GIL_NOV); //defekt
Wld_AssignRoomToGuild("PSIH09",GIL_NOV); //defekt
Wld_AssignRoomToGuild("PSIH10",GIL_NOV);//defekt
Wld_AssignRoomToGuild("PSIH11",GIL_NOV);//defekt
Wld_AssignRoomToGuild("PSIH12",GIL_NOV);//defekt
Wld_AssignRoomToGuild("PSIH13",GIL_NOV);//defekt
Wld_AssignRoomToGuild("PSIH14",GIL_NOV);//defekt
Wld_AssignRoomToGuild("PSIH15",GIL_NOV);//defekt
Wld_AssignRoomToGuild("PSIH16",GIL_NOV);//defekt
Wld_AssignRoomToGuild("PSIH17",GIL_NOV);//defekt
Wld_AssignRoomToGuild("PSIH18",GIL_NOV);
Wld_AssignRoomToGuild("PSIH19",GIL_NOV);
Wld_AssignRoomToGuild("PSIH20",GIL_NOV);
Wld_AssignRoomToGuild("PSIH21",GIL_NOV);
Wld_AssignRoomToGuild("PSIH22",GIL_NOV);
//Wld_AssignRoomToGuild("PSIH23",GIL_NOV); //Harloks Hütte, Hut 31
Wld_AssignRoomToGuild("PSIH24",GIL_NOV);
//Wld_AssignRoomToGuild("PSIH25",GIL_NOV); Alchemielabor soll frei zugänglich sein!
Wld_AssignRoomToGuild("PSIH26",GIL_NOV);
Wld_AssignRoomToGuild("PSIH27",GIL_NOV);
Wld_AssignRoomToGuild("PSIH28",GIL_NOV);
Wld_AssignRoomToGuild("PSIH29",GIL_NOV);
Wld_AssignRoomToGuild("PSIH30",GIL_NOV);
Wld_AssignRoomToGuild("PSIH31",GIL_NOV);
Wld_AssignRoomToGuild("PSIH32",GIL_NOV);
Wld_AssignRoomToGuild("PSIH33",GIL_NOV);
Wld_AssignRoomToGuild("PSIH34",GIL_NOV);
Wld_AssignRoomToGuild("PSIH35",GIL_NOV);
Wld_AssignRoomToGuild("PSIH36",GIL_NOV);
};

Widzisz, w tym przytoczonym "func VOID INIT_SUB_PSICAMP ()" brak jest wstawionego "Init_Global();" - bo w funkjcach "func VOID INIT_SUB_" tego nie wstawiamy.

Oprócz tego "Init_Global();" musisz wstawiać praktycznie do każdego zena - czyli Starej Kopalni, Orkowego Cmentarzyska, Wolnej Kopalni i Świątyni Śniącego. To samo jeżeli chcesz wstawić do swojej modyfikacji jakiś nowy świat to musisz dla tego dodanego świata napisać w Startup.d dwie funkcje "func void startup_NazwaTwojegoZena()" oraz "func void init_NazwaTwojegoZena()"

Przykładowo:

Spoiler

func void startup_NazwaTwojegoZena()
{
Wld_InsertNpc (NONE_911_TypowyNPC,"ENTRANCE");
Wld_InsertNpc (wolf,"PATH_2000");
};

func void init_NazwaTwojegoZena()
{
Init_Global();

Wld_SetObjectRoutine(0,0,"OC_FIREPLACE_NazwaTwojegoZena1",1);
Wld_SetObjectRoutine(23,59,"OC_FIREPLACE_NazwaTwojegoZena1",1);

Wld_SetObjectRoutine(0,0,"OC_FIREPLACE_NazwaTwojegoZena2",1);
Wld_SetObjectRoutine(23,59,"OC_FIREPLACE_NazwaTwojegoZena2",1);

B_InitMonsterAttitudes();
B_InitGuildAttitudes();
};

PS: Sam się trochę pieprzyłem z tymi plikami Gothic.src i INTERN.src bo w instrukcji na stronie https://gothic-modding-community.github.io/gmc/pl/zengin/scripts/extenders/ikarus/setup/ chyba założono, że domyślny i niezmodyfikowany plik Gothic.src z Gothic1 wygląda tak samo jak jego odpowiednik z Gothica2. Opisałem na podstawie tego co sam robiłem. Z tego co widzę, to chyba wszystko mi działa. Jeżeli popełniłem jakiś błąd to oczywiście proszę napisać.
50
Skrypty / Trialog
Kirgo2 - 2025-06-29, 12:53 
Dla nowicjuszy
(uzupełnienie do poradnika stworzonego przez @EdekSumo a właściwie to już gotowiec)

W tym szablonie od @EdekSumo wszystko ładnie śmiga.


INSTANCE DIA_NONE_20243_urstonak_witaj   (C_INFO)
{
npc         = NONE_20243_urstonak;//npc główny
nr          = 1;
condition   = DIA_NONE_20243_urstonak_witaj_Condition;
information = DIA_NONE_20243_urstonak_witaj_Info;
important = true;
permanent = FALSE;
};
FUNC INT DIA_NONE_20243_urstonak_witaj_Condition()
{
return TRUE;
};
FUNC VOID DIA_NONE_20243_urstonak_witaj_Info()
{
var C_NPC UrsTonak; UrsTonak = Hlp_GetNpc (NONE_20243_urstonak);//Deklarujemy zmienne npców którzy wezmą udział w rozmowie wraz z npc głównym
var C_NPC Dionis; Dionis = Hlp_GetNpc (none_20246_dionis);//
TRIA_Invite(Dionis);//ta funkcja "zaprasza" npce do dialogu musimy zaprosić wszystkich który mają rozmawiać prócz npca głównego
    TRIA_Start();//ta funkcja rozpoczyna dialog wszystkich npców musimy zaprosić przed tą funkcją bo inaczej chujnia
    TRIA_Next(UrsTonak);// w tej funkcji wybieramy jaki npc ma mówić
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_00");//Stój morra gdzie zmierzasz?
AI_DrawWeapon(hero);
AI_Output (other, self, "DIA_NONE_20243_urstonak_witaj_15_01");//Nie twoja sprawa zawszony orku.
TRIA_Next (Dionis);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
AI_GotoNpc(self, other);
    AI_TurnToNpc(other, self);
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_02");//Spokojnie wędrowcze ten ork nic Ci nie zrobi.
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_03");//W Ignis Order nie musisz się obawiać orków.
AI_RemoveWeapon (hero);
TRIA_Next (UrsTonak);
AI_Output (self, other, "DIA_NONE_20243_urstonak_witaj_15_04");//Tak morra nie wszyscy orkowie pragną Cie zabić.
Log_CreateTopic (TOPIC_IgnisOrder, LOG_MISSION);
Log_SetTopicStatus (TOPIC_IgnisOrder, LOG_RUNNING);
B_LogEntry(TOPIC_IgnisOrder, "Spotkałem przyjaznego orka i niejakiego Dionisa mówił coś o jakimś Ignis Order.");
MIS_IgnisOrder = LOG_RUNNING;
        TRIA_Finish();// ta funkcja kończy cały dialog

};

Dla nowicjuszy, którzy mogą się obawiać tykać jakiekolwiek rzeczy, gdzie pada nazwa IKARUS - ten skrypt od @EdekSumo to liczyć gotowiec. Musicie zrobić właściwie tylko trzy-cztery rzeczy:
1. Ściągnąć tego IKARUSA i chyba LEGO też. Wbrew pozorom to nie jest takie trudne.
2. Teraz możecie użyć śmiało tego skryptu od @EdekSumo
3. Wklejacie go Gothic\_work\DATA\scripts\Content\Story\MISSIONS tak jakbyście wklejali normalny dialog. Co najfajniejsze, możecie gówno znać się na Ikarusie - trialog po prostu jest obsługiwany przez tego Ikarusa zupełnie tak samo jak zwykły dialog jest obsługiwany przez grę
4. Oczywiście musicie teraz ten trialog od @EdekSumo odpowiednio przerobić. Bo przecież w waszym modzie zamiast rozmowy orka UrStonaka, Dionisa i głównego bohatera będzie sobie "trialogował" ktoś inny. Przerabiasz tak jakbyś przerabiał normalny dialog.

Bardzo fajna i prosta rzecz. DZIAŁA DLA GOTHICA I [słownie: Gothica Jedynki :) ]

Jak ktoś się jeszcze cyka to wrzucam swój dialog zrobiony na podstawie szablonu od EdkaSumo z rzeczami zaznaczonymi kolorkami dla czytelności. Oczywiście wszystko robiłem to guzik znając się na IKARUSIE - tylko przeklejając tę rzecz od Edka i dostosowując na swoje potrzeby.

Spoiler

INSTANCE DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess   (C_INFO)
{
   npc         = Tpl_4025_Templer;//npc główny
   nr          = 2;
   condition   = DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_Condition;
   information = DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_Info;
   important   = true;                                    ////////ustawiłem tak sobie ale wy nie musicie
   permanent    = FALSE;                         ////////ustawiłem tak sobie ale wy nie musicie
};
FUNC INT DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_Condition()
{
    if (Npc_KnowsInfo (other, DIA_GorNaSan_HELO1))
    {
    return TRUE;
    };
};

FUNC VOID DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_Info()
{
   var C_NPC GorAkunosh; GorAkunosh = Hlp_GetNpc (Tpl_4025_Templer);//Deklarujemy zmienne npców którzy wezmą udział w rozmowie wraz z npc głównym
   var C_NPC GorNaSan; GorNaSan = Hlp_GetNpc (Tpl_4029_Templer);//
   TRIA_Invite(GorNaSan);//ta funkcja "zaprasza" npce do dialogu musimy zaprosić wszystkich który mają rozmawiać prócz npca głównego
    TRIA_Start();//ta funkcja rozpoczyna dialog wszystkich npców musimy zaprosić przed tą funkcją bo inaczej chujnia
    TRIA_Next(GorAkunosh);// w tej funkcji wybieramy jaki npc ma mówić
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_00");//GorAkunosh coś tam sobie mówi. 

   TRIA_Next (GorNaSan);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_01");//GorNaSan coś sobie mówi.

   TRIA_Next (GorAkunosh);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_02");//GorAkunosh coś tam sobie mówi. 

   TRIA_Next (GorNaSan);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_03");//GorNaSan coś sobie mówi.
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_04");//GorNaSan coś sobie mówi.

   TRIA_Next (GorAkunosh);// za każdym razem jak chcemy zmienić npc trzeba użyć tej funkcji.
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_05");//GorAkunosh coś tam sobie mówi. 
   B_UseFakeScroll();
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_06");//GorAkunosh coś tam sobie mówi. 
   B_UseFakeScroll();
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_07");//GorAkunosh coś tam sobie mówi. 
   AI_Output (self, other, "DIA_Tpl_4025_GorAkunosh_TrialogMissionSuccess_15_08");//GorAkunosh coś tam sobie mówi. 
        TRIA_Finish();// ta funkcja kończy cały dialog
};


Nie muszę chyba dodawać, że ten dialog wrzuciłem do pliku DIA_Tpl_4025_Templer.d w folderze Gothic\_work\DATA\scripts\Content\Story\MISSIONS bo taką instancję posiada "npc główny" (nie mylić z głównym bohaterem!). W tym moim trialogu "npc głównym" był akurat GorAkunosh (Tpl_4025_Templer).

Jakby co to to niniejsze uzupełnienie do poradnika EdkaSumo pisane było pod Gothica I. Jeżeli chodzi o modowanie Gothica II to się nie wypowiem, bo się nie znam. Myślę jednak, że już nie nikt nie powinien mieć problemu ze wstawieniem trialogu do Gothica I.

Pozdro
Do góry