[G1] Problem z przeniesieniem efektu wizualnego z G2 do G1 1073 8

O temacie

Autor Kirgo2

Zaczęty 18.06.2025 roku

Wyświetleń 1073

Odpowiedzi 8

Kirgo2

Kirgo2

Użytkownicy
posty49
Propsy6
ProfesjaGracz
  • Użytkownicy
Hejka. Próbuję przenieść pewien efekt wizualny z Gothic 2 do Gothic 1. Efekt ten ma być związany z rutyną danej postaci - przenoszę z Gothica 2 rutynę "zs_circle", czyli tę rutynę ktorą wykonują poszukiwacze nad okiem Innosa w kamiennym kręgu. Rutyna działa tylko mam problem, że nie działa ten efekt wizualny z czarem.

Poniżej opiszę co dokładnie zrobiłem.


1. Wkleiłem do Visualfxinst.d w Gothic\_work\DATA\scripts\system\VISUALFX to:


///    XXXXXXXXXXXXXXXXXXXXXXXXXXX
///    XX  I N V O C A T I O N  XX
///    XXXXXXXXXXXXXXXXXXXXXXXXXXX

INSTANCE spellFX_INCOVATION_RED (CFx_Base_Proto)
{
visname_S = "INVOCATION_RED";
emtrjmode_s = "FIXED";
emTrjOriginNode = "BIP01";
lightpresetname = "REDAMBIENCE";
    sfxid = "SFX_Circle";
      sfxisambient = 1;
};

INSTANCE spellFX_INCOVATION_GREEN (CFx_Base_Proto)
{
visname_S = "INVOCATION_GREEN";
emtrjmode_s = "FIXED";
emTrjOriginNode = "BIP01";
lightpresetname = "POISON";
    sfxid = "SFX_Circle";
      sfxisambient = 1;
};

INSTANCE spellFX_INCOVATION_BLUE (CFx_Base_Proto)
{
visname_S = "INVOCATION_BLUE";
emtrjmode_s = "FIXED";
emTrjOriginNode = "BIP01";
lightpresetname = "REDAMBIENCE";
    sfxid = "SFX_Circle";
      sfxisambient = 1;
};

INSTANCE spellFX_INCOVATION_VIOLET (CFx_Base_Proto)
{
visname_S = "INVOCATION_VIOLET";
emtrjmode_s = "FIXED";
emTrjOriginNode = "BIP01";
lightpresetname = "CATACLYSM";
    sfxid = "SFX_Circle";
      sfxisambient = 1;
};

INSTANCE spellFX_INCOVATION_WHITE (CFx_Base_Proto)
{
visname_S = "INVOCATION_WHITE";
emtrjmode_s = "FIXED";
emTrjOriginNode = "BIP01";
lightpresetname = "WHITEBLEND";
    sfxid = "SFX_Circle";
      sfxisambient = 1;
};


2. Wkleiłem w PFXMagic.d w Gothic\_work\DATA\scripts\system\PFX to:


PROTOTYPE INVOCATION (C_PARTICLEFX)
{
     ppsvalue = 30;
     ppsscalekeys_s = "1 1 2 2 2 3 3 4 4 5";
     ppsissmooth = 1;
     ppsfps = 3;
     shptype_s = "CIRCLE";
     shpfor_s = "WORLD";
     shpoffsetvec_s = "0 0 0";
     shpdistribtype_s = "RAND";
     shpdim_s = "120";
     shpscalekeys_s = "1 2 3 4 5 6 7 8 9 10";
     shpscaleissmooth = 1;
     shpscalefps = 3;
     dirmode_s = "RAND";
     dirfor_s = "object";
     diranglehead = 90;
     dirangleheadvar = 45;
     dirangleelev = 90;
     dirangleelevvar = 45;
     velavg = 0.100000001;
     lsppartavg = 1500;
     lsppartvar = 300;
     flygravity_s = "0 0.00008 0";
     visname_s = "MFX_MAGICCLOUD.TGA";
     visorientation_s = "VELO";
     vistexisquadpoly = 1;
     vistexanifps = 25;
     vistexaniislooping = 2;
     vistexcolorstart_s = "255 0 0";
     vistexcolorend_s = "255 0 0";
     vissizestart_s = "20 20";
     vissizeendscale = 20;
     visalphafunc_s = "ADD";
     visalphastart = 255;
     trltexture_s = "LIGHTNING_BIG_A0.TGA";
};

INSTANCE INVOCATION_RED  (INVOCATION)
{
vistexcolorstart_s = "255 0 0";
    vistexcolorend_s = "255 0 0";
};

INSTANCE INVOCATION_WHITE  (INVOCATION)
{
vistexcolorstart_s = "255 255 255";
    vistexcolorend_s = "255 255 255";
};

INSTANCE INVOCATION_BLUE  (INVOCATION)
{
vistexcolorstart_s = "0 0 255";
    vistexcolorend_s = "0 0 255";
};

INSTANCE INVOCATION_GREEN  (INVOCATION)
{
vistexcolorstart_s = "0 200 200";
    vistexcolorend_s = "0 200 200";
};

INSTANCE INVOCATION_VIOLET  (INVOCATION)
{
vistexcolorstart_s = "200 0 255";
    vistexcolorend_s = "255 0 200";
};

3. Pliki z teksturami MFX_MAGICCLOUD.TGA, LIGHTNING_BIG_A0.TGA, MFX_MAGICCLOUD-C.TEX i LIGHTNING_BIG_A0-C.TEX znajdują się na właściwym miejscu

4. Wstawiłem też rutynę. Rutyna ładnie działa z małym acz znaczącym zastrzeżeniem...

// ************************************
// ZS_Circle für Auge Innos Beschwörung
// ************************************


func void ZS_Circle ()
{
B_SetPerception(self);

// ------ PercTime überschreiben ------
Npc_SetPercTime (self, 0.3);


AI_StandUp (self);
AI_SetWalkmode (self,NPC_WALK); // Walkmode für den Zustand
AI_GotoWP (self, self.wp); // Gehe zum Tagesablaufstart
AI_AlignToWP (self);
};

func int ZS_Circle_Loop ()
{
var int randy;

if (self.guild == GIL_DEMON)
{
randy = Hlp_Random (1000);

if (Npc_GetStateTime(self) > randy)
{
Wld_PlayEffect("FX_EarthQuake",  self, self, 0, 0, 0, FALSE );
Npc_SetStateTime (self, 0);
Wld_PlayEffect("spellFX_INCOVATION_RED",  self, self, 0, 0, 0, FALSE );
AI_PlayAni (self,"T_PRACTICEMAGIC5");
};
};

return LOOP_CONTINUE;
};

func void ZS_Circle_End ()
{

};

5. I teraz przechodzimy do sedna: NPC, któremu przypisano rutynę wykonuje magiczny gest ciałem, efekt trzęsienia ziemi występuje też ładnie ale... no właśnie. Nie ma tego czerwonego efektu od czaru. i w tym właśnie tkwi problem.

Oczywiście zreparsowałem plik Gothic.src.

Bardzo prosiłbym o jakieś wskazówki jak rozwiązać ten problem.
 

Gother

Gother

Użytkownicy
Nieskromny Mistrz Gothica
posty457
Propsy260
ProfesjaScenarzysta
  • Użytkownicy
  • Nieskromny Mistrz Gothica
Efekt z Visualfx. Tego typu zniekształcenia ekranu jak podczas opętania poszukiwaczy czy wypalenia ziela w G1 nie egzystują.
Jesteś pewien, że wciąż chcesz modować tę część?
 

Kirgo2

Kirgo2

Użytkownicy
posty49
Propsy6
ProfesjaGracz
  • Użytkownicy
@Gother Nie do końca zrozumiałem.

Próbuję dodać tę czerwoną falę z rutyny a nie efekty zniekształcenia ekranu występujące podczas rozmowy z poszukiwaczem.
 

Gother

Gother

Użytkownicy
Nieskromny Mistrz Gothica
posty457
Propsy260
ProfesjaScenarzysta
  • Użytkownicy
  • Nieskromny Mistrz Gothica
Więc chodzi ci o efekt czarowania magów nad okiem innosa w słonecznym kręgu, przy czym chcesz aby był czerwony. Źle zrozumiałem gdy wmieszałeś w to poszukiwaczy.
W takim razie efekt wizualny będzie działać w G1. Wrzuciłem:
Wld_PlayEffect("spellFX_INCOVATION_RED",  self, self, 0, 0, 0, FALSE );do dialogu Diego i jest:
https://zapodaj.net/plik-Gl1y6XjZJY
https://zapodaj.net/plik-klLuEFAwy8

Czemu u ciebie nie działa? Może tekstury nieskompilowane, w niewłaściwym folderze jednak.
Może masz poinstalowane jakieś dodatkowe addony typu directx 11 (sam directx nie lubi się z niektórymi efektami cząsteczkowymi).
Na początku polecam zobaczyć czy efekt odpali się w sprawdzonym skrypcie jak u mnie.
 

Kirgo2

Kirgo2

Użytkownicy
posty49
Propsy6
ProfesjaGracz
  • Użytkownicy
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.

 

frN

frN

Użytkownicy
posty59
Propsy28
ProfesjaGracz
  • Użytkownicy
Jak parsujesz skrypty? Bo to raczej wygląda na to, że parsujesz tylko gothic.dat, a pozostałych już nie.
 

Kirgo2

Kirgo2

Użytkownicy
posty49
Propsy6
ProfesjaGracz
  • Użytkownicy
@frN W Spacerze biorę "Reparse Scriptfiles" i zaznaczam "Gothic.src".
 

frN

frN

Użytkownicy
posty59
Propsy28
ProfesjaGracz
  • Użytkownicy
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.
 

Kirgo2

Kirgo2

Użytkownicy
posty49
Propsy6
ProfesjaGracz
  • Użytkownicy
@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.
 


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