typedef struct { char *name; // mod name char *version; // mod version DWORD crc32; // crc32 checksum modType_t type; // mod type DWORD refdef; // addr of refdef DWORD refdefViewAngles; // addr of refdefVA // Refer to CG_ConsoleCommand to find these (or vmmain command case 0x2) DWORD commands; // addr of console command list int numCommands; // number of commands in list // These will be used to fill in the pointers to player data DWORD centBase; // &cg_entities[0] DWORD centSize; // sizeof(centity_t) DWORD centCurrentStateOffset; // currentState offset DWORD ciBase; // &clientInfo[0] DWORD ciSize; // sizeof(clientInfo_t) DWORD ciInfoValidOffset; // infoValid offset DWORD ciNameOffset; // name offset DWORD ciTeamOffset; // team offset DWORD CG_Init; // called every time cgame.dll is loaded DWORD CG_Shutdown; // called on every map change DWORD CG_DrawActiveFrame; // called every frame DWORD CG_Player; // called for each player every frame DWORD CG_SetLerpFrameAnimationRate; // used to capture clientinfo base & size for unknown mods DWORD CG_FinishWeaponChange; // changes between 2 weapons. i.e. forced change scoped -> normal DWORD CG_PlayVoiceChat; // capture voice chat messages for GUI DWORD CG_EntityEvent; // get EntitiyEvent info DWORD CG_Trace; // run entity traces DWORD CG_DamageFeedback; // disable view distortion from being hit DWORD CG_WeaponFireRecoil; // disable view distortion when firing DWORD CG_Respawn; // lots of stuff we can reset or whatever on respawn DWORD CG_DrawNewCompass; // Std UI functions to remove DWORD CG_AddToTeamChat; DWORD CG_AddToTeamChat2; // only needed by etmain 2.60 DWORD CG_AddPMItem; DWORD CG_AddPMItem2; // jaymod version DWORD CG_DrawPlayerStatusHead; DWORD CG_DrawPlayerStats; DWORD CG_AntiCheat; // etpro AntiCheat func DWORD CG_ConfigString; // used for bypassing ETPRO anti-cheat DWORD SyscallResetCode; // if (orig_syscall != 0x445810) orig_syscall = 0x445810; } cgMod_t