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 2 of 2
  1. Visit Homepage View Forum Posts #1 Reply With Quote
    Lehrling Migos's Avatar
    Join Date
    Mar 2016
    Posts
    40
     
    Migos is offline

    Die Klasse VisualFX verstehen und dokumentieren

    Da ich weder in den Ikarus und LeGo Paketen noch im Forum eine vollständige Doku zur Klasse VisualFX finden konnte, wollte ich hier mal die Schwarmintelligenz anschalten, damit wir das bewältigen können.
    Vielleicht hat sich ja schon jemand die Mühe gemacht und möchte seine Dokumentation hier teilen? Oder jemand hat schon viel rumprobiert und kann zu vielen Funktionen etwas sagen.

    Bisher habe ich alle Methoden von Lehonas Liste rausgeschrieben und ein paar wenige Variablen aus der Gothic Funktionen Tabelle und diese hier sortiert.
    Der Code ist bisher auch nur in C++, da ich gerade am GMP arbeite, aber den Code in Daedalus umzuschreiben sollte nicht schwer sein.
    Ziel soll es sein am Ende eine .d Datei zu haben, die in Ikarus eingebunden werden könnte und eine Übersicht zu den Offsets der einzelnen Member-Variablen und -Methoden bietet.

    Spoiler:(zum lesen bitte Text markieren)
    Code:
    class oCVisualFX : public zCEffect
    {
        oCVisualFX() { } // 0x00489AA0
        virtual ~oCVisualFX(void); // 0x0048A260
    
    private:
        static zCClassDef classDef; // 0x008CE658
    
        static zCObject* _CreateNewInstance(void); // 0x0049A230
        virtual class zCClassDef* _GetClassDef(void) const; // 0x0048A010
    
        virtual void CreateHierachy(void); // 0x0048ADF0
        virtual void DisposeHierachy(void); // 0x0048B0B0
        
        virtual void CreateInvestFX(void); // 0x00491510
        virtual void InitInvestFX(void); // 0x00491690
        virtual void StopInvestFX(void); // 0x00491830
    
        virtual void AdjustShapeToOrigin(); // 0x00498EE0
    
        virtual void CalcPFXMesh(); // 0x00499B60
        virtual void ReleasePFXMesh(void); // 0x00499D10
    
        virtual int CheckDelayedTrigger(); // 0x00498B70
    
        virtual int ProcessCollision(zSVisualFXColl&); // 0x004958D0
        virtual int ProcessQueuedCollisions(void); // 0x00495830
    
        virtual void UpdateActKey(void); // 0x00497300
        virtual void UpdateEffects(void); // 0x004994A0
    
    protected: 
        virtual void InitEffect(void); // 0x004943E0
        virtual void InitValues(void); // 0x0048B820
    
        // executed when VFX projectile collides with world or vob
        void Collide(int i); // 0x00493A00
    
        void CollisionResponse(const zVEC3& vec, int i); // 0x00496380
    
        virtual oCVisualFX* CreateAndCastFX(zSTRING const&, zCVob const*, zCVob const*); // 0x0048EE80
        virtual oCVisualFX* CreateAndCastFX(zSTRING const&, zMAT4 const&); // 0x0048F1E0
    
        virtual void CreateBackup(void); // 0x0048E5F0
    
        virtual void CalcTrajectory(const int); // 0x0048F620
        virtual void DoMovements(void); // 0x00497550
    
        virtual void EndEffect(int); // 0x00494C80
    
        virtual void SetVisualByString(const zSTRING&); // 0x0048C220
    
        virtual int CheckDeletion(); // 0x00496CF0
        virtual void CleanUpCriticalFX(); // 0x0048AC00
    
    public:
        static oCVisualFX* actFX; // 0x008CE7EC
        static zCParser* fxParser; // 0x008CE6EC
    
        /* static methods */
        static void InitParser(void); // 0x0048B3F0
        static void ExitParser(void); // 0x0048B7F0
        static void CreateNewScriptFX(zSTRING const&); //0x0049ADB0
        static void RemoveInstancesOfClass(zCClassDef&, int); // 0x00489A10
        static void SetupAIForAllFXInWorld(void); // 0x004898B0
    
        /* console */
        static int EmConsole_EvalFunc(zSTRING const&, zSTRING&); // 0x0049D180
        static void EmConsole_ParameterChanged(zSTRING const&); // 0x0049C290
        static int FxConsole_EvalFunc(zSTRING const&, zSTRING&); // 0x0049C4D0
        static void FxConsole_ParameterChanged(zSTRING const&); // 0x0049B620
    
        /* processing */
        static void PreSaveGameProcessing(int); // 0x00489A80
        static void PostSaveGameProcessing(void); // 0x00489A90
    
        /* Wld_PlayEffect() */
        // CreateAndPlay from vob to vob
        static oCVisualFX* CreateAndPlay(const zSTRING& _id, const zCVob* _origin, const zCVob* _target = 0, const int _level = 1, const float _damage = 0, const int _damageType = 0, const zBOOL _bIsProjectile = 0); // 0x0048E760
        // CreateAndPlay from position to vob
        static oCVisualFX* CreateAndPlay(const zSTRING& _id, const zVEC3& _originPos, const zCVob* _target = 0, const int _level = 1, const float _damage = 0, const int _damageType = 0, const zBOOL _bIsProjectile = 0); // 0x0048EA80
    
        /* Init */
        virtual void Init(const zCArray<zCVob*>&); // 0x004926A0
        virtual void Init(const zCVob*, const zCVob*, const zCVob*); // 0x00491F20
        virtual void Init(const zCVob*, const zVEC3&); // 0x00491E10
        
        /* Archive */
        virtual void Archive(zCArchiver&); // 0x00499B40
        virtual void Unarchive(zCArchiver&); // 0x00499B50
    
        /* callback */
        virtual void OnTick(void); // 0x00499A20
        
        /* editing */
        virtual void Open(); // 0x004918E0
        virtual void Edit(void); // 0x0049A820
        virtual zSTRING const& GetName(void); // 0x006742F0
        virtual void ParseStrings(void); // 0x0048BE60
        virtual void Reset(); // 0x00491C20
        virtual void ResetForEditing(); // 0x0049E950
        virtual void SetByScript(const zSTRING&); // 0x0048D4B0
    
        /* control */
        virtual void Play(float, const zMAT4*, const zMAT4*); // 0x0048A050
        // stop script (daedalus): 
        // https://forum.worldofplayers.de/foru...1#post25548652 
        // stops the effect instantly
        void Stop(int stop) // must be 1 // 0x00493BE0
        void Kill(); // 0x00493F70
    
        /* key */
        virtual int FindKey(zSTRING const&); // 0x0048E600
        virtual void UpdateFXByEmitterKey(oCEmitterKey*); // 0x0048DDC0
        
        /* visual */
        virtual void SetShowVisual(int); // 0x00494D20
        virtual void SetPFXShapeVisual(zCVisual*, int); // 0x00499DF0
        virtual void SetupEmitterKeysByVisual(void); // 0x0049E8B0
        
        /* settings */
        virtual void SetOrigin(zCVob *, int); // 0x004910F0
        virtual void SetTarget(zVEC3 &, int); // 0x00491450
        virtual void SetTarget(zCVob *, int); // 0x004912E0
        virtual void SetInflictor(zCVob *); // 0x00491220
        virtual void SetLevel(int, int); // 0x00492CB0
    
        virtual zCVob *GetOrigin(); // 0x0048A020
        virtual zCVob *GetTarget(); // 0x0048A030
        virtual zCVob *GetInflictor(); // 0x0048A040
        virtual int GetLevel(); // 0x00493150
        
        // e.g. a fireball is a projectile, firerain isn't
        // @return this->bIsProjectile 
        zBOOL GetIsProjectile(); // 0x0048A1D0
        virtual void SetIsProjectile(int); // 0x0048A1E0
    
        zBOOL IsFinished(); // 0x004942F0
        virtual zBOOL CanBeDeleted(); // 0x004942B0
        virtual zBOOL IsLooping(); // 0x00494370
        virtual void SetDuration(float); // 0x0048A060
    
        /* Collision */
        virtual zBOOL CanThisCollideWith(zCVob*); // 0x00496AC0
        virtual void ReportCollision(const zCCollisionReport &); // 0x00494E80
        virtual void SetCollisionEnabled(int); // 0x0048D330
        virtual void SetCollisionCandidates(zCArray<zCVob *>); // 0x004968E0
        virtual void GetCollisionCandidates(zCArray<zCVob *> &); // 0x0048A070
        virtual int GetNumCollisionCandidates(); // 0x0048A110
        zBOOL GetCollidedCandidates(zCArray<zCVob*>& candidates); // 0x00496A00
        
        /* Damage */
        virtual void SetDamage(float); // 0x0048A120
        virtual void SetDamageType(int); // 0x0048A130
        virtual float GetDamage(); // 0x0048A140
        virtual int GetDamageType(); // 0x0048A150
    
        /* Spell */
        virtual zBOOL IsASpell(); // 0x0048A160
        virtual void SetSpellType(int); // 0x0048A170
        virtual int GetSpellType(); // 0x0048A180
        virtual void SetSpellCat(int); // 0x0048A190
        virtual int GetSpellCat(); // 0x0048A1A0
        virtual int GetSpellTargetTypes(); // 0x0048A1B0
        virtual void SetSpellTargetTypes(int); // 0x0048A1C0
        virtual zBOOL GetSendsAssessMagic(); // 0x0048B350
        virtual void SetSendsAssessMagic(int); // 0x0048B2C0
        virtual void InvestNext(); // 0x00492830
        virtual void Cast(int); // 0x00493160
    
        // operator delete(void*); // 0x00474E50
    };
    [Bild: spineSignature.php?name=Migos]
    Besuche das legendäre Absinth-Skelett auf https://www.jharkendar.de/

  2. Visit Homepage View Forum Posts #2 Reply With Quote
    Lehrling Migos's Avatar
    Join Date
    Mar 2016
    Posts
    40
     
    Migos is offline
    Nützliche Erkenntnis:
    Mir ist gerade eingefallen, dass VisualFX ja auch von zCEffect erbt (eigtl eine leere Klasse), die wiederrum von zCVob erbt. Heißt: Man kann für diese Klasse auch alle public Vob-Methoden und Attribute nutzen. Habe das gerade mit Positionsabfragen probiert und das funktioniert wunderbar!
    [Bild: spineSignature.php?name=Migos]
    Besuche das legendäre Absinth-Skelett auf https://www.jharkendar.de/

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