Prosty dostęp do enginowej klasy oCNpc 3641 1

O temacie

Autor inż. Avallach

Zaczęty 30.01.2011 roku

Wyświetleń 3641

Odpowiedzi 1

inż. Avallach

inż. Avallach

Administrator
Czego pragniesz?
posty7389
Propsy4726
Nagrody
ProfesjaProgramista
  • Administrator
  • Czego pragniesz?

inż. Avallach
Administrator

Prosty dostęp do enginowej klasy oCNpc
2011-01-30, 15:58(Ostatnia zmiana: 2012-07-12, 16:43)
NicoDE z Piranha Bytes udostępnił na potrzeby moddingu strukturę wykorzystywanej przez silnik klasy oCNpc (której okrojoną wersją jest c_npc) w Daedalusie, tak że za pomocą skryptów i funkcji Hlp_GetNPC można uzyskiwać dostęp do jej wartości i osiągać efekty będące poza zasięgiem zwykłych skryptów.

Wersja dla G1:
Spoiler
//
// Only for demonstration purposes. Usage at your own risk.
// Only for Gothic I version 1.08k_mod (current Player-Kit)
//

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                                  zCObject                                  //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

//NOTE: Bit field mask consts:     BitCount    FirstBit
const int zCObject_hashIndex = ((1 << 16) - 1) << 0;

class zCObject {
    var int    vfptr;          // 0x0000
    var int    refCtr;         // 0x0004 int
    var int    hashIndex;      // 0x0008 zWORD
    var int    hashNext;       // 0x000C zCObject*
    var string objectName;     // 0x0010 zSTRING
};
const int zCObject_Size = 36;  // 0x0024

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                                   zCVob                                    //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

const int zCVob_bitfield0_showVisual                = ((1 << 1) - 1) <<  0;
const int zCVob_bitfield0_drawBBox3D                = ((1 << 1) - 1) <<  1;
const int zCVob_bitfield0_visualAlphaEnabled        = ((1 << 1) - 1) <<  2;
const int zCVob_bitfield0_physicsEnabled            = ((1 << 1) - 1) <<  3;
const int zCVob_bitfield0_staticVob                 = ((1 << 1) - 1) <<  4;
const int zCVob_bitfield0_ignoredByTraceRay         = ((1 << 1) - 1) <<  5;
const int zCVob_bitfield0_collDetectionStatic       = ((1 << 1) - 1) <<  6;
const int zCVob_bitfield0_collDetectionDynamic      = ((1 << 1) - 1) <<  7;
const int zCVob_bitfield0_castDynShadow             = ((1 << 2) - 1) <<  8;
const int zCVob_bitfield0_lightColorStatDirty       = ((1 << 1) - 1) << 10;
const int zCVob_bitfield0_lightColorDynDirty        = ((1 << 1) - 1) << 11;
const int zCVob_bitfield1_isInMovementMode          = ((1 << 2) - 1) <<  0;
const int zCVob_bitfield2_sleepingMode              = ((1 << 2) - 1) <<  0;
const int zCVob_bitfield2_mbHintTrafoLocalConst     = ((1 << 1) - 1) <<  2;
const int zCVob_bitfield2_mbInsideEndMovementMethod = ((1 << 1) - 1) <<  3;
const int zCVob_bitfield3_visualCamAlign            = ((1 << 2) - 1) <<  0;
const int zCVob_bitfield4_collButNoMove             = ((1 << 8) - 1) <<  0;
const int zCVob_bitfield4_dontWriteIntoArchive      = ((1 << 1) - 1) <<  8;

class zCVob {
//  zCObject {
        var int    vfptr;
        var int    refCtr;
        var int    hashIndex;
        var int    hashNext;
        var string objectName;
//  }
    var int        globalVobTreeNode;         // 0x0024 zCTree<zCVob>*
    var int        lastTimeDrawn;             // 0x0028 zTFrameCtr
    var int        lastTimeCollected;         // 0x002C zDWORD
//  zCArray<zCBspLeaf*> vobLeafList {
        var int    vobLeafList_array;         // 0x0030 zCBspLeaf**
        var int    vobLeafList_numAlloc;      // 0x0034 int
        var int    vobLeafList_numInArray;    // 0x0038 int
//  }
    var int        trafoObjToWorld[16];       // 0x003C zMATRIX4
//  zTBBox3D bbox3D {
        var int    bbox3D_mins[3];            // 0x007C zPOINT3
        var int    bbox3D_maxs[3];            // 0x0088 zPOINT3
//  }
//  zCArray<zCVob*> touchVobList {
        var int    touchVobList_array;        // 0x0094 zCVob**
        var int    touchVobList_numAlloc;     // 0x0098 int
        var int    touchVobList_numInArray;   // 0x009C int
//  }
    var int        type;                      // 0x00A0 zTVobType
    var int        groundShadowSizePacked;    // 0x00A4 zDWORD
    var int        homeWorld;                 // 0x00A8 zCWorld*
    var int        groundPoly;                // 0x00AC zCPolygon*
    var int        callback_ai;               // 0x00B0 zCAIBase*
    var int        trafo;                     // 0x00B4 zMATRIX4*
    var int        visual;                    // 0x00B8 zCVisual*
    var int        visualAlpha;               // 0x00BC zREAL
    var int        rigidBody;                 // 0x00C0 zCRigidBody*
    var int        lightColorStat;            // 0x00C4 zCOLOR
    var int        lightColorDyn;             // 0x00C8 zCOLOR
    var int        lightDirectionStat[3];     // 0x00CC zVEC3
    var int        vobPresetName;             // 0x00D8 zSTRING*
    var int        eventManager;              // 0x00DC zCEventManager*
    var int        nextOnTimer;               // 0x00E0 zREAL
    var int        vob_bitfield[5];           // 0x00E4 zCVob_bitfieldX_Xxx
    var int        m_poCollisionObjectClass;  // 0x00F8 zCCollisionObjectDef*
    var int        m_poCollisionObject;       // 0x00FC zCCollisionObject*
};
const int zCVob_Size = 256;                   // 0x0100

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                                   oCNpc                                    //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

const int oCMagFrontier_bitfield_isWarning  = ((1 << 1) - 1) << 0;
const int oCMagFrontier_bitfield_isShooting = ((1 << 1) - 1) << 1;

const int oCNpc_bitfield0_showaidebug          = ((1 <<  1) - 1) <<  0;
const int oCNpc_bitfield0_showNews             = ((1 <<  1) - 1) <<  1;
const int oCNpc_bitfield0_csAllowedAsRole      = ((1 <<  1) - 1) <<  2;
const int oCNpc_bitfield0_isSummoned           = ((1 <<  1) - 1) <<  3;
const int oCNpc_bitfield0_respawnOn            = ((1 <<  1) - 1) <<  4;
const int oCNpc_bitfield0_movlock              = ((1 <<  1) - 1) <<  5;
const int oCNpc_bitfield0_drunk                = ((1 <<  1) - 1) <<  6;
const int oCNpc_bitfield0_mad                  = ((1 <<  1) - 1) <<  7;
const int oCNpc_bitfield0_overlay_wounded      = ((1 <<  1) - 1) <<  8;
const int oCNpc_bitfield0_inOnDamage           = ((1 <<  1) - 1) <<  9;
const int oCNpc_bitfield0_autoremoveweapon     = ((1 <<  1) - 1) << 10;
const int oCNpc_bitfield0_openinventory        = ((1 <<  1) - 1) << 11;
const int oCNpc_bitfield0_askroutine           = ((1 <<  1) - 1) << 12;
const int oCNpc_bitfield0_spawnInRange         = ((1 <<  1) - 1) << 13;
const int oCNpc_bitfield1_body_TexVarNr        = ((1 << 16) - 1) <<  0;
const int oCNpc_bitfield1_body_TexColorNr      = ((1 << 16) - 1) << 16;
const int oCNpc_bitfield2_head_TexVarNr        = ((1 << 16) - 1) <<  0;
const int oCNpc_bitfield2_teeth_TexVarNr       = ((1 << 16) - 1) << 16;
const int oCNpc_bitfield3_guildTrue            = ((1 <<  8) - 1) <<  0;
const int oCNpc_bitfield3_drunk_heal           = ((1 <<  8) - 1) <<  8;
const int oCNpc_bitfield3_mad_heal             = ((1 <<  8) - 1) << 16;
const int oCNpc_bitfield3_spells               = ((1 <<  8) - 1) << 24;
const int oCNpc_bitfield4_bodyState            = ((1 << 19) - 1) <<  0;

const int oTRobustTrace_bitfield_stand                = ((1 << 1) - 1) << 0;
const int oTRobustTrace_bitfield_dirChoosed           = ((1 << 1) - 1) << 1;
const int oTRobustTrace_bitfield_exactPosition        = ((1 << 1) - 1) << 2;
const int oTRobustTrace_bitfield_targetReached        = ((1 << 1) - 1) << 3;
const int oTRobustTrace_bitfield_standIfTargetReached = ((1 << 1) - 1) << 4;
const int oTRobustTrace_bitfield_waiting              = ((1 << 1) - 1) << 5;
const int oTRobustTrace_bitfield_isObstVobSmall       = ((1 << 1) - 1) << 6;
const int oTRobustTrace_bitfield_targetVisible        = ((1 << 1) - 1) << 7;
const int oTRobustTrace_bitfield_useChasmChecks       = ((1 << 1) - 1) << 8;

class oCNpc
{
//  zCVob {
//      zCObject {
            var int    vfptr;
            var int    refCtr;
            var int    hashIndex;
            var int    hashNext;
            var string objectName;
//      }
        var int        globalVobTreeNode;
        var int        lastTimeDrawn;
        var int        lastTimeCollected;
        var int        vobLeafList_array;
        var int        vobLeafList_numAlloc;
        var int        vobLeafList_numInArray;
        var int        trafoObjToWorld[16];
        var int        bbox3D_mins[3];
        var int        bbox3D_maxs[3];
        var int        touchVobList_array;
        var int        touchVobList_numAlloc;
        var int        touchVobList_numInArray;
        var int        type;
        var int        groundShadowSizePacked;
        var int        homeWorld;
        var int        groundPoly;
        var int        callback_ai;
        var int        trafo;
        var int        visual;
        var int        visualAlpha;
        var int        rigidBody;
        var int        lightColorStat;
        var int        lightColorDyn;
        var int        lightDirectionStat[3];
        var int        vobPresetName;
        var int        eventManager;
        var int        nextOnTimer;
        var int        vob_bitfield[5];
        var int        m_poCollisionObjectClass;
        var int        m_poCollisionObject;
//  }
//  C_NPC {
        var int        idx;                                        // 0x0100 int
        var string     name;                                       // 0x0104 zSTRING[5]
        var string     name1;
        var string     name2;
        var string     name3;
        var string     name4;
        var string     slot;                                       // 0x0168 zSTRING
        var int        npcType;                                    // 0x017C int
        var int        variousFlags;                               // 0x0180 int
        var int        attribute[8];                               // 0x0184 int[NPC_ATR_MAX]
        var int        protection[8];                              // 0x01A4 int[oEDamageIndex_MAX]
        var int        damage[8];                                  // 0x01C4 int[oEDamageIndex_MAX]
        var int        damagetype;                                 // 0x01E4 int
        var int        guild;                                      // 0x01E8 int
        var int        level;                                      // 0x01EC int
        var func       mission[5];                                 // 0x01F0 int[NPC_MIS_MAX]
        var int        fighttactic;                                // 0x0204 int
        var int        fmode;                                      // 0x0208 int
        var int        voice;                                      // 0x020C int
        var int        voicePitch;                                 // 0x0210 int
        var int        mass;                                       // 0x0214 int
        var func       daily_routine;                              // 0x0218 int
        var func       startAIState;                               // 0x021C int
        var string     spawnPoint;                                 // 0x0220 zSTRING
        var int        spawnDelay;                                 // 0x0234 int
        var int        senses;                                     // 0x0238 int
        var int        senses_range;                               // 0x023C int
        var int        aiscriptvars[50];                           // 0x0240 int[50]
        var string     wpname;                                     // 0x0308 zSTRING
        var int        experience_points;                          // 0x031C zUINT32
        var int        experience_points_next_level;               // 0x0320 zUINT32
        var int        learn_points;                               // 0x0324 zUINT32
//  }
    var int            parserEnd;                                  // 0x0328 int
    var int            bloodEnabled;                               // 0x032C int
    var int            bloodDistance;                              // 0x0330 int
    var int            bloodAmount;                                // 0x0334 int
    var int            bloodFlow;                                  // 0x0338 int
    var string         bloodEmitter;                               // 0x033C zSTRING
    var string         bloodTexture;                               // 0x0350 zSTRING
    var int            didHit;                                     // 0x0364 zBOOL
    var int            didParade;                                  // 0x0368 zBOOL
    var int            didShoot;                                   // 0x036C zBOOL
    var int            hasLockedEnemy;                             // 0x0370 zBOOL
    var int            isDefending;                                // 0x0374 zBOOL
    var int            wasAiming;                                  // 0x0378 zBOOL
    var int            enemy;                                      // 0x037C oCNpc*
    var int            speedTurn;                                  // 0x0380 zREAL
    var int            foundFleePoint;                             // 0x0384 zBOOL
    var int            reachedFleePoint;                           // 0x0388 zBOOL
    var int            vecFlee[3];                                 // 0x038C zVEC3
    var int            posFlee[3];                                 // 0x0398 zVEC3
    var int            waypointFlee;                               // 0x03A4 zCWaypoint*
//  oTRobustTrace rbt {
        var int        rbt_bitfield;                               // 0x03A8 oTRobustTrace_bitfield_Xxx
        var int        rbt_targetPos[3];                           // 0x03AC zVEC3
        var int        rbt_targetVob;                              // 0x03B8 zCVob*
        var int        rbt_obstVob;                                // 0x03BC zCVob*
        var int        rbt_targetDist;                             // 0x03C0 zREAL
        var int        rbt_lastTargetDist;                         // 0x03C4 zREAL
        var int        rbt_maxTargetDist;                          // 0x03C8 zREAL
        var int        rbt_dirTurn;                                // 0x03CC zREAL
        var int        rbt_timer;                                  // 0x03D0 zREAL
        var int        rbt_dirFirst[3];                            // 0x03D4 zVEC3
        var int        rbt_dirLastAngle;                           // 0x03E0 zREAL
//      zCArray<oTDirectionInfo*> lastDirections {
            var int    rbt_lastDirections_array;                   // 0x03E4 oTDirectionInfo**
            var int    rbt_lastDirections_numAlloc;                // 0x03E8 int
            var int    rbt_lastDirections_numInArray;              // 0x03EC int
//      }
        var int        rbt_frameCtr;                               // 0x03F0 int
        var int        rbt_targetPosArray[15];                     // 0x03F4 zVEC3[5]
        var int        rbt_targetPosCounter;                       // 0x0430 int
        var int        rbt_targetPosIndex;                         // 0x0434 int
        var int        rbt_checkVisibilityTime;                    // 0x0438 zREAL
        var int        rbt_positionUpdateTime;                     // 0x043C zREAL
        var int        rbt_failurePossibility;                     // 0x0440 zREAL
//  }
//  zCList<oCNpcTimedOverlay> timedOverlays {
        var int        timedOverlays_data;                         // 0x0444 oCNpcTimedOverlay*
        var int        timedOverlays_next;                         // 0x0448 zCList<oCNpcTimedOverlay>*
//  }
//  zCArray<oCNpcTalent*> talents {
        var int        talents_array;                              // 0x044C oCNpcTalent**
        var int        talents_numAlloc;                           // 0x0450 int
        var int        talents_numInArray;                         // 0x0454 int
//  }
    var int            spellMana;                                  // 0x0458 int
    var int            visualFX;                                   // 0x045C oCVisualFX*
//  oCMagFrontier magFrontier {
        var int        magFrontier_warningFX;                      // 0x0460 oCVisualFX*
        var int        magFrontier_shootFX;                        // 0x0464 oCVisualFX*
        var int        magFrontier_npc;                            // 0x0468 oCNpc*
        var int        magFrontier_bitfield;                       // 0x046C oCMagFrontier_bitfield_Xxx
//  }
//  oCNpc_States state {
        var int        state_vfptr;                                // 0x0470
        var string     state_name;                                 // 0x0474 zSTRING
        var int        state_npc;                                  // 0x0488 oCNpc*
//      TNpcAIState curState {
            var int    state_curState_index;                       // 0x048C int
            var int    state_curState_loop;                        // 0x0490 int
            var int    state_curState_end;                         // 0x0494 int
            var int    state_curState_timeBehaviour;               // 0x0498 int
            var int    state_curState_restTime;                    // 0x049C zREAL
            var int    state_curState_phase;                       // 0x04A0 int
            var int    state_curState_valid;                       // 0x04A4 zBOOL
            var string state_curState_name;                        // 0x04A8 zSTRING
            var int    state_curState_stateTime;                   // 0x04BC zREAL
            var int    state_curState_prgIndex;                    // 0x04C0 int
            var int    state_curState_isRtnState;                  // 0x04C4 zBOOL
//      }
//      TNpcAIState nextState {
            var int    state_nextState_index;                      // 0x04C8 int
            var int    state_nextState_loop;                       // 0x04CC int
            var int    state_nextState_end;                        // 0x04D0 int
            var int    state_nextState_timeBehaviour;              // 0x04D4 int
            var int    state_nextState_restTime;                   // 0x04D8 zREAL
            var int    state_nextState_phase;                      // 0x04DC int
            var int    state_nextState_valid;                      // 0x04E0 zBOOL
            var string state_nextState_name;                       // 0x04E4 zSTRING
            var int    state_nextState_stateTime;                  // 0x04F8 zREAL
            var int    state_nextState_prgIndex;                   // 0x04FC int
            var int    state_nextState_isRtnState;                 // 0x0500 zBOOL
//      }
        var int        state_lastAIState;                          // 0x0504 int
        var int        state_hasRoutine;                           // 0x0508 zBOOL
        var int        state_rtnChanged;                           // 0x050C zBOOL
        var int        state_rtnBefore;                            // 0x0510 oCRtnEntry*
        var int        state_rtnNow;                               // 0x0514 oCRtnEntry*
        var int        state_rtnRoute;                             // 0x0518 zCRoute*
        var int        state_rtnOverlay;                           // 0x051C zBOOL
        var int        state_rtnOverlayCount;                      // 0x0520 int
        var int        state_walkmode_routine;                     // 0x0524 int
        var int        state_weaponmode_routine;                   // 0x0528 zBOOL
        var int        state_startNewRoutine;                      // 0x052C zBOOL
        var int        state_aiStateDriven;                        // 0x0530 int
        var int        state_aiStatePosition[3];                   // 0x0534 zVEC3
        var int        state_parOther;                             // 0x0540 oCNpc*
        var int        state_parVictim;                            // 0x0544 oCNpc*
        var int        state_parItem;                              // 0x0548 oCItem*
        var int        state_rntChangeCount;                       // 0x054C int
//  }
//  oCNpcInventory {
//      oCItemContainer inventory2 {
            var int    inventory2_vfptr;                           // 0x0550
            var int    inventory2_contents;                        // 0x0554 zCListSort<oCItem>*
            var int    inventory2_npc;                             // 0x0558 oCNpc*
            var int    inventory2_selectedItem;                    // 0x055C int
            var int    inventory2_offset;                          // 0x0560 int
            var int    inventory2_drawItemMax;                     // 0x0564 int
            var int    inventory2_itemListMode;                    // 0x0568 oTItemListMode
            var int    inventory2_frame;                           // 0x056C zBOOL
            var int    inventory2_right;                           // 0x0570 zBOOL
            var int    inventory2_ownList;                         // 0x0574 zBOOL
            var int    inventory2_prepared;                        // 0x0578 zBOOL
            var int    inventory2_passive;                         // 0x057C zBOOL
            var int    inventory2_viewCat;                         // 0x0580 zCView*
            var int    inventory2_viewItem;                        // 0x0584 zCView*
            var int    inventory2_viewItemActive;                  // 0x0588 zCView*
            var int    inventory2_viewItemHightlighted;            // 0x058C zCView*
            var int    inventory2_viewItemActiveHighlighted;       // 0x0590 zCView*
            var int    inventory2_viewItemFocus;                   // 0x0594 zCView*
            var int    inventory2_viewItemActiveFocus;             // 0x0598 zCView*
            var int    inventory2_viewItemHightlightedFocus;       // 0x059C zCView*
            var int    inventory2_viewItemActiveHighlightedFocus;  // 0x05A0 zCView*
            var int    inventory2_viewItemInfo;                    // 0x05A4 zCView*
            var int    inventory2_viewItemInfoItem;                // 0x05A8 zCView*
            var int    inventory2_textView;                        // 0x05AC zCView*
            var int    inventory2_viewArrowAtTop;                  // 0x05B0 zCView*
            var int    inventory2_viewArrowAtBottom;               // 0x05B4 zCView*
            var int    inventory2_rndWorld;                        // 0x05B8 zCWorld*
            var int    inventory2_posx;                            // 0x05BC int
            var int    inventory2_posy;                            // 0x05C0 int
            var string inventory2_textCategoryStatic;              // 0x05C4 zSTRING
            var int    inventory2_m_bManipulateItemsDisabled;      // 0x05D8 zBOOL
            var int    inventory2_m_bCanTransferMoreThanOneItem;   // 0x05DC zBOOL
            var int    inventory2_image_chroma;                    // 0x05E0 zCOLOR
            var int    inventory2_blit_chroma;                     // 0x05E4 zCOLOR
//      }
        var int        inventory2_owner;                           // 0x05E8 oCNpc*
        var int        inventory2_packAbility;                     // 0x05EC zBOOL
//      zCListSort<oCItem>[INV_MAX] inventory {
            var int    inventory2_inventory0_Compare;              // 0x05F0 int(_cdecl*)(oCItem*,oCItem*)
            var int    inventory2_inventory0_data;                 // 0x05F4 oCItem*
            var int    inventory2_inventory0_next;                 // 0x05F8 zCListSort<oCItem>*
            var int    inventory2_inventory1_Compare;              // 0x05FC int(_cdecl*)(oCItem*,oCItem*)
            var int    inventory2_inventory1_data;                 // 0x0600 oCItem*
            var int    inventory2_inventory1_next;                 // 0x0604 zCListSort<oCItem>*
            var int    inventory2_inventory2_Compare;              // 0x0608 int(_cdecl*)(oCItem*,oCItem*)
            var int    inventory2_inventory2_data;                 // 0x060C oCItem*
            var int    inventory2_inventory2_next;                 // 0x0610 zCListSort<oCItem>*
            var int    inventory2_inventory3_Compare;              // 0x0614 int(_cdecl*)(oCItem*,oCItem*)
            var int    inventory2_inventory3_data;                 // 0x0618 oCItem*
            var int    inventory2_inventory3_next;                 // 0x061C zCListSort<oCItem>*
            var int    inventory2_inventory4_Compare;              // 0x0620 int(_cdecl*)(oCItem*,oCItem*)
            var int    inventory2_inventory4_data;                 // 0x0624 oCItem*
            var int    inventory2_inventory4_next;                 // 0x0628 zCListSort<oCItem>*
            var int    inventory2_inventory5_Compare;              // 0x062C int(_cdecl*)(oCItem*,oCItem*)
            var int    inventory2_inventory5_data;                 // 0x0630 oCItem*
            var int    inventory2_inventory5_next;                 // 0x0634 zCListSort<oCItem>*
            var int    inventory2_inventory6_Compare;              // 0x0638 int(_cdecl*)(oCItem*,oCItem*)
            var int    inventory2_inventory6_data;                 // 0x063C oCItem*
            var int    inventory2_inventory6_next;                 // 0x0640 zCListSort<oCItem>*
            var int    inventory2_inventory7_Compare;              // 0x0644 int(_cdecl*)(oCItem*,oCItem*)
            var int    inventory2_inventory7_data;                 // 0x0648 oCItem*
            var int    inventory2_inventory7_next;                 // 0x064C zCListSort<oCItem>*
            var int    inventory2_inventory8_Compare;              // 0x0650 int(_cdecl*)(oCItem*,oCItem*)
            var int    inventory2_inventory8_data;                 // 0x0654 oCItem*
            var int    inventory2_inventory8_next;                 // 0x0658 zCListSort<oCItem>*
//      }
        var string     inventory2_packString;                      // 0x065C zSTRING[INV_MAX]
        var string     inventory2_packString1;
        var string     inventory2_packString2;
        var string     inventory2_packString3;
        var string     inventory2_packString4;
        var string     inventory2_packString5;
        var string     inventory2_packString6;
        var string     inventory2_packString7;
        var string     inventory2_packString8;
        var int        inventory2__offset[9];                      // 0x0710 int[INV_MAX]
        var int        inventory2__itemnr[9];                      // 0x0734 int[INV_MAX]
        var int        inventory2_maxSlots[9];                     // 0x0758 int[INV_MAX]
        var int        inventory2_invnr;                           // 0x077C int
//  }
    var int            trader;                                     // 0x0780 oCItemContainer*
    var int            tradeNpc;                                   // 0x0784 oCNpc*
    var int            rangeToPlayer;                              // 0x0788 zREAL
//  zCArray<zTSoundHandle> listOfVoiceHandles {
        var int        listOfVoiceHandles_array;                   // 0x078C zTSoundHandle*
        var int        listOfVoiceHandles_numAlloc;                // 0x0790 int
        var int        listOfVoiceHandles_numInArray;              // 0x0794 int
//  }
    var int            voiceIndex;                                 // 0x0798 int
    var int            npc_bitfield[5];                            // 0x079C oCNpc_bitfieldX_Xxx
    var int            instanz;                                    // 0x07B0 int
    var string         mds_name;                                   // 0x07B4 zSTRING
    var string         body_visualName;                            // 0x07C8 zSTRING
    var string         head_visualName;                            // 0x07DC zSTRING
    var int            model_scale[3];                             // 0x07F0 VEC3
    var int            model_fatness;                              // 0x07FC zREAL
    var int            namenr;                                     // 0x0800 int
    var int            hpHeal;                                     // 0x0804 zREAL
    var int            manaHeal;                                   // 0x0808 zREAL
    var int            swimtime;                                   // 0x080C zREAL
    var int            divetime;                                   // 0x0810 zREAL
    var int            divectr;                                    // 0x0814 zREAL
    var int            fireVob;                                    // 0x0818 zCVob*
    var int            fireDamage;                                 // 0x081C int
    var int            fireDamageTimer;                            // 0x0820 zREAL
    var int            attitude;                                   // 0x0824 int
    var int            tmp_attitude;                               // 0x0828 int
    var int            attTimer;                                   // 0x082C zREAL
    var int            knowsPlayer;                                // 0x0830 int
    var int            percList[66];                               // 0x0834 TNpcPerc[NPC_PERC_MAX] { int percID; int percFunc }
    var int            percActive;                                 // 0x093C int
    var int            percActiveTime;                             // 0x0940 zREAL
    var int            percActiveDelta;                            // 0x0944 zREAL
    var int            overrideFallDownHeight;                     // 0x0948 zBOOL
    var int            fallDownHeight;                             // 0x094C zREAL
    var int            fallDownDamage;                             // 0x0950 int
    var int            mag_book;                                   // 0x0954 oCMag_Book*
//  zCList<oCSpell> activeSpells {
        var int        activeSpells_data;                          // 0x0958 oCSpell*
        var int        activeSpells_next;                          // 0x095C int
//  }
//  zCArray<zSTRING> activeOverlays {
        var int        activeOverlays_array;                       // 0x0960 zSTRING*
        var int        activeOverlays_numAlloc;                    // 0x0964 int
        var int        activeOverlays_numInArray;                  // 0x0968 int
//  }
    var int            askbox;                                     // 0x096C oCAskBox*
    var int            askYes;                                     // 0x0970 int
    var int            askNo;                                      // 0x0974 int
    var int            canTalk;                                    // 0x0978 zREAL
    var int            talkOther;                                  // 0x097C oCNpc*
    var int            info;                                       // 0x0980 oCInfo*
    var int            news;                                       // 0x0984 oCNews*
    var int            curMission;                                 // 0x0988 oCMission*
//  oCNewsMemory knownNews {
        var int        knownNews_vfptr;                            // 0x098C
//      zCList<oCNews> iknow {
            var int    knownNews_iknow_data;                       // 0x0990 oCNews*
            var int    knownNews_iknow_next;                       // 0x0994 zCList<oCNews>*
//      }
//  }
    var int            carry_vob;                                  // 0x0998 zCVob*
    var int            interactMob;                                // 0x099C oCMobInter*
    var int            interactItem;                               // 0x09A0 oCItem*
    var int            interactItemCurrentState;                   // 0x09A4 int
    var int            interactItemTargetState;                    // 0x09A8 int
    var int            script_aiprio;                              // 0x09AC int
    var int            old_script_state;                           // 0x09B0 int
    var int            human_ai;                                   // 0x09B4 oCAIHuman*
    var int            anictrl;                                    // 0x09B8 oCAniCtrl_Human*
    var int            route;                                      // 0x09BC zCRoute*
    var int            damageMul;                                  // 0x09C0 zREAL
    var int            csg;                                        // 0x09C4 oCNpcMessage*
    var int            lastLookMsg;                                // 0x09C8 oCNpcMessage*
    var int            lastPointMsg;                               // 0x09CC oCNpcMessage*
//  zCArray<zCVob*> vobList {
        var int        vobList_array;                              // 0x09D0 zCVob**
        var int        vobList_numAlloc;                           // 0x09D4 int
        var int        vobList_numInArray;                         // 0x09D8 int
//  }
    var int            vobcheck_time;                              // 0x09DC zREAL
    var int            pickvobdelay;                               // 0x09E0 zREAL
    var int            focus_vob;                                  // 0x09E4 zCVob*
//  zCArray<TNpcSlot*> invSlot {
        var int        invSlot_array;                              // 0x09E8 TNpcSlot**
        var int        invSlot_numAlloc;                           // 0x09EC int
        var int        invSlot_numInArray;                         // 0x09F0 int
//  }
//  zCArray<TNpcSlot*> tmpSlotList {
        var int        tmpSlotList_array;                          // 0x09F4 TNpcSlot**
        var int        tmpSlotList_numAlloc;                       // 0x09F8 int
        var int        tmpSlotList_numInArray;                     // 0x09FC int
//  }
    var int            fadeAwayTime;                               // 0x0A00 zREAL
    var int            respawnTime;                                // 0x0A04 zREAL
    var int            selfDist;                                   // 0x0A08 zREAL
    var int            fightRangeBase;                             // 0x0A0C int
    var int            fightRangeFist;                             // 0x0A10 int
    var int            fight_waitTime;                             // 0x0A14 zREAL
    var int            fight_waitForAniEnd;                        // 0x0A18 zTModelAniID
    var int            fight_lastStrafeFrame;                      // 0x0A1C zREAL
    var int            soundType;                                  // 0x0A20 int
    var int            soundVob;                                   // 0x0A24 zCVob*
    var int            soundPosition[3];                           // 0x0A28 zVEC3
    var int            playerGroup;                                // 0x0A34 zCPlayerGroup*
};
const int oCNpc_Size = 2616;                                       // 0x0A38

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                                   oCNews                                   //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

class oCNews {
    var int    vfptr;         // 0x0000
    var int    told;          // 0x0004 zBOOL
    var int    spread_time;   // 0x0008 zREAL
    var int    spreadType;    // 0x000C oTNewsSpreadType
    var int    news_id;       // 0x0010 int
    var int    gossip;        // 0x0014 zBOOL
    var int    mNpcWitness;   // 0x0018 oCNpc*
    var int    mNpcOffender;  // 0x001C oCNpc*
    var int    mNpcVictim;    // 0x0020 oCNpc*
    var string witnessName;   // 0x0024 zSTRING
    var string offenderName;  // 0x0038 zSTRING
    var string victimName;    // 0x004C zSTRING
    var int    guildvictim;   // 0x0060 zBOOL
};
const int oCNews_Size = 100;  // 0x0064
Wersja dla G2NK:
Spoiler
[code]
//
// Only for demonstration purposes. Usage at your own risk.
// Only for Gothic II version 2.6 (Report-Version 2.6_rev1)
//

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                                  zCObject                                  //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

//NOTE: Bit field mask consts:     BitCount    FirstBit
const int zCObject_hashIndex = ((1 << 16) - 1) << 0;

class zCObject {
    var int    vfptr;          // 0x0000
    var int    refCtr;         // 0x0004 int
    var int    hashIndex;      // 0x0008 zWORD
    var int    hashNext;       // 0x000C zCObject*
    var string objectName;     // 0x0010 zSTRING
};
const int zCObject_Size = 36;  // 0x0024

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                                   zCVob                                    //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

const int zCVob_bitfield0_showVisual                = ((1 << 1) - 1) <<  0;
const int zCVob_bitfield0_drawBBox3D                = ((1 << 1) - 1) <<  1;
const int zCVob_bitfield0_visualAlphaEnabled        = ((1 << 1) - 1) <<  2;
const int zCVob_bitfield0_physicsEnabled            = ((1 << 1) - 1) <<  3;
const int zCVob_bitfield0_staticVob                 = ((1 << 1) - 1) <<  4;
const int zCVob_bitfield0_ignoredByTraceRay         = ((1 << 1) - 1) <<  5;
const int zCVob_bitfield0_collDetectionStatic       = ((1 << 1) - 1) <<  6;
const int zCVob_bitfield0_collDetectionDynamic      = ((1 << 1) - 1) <<  7;
const int zCVob_bitfield0_castDynShadow             = ((1 << 2) - 1) <<  8;
const int zCVob_bitfield0_lightColorStatDirty       = ((1 << 1) - 1) << 10;
const int zCVob_bitfield0_lightColorDynDirty        = ((1 << 1) - 1) << 11;
const int zCVob_bitfield1_isInMovementMode          = ((1 << 2) - 1) <<  0;
const int zCVob_bitfield2_sleepingMode              = ((1 << 2) - 1) <<  0;
const int zCVob_bitfield2_mbHintTrafoLocalConst     = ((1 << 1) - 1) <<  2;
const int zCVob_bitfield2_mbInsideEndMovementMethod = ((1 << 1) - 1) <<  3;
const int zCVob_bitfield3_visualCamAlign            = ((1 << 2) - 1) <<  0;
const int zCVob_bitfield4_collButNoMove             = ((1 << 4) - 1) <<  0;
const int zCVob_bitfield4_dontWriteIntoArchive      = ((1 << 1) - 1) <<  4;
const int zCVob_bitfield4_bIsInWater                = ((1 << 1) - 1) <<  5;
const int zCVob_bitfield4_bIsAmbientVob             = ((1 << 1) - 1) <<  6;

class zCVob {
//  zCObject {
        var int    vfptr;
        var int    refCtr;
        var int    hashIndex;
        var int    hashNext;
        var string objectName;
//  }
    var int        globalVobTreeNode;         // 0x0024 zCTree<zCVob>*
    var int        lastTimeDrawn;             // 0x0028 zTFrameCtr
    var int        lastTimeCollected;         // 0x002C zDWORD
//  zCArray<zCBspLeaf*> vobLeafList {
        var int    vobLeafList_array;         // 0x0030 zCBspLeaf**
        var int    vobLeafList_numAlloc;      // 0x0034 int
        var int    vobLeafList_numInArray;    // 0x0038 int
//  }
    var int        trafoObjToWorld[16];       // 0x003C zMATRIX4
//  zTBBox3D bbox3D {
        var int    bbox3D_mins[3];            // 0x007C zPOINT3
        var int    bbox3D_maxs[3];            // 0x0088 zPOINT3
//  }
//  zTBSphere3D bsphere3D {
        var int    bsphere3D_center[3];       // 0x0094 zPOINT3
        var int    bsphere3D_radius;          // 0x00A0 zVALUE
//  }
//  zCArray<zCVob*> touchVobList {
        var int    touchVobList_array;        // 0x00A4 zCVob**
        var int    touchVobList_numAlloc;     // 0x00A8 int
        var int    touchVobList_numInArray;   // 0x00AC int
//  }
    var int        type;                      // 0x00B0 zTVobType
    var int        groundShadowSizePacked;    // 0x00B4 zDWORD
    var int        homeWorld;                 // 0x00B8 zCWorld*
    var int        groundPoly;                // 0x00BC zCPolygon*
    var int        callback_ai;               // 0x00C0 zCAIBase*
    var int        trafo;                     // 0x00C4 zMATRIX4*
    var int        visual;                    // 0x00C8 zCVisual*
    var int        visualAlpha;               // 0x00CC zREAL
    var int        m_fVobFarClipZScale;       // 0x00D0 zREAL
    var int        m_AniMode;                 // 0x00D4 zTAnimationMode
    var int        m_aniModeStrength;         // 0x00D8 zREAL
    var int        m_zBias;                   // 0x00DC int
    var int        rigidBody;                 // 0x00E0 zCRigidBody*
    var int        lightColorStat;            // 0x00E4 zCOLOR
    var int        lightColorDyn;             // 0x00E8 zCOLOR
    var int        lightDirectionStat[3];     // 0x00EC zVEC3
    var int        vobPresetName;             // 0x00F8 zSTRING*
    var int        eventManager;              // 0x00FC zCEventManager*
    var int        nextOnTimer;               // 0x0100 zREAL
    var int        vob_bitfield[5];           // 0x0104 zCVob_bitfieldX_Xxx
    var int        m_poCollisionObjectClass;  // 0x0118 zCCollisionObjectDef*
    var int        m_poCollisionObject;       // 0x011C zCCollisionObject*
};
const int zCVob_Size = 288;                   // 0x0120

////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                                   oCNpc                                    //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

const int oCMagFrontier_bitfield_isWarning  = ((1 << 1) - 1) << 0;
const int oCMagFrontier_bitfield_isShooting = ((1 << 1) - 1) << 1;

const int oCNpc_bitfield0_showaidebug          = ((1 <<  1) - 1) <<  0;
const int oCNpc_bitfield0_showNews             = ((1 <<  1) - 1) <<  1;
const int oCNpc_bitfield0_csAllowedAsRole      = ((1 <<  1) - 1) <<  2;
const int oCNpc_bitfield0_isSummoned           = ((1 <<  1) - 1) <<  3;
const int oCNpc_bitfield0_respawnOn            = ((1 <<  1) - 1) <<  4;
const int oCNpc_bitfield0_movlock              = ((1 <<  1) - 1) <<  5;
const int oCNpc_bitfield0_drunk                = ((1 <<  1) - 1) <<  6;
const int oCNpc_bitfield0_mad                  = ((1 <<  1) - 1) <<  7;
const int oCNpc_bitfield0_overlay_wounded      = ((1 <<  1) - 1) <<  8;
const int oCNpc_bitfield0_inOnDamage           = ((1 <<  1) - 1) <<  9;
const int oCNpc_bitfield0_autoremoveweapon     = ((1 <<  1) - 1) << 10;
const int oCNpc_bitfield0_openinventory        = ((1 <<  1) - 1) << 11;
const int oCNpc_bitfield0_askroutine           = ((1 <<  1) - 1) << 12;
const int oCNpc_bitfield0_spawnInRange         = ((1 <<  1) - 1) << 13;
const int oCNpc_bitfield1_body_TexVarNr        = ((1 << 16) - 1) <<  0;
const int oCNpc_bitfield1_body_TexColorNr      = ((1 << 16) - 1) << 16;
const int oCNpc_bitfield2_head_TexVarNr        = ((1 << 16) - 1) <<  0;
const int oCNpc_bitfield2_teeth_TexVarNr       = ((1 << 16) - 1) << 16;
const int oCNpc_bitfield3_guildTrue            = ((1 <<  8) - 1) <<  0;
const int oCNpc_bitfield3_drunk_heal           = ((1 <<  8) - 1) <<  8;
const int oCNpc_bitfield3_mad_heal             = ((1 <<  8) - 1) << 16;
const int oCNpc_bitfield3_spells               = ((1 <<  8) - 1) << 24;
const int oCNpc_bitfield4_bodyState            = ((1 << 19) - 1) <<  0;
const int oCNpc_bitfield4_m_bAniMessageRunning = ((1 <<  1) - 1) << 19;

const int oTRobustTrace_bitfield_stand                = ((1 << 1) - 1) << 0;
const int oTRobustTrace_bitfield_dirChoosed           = ((1 << 1) - 1) << 1;
const int oTRobustTrace_bitfield_exactPosition        = ((1 << 1) - 1) << 2;
const int oTRobustTrace_bitfield_targetReached        = ((1 << 1) - 1) << 3;
const int oTRobustTrace_bitfield_standIfTargetReached = ((1 << 1) - 1) << 4;
const int oTRobustTrace_bitfield_waiting              = ((1 << 1) - 1) << 5;
const int oTRobustTrace_bitfield_isObstVobSmall       = ((1 << 1) - 1) << 6;
const int oTRobustTrace_bitfield_targetVisible        = ((1 << 1) - 1) << 7;
const int oTRobustTrace_bitfield_useChasmChecks       = ((1 << 1) - 1) << 8;

