Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Results 1 to 7 of 7
  1. View Forum Posts #1 Reply With Quote
    Legende der Amazonen Bisasam's Avatar
    Join Date
    Dec 2006
    Location
    Meine Faust in Sinis Gesicht
    Posts
    8,905
     
    Bisasam is offline

    G1 Barriere ABschalten?

    Hallo,

    ich habe ein neues Outdoor-Level mit namen Survival_Beginning.zen. Obwohl das Wort "World" nicht im Namen vorkommt, wird trotzdem der Barriere-Himmelseffekt auf das Level angewendet.
    Ich will das aber nicht, da die Barriere nicht zum Layout meiner neuen Welt passt. Die Grenzwarnungen wie das blaue Leuchten und der Tod werden übrigens nicht ausgeführt. Nur der Himmelseffekt.

    In der Minemod gibts ja die vereiste Freie Mine als Outdoor und da hab ich noch nie ne Barriere gesehen. Damals gabs noch gar kein LeGo und Ikarus. Irgendwo muss man das also ganz einfach abschalten können. Nur wo?


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

  2. View Forum Posts #2 Reply With Quote
    Ranger
    Join Date
    Feb 2017
    Posts
    147
     
    F a w k e s is offline
    Hi Bisasam,
    You can use LeGo DisableEngineFunc - just tested and it's working:
    Code:
    //006307C0  .text     Debug data           ?Render@oCBarrier@@QAEHAAUzTRenderContext@@HH@Z
    const int oCBarrier__Render        = 6490048;
    
    //0x006B9F30 public: int __thiscall oCBarrier::Render(struct zTRenderContext &,int,int)
    
    DisableEngineFunc (oCBarrier__Render, 3);
    edit:
    Just found a post explaining how to disable also effect of warning:
    https://themodders.org/index.php?top...294#msg1340294
    Last edited by F a w k e s; 03.11.2019 at 12:24.

  3. View Forum Posts #3 Reply With Quote
    General lali's Avatar
    Join Date
    Feb 2016
    Posts
    3,574
     
    lali is offline
    Quote Originally Posted by Bisasam View Post
    Hallo,

    ich habe ein neues Outdoor-Level mit namen Survival_Beginning.zen. Obwohl das Wort "World" nicht im Namen vorkommt, wird trotzdem der Barriere-Himmelseffekt auf das Level angewendet.
    Ich will das aber nicht, da die Barriere nicht zum Layout meiner neuen Welt passt. Die Grenzwarnungen wie das blaue Leuchten und der Tod werden übrigens nicht ausgeführt. Nur der Himmelseffekt.

    In der Minemod gibts ja die vereiste Freie Mine als Outdoor und da hab ich noch nie ne Barriere gesehen. Damals gabs noch gar kein LeGo und Ikarus. Irgendwo muss man das also ganz einfach abschalten können. Nur wo?
    Wenns nichts ist außer die Optik, könntest du auch einfach die Barrierentextur transparent machen, aber Fawkes und withmortem haben da wohl bessere Lösungen. Die Frage ist nur, ob du den Barriereneffekt in einer anderen Welt brauchst und er nur in dieser Welt weg sein soll? Dann wirds bestimmt komplizierter.

  4. View Forum Posts #4 Reply With Quote
    Ranger
    Join Date
    Feb 2017
    Posts
    147
     
    F a w k e s is offline
    Quote Originally Posted by lali View Post
    Wenns nichts ist außer die Optik, könntest du auch einfach die Barrierentextur transparent machen, aber Fawkes und withmortem haben da wohl bessere Lösungen. Die Frage ist nur, ob du den Barriereneffekt in einer anderen Welt brauchst und er nur in dieser Welt weg sein soll? Dann wirds bestimmt komplizierter.
    You can also hook render function and decide whether you want to have barrier visible or not
    Code:
    //006307C0  .text     Debug data           ?Render@oCBarrier@@QAEHAAUzTRenderContext@@HH@Z
    const int oCBarrier__Render        = 6490048;
    
    class oCBarrier_G2A {
        var int skySphereMesh;             //zCMesh*    
    
        var int myPolyList;                  //myPoly*    
        var int myVertList;                //myVert*    
    
        var int numMyVerts;                //int        
        var int numMyPolys;                //int        
    
        var int myThunderList;             //myThunder* 
        var int numMaxThunders;            //int        
        var int numMyThunders;             //int        
    
        var int actualIndex;               //int        
        var int rootBoltIndex;             //int        
    
        var int startPointList1[10];       //int        
        var int numStartPoints1;           //int        
        var int startPointList2[10];       //int        
        var int numStartPoints2;           //int        
        var int startPointList3[10];       //int        
        var int numStartPoints3;           //int        
        var int startPointList4[10];       //int        
        var int numStartPoints4;           //int        
    
        var int topestPoint;               //int        
    
        var int bFadeInOut;                //zBOOL      
        var int fadeState;                 //int        
    
        var int fadeIn;                    //zBOOL      
        var int fadeOut;                   //zBOOL      
        var int bFlashing;                 //zBOOL         
        var int fFlashTime;                //float         
    
        var int sfx1;                      //zCSoundFX*
        var int sfxHandle1;                //zTSoundHandle 
        var int sfx2;                      //zCSoundFX*
        var int sfxHandle2;                //zTSoundHandle 
        var int sfx3;                      //zCSoundFX*
        var int sfxHandle3;                //zTSoundHandle 
        var int sfx4;                      //zCSoundFX*
        var int sfxHandle4;                //zTSoundHandle 
    
        var int thunderStartDecal;         //zCDecal*
    
        var int activeThunder_Sector1;     //zBOOL               
        var int activeThunder_Sector2;     //zBOOL               
        var int activeThunder_Sector3;     //zBOOL               
        var int activeThunder_Sector4;     //zBOOL            
    
        var int originalTexUVList;         //zVEC2*      
    };
    
    FUNC VOID _HOOK_BARRIER_RENDER ()
    {
        var oCBarrier_G2A Barrier;
        
        Barrier = _^ (ECX);
        
        if (disableBarrierCondition)
        {
            Barrier.fadeState = 0; //fadeState = 0 - barrier is invisible
        };
    };
    
    HookEngine (oCBarrier__Render, 6, "_HOOK_BARRIER_RENDER");

  5. View Forum Posts #5 Reply With Quote
    Legende der Amazonen Bisasam's Avatar
    Join Date
    Dec 2006
    Location
    Meine Faust in Sinis Gesicht
    Posts
    8,905
     
    Bisasam is offline
    Thanks for your help. I'll use the disable-function!


    "Das erinnert doch sehr erfreulich an das, was man sich als Gothicfan wünscht!"
    -Korallenkette

  6. View Forum Posts #6 Reply With Quote
    Ranger
    Join Date
    Feb 2017
    Posts
    147
     
    F a w k e s is offline
    Just for the sake of completion - seems like there is one more option - you can scale barrier mesh in game:
    Code:
    FUNC VOID zCMesh_Scale (var int ptr, var int fx, var int fy, var int fz)
    {
        //005535E0  .text     Debug data           ?Scale@zCMesh@@QAEXMMM@Z
        const int zCMesh__Scale = 5584352;
        
        //0x0056AF90 public: void __thiscall zCMesh::Scale(float,float,float)
        CALL_FloatParam (fz);
        CALL_FloatParam (fy);
        CALL_FloatParam (fx);
        
        CALL__thiscall (ptr, zCMesh__Scale);
    };
    
    //Run this once per session
    zCMesh_Scale (Barrier.skySphereMesh, divf (mkf (15), mkf(100)), divf (mkf (15), mkf(100)), divf (mkf (15), mkf(100)));

    Short video showing scaling in action - not perfect, as it seems to me like scaling speeds up texture animation. Also it seems to me that Barrier is always rendered only on Skybox - so even though that technically Castle is under barrier - barrier is drawn 'behind' Castle
    [Video]

  7. View Forum Posts #7 Reply With Quote
    Provinzheld
    Join Date
    Mar 2010
    Location
    Berlin
    Posts
    201
     
    withmorten is offline
    Wooot! When I tried this with zCMesh::Scale out it didn't work at all (in G2).

    I recently wrote the same code I did for barrier management in G2 for G1 as well, so it's now fully customizable with fadeout etc as well. I also incorporated your ever looming barrier idea Will be releasing that soon.

    The simplest way to disable the visible part of the barrier is by removing the magicfrontier_out mesh. If it can't find it, the mesh pointer will stay NULL and since oCBarrier::Render checks if that pointer is NULL before doing anything whatsoever it's a simple way to disable it.

    But that doesn't disable the magicfrontier part that kills you.

    Afaik Systempack.ini for G1 has options to disable both of these parts in the [Barrier] section of it. Might be worth checking out.

    Re: Scaling: You'd also need to scale the point list that oCMagFrontier:oCheck uses to see whether you should be hit by it or not ...

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide