• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток! Спешите принять участие в конкурсе "Таинственные миры" 2024!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык

Готика 1: Исходники Готики

Статус
В этой теме нельзя размещать новые ответы.

Kerrax

Почетный форумчанин
Регистрация
19 Фев 2008
Сообщения
222
Благодарности
682
Баллы
220
  • Первое сообщение
  • #1
В настоящий момент силами меня и Vam'а идет работа над исходниками движка игры. Благодаря Vam'у работа уже идет над исходными кодом на языке C++, а не над ассемблером. Цель - сделать возможность модифицировать Готику по своему усмотрению - добавить полезные команды в язык Daedalus, подтянуть графику, улучшить физику и т.п. Но для этого предстоит еще очень много работы (хотя многое уже сделано). Необходимо отладить исходники (сейчас там очень много ошибок, игра то и дело вылетает), разобраться с принципом их работы и написать комментарии. Добиться устойчивой работы Г1, Г2 и модов. И потом уже заниматься модификациями движка. Мы с Vam'ом решили спросить, вдруг найдутся люди, которые захотят нам помочь. Сейчас нас всего двое. Если бы к нам присоединилось еще хотя бы 1-2 человека, работа пошла бы быстрее.

Требования к кандидатам:

1) Хорошее знание языка C++. Понимание принципов работы современных трехмерных движков не требуется, хотя и, безусловно, пойдет на пользу.

2) Согласие работать за просто так, бесплатно. Проект абсолютно некоммерческий. Продать результат нашего труда мы навряд ли сможем, даже если вдруг почему-то захотим (если только Jowood не подарит нам на это право).

3) Согласие работать в команде. То есть: а) член команды получает исходники всего движка полностью и обязан своими наработками делиться с другими членами команды; и б) член команды не может публиковать, распространять и передавать третьим лицам исходники движка или какие-либо их части без согласия тех членов команды, чей труд был затрачен на их создание.

Вот и все. Кто захочет к нам присоединяться, пишите.

Kerrax.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Не факт, что правообладателями являются именно они, а не, скажем, ДжоВуд.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.802
Баллы
995
kraw, 1000% РВ. ;)
 

Sora

Участник форума
Регистрация
14 Авг 2009
Сообщения
53
Благодарности
5
Баллы
160
Может собраться всеми форумами включая немецкие, и написать открытое письмо им с просьбой открыть хотябы часть движка?
Скажем, без рендерной части :)

Сорри если поднималось все это раньше, я чтото не нашел...
 

egert

Участник форума
Регистрация
15 Июн 2011
Сообщения
6
Благодарности
0
Баллы
145
Правообладателем на все игры (значит код, медия и т.д.) вселенной Готики до недавнего времени являлся Джовуд, но обанкротился наконец, поэтому права вернулсиь к Пираньям.

Какой толк от движка без большого куска ? Да и письмо не поможет, пока они сами не решать исходники открыть, а это скорее всего случится, лет через 5.

Я вот не понимаю почему товрищи с этого форума не хотят плодами своей работы делиться. Это похоже на какуюто детскую жадность.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.802
Баллы
995
egert,
Я вот не понимаю почему товрищи с этого форума не хотят плодами своей работы делиться. Это похоже на какуюто детскую жадность.
А разве здесь вам кто-то и чем-то обязан, чтобы делится? И потом, а что вам самому мешает их получить? Если что-то нужно, то вон - хватаешь IDу с ассмом в руки и вперед, в чем проблема..?

Правообладателем на все игры (значит код, медия и т.д.) вселенной Готики до недавнего времени являлся Джовуд, но обанкротился наконец, поэтому права вернулсиь к Пираньям.
И откуда вы только весь этот бред берете ?! :D
Если чего-то не знаете, то лучше промолчать... ;)
 

George_M

Участник форума
Регистрация
17 Дек 2010
Сообщения
692
Благодарности
18
Баллы
255
С исходниками понятно. А вот можно ли выложить структуру расширенных объектов и классов, в названии которых спереди к стандартным в скриптах буква "о" добавляется или "z"? Типа oCNPC, oCItem, zCObject, zCVob... Определив их в скриптах, можно получить доступ к ранее закрытым функциям - часть Нико выложил в двух вариантах для Г и Г2, но потом у него другая работа появилась...
 

more

Участник форума
Регистрация
6 Окт 2008
Сообщения
13
Благодарности
0
Баллы
150
George_M
Думаю, это осуществимо. Если VAM одобрит, то сделаю.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.802
Баллы
995
George_M,
А вот можно ли выложить структуру расширенных объектов и классов, в названии которых спереди к стандартным в скриптах буква "о" добавляется или "z"?
На вог.де в разделе моддерс, глянь тему скриптового пакета икарус, там это было вроде. ::)
 

egert

Участник форума
Регистрация
15 Июн 2011
Сообщения
6
Благодарности
0
Баллы
145
А разве здесь вам кто-то и чем-то обязан, чтобы делится? И потом, а что вам самому мешает их получить? Если что-то нужно, то вон - хватаешь IDу с ассмом в руки и вперед, в чем проблема..?
Нет, никто ничем не обязан, но возникает вопрос, а зачем вообще нужно сообщество ? Чтобы каждый по отдельности у себя в углу делал одно и тоже ? Если кто-то из товарищей уже сделал, почему-бы и не поделиться ?
И откуда вы только весь этот бред берете ?!
Если чего-то не знаете, то лучше промолчать...
Чем смеяться, лучше-бы поправили, потому что я либо говорю как есть, либо искренне заблуждаюсь.:)
 

