|
-
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
-
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
Geändert von F a w k e s (03.11.2019 um 11:24 Uhr)
-
Zitat von Bisasam
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.
-
Zitat von lali
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");
-
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
-
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]
-
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 ...
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|
|