Ostatnie wiadomości

Ja bym zrobił to chyba tak:
1. Dialog z jakąś postacią. W tym dialogu wstawić

JakaśRzecz = Wld_GetDay();
2. Drugi dialog z tą postacią lub inną. Dialog ten ustawić na IMPORTANT żeby postać sama do nas zagadywała i w tym dialogu dać to co chcemy wywołać (np. zmianę rutyny u jakiejś innej postaci).

Ewentualnie próbowałbym poeksperymentować z podczepieniem tych rzeczy pod coś co każdy gracz będzie musiał prędzej czy później kliknąć - np. pod PC_Sleep w Sleepabit.d albo wypicie mikstury zdrowia.
A masz jakiś pomysł jak wywołać jakieś zdarzenie w świecie po upływie tych 2 dni? Np, że npc zmieni rutynę itp. Próbowałem podpiąć ten warunek Wld_GetDay pod wyzwalacz poklatkowy, ale nie zadziałało w ogóle.
Krótki poradnik na temat tego jak ustawić by dana postać odezwała się do nas dopiero za kilka dni. Sam pierdzieliłem się z ustawianiem tego zdecydowanie zbyt długo, więc może jakiemuś podobnemu świeżakowi oszczędzę podrzucając gotowca.


1. Najłatwiej opisywaną rzecz zrobić biorąc za wzór dialog ze Świstakiem.

Whistler_BuyMySword_Day = Wld_GetDay();
2. To coś wyżej rozpoczyna odliczanie. Dzieli się na "Whistler_BuyMySword_Day" i "Wld_GetDay". To pierwsze zmieniamy na to na co chcemy zmienić, a to drugie zostawiamy. Zróbmy więc sobie przykładowo:

JozekJeKielbaseIpowieNamCzyBylaDobra = Wld_GetDay();
3. Teraz to nasze "JozekJeKielbaseIpowieNamCzyBylaDobra" trzeba wpisać do pliku Story_Globals.d w folderze Gothic\_work\DATA\scripts\Content\Story

var int JozekJeKielbaseIpowieNamCzyBylaDobra;


5. A teraz najważniejsze: jak zrobić by warunek zadziałał tak jak chcemy

if (JozekJeKielbaseIpowieNamCzyBylaDobra <= (Wld_GetDay() - 2))To jest warunek, że coś się stanie PO UPŁYWIE dwóch (?) dni



(JozekJeKielbaseIpowieNamCzyBylaDobra > (Wld_GetDay() - 2))To jest warunek, że coś się stanie ZANIM UPŁYNĄ dwa (?) dni



I tyle. Jak jesteś nowicjuszem to lepiej ze znakami ">" i "<" nie kombinować, bo te znaki na gruncie skryptów Gothica rządzą się chyba jakąś własną ezoteryczną logiką, więc można dostać nerwicy i zmarnować od groma czasu na zabawę z tym szajsem. Po prostu weź z działającego gotowca i miej to z głowy :)
III tura właśnie wystartowała. Ilość poprawek była większa niż się spodziewałem więc trochę to trwało.

https://www.youtube.com/watch?v=9lIZufgE2Vk

[PL] Mroczne Tajemnice 2.5 Unofficial Rebalance - przedpremierowy Q&A-live!
26 cze 2025, 17:00
15
func void EndlessNight ()
{
var int ptr; ptr = MEM_InstToPtr (MEM_SkyController);
var int skystateslist; skystateslist = MEM_ReadInt (ptr+316);
ptr = MEM_ReadIntArray (skystateslist, 4);

var int R_poly; R_poly = MEM_ReadInt (ptr+4);
var int G_poly; G_poly = MEM_ReadInt (ptr+8);
var int B_poly; B_poly = MEM_ReadInt (ptr+12);

var int R_fog; R_fog = MEM_ReadInt (ptr+16);
var int G_fog; G_fog = MEM_ReadInt (ptr+20);
var int B_fog; B_fog = MEM_ReadInt (ptr+24);

var int i; i = 0;

repeat (i, 7);
ptr = MEM_ReadIntArray (skystateslist, i);
MEM_WriteInt (ptr+4, R_poly);
MEM_WriteInt (ptr+8, G_poly);
MEM_WriteInt (ptr+12, B_poly);
MEM_WriteInt (ptr+16, R_fog);
MEM_WriteInt (ptr+20, G_fog);
MEM_WriteInt (ptr+24, B_fog);
end;
};

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 :)
@frN i @Gother Dobra, rozgryzłem. frN mnie naprowadził, że parsowałem wyłącznie plik Gothic.src.

Rozwiązanie było głupio proste. Zamiast parsować przez Spacera po prostu trzeba było puścić GothicStarter_mod.exe znajdujący się w folderze Gothic\system. Jako początkujący modder z ostrożności wolałem parsować przez Spacera bo wiedziałem, że przed parsowaniem trzeba usunąć pliki OU.csl i OU.bin a w przypadku parsowania przez GothicStarter_mod.exe nie wiedziałem czy nie trzeba czego analogicznie usuwać by się nie duplikowało.

Temat do zamknięcia. Oczywiście dziękuję obu Panom i leci po propsie.
Po pierwsze nie wiem czemu robisz sobie taką krzywdę i używasz spacera do parsowania skryptów, po drugie parsujesz tylko gothic.src (gothic.dat) czyli nie parsujesz w ogóle visualfx/particlefx to nic dziwnego, że nie ma twoich zmian w grze.
@frN W Spacerze biorę "Reparse Scriptfiles" i zaznaczam "Gothic.src".
Jak parsujesz skrypty? Bo to raczej wygląda na to, że parsujesz tylko gothic.dat, a pozostałych już nie.
Co do umieszczenia we właściwym folderze i tekstur w formacie TEX to powinno się zgadzać
Spoiler
MFX_MagicCloud.tga i LIGHTNING_BIG_A0.TGA są w Gothic\_work\DATA\TEXTURES\Effects\Magic

MFX_MAGICCLOUD-C.TEX i LIGHTNING_BIG_A0-C.TEX są w Gothic\_work\DATA\TEXTURES\_COMPILED

LIGHTNING_BIG_A0.TGA i LIGHTNING_BIG_A0-C.TEX to są rzeczy oryginalnie występujące w Gothic 1 i ich nie ruszałem.

Tekstury więc występują także w wersji skompilowanej i z tego co widzę to we właściwych lokacjach.

DX11, texturepacków czy innych dodatków, które mogłyby wpływać na tekstury czy efekt, który próbuję dodać nie używam. Dla jasności, plik Textures.vdf w folderze Gothic\Data mam zmieniony na Textures.vdf.disabled, więc to nie to.

Tak jak mi poradziłeś spróbowałem dokleić Wld_PlayEffect("spellFX_INCOVATION_RED",  self, self, 0, 0, 0, FALSE ); do sprawdzonych dialogów ale też się nie udało. Dla porównania dokleiłem do nich potem efekt z trzęsieniem ziemi Wld_PlayEffect("FX_EarthQuake",  self, self, 0, 0, 0, FALSE ); i efekt z trzęsieniem ziemi działał zaś ten z czerwoną falą nie działał.

Wydaje mi się, że problemem jest to, że pliki VISUALFX.DAT i PARTICLEFX.DAT w moim modzie czegoś tak jakby nie zasysały. Już tłumaczę co mam na myśli.

Porównałem pliki VISUALFX.DAT z Gothica II i mojego moda do Gothica 1. W tym z Gothica II jest taki wycinek odnoszący się do "INVOCATION" (Piranie w plikach przekręcają ten wyraz też na "INCOVATION")

    0AT                    INVOCATION_RED
˙˙˙˙   ˙10252
    0A                   EFIXED
˙˙˙˙   ˙10253
    0A   č  }            BIP01
˙˙˙˙   ˙10254
    0A           (w        REDAMBIENCE
˙˙˙˙   ˙10255
    0At                    SFX_Circle
˙˙˙˙   ˙10256
    0A                   mINVOCATION_GREEN
˙˙˙˙   ˙10257
    0A   č               FIXED
˙˙˙˙   ˙10258
    0A           xf        BIP01
˙˙˙˙   ˙10259
    0AA                    POISON
˙˙˙˙   ˙10260
    0A                    SFX_Circle
˙˙˙˙   ˙10261
    0A   č  PR            INVOCATION_BLUE
˙˙˙˙   ˙10262
    0A                    FIXED
˙˙˙˙   ˙10263
    0Ao                    BIP01
˙˙˙˙   ˙10264
    0A                   "REDAMBIENCE
˙˙˙˙   ˙10265
    0A   č  0             SFX_Circle
˙˙˙˙   ˙10266
    0A                    INVOCATION_VIOLET
˙˙˙˙   ˙10267
    0AR                    FIXED
˙˙˙˙   ˙10268
    0A                   {BIP01
˙˙˙˙   ˙10269
    0A   č  8             CATACLYSM
˙˙˙˙   ˙10270
    0A           `0        SFX_Circle
˙˙˙˙   ˙10271
    0Ae                    INVOCATION_WHITE
˙˙˙˙   ˙10272
    0A                   NFIXED

oraz

     pA  Ř”     [  q   Ž  R      SPELLFX_INCOVATION_RED
     pA    ž     \  ö   Ş  R      SPELLFX_INCOVATION_GREEN
     pA  řD¨     ]  ő   ň  R      SPELLFX_INCOVATION_BLUE
     pA    ˛      ^ ř   :  R      SPELLFX_INCOVATION_VIOLET
     pA  ŘĽ     _  ú   ‚  R      SPELLFX_INCOVATION_WHITE

Tego czegoś nie ma w VISUALFX.DAT mojej modyfikacji, więc tak jakby ten VISUALFX.DAT z mojej modyfikacji czegoś nie "zassał". To jest fragment zassany z Visualfxinst.d


To samo z w przypadku PARTICLEFX.DAT. Plik PARTICLEFX.DAT z Gothica II zawiera fragment, którego brak w pliku PARTICLEFX.DAT z mojego moda.

     pA    ű     ‹ö  w   R *     INVOCATION
     `@       %   ÷  !  -R       INVOCATION_RED
     pA    '      'ű  s   ¤S 1     INVOCATION_WHITE
     pA    -      śű  }   ŔS 1     INVOCATION_BLUE
     pA    3      ü  t   ÜS 1     INVOCATION_GREEN
     pA    9      ‘ü  y   řS 1     INVOCATION_VIOLET

Więc jak mówiłem tak jakby pliki VISUALFX.DAT i PARTICLEFX.DAT w moim modzie czegoś nie zasysały.

Do góry