more

Участник форума
Регистрация
6 Окт 2008
Сообщения
13
Благодарности
0
Баллы
150
George_M
VAM дал добро на публикацию структур классов Г1 (исходники Г2 не декомпилировались ).
Буду потихоньку добавлять структуры в это сообщение.
Код:
class oCMission                //sizeof 0x80
{
    struct TMisStatus        //sizeof 0xC
    {
        int            m_nVobID;        //0
        int            m_nStatus;        //4
        float        m_fStartTime;    //8
        TMisStatus()
        {
            m_nVobID = 0;
            m_nStatus = 0;
            m_fStartTime = 0;
        };
    };
//---------------------------------------------------------    script class C_Mission
    zSTRING                    m_sName;                    //4
    zSTRING                    m_sDescription;                //18
    int                        m_nDuration;                //2C
    BOOL                    m_bImportant;                //30
    int                        m_pfnOfferConditions;        //34
    int                        m_pfnOffer;                    //38
    int                        m_pfnSuccessConditions;        //3C
    int                        m_pfnSuccess;                //40
    int                        m_pfnFailureConditions;        //44
    int                        m_pfnFailure;                //48
    int                        m_pfnObsoleteConditions;    //4C
    int                        m_pfnObsolete;                //50
    int                        m_pfnRunning;                //54
//---------------------------------------------------------    end
    int                        m_nMisNr;                    //58
    oCNpc*                    m_pSelfNpc;                    //5C
    oCNpc*                    m_pOtherNpc;                //60
    int                        m_nVobID;                    //64
    BOOL                    m_bAvailable;                //68
    zCArray<TMisStatus*>    m_arrStatus;                //6C
    TMisStatus*                m_pCurrentStatus;            //78
    BOOL                    m_bRemove;                    //7C


}
Код:
class oCItem : public oCVob        //sizeof 0x2FC
{


//---------------------------------------------------------    script class C_ITEM
    int                    m_nID;                //100
    zSTRING                m_sItemInstance;    //104
    zSTRING                m_sNameID;            //118
    int                    m_nHP;                //12C
    int                    m_nHP_Max;            //130
    int                    m_dwMainflag;        //134
    int                    m_dwFlags;            //138
    int                    m_nWeight;            //13C
    int                    m_nValue;            //140
    int                    m_nDamageType;        //144
    int                    m_nDamageTotal;        //148
    int                    m_Damage[8];        //14C
    int                    m_nWear;            //16C
    int                    m_Protection[8];    //170
    int                    m_nNutrition;        //190
    int                    m_Cond_atr[3];        //194
    int                    m_Cond_value[3];    //1A0
    int                    m_Change_atr[3];    //1AC
    int                    m_Change_value[3];    //1B8
    int                    m_pfnMagic;            //1C4
    int                    m_pfnOn_equip;        //1C8
    int                    m_pfnOn_unequip;    //1CC
    int                    m_pfnOn_state[4];    //1D0
    int                    m_pfnOwner;            //1E0
    int                    m_nOwnerGuild;        //1E4
    int                    m_nDisguiseGuild;    //1E8
    zSTRING                m_sVisual;            //1EC
    zSTRING                m_sVisualChange;    //200
    int                    m_nVisualSkin;        //214
    zSTRING                m_sScemeName;        //218
    int                    m_nMaterial;        //22C
    int                    m_nMunition;        //230
    int                    m_nSpell;            //234
    int                    m_nRange;            //238
    int                    m_nMagicCircle;        //23C
    zSTRING                m_sDescription;        //240
    zSTRING                m_sText[6];            //254
    int                    m_nCount[6];        //2CC
//--------------------------------------------------------- end
    int                    m_nAmount;            //2E4
    int                    m_nInstanceIndex;    //2E8
    int                    m_nManipCount;        //2EC
    float                m_fManipTime;        //2F0
    int                    m_nBaseValue;        //2F4
    int                    us2F8;
Код:
class oCNpcFocus    //sizeof 0x50
{
//---------------------------------------------------------    script class C_FOCUS
    float            m_fNpcLongrange;    //0
    float            m_fNpcRange1;        //4
    float            m_fNpcRange2;        //8
    float            m_fNpcAzi;            //C
    float            m_fNpcElevdo;        //10
    float            m_fNpcElevup;        //14
    int                m_nNpcPrio;            //18
    float            m_fItemRange1;        //1C
    float            m_fItemRange2;        //20
    float            m_fItemAzi;            //24
    float            m_fItemElevdo;        //28
    float            m_fItemElevup;        //2C
    int                m_nItemPrio;        //30
    float            m_fMobRange1;        //34
    float            m_fMobRange2;        //38
    float            m_fMobAzi;            //3C
    float            m_fMobElevdo;        //40
    float            m_fMobElevup;        //44
    int                m_nMobPrio;            //48
//---------------------------------------------------------    end
    float            m_fMaxRange;        //4C
//...
Код:
class oCInfo                //sizeof 0x5C
{
    struct Tpd        //sizeof 0x30
    {
//---------------------------------------------------------    script class C_INFO
        int            m_nNpc;            //0
        int            m_nNr;            //4
        BOOL        m_bImportant;    //8
        int            m_pfnCondition;    //C
        int            m_pfnInfo;        //10
        zSTRING        m_sDescript;    //14
        BOOL        m_bTrade;        //28
        BOOL        m_bPermanent;    //2C
//---------------------------------------------------------    end
        Tpd();
    };
    int                        us4;
    zSTRING                    m_sName;        //8
    Tpd                        m_Instance;        //1C
    BOOL                    m_bTold;        //4C
    int                        m_nIndex;        //50
    zCList<oCInfoChoice>    m_lstChoice;    //54
Код:
class oCNpc : public oCVob                //sizeof 0xA38
{

//---------------------------------------------------------
    struct BIT_ARRAY
    {
        DWORD            tShowState:1;        //1
        DWORD            tShowNews:1;        //2
        DWORD            tEnableCS:1;        //4
        DWORD            tSummonNpc:1;        //8
        DWORD            tRespawn:1;            //10
        DWORD            tLockMove:1;        //20
        DWORD            ut6:1;                //40
        DWORD            tMad:1;                //80
        DWORD            tWounded:1;            //100
        DWORD            ut9:1;                //200
        DWORD            ut10:1;                //400
        DWORD            ut11:1;                //800
        DWORD            ut12:1;                //1000
        DWORD            tAllowedSpawn:1;    //2000
        DWORD            tBodyTexture:16;    //3FFFC000
    };
//---------------------------------------------------------
    struct BIT_ARRAY_BS
    {
        DWORD            tState:7;            //0000007F
        DWORD            tModifier:7;        //00003F80
        DWORD            ut14:1;                //00004000
        DWORD            tInterrupt:1;        //00008000
        DWORD            tFreeHands:1;        //00010000
        DWORD            ut17:1;                //00020000
        DWORD            ut18:1;                //00040000
    };
//---------------------------------------------------------
    enum oEBloodMode
    {
        zBLOOD_NONE,    //0
        zBLOOD_1,        //1
        zBLOOD_2,        //2
        zBLOOD_MAX        //3
    };
//---------------------------------------------------------
    struct oSDirectionInfo        //sizeof 0x10
    {
        struct BIT_ARRAY
        {
            BYTE        tLastDirect:1;        //01
            BYTE        tSmallObstacle:1;    //02
        };
        zVEC3            m_vDirect;    //0
        union
        {
            BYTE        m_dbFlags;    //C
            BIT_ARRAY    f;
        };
        oSDirectionInfo() { m_dbFlags = 0; };
    };
//---------------------------------------------------------
    class oCNpcTimedOverlay
    {
        zSTRING            m_sMdsName;    //0
        float            m_fTime;    //14
    };
//---------------------------------------------------------
    class oTRobustTrace                //sizeof 0x9C
    {
        struct BIT_ARRAY
        {
            DWORD        tIsDone:1;            //01
            DWORD        tCheckDirect:1;        //02
            DWORD        tMove:1;            //04
            DWORD        tUpdate:1;            //08
            DWORD        tTracing:1;            //10
            DWORD        tLastDirect:1;        //20
            DWORD        tObstacle:1;        //40
            DWORD        tTargetVisible:1;    //80
            DWORD        tStopChasm:1;        //100
        };
        union
        {
            DWORD                    m_dbFlags;            //0
            BIT_ARRAY                f;
        };
        zVEC3                        m_vPosition;        //4
        zCVob*                        m_pTargetVob;        //10
        zCVob*                        m_pObstacleVob;        //14
        float                        m_fDistToPos;        //18
        float                        m_fUpdDistToPos;    //1C
        float                        m_fMaxDistance;        //20
        float                        m_fTurnDirect;        //24
        float                        m_fTimer;            //28
        zVEC3                        m_vDirect;            //2C
        int                            us38;
        zCArray<oSDirectionInfo*>    m_arrDirection;        //3C
        int                            m_nObstacleNum;        //48
        zVEC3                        m_vPosList[5];        //4C
        int                            m_nNextPos;            //88
        int                            m_nFollowPos;        //8C
        float                        m_fDirectTimer;        //90
        float                        m_fPosTimer;        //94
        float                        m_fFollowTimer;        //98
    };
//---------------------------------------------------------    script class C_NPC
    int                            m_nID;                //100
    zSTRING                        m_sNameNpc[5];        //104
    zSTRING                        m_sSlot;            //168
    int                            m_NpcType;            //17C
    DWORD                        m_dwFlags;            //180
    int                            m_nAttribute[8];    //184
    int                            m_nProtection[8];    //1A4
    int                            m_nDamage[8];        //1C4
    int                            m_nDamageType;        //1E4
    int                            m_nGuild;            //1E8
    int                            m_nLevel;            //1EC
    int                            m_pfnMission[5];    //1F0
    int                            m_nFightTactic;        //204
    int                            m_nFightMode;        //208
    int                            m_nVoice;            //20C
    int                            m_nVoicePitch;        //210
    int                            m_nBodymass;        //214
    int                            m_pfnDailyRoutine;    //218
    int                            m_pfnStartAiState;    //21C
    zSTRING                        m_sRespawnPoint;    //220
    int                            m_nRespawnTime;        //234
    int                            m_nSenses;            //238
    int                            m_nSensesRange;        //23C
    int                            m_nAivar[50];        //240
    zSTRING                        m_sWp;                //308
    int                            m_nExpPoints;        //31C
    int                            m_nExpNext;            //320
    int                            m_nLearnPoints;        //324
//---------------------------------------------------------    end
    int                            us328;
    BOOL                        m_bBloodEnable;        //32C
    int                            m_nBloodDistance;    //330
    int                            m_nBloodAmount;        //334
    BOOL                        m_bBloodFlow;        //338
    zSTRING                        m_sBloodPfx;        //33C
    zSTRING                        m_sBloodTexture;    //350
    BOOL                        m_bAim;                //364
    BOOL                        m_bAttack;            //368
    BOOL                        m_bShoot;            //36C
    BOOL                        m_bAimining;        //370
    BOOL                        m_bDefend;            //374
    BOOL                        m_bFinalizeAim;        //378
    oCNpc*                        m_pEnemy;            //37C
    float                        m_fTurnSpeed;        //380
    BOOL                        m_bFleeing;            //384
    BOOL                        m_bFleeTrace;        //388
    zVEC3                        m_vFleePos;            //38C
    zVEC3                        m_vFleeEndPos;        //398
    zCWaypoint*                    m_pFleeWaypoint;    //3A4
    oTRobustTrace                m_RobustTrace;        //3A8
    zCList<oCNpcTimedOverlay>    m_lstTimedOverlay;    //444
    zCArray<oCNpcTalent*>        m_arrTalent;        //44C
    int                            m_nInvestMana;        //458
    oCVisualFX*                    m_pSpellVfx;        //45C
    oCMagFrontier                m_MagFrontier;        //460
    oCNpc_States                m_NpcStates;        //470
    oCNpcInventory                m_Inventory;        //550
    oCItemContainer*            m_pTradeContainer;    //780
    oCNpc*                        m_pTradeNpc;        //784
    float                        us788;
    zCArray<int>                m_arrSndHandle;        //78C
    int                            m_nActiveVoice;        //798
    union
    {
        DWORD                    m_MainFlags;        //79C
        BIT_ARRAY                npc;
    };
    WORD                        m_nSkinColor;        //7A0
    WORD                        m_nHeadTexture;        //7A2
    WORD                        m_nToothTexture;    //7A4
    BYTE                        m_nTrueGuild;        //7A6
    BYTE                        us7A7;
    char                        m_nMadTime;            //7A8
    BYTE                        m_nActiveSpells;    //7A9
    union
    {
        DWORD                    m_BodyState;        //7AC
        BIT_ARRAY_BS            body;
    };
    int                            m_nInstanceIndex;    //7B0
    zSTRING                        m_sVisualName;        //7B4
    zSTRING                        m_sBodyMesh;        //7C8
    zSTRING                        m_sHeadAni;            //7DC
    zVEC3                        m_vModelScale;        //7F0
    float                        m_fFatness;            //7FC
    int                            m_nNameNr;            //800
    float                        m_fRegenHpTime;        //804
    float                        m_fRegenManaTime;    //808
    float                        m_fSwimTime;        //80C
    float                        m_fDiveTime;        //810
    float                        m_fCurrentDiveTime;    //814
    zCVob*                        m_pBurnVob;            //818
    int                            m_nBurnTimeCount;    //81C
    float                        m_fBurnTime;        //820
    int                            m_nAttitude;        //824
    int                            m_nTmpAttitude;        //828
    float                        m_fAngryTime;        //82C
    BOOL                        m_bKnowsPlayer;        //830
    zTPerception                m_Perception[33];    //834
    int                            m_nNumActivePerc;    //93C
    float                        m_fPercTimer;        //940
    float                        m_fPercTime;        //944
    BOOL                        m_bBarrierDamage;    //948
    float                        m_fFallDownHeight;    //94C
    int                            m_nFallDownDamage;    //950
    oCMag_Book*                    m_pMagBook;            //954
    zCList<oCSpell>                m_lstSpell;            //958
    zCArray<zSTRING>            m_arrOverlayNames;    //960
    int                            us96C;
    int                            us970;
    int                            us974;
    float                        m_fRefuseTalkTimer;    //978
    oCNpc*                        m_pTalkingNpc;        //97C
    int                            us980;
    int                            us984;
    int                            us988;
    oCNewsMemory                m_News;                //98C
    zCVob*                        m_pCarryVob;        //998
    oCMobInter*                    m_pInteractMob;        //99C
    oCItem*                        m_pInteractItem;    //9A0
    int                            m_nInteractState;    //9A4
    int                            m_nInteractEndState;//9A8
    int                            us9AC;
    int                            m_nScriptState;        //9B0
    oCAIHuman*                    m_pHumanAI;            //9B4
    oCAniCtrl_Human*            m_pAniCtrl;            //9B8
    zCRoute*                    m_pRoute;            //9BC
    float                        m_fDamageMultiplier;//9C0
    int                            us9C4;
    zCEventMessage*                m_pLookAt;            //9C8
    zCEventMessage*                m_pPointAt;            //9CC
    zCArray<zCVob*>                m_arrCollectVobs;    //9D0
    float                        m_fForceDetection;    //9DC
    float                        m_fCollectTimer;    //9E0
    zCVob*                        m_pFocusVob;        //9E4
    zCArray<TNpcSlot*>            m_arrNpcSlot;        //9E8
    zCArray<TNpcSlot*>            m_arrSavedSlot;        //9F4
    float                        m_fFadeAwayTimer;    //A00
    float                        m_fRespawnTimer;    //A04
    float                        m_fModelRange;        //A08
    int                            m_nFightRangeBase;    //A0C
    int                            m_nFightRangeFist;    //A10
    float                        m_fFightTimer;        //A14
    int                            m_nFightAni;        //A18
    float                        m_fFightProgress;    //A1C
    int                            sA20;
    zCVob*                        m_pSoundSource;        //A24
    zVEC3                        m_vSoundPos;        //A28
    int                            usA34;
    //...
}
Код:
class zCParticleEmitter        //sizeof 0x320
{

//---------------------------------------------------------    script class C_ParticleFX
    float                m_fPpsValue;            //0
    zSTRING                m_sPpsScaleKeys;        //4
    BOOL                m_bPpsIsLooping;        //18
    BOOL                m_bPpsIsSmooth;            //1C
    float                m_fPpsFPS;                //20
    zSTRING                m_sPpsCreateEm;            //24
    float                m_fPpsCreateEmDelay;    //38
    zSTRING                m_sShpType;                //3C
    zSTRING                m_sShpFOR;                //50
    zSTRING                m_sShpOffsetVec;        //64
    zSTRING                m_sShpDistribType;        //78
    float                m_fShpDistribWalkSpeed;    //8C
    BOOL                m_bShpIsVolume;            //90
    zSTRING                m_sShpDim;                //94
    zSTRING                m_sShpMesh;                //A8
    BOOL                m_bShpMeshRender;        //BC
    zSTRING                m_sShpScaleKeys;        //C0
    BOOL                m_bShpScaleIsLooping;    //D4
    BOOL                m_bShpScaleIsSmooth;    //D8
    float                m_fShpScaleFPS;            //DC
    zSTRING                m_sDirMode;                //E0
    zSTRING                m_sDirFOR;                //F4
    zSTRING                m_sDirModeTargetFOR;    //108
    zSTRING                m_sDirModeTargetPos;    //11C
    float                m_fDirAngleHead;        //130
    float                m_fDirAngleHeadVar;        //134
    float                m_fDirAngleElev;        //138
    float                m_fDirAngleElevVar;        //13C
    float                m_fVelAvg;                //140
    float                m_fVelVar;                //144
    float                m_fLspPartAvg;            //148
    float                m_fLspPartVar;            //14C
    zSTRING                m_sFlyGravity;            //150
    BOOL                m_bFlyCollDet;            //164
    zSTRING                m_sVisName;                //168
    zSTRING                m_sVisOrientation;        //17C
    BOOL                m_bVisTexIsQuadPoly;    //190
    float                m_fVisTexAniFPS;        //194
    BOOL                m_bVisTexAniIsLooping;    //198
    zSTRING                m_sVisTexColorStart;    //19C
    zSTRING                m_sVisTexColorEnd;        //1B0
    zSTRING                m_sVisSizeStart;        //1C4
    float                m_fVisSizeEndScale;        //1D8
    zSTRING                m_sVisAlphaFunc;        //1DC
    float                m_fVisAlphaStart;        //1F0
    float                m_fVisAlphaEnd;            //1F4
    float                m_fTrlFadeSpeed;        //1F8
    zSTRING                m_sTrlTexture;            //1FC
    float                m_fTrlWidth;            //210
    float                m_fMrkFadeSpeed;        //214
    zSTRING                m_sMrkTexture;            //218
    float                m_fMrkSize;                //22C
//---------------------------------------------------------    end
    int                    us230;
    zSTRING                m_sName;                //234
    zCArray<float>        m_arrPpsScaleKeys;        //248
    zCParticleEmitter*    m_pDependentEm;            //254
    zSShpType            m_ShpType;                //258
    float                m_fShpDimension;        //25C
    zVEC3                m_vShpDimension;        //260
    zCMesh*                m_pShpMesh;                //26C
    BOOL                us270;
    zSDirFOR            m_ShpFOR;                //274
    zSShpDistribType    m_ShpDistribType;        //278
    zVEC3                m_vShpOffset;            //27C
    zCArray<float>        m_arrShpScaleKeys;        //288
    zSDirMode            m_DirMode;                //294
    zSDirFOR            m_DirSourceFOR;            //298
    zSDirFOR            m_DirTargetFOR;            //29C
    zVEC3                m_vDirTargetPos;        //2A0
    zTBBox3D            m_bbDirOutput;            //2AC
    zVEC3                m_vDirOutputSize;        //2C4
    zVEC3                m_vFlyGravity;            //2D0
    zCTexture*            m_pVisTexture;            //2DC
    zCMesh*                m_pVisMesh;                //2E0
    zSVisOrientation    m_VisOrientation;        //2E4
    zVEC2                m_vVisSizeStart;        //2E8
    zVEC3                m_vVisTexColorStart;    //2F0
    zVEC3                m_vVisTexColorEnd;        //2FC
    zTRnd_AlphaBlendFunc    m_AlphaBlendFunc;    //308
    zCTexture*            m_pTrlTexture;            //30C
    zCTexture*            m_pMrkTexture;            //310
    BOOL                m_bStopPpsLooping;        //314
    float                m_fDirAngleHeadVarRad;    //318
    float                m_fDirAngleElevVarRad;    //31C
Код:
class zCSndFrame            //sizeof 0x6C
{
    friend void D_SpyFrameInfo(zCActiveSnd const*, BOOL);
    friend class zCSndSys_MSS;
    friend class zCSndFX_MSS;
    friend class zCActiveSnd;
    friend class zCWavePool;

//---------------------------------------------------------    script class C_SFX
    zSTRING            m_sFileName;        //0
    float            m_fPitchOff;        //14
    float            m_fPitchVar;        //18
    int                m_nVolume;            //1C
    int                m_nLoop;            //20
    int                m_nLoopStartOffset;    //24
    int                m_nLoopEndOffset;    //28
    float            m_fReverbLevel;        //2C
    zSTRING            m_sPfxName;            //30
//---------------------------------------------------------    end
    int                us44;
    zSTRING            m_sInstanceName;    //48
    int                m_nVolumeActive;    //5C
    int                m_nSampleRate;        //60
    int                m_nPan;                //64
    zCWaveData*        m_pWave;            //68
}
Код:
class oCEmitterKey            //sizeof 0x1D4
{
    friend class oCVisualFX;

//---------------------------------------------------------    script class C_ParticleFXEmitKey
    zSTRING                    m_sVisName;                //0
    float                    m_fVisSizeScale;        //14
    float                    m_fScaleDuration;        //18
    float                    m_fPpsValue;            //1C
    BOOL                    m_bPpsIsSmoothChg;        //20
    BOOL                    m_bPpsIsLoopingChg;        //24
    float                    m_fScTime;                //28
    zSTRING                    m_sFlyGravity;            //2C
    zSTRING                    m_sShpDim;                //40
    BOOL                    m_bShpIsVolumeChg;        //54
    float                    m_fShpScaleFPS;            //58
    float                    m_fShpDistribWalkSpeed;    //5C
    zSTRING                    m_sShpOffsetVec;        //60
    zSTRING                    m_sShpDistribType;        //74
    zSTRING                    m_sDirMode;                //88
    zSTRING                    m_sDirFOR;                //9C
    zSTRING                    m_sDirModeTargetFOR;    //B0
    zSTRING                    m_sDirModeTargetPos;    //C4
    float                    m_fVelAvg;                //D8
    float                    m_fLspPartAvg;            //DC
    float                    m_fVisAlphaStart;        //E0
    zSTRING                    m_sLightPresetName;        //E4
    float                    m_fLightRange;            //F8
    zSTRING                    m_sSfxID;                //FC
    BOOL                    m_bSfxIsAmbient;        //110
    zSTRING                    m_sEmCreateFXID;        //114
    float                    m_fEmFlyGravity;        //128
    zSTRING                    m_sEmSelfRotVel;        //12C
    zSTRING                    m_sEmTrjMode;            //140
    float                    m_fEmTrjEaseVel;        //154
    BOOL                    m_bEmCheckCollision;    //158
    float                    m_fEmFXLifeSpan;        //15C
//---------------------------------------------------------    end
    int                        us160;
    zVEC3                    m_vGravity;                //164
    zVEC3                    m_vShpOffset;            //170
    zSShpDistribType        m_ShpDistribType;        //17C
    zSDirMode                m_DirMode;                //180
    zSDirFOR                m_DirSourceFOR;            //184
    zSDirFOR                m_DirTargetFOR;            //188
    zVEC3                    m_vDirTargetPos;        //18C
    zVEC3                    m_vEmSelfRotVel;        //198
    DWORD                    m_TrjMode;                //1A4
    zSTRING                    m_sName;                //1A8
    oCVisualFX*                m_pVisualFX;            //1BC
    zVEC3                    m_vTargetPos;            //1C0
    zCSoundFX*                m_pSoundFX;                //1CC
    int                        m_nHandleSfx;            //1D0
Код:
class oCVisualFX : public zCEffect    //sizeof 0x5C8
{
//---------------------------------------------------------    script class CFx_Base
    zSTRING                    m_sVisName;                //100
    zSTRING                    m_sVisSize;                //114
    float                    m_fVisAlpha;            //128
    zSTRING                    m_sVisAlphaBlendFunc;    //12C
    float                    m_fVisTexAniFPS;        //140
    BOOL                    m_bVisTexAniIsLooping;    //144
    zSTRING                    m_sEmTrjMode;            //148
    zSTRING                    m_sEmTrjOriginNode;        //15C
    zSTRING                    m_sEmTrjTargetNode;        //170
    float                    m_fEmTrjTargetRange;    //184
    float                    m_fEmTrjTargetAzi;        //188
    float                    m_fEmTrjTargetElev;        //18C
    int                        m_nEmTrjNumKeys;        //190
    int                        m_nEmTrjNumKeysVar;        //194
    float                    m_fEmTrjAngleElevVar;    //198
    float                    m_fEmTrjAngleHeadVar;    //19C
    float                    m_fEmTrjKeyDistVar;        //1A0
    zSTRING                    m_sEmTrjLoopMode;        //1A4
    zSTRING                    m_sEmTrjEaseFunc;        //1B8
    float                    m_fEmTrjEaseVel;        //1CC
    float                    m_fEmTrjDynUpdateDelay;    //1D0
    BOOL                    m_bEmTrjDynUpdateTargetOnly;    //1D4
    zSTRING                    m_sEmFXCreate;            //1D8
    zSTRING                    m_sEmFXInvestOrigin;    //1EC
    zSTRING                    m_sEmFXInvestTarget;    //200
    float                    m_fEmFXTriggerDelay;    //214
    BOOL                    m_bEmFXCreatedOwnTrj;    //218
    zSTRING                    m_sEmActionCollDyn;        //21C
    zSTRING                    m_sEmActionCollStat;    //230
    zSTRING                    m_sEmFXCollStat;        //244
    zSTRING                    m_sEmFXCollDyn;            //258
    zSTRING                    m_sEmFXCollStatAlign;    //26C
    zSTRING                    m_sEmFXCollDynAlign;    //280
    float                    m_fEmFXLifeSpan;        //294
    BOOL                    m_bEmCheckCollision;    //298
    BOOL                    m_bEmAdjustShpToOrigin;    //29C
    float                    m_fEmInvestNextKeyDuration;        //2A0
    float                    m_fEmFlyGravity;        //2A4
    zSTRING                    m_sEmSelfRotVel;        //2A8
    zSTRING                    m_sUserString[3];        //2BC
    zSTRING                    m_sLightPresetName;        //2F8
    zSTRING                    m_sSfxID;                //30C
    BOOL                    m_bSfxIsAmbient;        //320
    BOOL                    m_bSendAssessMagic;        //324
    float                    m_fSecsPerDamage;        //328
//---------------------------------------------------------    end
    int                        us32C;
    zVEC3                    m_vDecalDim;            //330
    DWORD                    m_TrjMode;                //33C
    DWORD                    m_EmActionCollDyn;        //340
    DWORD                    m_EmActionCollStat;        //344
    zVEC3                    m_vEmSelfRotVel;        //348
    zSTrjEaseFunc            m_EmTrjEaseFunc;        //354
    zSTrjLoopMode            m_EmTrjLoopMode;        //358
    int                        m_nKeyStage;            //35C
    oCVisualFX*                m_pOwnerVisFX;            //360
    oCVisualFX*                m_pOwnerTrjVisFX;        //364
    oCVisualFX*                m_pOriginInvestFX;        //368
    oCVisualFX*                m_pTargetInvestFX;        //36C
    oCVisualFXAI*            m_pVisFXAI;                //370
    BOOL                    m_bInitOriginInvest;    //374
    BOOL                    m_bInitTargetInvest;    //378
    BOOL                    m_bStopInvest;            //37C
    zCArray<oCVisualFX*>    m_arrChildTrjFX;        //380
    zCArray<oCVisualFX*>    m_arrChildFX;            //38C
    zCArray<oCEmitterKey*>    m_arrEmKeys;            //398
    zCArray<zCVob*>            m_arrTargetVobs;        //3A4
    zCArray<zCVob*>            m_arrCreateOnceVobs;    //3B0
    zCArray<zCVob*>            m_arrCollCandidates;    //3BC
    zCArray<zCVob*>            m_arrCollidedVobs;        //3C8
    zCArray<zSVisualFXColl>    m_arrCollReport;        //3D4
    oCTrajectory            m_Trajectory;            //3E0
    zCEarthquake*            m_pEarthQuake;            //43C
    zCVobScreenFX*            m_pScreenFX;            //440
    float                    m_fTimerBlendEffect;    //444
    BOOL                    m_bReverseBlend;        //448
    zCModelNodeInst*        m_pEmTrjOriginNode;        //44C
    zCModelNodeInst*        m_pEmTrjTargetNode;        //450
    zCVisual*                m_pSetVisual;            //454
    zCVob*                    m_pOriginVob;            //458
    zCVob*                    m_pInflictorVob;        //45C
    zCVob*                    m_pTargetVob;            //460
    zCVobLight*                m_pLightVob;            //464
    float                    m_fLightRange;            //468
    zCSoundFX*                m_pSndFX;                //46C
    int                        m_nHandleSndFX;            //470
    zSTRING                    m_sScriptName;            //474
    oCEmitterKey*            m_pInvestKey;            //488
    oCEmitterKey*            m_pUpdatedKey;            //48C
    oCEmitterKey*            m_pActiveKey;            //490
    int                        m_nInvestLevel;            //494
    BOOL                    m_bCollision;            //498
    int                        m_nContinousColl;        //49C
    BOOL                    m_bShowVisual;            //4A0
    BOOL                    m_bChildFX;                //4A4
    BOOL                    m_bFinished;            //4A8
    BOOL                    m_bInitEffect;            //4AC
    BOOL                    m_bCanDeleted;            //4B0
    BOOL                    m_bPolyStrip;            //4B4
    int                        m_nEffectLevel;            //4B8
    float                    m_fTick;                //4BC
    int                        us4C0;
    float                    m_fDisposeTimer;        //4C4
    float                    m_fDamagePerSecTimer;    //4C8
    zVEC3                    m_vTargetPos;            //4CC
    zVEC3                    m_vTrjPos;                //4D8
    zVEC3                    m_vBaseVisSize;            //4E4
    zVEC3                    m_vVisSize;                //4F0
    zVEC3                    m_vActVisSize;            //4FC
    float                    m_fInvestNextKeyTimer;    //508
    float                    m_fGravityAngle;        //50C
    float                    m_fEmTriggerTimer;        //510
    float                    m_fEmTrjDynUpdateTimer;    //514
    float                    m_fNextTrjDistance;        //518
    float                    m_fTrjDirection;        //51C
    float                    m_fTrjDuration;            //520
    float                    m_fLifeSpanTimer;        //524
    float                    m_fDamage;                //528
    int                        m_nDamageType;            //52C
    int                        m_nSpellType;            //530
    int                        m_nTargetType;            //534
    float                    m_fPpsValue;            //538
    zVEC2                    m_vVisSizeStart;        //53C
    zVEC3                    m_vFollowPos[10];        //544
    int                        m_nFollowIndex;            //5BC
    BOOL                    m_bFollowIntersect;        //5C0
    BOOL                    m_bProjectile;            //5C4
Код:
class oCSpell : public zCObject        //sizeof 0xB0
{