class oCNpc {
//  zCVob {
//      zCObject {
            var int    vfptr;
            var int    refCtr;
            var int    hashIndex;
            var int    hashNext;
            var string objectName;
//      }
        var int        globalVobTreeNode;
        var int        lastTimeDrawn;
        var int        lastTimeCollected;
        var int        vobLeafList_array;
        var int        vobLeafList_numAlloc;
        var int        vobLeafList_numInArray;
        var int        trafoObjToWorld[16];
        var int        bbox3D_mins[3];
        var int        bbox3D_maxs[3];
        var int        bsphere3D_center[3];
        var int        bsphere3D_radius;
        var int        touchVobList_array;
        var int        touchVobList_numAlloc;
        var int        touchVobList_numInArray;
        var int        type;
        var int        groundShadowSizePacked;
        var int        homeWorld;
        var int        groundPoly;
        var int        callback_ai;
        var int        trafo;
        var int        visual;
        var int        visualAlpha;
        var int        m_fVobFarClipZScale;
        var int        m_AniMode;
        var int        m_aniModeStrength;
        var int        m_zBias;
        var int        rigidBody;
        var int        lightColorStat;
        var int        lightColorDyn;
        var int        lightDirectionStat[3];
        var int        vobPresetName;
        var int        eventManager;
        var int        nextOnTimer;
        var int        vob_bitfield[5];
        var int        m_poCollisionObjectClass;
        var int        m_poCollisionObject;
//  }
//  C_NPC {
        var int        idx;                                       // 0x0120 int
        var string     name;                                      // 0x0124 zSTRING[5]
        var string     name1;
        var string     name2;
        var string     name3;
        var string     name4;
        var string     slot;                                      // 0x0188 zSTRING
        var string     effect;                                    // 0x019C zSTRING
        var int        npcType;                                   // 0x01B0 int
        var int        variousFlags;                              // 0x01B4 int
        var int        attribute[8];                              // 0x01B8 int[NPC_ATR_MAX]
        var int        hitChance[5];                              // 0x01D8 int[NPC_HITCHANCE_MAX]
        var int        protection[8];                             // 0x01EC int[oEDamageIndex_MAX]
        var int        damage[8];                                 // 0x020C int[oEDamageIndex_MAX]
        var int        damagetype;                                // 0x022C int
        var int        guild;                                     // 0x0230 int
        var int        level;                                     // 0x0234 int
        var func       mission[5];                                // 0x0238 int[NPC_MIS_MAX]
        var int        fighttactic;                               // 0x024C int
        var int        fmode;                                     // 0x0250 int
        var int        voice;                                     // 0x0254 int
        var int        voicePitch;                                // 0x0258 int
        var int        mass;                                      // 0x025C int
        var func       daily_routine;                             // 0x0260 int
        var func       startAIState;                              // 0x0264 int
        var string     spawnPoint;                                // 0x0268 zSTRING
        var int        spawnDelay;                                // 0x027C int
        var int        senses;                                    // 0x0280 int
        var int        senses_range;                              // 0x0284 int
        var int        aiscriptvars[100];                         // 0x0288 int[100]
        var string     wpname;                                    // 0x0418 zSTRING
        var int        experience_points;                         // 0x042C zUINT32
        var int        experience_points_next_level;              // 0x0430 zUINT32
        var int        learn_points;                              // 0x0434 zUINT32
        var int        bodyStateInterruptableOverride;            // 0x0438 int
        var int        noFocus;                                   // 0x043C zBOOL
//  }
    var int            parserEnd;                                 // 0x0440 int
    var int            bloodEnabled;                              // 0x0444 int
    var int            bloodDistance;                             // 0x0448 int
    var int            bloodAmount;                               // 0x044C int
    var int            bloodFlow;                                 // 0x0450 int
    var string         bloodEmitter;                              // 0x0454 zSTRING
    var string         bloodTexture;                              // 0x0468 zSTRING
    var int            didHit;                                    // 0x047C zBOOL
    var int            didParade;                                 // 0x0480 zBOOL
    var int            didShoot;                                  // 0x0484 zBOOL
    var int            hasLockedEnemy;                            // 0x0488 zBOOL
    var int            isDefending;                               // 0x048C zBOOL
    var int            wasAiming;                                 // 0x0490 zBOOL
    var int            lastAction;                                // 0x0494 oCNpc::TFAction
    var int            enemy;                                     // 0x0498 oCNpc*
    var int            speedTurn;                                 // 0x049C zREAL
    var int            foundFleePoint;                            // 0x04A0 zBOOL
    var int            reachedFleePoint;                          // 0x04A4 zBOOL
    var int            vecFlee[3];                                // 0x04A8 zVEC3
    var int            posFlee[3];                                // 0x04B4 zVEC3
    var int            waypointFlee;                              // 0x04C0 zCWaypoint*
//  oTRobustTrace rbt {
        var int        rbt_bitfield;                              // 0x04C4 oTRobustTrace_bitfield_Xxx
        var int        rbt_targetPos[3];                          // 0x04C8 zVEC3
        var int        rbt_targetVob;                             // 0x04D4 zCVob*
        var int        rbt_obstVob;                               // 0x04D8 zCVob*
        var int        rbt_targetDist;                            // 0x04DC zREAL
        var int        rbt_lastTargetDist;                        // 0x04E0 zREAL
        var int        rbt_maxTargetDist;                         // 0x04E4 zREAL
        var int        rbt_dirTurn;                               // 0x04E8 zREAL
        var int        rbt_timer;                                 // 0x04EC zREAL
        var int        rbt_dirFirst[3];                           // 0x04F0 zVEC3
        var int        rbt_dirLastAngle;                          // 0x04FC zREAL
//      zCArray<oTDirectionInfo*> lastDirections {
            var int    rbt_lastDirections_array;                  // 0x0500 oTDirectionInfo**
            var int    rbt_lastDirections_numAlloc;               // 0x0504 int
            var int    rbt_lastDirections_numInArray;             // 0x0508 int
//      }
        var int        rbt_frameCtr;                              // 0x050C int
        var int        rbt_targetPosArray[15];                    // 0x0510 zVEC3[5]
        var int        rbt_targetPosCounter;                      // 0x054C int
        var int        rbt_targetPosIndex;                        // 0x0550 int
        var int        rbt_checkVisibilityTime;                   // 0x0554 zREAL
        var int        rbt_positionUpdateTime;                    // 0x0558 zREAL
        var int        rbt_failurePossibility;                    // 0x055C zREAL
//  }
//  zCList<oCNpcTimedOverlay> timedOverlays {
        var int        timedOverlays_data;                        // 0x0560 oCNpcTimedOverlay*
        var int        timedOverlays_next;                        // 0x0564 zCList<oCNpcTimedOverlay>*
//  }
//  zCArray<oCNpcTalent*> talents {
        var int        talents_array;                             // 0x0568 oCNpcTalent**
        var int        talents_numAlloc;                          // 0x056C int
        var int        talents_numInArray;                        // 0x0570 int
//  }
    var int            spellMana;                                 // 0x0574 int
//  oCMagFrontier mag Frontier {
        var int        magFrontier_warningFX;                     // 0x0578 oCVisualFX*
        var int        magFrontier_shootFX;                       // 0x057C oCVisualFX*
        var int        magFrontier_npc;                           // 0x0580 oCNpc*
        var int        magFrontier_bitfield;                      // 0x0584 oCMagFrontier_bitfield_Xxx
//  }
//  oCNpc_States state {
        var int        state_vfptr;                               // 0x0588
        var string     state_name;                                // 0x058C zSTRING
        var int        state_npc;                                 // 0x05A0 oCNpc*
//      TNpcAIState curState {
            var int    state_curState_index;                      // 0x05A4 int
            var int    state_curState_loop;                       // 0x05A8 int
            var int    state_curState_end;                        // 0x05AC int
            var int    state_curState_timeBehaviour;              // 0x05B0 int
            var int    state_curState_restTime;                   // 0x05B4 zREAL
            var int    state_curState_phase;                      // 0x05B8 int
            var int    state_curState_valid;                      // 0x05BC zBOOL
            var string state_curState_name;                       // 0x05C0 zSTRING
            var int    state_curState_stateTime;                  // 0x05D4 zREAL
            var int    state_curState_prgIndex;                   // 0x05D8 int
            var int    state_curState_isRtnState;                 // 0x05DC zBOOL
//      }
//      TNpcAIState nextState {
            var int    state_nextState_index;                     // 0x05E0 int
            var int    state_nextState_loop;                      // 0x05E4 int
            var int    state_nextState_end;                       // 0x05E8 int
            var int    state_nextState_timeBehaviour;             // 0x05EC int
            var int    state_nextState_restTime;                  // 0x05F0 zREAL
            var int    state_nextState_phase;                     // 0x05F4 int
            var int    state_nextState_valid;                     // 0x05F8 zBOOL
            var string state_nextState_name;                      // 0x05FC zSTRING
            var int    state_nextState_stateTime;                 // 0x0610 zREAL
            var int    state_nextState_prgIndex;                  // 0x0614 int
            var int    state_nextState_isRtnState;                // 0x0618 zBOOL
//      }
        var int        state_lastAIState;                         // 0x061C int
        var int        state_hasRoutine;                          // 0x0620 zBOOL
        var int        state_rtnChanged;                          // 0x0624 zBOOL
        var int        state_rtnBefore;                           // 0x0628 oCRtnEntry*
        var int        state_rtnNow;                              // 0x062C oCRtnEntry*
        var int        state_rtnRoute;                            // 0x0630 zCRoute*
        var int        state_rtnOverlay;                          // 0x0634 zBOOL
        var int        state_rtnOverlayCount;                     // 0x0638 int
        var int        state_walkmode_routine;                    // 0x063C int
        var int        state_weaponmode_routine;                  // 0x0640 zBOOL
        var int        state_startNewRoutine;                     // 0x0644 zBOOL
        var int        state_aiStateDriven;                       // 0x0648 int
        var int        state_aiStatePosition[3];                  // 0x064C zVEC3
        var int        state_parOther;                            // 0x0658 oCNpc*
        var int        state_parVictim;                           // 0x065C oCNpc*
        var int        state_parItem;                             // 0x0660 oCItem*
        var int        state_rntChangeCount;                      // 0x0664 int
//  }
//  oCNpcInventory {
//      oCItemContainer inventory2 {
            var int    inventory2_vfptr;                          // 0x0668
            var int    inventory2_contents;                       // 0x066C zCListSort<oCItem>*
            var int    inventory2_npc;                            // 0x0670 oCNpc*
            var string inventory2_titleText;                      // 0x0674 zSTRING
            var int    inventory2_invMode;                        // 0x0688 int
            var int    inventory2_selectedItem;                   // 0x068C int
            var int    inventory2_offset;                         // 0x0690 int
            var int    inventory2_maxSlotsCol;                    // 0x0694 int
            var int    inventory2_maxSlotsColScr;                 // 0x0698 int
            var int    inventory2_maxSlotsRow;                    // 0x069C int
            var int    inventory2_maxSlotsRowScr;                 // 0x06A0 int
            var int    inventory2_maxSlots;                       // 0x06A4 int
            var int    inventory2_marginTop;                      // 0x06A8 int
            var int    inventory2_marginLeft;                     // 0x06AC int
            var int    inventory2_frame;                          // 0x06B0 zBOOL
            var int    inventory2_right;                          // 0x06B4 zBOOL
            var int    inventory2_ownList;                        // 0x06B8 zBOOL
            var int    inventory2_prepared;                       // 0x06BC zBOOL
            var int    inventory2_passive;                        // 0x06C0 zBOOL
            var int    inventory2_TransferCount;                  // 0x06C4 zINT
            var int    inventory2_viewTitle;                      // 0x06C8 zCView*
            var int    inventory2_viewBack;                       // 0x06CC zCView*
            var int    inventory2_viewItem;                       // 0x06D0 zCView*
            var int    inventory2_viewItemActive;                 // 0x06D4 zCView*
            var int    inventory2_viewItemHightlighted;           // 0x06D8 zCView*
            var int    inventory2_viewItemActiveHighlighted;      // 0x06DC zCView*
            var int    inventory2_viewItemInfo;                   // 0x06E0 zCView*
            var int    inventory2_viewItemInfoItem;               // 0x06E4 zCView*
            var int    inventory2_textView;                       // 0x06E8 zCView*
            var int    inventory2_viewArrowAtTop;                 // 0x06EC zCView*
            var int    inventory2_viewArrowAtBottom;              // 0x06F0 zCView*
            var int    inventory2_rndWorld;                       // 0x06F4 zCWorld*
            var int    inventory2_posx;                           // 0x06F8 int
            var int    inventory2_posy;                           // 0x06FC int
            var int    inventory2_m_bManipulateItemsDisabled;     // 0x0700 zBOOL
            var int    inventory2_m_bCanTransferMoreThanOneItem;  // 0x0704 zBOOL
//      }
        var int        inventory2_owner;                          // 0x0708 oCNpc*
        var int        inventory2_packAbility;                    // 0x070C zBOOL
//      zCListSort<oCItem> inventory {
            var int    inventory2_inventory_Compare;              // 0x0710 int(_cdecl*)(oCItem*,oCItem*)
            var int    inventory2_inventory_data;                 // 0x0714 oCItem*
            var int    inventory2_inventory_next;                 // 0x0718 zCListSort<oCItem>*
//      }
        var string     inventory2_packString;                     // 0x071C zSTRING
        var int        inventory2_maxSlots;                       // 0x0730 int
//  }
    var int            trader;                                    // 0x0734 oCItemContainer*
    var int            tradeNpc;                                  // 0x0738 oCNpc*
    var int            rangeToPlayer;                             // 0x073C zREAL
//  zCArray<zTSoundHandle> listOfVoiceHandles {
        var int        listOfVoiceHandles_array;                  // 0x0740 zTSoundHandle*
        var int        listOfVoiceHandles_numAlloc;               // 0x0744 int
        var int        listOfVoiceHandles_numInArray;             // 0x0748 int
//  }
    var int            voiceIndex;                                // 0x074C int
//  zCArray<oCVisualFX*> effectList {
        var int        effectList_array;                          // 0x0750 oCVisualFX**
        var int        effectList_numAlloc;                       // 0x0754 int
        var int        effectList_numInArray;                     // 0x0758 int
//  }
    var int            npc_bitfield[5];                           // 0x075C oCNpc_bitfieldX_Xxx
    var int            instanz;                                   // 0x0770 int
    var string         mds_name;                                  // 0x0774 zSTRING
    var string         body_visualName;                           // 0x0788 zSTRING
    var string         head_visualName;                           // 0x079C zSTRING
    var int            model_scale[3];                            // 0x07B0 VEC3
    var int            model_fatness;                             // 0x07BC zREAL
    var int            namenr;                                    // 0x07C0 int
    var int            hpHeal;                                    // 0x07C4 zREAL
    var int            manaHeal;                                  // 0x07C8 zREAL
    var int            swimtime;                                  // 0x07CC zREAL
    var int            divetime;                                  // 0x07D0 zREAL
    var int            divectr;                                   // 0x07D4 zREAL
    var int            fireVob;                                   // 0x07D8 zCVob*
    var int            fireDamage;                                // 0x07DC int
    var int            fireDamageTimer;                           // 0x07E0 zREAL
    var int            attitude;                                  // 0x07E4 int
    var int            tmp_attitude;                              // 0x07E8 int
    var int            attTimer;                                  // 0x07EC zREAL
    var int            knowsPlayer;                               // 0x07F0 int
    var int            percList[66];                              // 0x07F4 TNpcPerc[NPC_PERC_MAX] { int percID; int percFunc }
    var int            percActive;                                // 0x08FC int
    var int            percActiveTime;                            // 0x0900 zREAL
    var int            percActiveDelta;                           // 0

inż. Avallach

inż. Avallach

Administrator
Czego pragniesz?
posty7389
Propsy4726
Nagrody
ProfesjaProgramista
  • Administrator
  • Czego pragniesz?
Tak czy inaczej właściwy błąd sprowadza się do liczby odejmowanej od adresu ;)
Dopiero kiedy Npc_GetTarget cokolwiek zwróci będzie trzeba martwić się co z tym zrobić dalej.


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