    int                m_nKey;                    //24
    oCVisualFX*        m_pEffect;                //28
    oCVisualFX*        m_pControlEffect;        //2C
    zCVob*            m_pSourceVob;            //30
    oCNpc*            m_pSourceNpc;            //34
    zCVob*            m_pTargetVob;            //38
    oCNpc*            m_pTargetNpc;            //3C
    oCNpc*            m_pTransformNpc;        //40
    float            m_fInvestTime;            //44
    int                m_nInvestedMana;        //48
    int                m_nLevel;                //4C
    int                m_Status;                //50
    int                m_nID;                    //54
    int                m_nInfo;                //58
    BOOL            m_bEnable;                //5C
    BOOL            m_bSetTarget;            //60
    int                m_nEffectTime;            //64
    BOOL            m_bCanBeDeleted;        //68
    float            m_fTelekinesDist;        //6C
    float            m_fTelekinesAngle;        //70
    float            m_fTelekinesHeight;        //74
    float            m_fTelekinesStep;        //78
    int                m_nEnergyType;            //7C
//---------------------------------------------------------    script class C_SPELL
    float            m_fTimePerMana;            //80
    int                m_nDamagePerLevel;        //84
    int                m_nDamageType;            //88
    int                m_nSpellType;            //8C
    BOOL            m_bTurnDuringInvest;    //90
    BOOL            m_bChangeTargetDuringInvest;    //94
    BOOL            m_bMultiEffect;            //98
    int                m_nTargetCollectAlgo;    //9C
    int                m_nTargetCollectType;    //A0
    int                m_nTargetCollectRange;    //A4
    int                m_nTargetCollectAzi;    //A8
    int                m_nTargetCollectElev;    //AC
//---------------------------------------------------------    end
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
А есть смысл этого всего? Ответ - нету, ибо есть такая вещь как Ikarus Script Pack, так в нем эти все классы и г1 и г2 - уже в приемлимом для готик сорсера виде.
Если нужно то могу дать ссылку на пакет.

Bump: Причем задроцтвовать на IDA не прийдется. А вот переводить классы C++ в скрипты готы.. пожалуй сложнее будет.
 

more

Участник форума
Регистрация
6 Окт 2008
Сообщения
13
Благодарности
0
Баллы
150
Тогда, я зря старался.
 

George_M

Участник форума
Регистрация
17 Дек 2010
Сообщения
692
Благодарности
18
Баллы
255
more, не зря - пару дней назад Сатурас утверждал, что Ikarus сорсером не компилится, так что еще через пару дней он может быть уже всем доволен, да и легко ему умничать, имея в собственном распоряжении декомпилинный екзешник;)

Кстати, там нет еще расширенного класса заклинаний?
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
Стой, икарусовкие примочки не компиляца, а классы компиляца, я не уточнил=)
 

more

Участник форума
Регистрация
6 Окт 2008
Сообщения
13
Благодарности
0
Баллы
150
Есть все, так как это у меня в "распоряжении декомпилинный екзешник".
Так что, заказывайте, что нужно списком.

oCSpell выложил, но в нем мало (ничего) полезного для скриптов.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
Есть все, так как это у меня в "распоряжении декомпилинный екзешник".
Так что, заказывайте, что нужно списком.

oCSpell выложил, но в нем мало (ничего) полезного для скриптов.
Суть в том что эти классы еще нужно знать как перенести в скрипты, тут без IDA не обойтись, ну не как.

Bump: Для заклинаний еще существует класс oCMagBook
 

George_M

Участник форума
Регистрация
17 Дек 2010
Сообщения
692
Благодарности
18
Баллы
255
Суть в том что эти классы еще нужно знать как перенести в скрипты, тут без IDA не обойтись, ну не как.
Никто не говорит, что это просто, но одно я знаю наверняка - не зная структуры классов их не перенести даже зная все эти IDA и прочие заморочки;)
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
Только благодаря IDA появились ихсодники г1=) и прочие)

Bump: More, тыбы лучше какнить выбил у вама исходники готик сорсера
 

George_M

Участник форума
Регистрация
17 Дек 2010
Сообщения
692
Благодарности
18
Баллы
255
oCSpell выложил, но в нем мало (ничего) полезного для скриптов.
Это еще вопрос - сделать нормально повреждение, зависящее от атрибутов невозможно было: двиг обновляет информацию в oCSpell из C_Spell уже после завершения заклинания т.е. это влияет на следующее прочтение и кто знает, какому NPC придет в голову его прочитать, а так может появится возможность влиять на повреждение напрямую в нужный момент.
 

more

Участник форума
Регистрация
6 Окт 2008
Сообщения
13
Благодарности
0
Баллы
150
Суть в том что эти классы еще нужно знать как перенести в скрипты
Код:
CLASS C_SFX
{
    VAR STRING      file;                // sfx filename
    VAR INT         pitchOff;            // pitchoffset in semitones
    VAR INT         pitchVar;            // semitone-variance
    VAR INT         vol;                // 0..1
    VAR INT         loop;                // 0/1
    VAR INT        loopStartOffset;
    VAR INT        loopEndOffset;
    VAR FLOAT       reverbLevel;        // 0..1
    VAR STRING        pfxName;

//added
    VAR INT                us44;
    VAR STRING        m_sInstanceName;    //48
    VAR INT                m_nVolumeActive;    //5C
    VAR INT                m_nSampleRate;        //60
};
А нельзя разве в конец скриптового класса дописать нужные определения, и затем, например, поменять m_nSampleRate?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу