#ifndef __APIPROXY__ #define __APIPROXY__ #include "archtypes.h" // DAL #include "netadr.h" #include "Sequence.h" #ifndef _WIN32 #include "enums.h" #endif #define MAX_ALIAS_NAME 32 typedef struct cmdalias_s { struct cmdalias_s *next; char name[MAX_ALIAS_NAME]; char *value; } cmdalias_t; // ******************************************************** // Functions exported by the client .dll // ******************************************************** // Function type declarations for client exports typedef int (*INITIALIZE_FUNC) ( struct cl_enginefuncs_s*, int ); typedef void (*HUD_INIT_FUNC) ( void ); typedef int (*HUD_VIDINIT_FUNC) ( void ); typedef int (*HUD_REDRAW_FUNC) ( float, int ); typedef int (*HUD_UPDATECLIENTDATA_FUNC) ( struct client_data_s*, float ); typedef void (*HUD_RESET_FUNC) ( void ); typedef void (*HUD_CLIENTMOVE_FUNC)( struct playermove_s *ppmove, qboolean server ); typedef void (*HUD_CLIENTMOVEINIT_FUNC)( struct playermove_s *ppmove ); typedef char (*HUD_TEXTURETYPE_FUNC)( char *name ); typedef void (*HUD_IN_ACTIVATEMOUSE_FUNC) ( void ); typedef void (*HUD_IN_DEACTIVATEMOUSE_FUNC) ( void ); typedef void (*HUD_IN_MOUSEEVENT_FUNC) ( int mstate ); typedef void (*HUD_IN_CLEARSTATES_FUNC) ( void ); typedef void (*HUD_IN_ACCUMULATE_FUNC ) ( void ); typedef void (*HUD_CL_CREATEMOVE_FUNC) ( float frametime, struct usercmd_s *cmd, int active ); typedef int (*HUD_CL_ISTHIRDPERSON_FUNC) ( void ); typedef void (*HUD_CL_GETCAMERAOFFSETS_FUNC )( float *ofs ); typedef struct kbutton_s * (*HUD_KB_FIND_FUNC) ( const char *name ); typedef void ( *HUD_CAMTHINK_FUNC )( void ); typedef void ( *HUD_CALCREF_FUNC ) ( struct ref_params_s *pparams ); typedef int ( *HUD_ADDENTITY_FUNC ) ( int type, struct cl_entity_s *ent, const char *modelname ); typedef void ( *HUD_CREATEENTITIES_FUNC ) ( void ); typedef void ( *HUD_DRAWNORMALTRIS_FUNC ) ( void ); typedef void ( *HUD_DRAWTRANSTRIS_FUNC ) ( void ); typedef void ( *HUD_STUDIOEVENT_FUNC ) ( const struct mstudioevent_s *event, const struct cl_entity_s *entity ); typedef void ( *HUD_POSTRUNCMD_FUNC ) ( struct local_state_s *from, struct local_state_s *to, struct usercmd_s *cmd, int runfuncs, double time, unsigned int random_seed ); typedef void ( *HUD_SHUTDOWN_FUNC ) ( void ); typedef void ( *HUD_TXFERLOCALOVERRIDES_FUNC )( struct entity_state_s *state, const struct clientdata_s *client ); typedef void ( *HUD_PROCESSPLAYERSTATE_FUNC )( struct entity_state_s *dst, const struct entity_state_s *src ); typedef void ( *HUD_TXFERPREDICTIONDATA_FUNC ) ( struct entity_state_s *ps, const struct entity_state_s *pps, struct clientdata_s *pcd, const struct clientdata_s *ppcd, struct weapon_data_s *wd, const struct weapon_data_s *pwd ); typedef void ( *HUD_DEMOREAD_FUNC ) ( int size, unsigned char *buffer ); typedef int ( *HUD_CONNECTIONLESS_FUNC )( const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size ); typedef int ( *HUD_GETHULLBOUNDS_FUNC ) ( int hullnumber, float *mins, float *maxs ); typedef void (*HUD_FRAME_FUNC) ( double ); typedef int (*HUD_KEY_EVENT_FUNC ) ( int eventcode, int keynum, const char *pszCurrentBinding ); typedef void (*HUD_TEMPENTUPDATE_FUNC) ( double frametime, double client_time, double cl_gravity, struct tempent_s **ppTempEntFree, struct tempent_s **ppTempEntActive, int ( *Callback_AddVisibleEntity )( struct cl_entity_s *pEntity ), void ( *Callback_TempEntPlaySound )( struct tempent_s *pTemp, float damp ) ); typedef struct cl_entity_s *(*HUD_GETUSERENTITY_FUNC ) ( int index ); typedef void (*HUD_VOICESTATUS_FUNC)(int entindex, qboolean bTalking); typedef void (*HUD_DIRECTORMESSAGE_FUNC)( int iSize, void *pbuf ); typedef int ( *HUD_STUDIO_INTERFACE_FUNC )( int version, struct r_studio_interface_s **ppinterface, struct engine_studio_api_s *pstudio ); typedef void (*HUD_CHATINPUTPOSITION_FUNC)( int *x, int *y ); typedef int (*HUD_GETPLAYERTEAM)(int iplayer); typedef void *(*CLIENTFACTORY)(); // this should be CreateInterfaceFn but that means including interface.h // which is a C++ file and some of the client files a C only... // so we return a void * which we then do a typecast on later. // Pointers to the exported client functions themselves typedef struct { INITIALIZE_FUNC pInitFunc; HUD_INIT_FUNC pHudInitFunc; HUD_VIDINIT_FUNC pHudVidInitFunc; HUD_REDRAW_FUNC pHudRedrawFunc; HUD_UPDATECLIENTDATA_FUNC pHudUpdateClientDataFunc; HUD_RESET_FUNC pHudResetFunc; HUD_CLIENTMOVE_FUNC pClientMove; HUD_CLIENTMOVEINIT_FUNC pClientMoveInit; HUD_TEXTURETYPE_FUNC pClientTextureType; HUD_IN_ACTIVATEMOUSE_FUNC pIN_ActivateMouse; HUD_IN_DEACTIVATEMOUSE_FUNC pIN_DeactivateMouse; HUD_IN_MOUSEEVENT_FUNC pIN_MouseEvent; HUD_IN_CLEARSTATES_FUNC pIN_ClearStates; HUD_IN_ACCUMULATE_FUNC pIN_Accumulate; HUD_CL_CREATEMOVE_FUNC pCL_CreateMove; HUD_CL_ISTHIRDPERSON_FUNC pCL_IsThirdPerson; HUD_CL_GETCAMERAOFFSETS_FUNC pCL_GetCameraOffsets; HUD_KB_FIND_FUNC pFindKey; HUD_CAMTHINK_FUNC pCamThink; HUD_CALCREF_FUNC pCalcRefdef; HUD_ADDENTITY_FUNC pAddEntity; HUD_CREATEENTITIES_FUNC pCreateEntities; HUD_DRAWNORMALTRIS_FUNC pDrawNormalTriangles; HUD_DRAWTRANSTRIS_FUNC pDrawTransparentTriangles; HUD_STUDIOEVENT_FUNC pStudioEvent; HUD_POSTRUNCMD_FUNC pPostRunCmd; HUD_SHUTDOWN_FUNC pShutdown; HUD_TXFERLOCALOVERRIDES_FUNC pTxferLocalOverrides; HUD_PROCESSPLAYERSTATE_FUNC pProcessPlayerState; HUD_TXFERPREDICTIONDATA_FUNC pTxferPredictionData; HUD_DEMOREAD_FUNC pReadDemoBuffer; HUD_CONNECTIONLESS_FUNC pConnectionlessPacket; HUD_GETHULLBOUNDS_FUNC pGetHullBounds; HUD_FRAME_FUNC pHudFrame; HUD_KEY_EVENT_FUNC pKeyEvent; HUD_TEMPENTUPDATE_FUNC pTempEntUpdate; HUD_GETUSERENTITY_FUNC pGetUserEntity; HUD_VOICESTATUS_FUNC pVoiceStatus; // Possibly null on old client dlls. HUD_DIRECTORMESSAGE_FUNC pDirectorMessage; // Possibly null on old client dlls. HUD_STUDIO_INTERFACE_FUNC pStudioInterface; // Not used by all clients HUD_CHATINPUTPOSITION_FUNC pChatInputPosition; // Not used by all clients HUD_GETPLAYERTEAM pGetPlayerTeam; // Not used by all clients CLIENTFACTORY pClientFactory; } cldll_func_t; // Function type declarations for client destination functions typedef void (*DST_INITIALIZE_FUNC) ( struct cl_enginefuncs_s**, int *); typedef void (*DST_HUD_INIT_FUNC) ( void ); typedef void (*DST_HUD_VIDINIT_FUNC) ( void ); typedef void (*DST_HUD_REDRAW_FUNC) ( float*, int* ); typedef void (*DST_HUD_UPDATECLIENTDATA_FUNC) ( struct client_data_s**, float* ); typedef void (*DST_HUD_RESET_FUNC) ( void ); typedef void (*DST_HUD_CLIENTMOVE_FUNC)( struct playermove_s **, qboolean * ); typedef void (*DST_HUD_CLIENTMOVEINIT_FUNC)( struct playermove_s ** ); typedef void (*DST_HUD_TEXTURETYPE_FUNC)( char ** ); typedef void (*DST_HUD_IN_ACTIVATEMOUSE_FUNC) ( void ); typedef void (*DST_HUD_IN_DEACTIVATEMOUSE_FUNC) ( void ); typedef void (*DST_HUD_IN_MOUSEEVENT_FUNC) ( int * ); typedef void (*DST_HUD_IN_CLEARSTATES_FUNC) ( void ); typedef void (*DST_HUD_IN_ACCUMULATE_FUNC ) ( void ); typedef void (*DST_HUD_CL_CREATEMOVE_FUNC) ( float *, struct usercmd_s **, int * ); typedef void (*DST_HUD_CL_ISTHIRDPERSON_FUNC) ( void ); typedef void (*DST_HUD_CL_GETCAMERAOFFSETS_FUNC )( float ** ); typedef void (*DST_HUD_KB_FIND_FUNC) ( const char ** ); typedef void (*DST_HUD_CAMTHINK_FUNC )( void ); typedef void (*DST_HUD_CALCREF_FUNC ) ( struct ref_params_s ** ); typedef void (*DST_HUD_ADDENTITY_FUNC ) ( int *, struct cl_entity_s **, const char ** ); typedef void (*DST_HUD_CREATEENTITIES_FUNC ) ( void ); typedef void (*DST_HUD_DRAWNORMALTRIS_FUNC ) ( void ); typedef void (*DST_HUD_DRAWTRANSTRIS_FUNC ) ( void ); typedef void (*DST_HUD_STUDIOEVENT_FUNC ) ( const struct mstudioevent_s **, const struct cl_entity_s ** ); typedef void (*DST_HUD_POSTRUNCMD_FUNC ) ( struct local_state_s **, struct local_state_s **, struct usercmd_s **, int *, double *, unsigned int * ); typedef void (*DST_HUD_SHUTDOWN_FUNC ) ( void ); typedef void (*DST_HUD_TXFERLOCALOVERRIDES_FUNC )( struct entity_state_s **, const struct clientdata_s ** ); typedef void (*DST_HUD_PROCESSPLAYERSTATE_FUNC )( struct entity_state_s **, const struct entity_state_s ** ); typedef void (*DST_HUD_TXFERPREDICTIONDATA_FUNC ) ( struct entity_state_s **, const struct entity_state_s **, struct clientdata_s **, const struct clientdata_s **, struct weapon_data_s **, const struct weapon_data_s ** ); typedef void (*DST_HUD_DEMOREAD_FUNC ) ( int *, unsigned char ** ); typedef void (*DST_HUD_CONNECTIONLESS_FUNC )( const struct netadr_s **, const char **, char **, int ** ); typedef void (*DST_HUD_GETHULLBOUNDS_FUNC ) ( int *, float **, float ** ); typedef void (*DST_HUD_FRAME_FUNC) ( double * ); typedef void (*DST_HUD_KEY_EVENT_FUNC ) ( int *, int *, const char ** ); typedef void (*DST_HUD_TEMPENTUPDATE_FUNC) ( double *, double *, double *, struct tempent_s ***, struct tempent_s ***, int ( **Callback_AddVisibleEntity )( struct cl_entity_s *pEntity ), void ( **Callback_TempEntPlaySound )( struct tempent_s *pTemp, float damp ) ); typedef void (*DST_HUD_GETUSERENTITY_FUNC ) ( int * ); typedef void (*DST_HUD_VOICESTATUS_FUNC)(int *, qboolean *); typedef void (*DST_HUD_DIRECTORMESSAGE_FUNC)( int *, void ** ); typedef void (*DST_HUD_STUDIO_INTERFACE_FUNC ) ( int *, struct r_studio_interface_s ***, struct engine_studio_api_s ** ); typedef void (*DST_HUD_CHATINPUTPOSITION_FUNC)( int **, int ** ); typedef void (*DST_HUD_GETPLAYERTEAM)(int); // Pointers to the client destination functions typedef struct { DST_INITIALIZE_FUNC pInitFunc; DST_HUD_INIT_FUNC pHudInitFunc; DST_HUD_VIDINIT_FUNC pHudVidInitFunc; DST_HUD_REDRAW_FUNC pHudRedrawFunc; DST_HUD_UPDATECLIENTDATA_FUNC pHudUpdateClientDataFunc; DST_HUD_RESET_FUNC pHudResetFunc; DST_HUD_CLIENTMOVE_FUNC pClientMove; DST_HUD_CLIENTMOVEINIT_FUNC pClientMoveInit; DST_HUD_TEXTURETYPE_FUNC pClientTextureType; DST_HUD_IN_ACTIVATEMOUSE_FUNC pIN_ActivateMouse; DST_HUD_IN_DEACTIVATEMOUSE_FUNC pIN_DeactivateMouse; DST_HUD_IN_MOUSEEVENT_FUNC pIN_MouseEvent; DST_HUD_IN_CLEARSTATES_FUNC pIN_ClearStates; DST_HUD_IN_ACCUMULATE_FUNC pIN_Accumulate; DST_HUD_CL_CREATEMOVE_FUNC pCL_CreateMove; DST_HUD_CL_ISTHIRDPERSON_FUNC pCL_IsThirdPerson; DST_HUD_CL_GETCAMERAOFFSETS_FUNC pCL_GetCameraOffsets; DST_HUD_KB_FIND_FUNC pFindKey; DST_HUD_CAMTHINK_FUNC pCamThink; DST_HUD_CALCREF_FUNC pCalcRefdef; DST_HUD_ADDENTITY_FUNC pAddEntity; DST_HUD_CREATEENTITIES_FUNC pCreateEntities; DST_HUD_DRAWNORMALTRIS_FUNC pDrawNormalTriangles; DST_HUD_DRAWTRANSTRIS_FUNC pDrawTransparentTriangles; DST_HUD_STUDIOEVENT_FUNC pStudioEvent; DST_HUD_POSTRUNCMD_FUNC pPostRunCmd; DST_HUD_SHUTDOWN_FUNC pShutdown; DST_HUD_TXFERLOCALOVERRIDES_FUNC pTxferLocalOverrides; DST_HUD_PROCESSPLAYERSTATE_FUNC pProcessPlayerState; DST_HUD_TXFERPREDICTIONDATA_FUNC pTxferPredictionData; DST_HUD_DEMOREAD_FUNC pReadDemoBuffer; DST_HUD_CONNECTIONLESS_FUNC pConnectionlessPacket; DST_HUD_GETHULLBOUNDS_FUNC pGetHullBounds; DST_HUD_FRAME_FUNC pHudFrame; DST_HUD_KEY_EVENT_FUNC pKeyEvent; DST_HUD_TEMPENTUPDATE_FUNC pTempEntUpdate; DST_HUD_GETUSERENTITY_FUNC pGetUserEntity; DST_HUD_VOICESTATUS_FUNC pVoiceStatus; // Possibly null on old client dlls. DST_HUD_DIRECTORMESSAGE_FUNC pDirectorMessage; // Possibly null on old client dlls. DST_HUD_STUDIO_INTERFACE_FUNC pStudioInterface; // Not used by all clients DST_HUD_CHATINPUTPOSITION_FUNC pChatInputPosition; // Not used by all clients DST_HUD_GETPLAYERTEAM pGetPlayerTeam; // Not used by all clients } cldll_func_dst_t; // ******************************************************** // Functions exported by the engine // ******************************************************** // Function type declarations for engine exports typedef AVHHSPRITE (*pfnEngSrc_pfnSPR_Load_t ) ( const char *szPicName ); typedef int (*pfnEngSrc_pfnSPR_Frames_t ) ( AVHHSPRITE hPic ); typedef int (*pfnEngSrc_pfnSPR_Height_t ) ( AVHHSPRITE hPic, int frame ); typedef int (*pfnEngSrc_pfnSPR_Width_t ) ( AVHHSPRITE hPic, int frame ); typedef void (*pfnEngSrc_pfnSPR_Set_t ) ( AVHHSPRITE hPic, int r, int g, int b ); typedef void (*pfnEngSrc_pfnSPR_Draw_t ) ( int frame, int x, int y, const struct rect_s *prc ); typedef void (*pfnEngSrc_pfnSPR_DrawHoles_t ) ( int frame, int x, int y, const struct rect_s *prc ); typedef void (*pfnEngSrc_pfnSPR_DrawAdditive_t ) ( int frame, int x, int y, const struct rect_s *prc ); typedef void (*pfnEngSrc_pfnSPR_EnableScissor_t ) ( int x, int y, int width, int height ); typedef void (*pfnEngSrc_pfnSPR_DisableScissor_t ) ( void ); typedef struct client_sprite_s * (*pfnEngSrc_pfnSPR_GetList_t ) ( char *psz, int *piCount ); typedef void (*pfnEngSrc_pfnFillRGBA_t ) ( int x, int y, int width, int height, int r, int g, int b, int a ); typedef int (*pfnEngSrc_pfnGetScreenInfo_t ) ( struct SCREENINFO_s *pscrinfo ); typedef void (*pfnEngSrc_pfnSetCrosshair_t ) ( AVHHSPRITE hspr, wrect_t rc, int r, int g, int b ); typedef struct cvar_s * (*pfnEngSrc_pfnRegisterVariable_t ) ( char *szName, char *szValue, int flags ); typedef float (*pfnEngSrc_pfnGetCvarFloat_t ) ( char *szName ); typedef char* (*pfnEngSrc_pfnGetCvarString_t ) ( char *szName ); typedef int (*pfnEngSrc_pfnAddCommand_t ) ( char *cmd_name, void (*pfnEngSrc_function)(void) ); typedef int (*pfnEngSrc_pfnHookUserMsg_t ) ( char *szMsgName, pfnUserMsgHook pfn ); typedef int (*pfnEngSrc_pfnServerCmd_t ) ( char *szCmdString ); typedef int (*pfnEngSrc_pfnClientCmd_t ) ( char *szCmdString ); typedef void (*pfnEngSrc_pfnPrimeMusicStream_t ) ( char *szFilename, int looping ); typedef void (*pfnEngSrc_pfnGetPlayerInfo_t ) ( int ent_num, struct hud_player_info_s *pinfo ); typedef void (*pfnEngSrc_pfnPlaySoundByName_t ) ( char *szSound, float volume ); typedef void (*pfnEngSrc_pfnPlaySoundByNameAtPitch_t ) ( char *szSound, float volume, int pitch ); typedef void (*pfnEngSrc_pfnPlaySoundVoiceByName_t ) ( char *szSound, float volume, int pitch ); typedef void (*pfnEngSrc_pfnPlaySoundByIndex_t ) ( int iSound, float volume ); typedef void (*pfnEngSrc_pfnAngleVectors_t ) ( const float * vecAngles, float * forward, float * right, float * up ); typedef struct client_textmessage_s*(*pfnEngSrc_pfnTextMessageGet_t ) ( const char *pName ); typedef int (*pfnEngSrc_pfnDrawCharacter_t ) ( int x, int y, int number, int r, int g, int b ); typedef int (*pfnEngSrc_pfnDrawConsoleString_t ) ( int x, int y, char *string ); typedef void (*pfnEngSrc_pfnDrawSetTextColor_t ) ( float r, float g, float b ); typedef void (*pfnEngSrc_pfnDrawConsoleStringLen_t )( const char *string, int *length, int *height ); typedef void (*pfnEngSrc_pfnConsolePrint_t ) ( const char *string ); typedef void (*pfnEngSrc_pfnCenterPrint_t ) ( const char *string ); typedef int (*pfnEngSrc_GetWindowCenterX_t ) ( void ); typedef int (*pfnEngSrc_GetWindowCenterY_t ) ( void ); typedef void (*pfnEngSrc_GetViewAngles_t ) ( float * ); typedef void (*pfnEngSrc_SetViewAngles_t ) ( float * ); typedef int (*pfnEngSrc_GetMaxClients_t ) ( void ); typedef void (*pfnEngSrc_Cvar_SetValue_t ) ( char *cvar, float value ); typedef int (*pfnEngSrc_Cmd_Argc_t) (void); typedef char * (*pfnEngSrc_Cmd_Argv_t ) ( int arg ); typedef void (*pfnEngSrc_Con_Printf_t ) ( char *fmt, ... ); typedef void (*pfnEngSrc_Con_DPrintf_t ) ( char *fmt, ... ); typedef void (*pfnEngSrc_Con_NPrintf_t ) ( int pos, char *fmt, ... ); typedef void (*pfnEngSrc_Con_NXPrintf_t ) ( struct con_nprint_s *info, char *fmt, ... ); typedef const char * (*pfnEngSrc_PhysInfo_ValueForKey_t ) ( const char *key ); typedef const char * (*pfnEngSrc_ServerInfo_ValueForKey_t )( const char *key ); typedef float (*pfnEngSrc_GetClientMaxspeed_t ) ( void ); typedef int (*pfnEngSrc_CheckParm_t ) ( char *parm, char **ppnext ); typedef void (*pfnEngSrc_Key_Event_t ) ( int key, int down ); typedef void (*pfnEngSrc_GetMousePosition_t ) ( int *mx, int *my ); typedef int (*pfnEngSrc_IsNoClipping_t ) ( void ); typedef struct cl_entity_s * (*pfnEngSrc_GetLocalPlayer_t ) ( void ); typedef struct cl_entity_s * (*pfnEngSrc_GetViewModel_t ) ( void ); typedef struct cl_entity_s * (*pfnEngSrc_GetEntityByIndex_t ) ( int idx ); typedef float (*pfnEngSrc_GetClientTime_t ) ( void ); typedef void (*pfnEngSrc_V_CalcShake_t ) ( void ); typedef void (*pfnEngSrc_V_ApplyShake_t ) ( float *origin, float *angles, float factor ); typedef int (*pfnEngSrc_PM_PointContents_t ) ( float *point, int *truecontents ); typedef int (*pfnEngSrc_PM_WaterEntity_t ) ( float *p ); typedef struct pmtrace_s * (*pfnEngSrc_PM_TraceLine_t ) ( float *start, float *end, int flags, int usehull, int ignore_pe ); typedef struct model_s * (*pfnEngSrc_CL_LoadModel_t ) ( const char *modelname, int *index ); typedef int (*pfnEngSrc_CL_CreateVisibleEntity_t ) ( int type, struct cl_entity_s *ent ); typedef const struct model_s * (*pfnEngSrc_GetSpritePointer_t ) ( AVHHSPRITE hSprite ); typedef void (*pfnEngSrc_pfnPlaySoundByNameAtLocation_t ) ( char *szSound, float volume, float *origin ); typedef unsigned short (*pfnEngSrc_pfnPrecacheEvent_t ) ( int type, const char* psz ); typedef void (*pfnEngSrc_pfnPlaybackEvent_t ) ( int flags, const struct edict_s *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 ); typedef void (*pfnEngSrc_pfnWeaponAnim_t ) ( int iAnim, int body ); typedef float (*pfnEngSrc_pfnRandomFloat_t ) ( float flLow, float flHigh ); typedef int32 (*pfnEngSrc_pfnRandomLong_t ) ( int32 lLow, int32 lHigh ); typedef void (*pfnEngSrc_pfnHookEvent_t ) ( char *name, void ( *pfnEvent )( struct event_args_s *args ) ); typedef int (*pfnEngSrc_Con_IsVisible_t) (); typedef const char * (*pfnEngSrc_pfnGetGameDirectory_t ) ( void ); typedef struct cvar_s * (*pfnEngSrc_pfnGetCvarPointer_t ) ( const char *szName ); typedef const char * (*pfnEngSrc_Key_LookupBinding_t ) ( const char *pBinding ); typedef const char * (*pfnEngSrc_pfnGetLevelName_t ) ( void ); typedef void (*pfnEngSrc_pfnGetScreenFade_t ) ( struct screenfade_s *fade ); typedef void (*pfnEngSrc_pfnSetScreenFade_t ) ( struct screenfade_s *fade ); typedef void * (*pfnEngSrc_VGui_GetPanel_t ) ( ); typedef void (*pfnEngSrc_VGui_ViewportPaintBackground_t ) (int extents[4]); typedef byte* (*pfnEngSrc_COM_LoadFile_t ) ( char *path, int usehunk, int *pLength ); typedef char* (*pfnEngSrc_COM_ParseFile_t ) ( char *data, char *token ); typedef void (*pfnEngSrc_COM_FreeFile_t) ( void *buffer ); typedef struct triangleapi_s * pTriAPI; typedef struct efx_api_s * pEfxAPI; typedef struct event_api_s * pEventAPI; typedef struct demo_api_s * pDemoAPI; typedef struct net_api_s * pNetAPI; typedef struct IVoiceTweak_s * pVoiceTweak; typedef int (*pfnEngSrc_IsSpectateOnly_t ) ( void ); typedef struct model_s * (*pfnEngSrc_LoadMapSprite_t ) ( const char *filename ); typedef void (*pfnEngSrc_COM_AddAppDirectoryToSearchPath_t ) ( const char *pszBaseDir, const char *appName ); typedef int (*pfnEngSrc_COM_ExpandFilename_t) ( const char *fileName, char *nameOutBuffer, int nameOutBufferSize ); typedef const char * (*pfnEngSrc_PlayerInfo_ValueForKey_t )( int playerNum, const char *key ); typedef void (*pfnEngSrc_PlayerInfo_SetValueForKey_t )( const char *key, const char *value ); typedef qboolean (*pfnEngSrc_GetPlayerUniqueID_t)(int iPlayer, char playerID[16]); typedef int (*pfnEngSrc_GetTrackerIDForPlayer_t)(int playerSlot); typedef int (*pfnEngSrc_GetPlayerForTrackerID_t)(int trackerID); typedef int (*pfnEngSrc_pfnServerCmdUnreliable_t )( char *szCmdString ); typedef void (*pfnEngSrc_GetMousePos_t )(struct tagPOINT *ppt); typedef void (*pfnEngSrc_SetMousePos_t )(int x, int y); typedef void (*pfnEngSrc_SetMouseEnable_t)(qboolean fEnable); typedef struct cvar_s * (*pfnEngSrc_GetFirstCVarPtr_t)(); typedef unsigned int (*pfnEngSrc_GetFirstCmdFunctionHandle_t)(); typedef unsigned int (*pfnEngSrc_GetNextCmdFunctionHandle_t)(unsigned int cmdhandle); typedef const char * (*pfnEngSrc_GetCmdFunctionName_t)(unsigned int cmdhandle); typedef float (*pfnEngSrc_GetClientOldTime_t)(); typedef float (*pfnEngSrc_GetServerGravityValue_t)(); typedef struct model_s * (*pfnEngSrc_GetModelByIndex_t)( int index ); typedef void (*pfnEngSrc_pfnSetFilterMode_t )( int mode ); typedef void (*pfnEngSrc_pfnSetFilterColor_t )( float r, float g, float b ); typedef void (*pfnEngSrc_pfnSetFilterBrightness_t )( float brightness ); typedef sequenceEntry_s* (*pfnEngSrc_pfnSequenceGet_t )( const char *fileName, const char* entryName ); typedef void (*pfnEngSrc_pfnSPR_DrawGeneric_t )( int frame, int x, int y, const struct rect_s *prc, int src, int dest, int w, int h ); typedef sentenceEntry_s* (*pfnEngSrc_pfnSequencePickSentence_t )( const char *sentenceName, int pickMethod, int* entryPicked ); // draw a complete string typedef int (*pfnEngSrc_pfnDrawString_t ) ( int x, int y, const char *str, int r, int g, int b ); typedef int (*pfnEngSrc_pfnDrawStringReverse_t ) ( int x, int y, const char *str, int r, int g, int b ); typedef const char * (*pfnEngSrc_LocalPlayerInfo_ValueForKey_t )( const char *key ); typedef int (*pfnEngSrc_pfnVGUI2DrawCharacter_t ) ( int x, int y, int ch, unsigned int font ); typedef int (*pfnEngSrc_pfnVGUI2DrawCharacterAdd_t ) ( int x, int y, int ch, int r, int g, int b, unsigned int font); typedef unsigned int (*pfnEngSrc_COM_GetApproxWavePlayLength ) ( const char * filename); typedef void * (*pfnEngSrc_pfnGetCareerUI_t)(); typedef void (*pfnEngSrc_Cvar_Set_t ) ( char *cvar, char *value ); typedef int (*pfnEngSrc_pfnIsPlayingCareerMatch_t)(); typedef double (*pfnEngSrc_GetAbsoluteTime_t) ( void ); typedef void (*pfnEngSrc_pfnProcessTutorMessageDecayBuffer_t)(int *buffer, int bufferLength); typedef void (*pfnEngSrc_pfnConstructTutorMessageDecayBuffer_t)(int *buffer, int bufferLength); typedef void (*pfnEngSrc_pfnResetTutorMessageDecayData_t)(); typedef void (*pfnEngSrc_pfnFillRGBABlend_t ) ( int x, int y, int width, int height, int r, int g, int b, int a ); typedef int (*pfnEngSrc_pfnGetAppID_t) ( void ); typedef cmdalias_t* (*pfnEngSrc_pfnGetAliases_t) ( void ); typedef void (*pfnEngSrc_pfnVguiWrap2_GetMouseDelta_t) ( int *x, int *y ); // Pointers to the exported engine functions themselves typedef struct cl_enginefuncs_s { pfnEngSrc_pfnSPR_Load_t pfnSPR_Load; pfnEngSrc_pfnSPR_Frames_t pfnSPR_Frames; pfnEngSrc_pfnSPR_Height_t pfnSPR_Height; pfnEngSrc_pfnSPR_Width_t pfnSPR_Width; pfnEngSrc_pfnSPR_Set_t pfnSPR_Set; pfnEngSrc_pfnSPR_Draw_t pfnSPR_Draw; pfnEngSrc_pfnSPR_DrawHoles_t pfnSPR_DrawHoles; pfnEngSrc_pfnSPR_DrawAdditive_t pfnSPR_DrawAdditive; pfnEngSrc_pfnSPR_EnableScissor_t pfnSPR_EnableScissor; pfnEngSrc_pfnSPR_DisableScissor_t pfnSPR_DisableScissor; pfnEngSrc_pfnSPR_GetList_t pfnSPR_GetList; pfnEngSrc_pfnFillRGBA_t pfnFillRGBA; pfnEngSrc_pfnGetScreenInfo_t pfnGetScreenInfo; pfnEngSrc_pfnSetCrosshair_t pfnSetCrosshair; pfnEngSrc_pfnRegisterVariable_t pfnRegisterVariable; pfnEngSrc_pfnGetCvarFloat_t pfnGetCvarFloat; pfnEngSrc_pfnGetCvarString_t pfnGetCvarString; pfnEngSrc_pfnAddCommand_t pfnAddCommand; pfnEngSrc_pfnHookUserMsg_t pfnHookUserMsg; pfnEngSrc_pfnServerCmd_t pfnServerCmd; pfnEngSrc_pfnClientCmd_t pfnClientCmd; pfnEngSrc_pfnGetPlayerInfo_t pfnGetPlayerInfo; pfnEngSrc_pfnPlaySoundByName_t pfnPlaySoundByName; pfnEngSrc_pfnPlaySoundByIndex_t pfnPlaySoundByIndex; pfnEngSrc_pfnAngleVectors_t pfnAngleVectors; pfnEngSrc_pfnTextMessageGet_t pfnTextMessageGet; pfnEngSrc_pfnDrawCharacter_t pfnDrawCharacter; pfnEngSrc_pfnDrawConsoleString_t pfnDrawConsoleString; pfnEngSrc_pfnDrawSetTextColor_t pfnDrawSetTextColor; pfnEngSrc_pfnDrawConsoleStringLen_t pfnDrawConsoleStringLen; pfnEngSrc_pfnConsolePrint_t pfnConsolePrint; pfnEngSrc_pfnCenterPrint_t pfnCenterPrint; pfnEngSrc_GetWindowCenterX_t GetWindowCenterX; pfnEngSrc_GetWindowCenterY_t GetWindowCenterY; pfnEngSrc_GetViewAngles_t GetViewAngles; pfnEngSrc_SetViewAngles_t SetViewAngles; pfnEngSrc_GetMaxClients_t GetMaxClients; pfnEngSrc_Cvar_SetValue_t Cvar_SetValue; pfnEngSrc_Cmd_Argc_t Cmd_Argc; pfnEngSrc_Cmd_Argv_t Cmd_Argv; pfnEngSrc_Con_Printf_t Con_Printf; pfnEngSrc_Con_DPrintf_t Con_DPrintf; pfnEngSrc_Con_NPrintf_t Con_NPrintf; pfnEngSrc_Con_NXPrintf_t Con_NXPrintf; pfnEngSrc_PhysInfo_ValueForKey_t PhysInfo_ValueForKey; pfnEngSrc_ServerInfo_ValueForKey_t ServerInfo_ValueForKey; pfnEngSrc_GetClientMaxspeed_t GetClientMaxspeed; pfnEngSrc_CheckParm_t CheckParm; pfnEngSrc_Key_Event_t Key_Event; pfnEngSrc_GetMousePosition_t GetMousePosition; pfnEngSrc_IsNoClipping_t IsNoClipping; pfnEngSrc_GetLocalPlayer_t GetLocalPlayer; pfnEngSrc_GetViewModel_t GetViewModel; pfnEngSrc_GetEntityByIndex_t GetEntityByIndex; pfnEngSrc_GetClientTime_t GetClientTime; pfnEngSrc_V_CalcShake_t V_CalcShake; pfnEngSrc_V_ApplyShake_t V_ApplyShake; pfnEngSrc_PM_PointContents_t PM_PointContents; pfnEngSrc_PM_WaterEntity_t PM_WaterEntity; pfnEngSrc_PM_TraceLine_t PM_TraceLine; pfnEngSrc_CL_LoadModel_t CL_LoadModel; pfnEngSrc_CL_CreateVisibleEntity_t CL_CreateVisibleEntity; pfnEngSrc_GetSpritePointer_t GetSpritePointer; pfnEngSrc_pfnPlaySoundByNameAtLocation_t pfnPlaySoundByNameAtLocation; pfnEngSrc_pfnPrecacheEvent_t pfnPrecacheEvent; pfnEngSrc_pfnPlaybackEvent_t pfnPlaybackEvent; pfnEngSrc_pfnWeaponAnim_t pfnWeaponAnim; pfnEngSrc_pfnRandomFloat_t pfnRandomFloat; pfnEngSrc_pfnRandomLong_t pfnRandomLong; pfnEngSrc_pfnHookEvent_t pfnHookEvent; pfnEngSrc_Con_IsVisible_t Con_IsVisible; pfnEngSrc_pfnGetGameDirectory_t pfnGetGameDirectory; pfnEngSrc_pfnGetCvarPointer_t pfnGetCvarPointer; pfnEngSrc_Key_LookupBinding_t Key_LookupBinding; pfnEngSrc_pfnGetLevelName_t pfnGetLevelName; pfnEngSrc_pfnGetScreenFade_t pfnGetScreenFade; pfnEngSrc_pfnSetScreenFade_t pfnSetScreenFade; pfnEngSrc_VGui_GetPanel_t VGui_GetPanel; pfnEngSrc_VGui_ViewportPaintBackground_t VGui_ViewportPaintBackground; pfnEngSrc_COM_LoadFile_t COM_LoadFile; pfnEngSrc_COM_ParseFile_t COM_ParseFile; pfnEngSrc_COM_FreeFile_t COM_FreeFile; struct triangleapi_s *pTriAPI; struct efx_api_s *pEfxAPI; struct event_api_s *pEventAPI; struct demo_api_s *pDemoAPI; struct net_api_s *pNetAPI; struct IVoiceTweak_s *pVoiceTweak; pfnEngSrc_IsSpectateOnly_t IsSpectateOnly; pfnEngSrc_LoadMapSprite_t LoadMapSprite; pfnEngSrc_COM_AddAppDirectoryToSearchPath_t COM_AddAppDirectoryToSearchPath; pfnEngSrc_COM_ExpandFilename_t COM_ExpandFilename; pfnEngSrc_PlayerInfo_ValueForKey_t PlayerInfo_ValueForKey; pfnEngSrc_PlayerInfo_SetValueForKey_t PlayerInfo_SetValueForKey; pfnEngSrc_GetPlayerUniqueID_t GetPlayerUniqueID; pfnEngSrc_GetTrackerIDForPlayer_t GetTrackerIDForPlayer; pfnEngSrc_GetPlayerForTrackerID_t GetPlayerForTrackerID; pfnEngSrc_pfnServerCmdUnreliable_t pfnServerCmdUnreliable; pfnEngSrc_GetMousePos_t pfnGetMousePos; pfnEngSrc_SetMousePos_t pfnSetMousePos; pfnEngSrc_SetMouseEnable_t pfnSetMouseEnable; pfnEngSrc_GetFirstCVarPtr_t GetFirstCvarPtr; pfnEngSrc_GetFirstCmdFunctionHandle_t GetFirstCmdFunctionHandle; pfnEngSrc_GetNextCmdFunctionHandle_t GetNextCmdFunctionHandle; pfnEngSrc_GetCmdFunctionName_t GetCmdFunctionName; pfnEngSrc_GetClientOldTime_t hudGetClientOldTime; pfnEngSrc_GetServerGravityValue_t hudGetServerGravityValue; pfnEngSrc_GetModelByIndex_t hudGetModelByIndex; pfnEngSrc_pfnSetFilterMode_t pfnSetFilterMode; pfnEngSrc_pfnSetFilterColor_t pfnSetFilterColor; pfnEngSrc_pfnSetFilterBrightness_t pfnSetFilterBrightness; pfnEngSrc_pfnSequenceGet_t pfnSequenceGet; pfnEngSrc_pfnSPR_DrawGeneric_t pfnSPR_DrawGeneric; pfnEngSrc_pfnSequencePickSentence_t pfnSequencePickSentence; pfnEngSrc_pfnDrawString_t pfnDrawString; pfnEngSrc_pfnDrawStringReverse_t pfnDrawStringReverse; pfnEngSrc_LocalPlayerInfo_ValueForKey_t LocalPlayerInfo_ValueForKey; pfnEngSrc_pfnVGUI2DrawCharacter_t pfnVGUI2DrawCharacter; pfnEngSrc_pfnVGUI2DrawCharacterAdd_t pfnVGUI2DrawCharacterAdd; pfnEngSrc_COM_GetApproxWavePlayLength COM_GetApproxWavePlayLength; pfnEngSrc_pfnGetCareerUI_t pfnGetCareerUI; pfnEngSrc_Cvar_Set_t Cvar_Set; pfnEngSrc_pfnIsPlayingCareerMatch_t pfnIsCareerMatch; pfnEngSrc_pfnPlaySoundVoiceByName_t pfnPlaySoundVoiceByName; pfnEngSrc_pfnPrimeMusicStream_t pfnPrimeMusicStream; pfnEngSrc_GetAbsoluteTime_t GetAbsoluteTime; pfnEngSrc_pfnProcessTutorMessageDecayBuffer_t pfnProcessTutorMessageDecayBuffer; pfnEngSrc_pfnConstructTutorMessageDecayBuffer_t pfnConstructTutorMessageDecayBuffer; pfnEngSrc_pfnResetTutorMessageDecayData_t pfnResetTutorMessageDecayData; pfnEngSrc_pfnPlaySoundByNameAtPitch_t pfnPlaySoundByNameAtPitch; pfnEngSrc_pfnFillRGBABlend_t pfnFillRGBABlend; pfnEngSrc_pfnGetAppID_t pfnGetAppID; pfnEngSrc_pfnGetAliases_t pfnGetAliasList; pfnEngSrc_pfnVguiWrap2_GetMouseDelta_t pfnVguiWrap2_GetMouseDelta; } cl_enginefunc_t; // Function type declarations for engine destination functions typedef void (*pfnEngDst_pfnSPR_Load_t ) ( const char ** ); typedef void (*pfnEngDst_pfnSPR_Frames_t ) ( AVHHSPRITE * ); typedef void (*pfnEngDst_pfnSPR_Height_t ) ( AVHHSPRITE *, int * ); typedef void (*pfnEngDst_pfnSPR_Width_t ) ( AVHHSPRITE *, int * ); typedef void (*pfnEngDst_pfnSPR_Set_t ) ( AVHHSPRITE *, int *, int *, int * ); typedef void (*pfnEngDst_pfnSPR_Draw_t ) ( int *, int *, int *, const struct rect_s ** ); typedef void (*pfnEngDst_pfnSPR_DrawHoles_t ) ( int *, int *, int *, const struct rect_s ** ); typedef void (*pfnEngDst_pfnSPR_DrawAdditive_t ) ( int *, int *, int *, const struct rect_s ** ); typedef void (*pfnEngDst_pfnSPR_EnableScissor_t ) ( int *, int *, int *, int * ); typedef void (*pfnEngDst_pfnSPR_DisableScissor_t ) ( void ); typedef void (*pfnEngDst_pfnSPR_GetList_t ) ( char **, int ** ); typedef void (*pfnEngDst_pfnFillRGBA_t ) ( int *, int *, int *, int *, int *, int *, int *, int * ); typedef void (*pfnEngDst_pfnGetScreenInfo_t ) ( struct SCREENINFO_s ** ); typedef void (*pfnEngDst_pfnSetCrosshair_t ) ( AVHHSPRITE *, struct rect_s *, int *, int *, int * ); typedef void (*pfnEngDst_pfnRegisterVariable_t ) ( char **, char **, int * ); typedef void (*pfnEngDst_pfnGetCvarFloat_t ) ( char ** ); typedef void (*pfnEngDst_pfnGetCvarString_t ) ( char ** ); typedef void (*pfnEngDst_pfnAddCommand_t ) ( char **, void (**pfnEngDst_function)(void) ); typedef void (*pfnEngDst_pfnHookUserMsg_t ) ( char **, pfnUserMsgHook * ); typedef void (*pfnEngDst_pfnServerCmd_t ) ( char ** ); typedef void (*pfnEngDst_pfnClientCmd_t ) ( char ** ); typedef void (*pfnEngDst_pfnPrimeMusicStream_t ) ( char **, int *); typedef void (*pfnEngDst_pfnGetPlayerInfo_t ) ( int *, struct hud_player_info_s ** ); typedef void (*pfnEngDst_pfnPlaySoundByName_t ) ( char **, float * ); typedef void (*pfnEngDst_pfnPlaySoundByNameAtPitch_t ) ( char **, float *, int * ); typedef void (*pfnEngDst_pfnPlaySoundVoiceByName_t ) (char **, float * ); typedef void (*pfnEngDst_pfnPlaySoundByIndex_t ) ( int *, float * ); typedef void (*pfnEngDst_pfnAngleVectors_t ) ( const float * *, float * *, float * *, float * * ); typedef void (*pfnEngDst_pfnTextMessageGet_t ) ( const char ** ); typedef void (*pfnEngDst_pfnDrawCharacter_t ) ( int *, int *, int *, int *, int *, int * ); typedef void (*pfnEngDst_pfnDrawConsoleString_t ) ( int *, int *, char ** ); typedef void (*pfnEngDst_pfnDrawSetTextColor_t ) ( float *, float *, float * ); typedef void (*pfnEngDst_pfnDrawConsoleStringLen_t ) ( const char **, int **, int ** ); typedef void (*pfnEngDst_pfnConsolePrint_t ) ( const char ** ); typedef void (*pfnEngDst_pfnCenterPrint_t ) ( const char ** ); typedef void (*pfnEngDst_GetWindowCenterX_t ) ( void ); typedef void (*pfnEngDst_GetWindowCenterY_t ) ( void ); typedef void (*pfnEngDst_GetViewAngles_t ) ( float ** ); typedef void (*pfnEngDst_SetViewAngles_t ) ( float ** ); typedef void (*pfnEngDst_GetMaxClients_t ) ( void ); typedef void (*pfnEngDst_Cvar_SetValue_t ) ( char **, float * ); typedef void (*pfnEngDst_Cmd_Argc_t) (void); typedef void (*pfnEngDst_Cmd_Argv_t ) ( int * ); typedef void (*pfnEngDst_Con_Printf_t ) ( char **); typedef void (*pfnEngDst_Con_DPrintf_t ) ( char **); typedef void (*pfnEngDst_Con_NPrintf_t ) ( int *, char ** ); typedef void (*pfnEngDst_Con_NXPrintf_t ) ( struct con_nprint_s **, char **); typedef void (*pfnEngDst_PhysInfo_ValueForKey_t ) ( const char ** ); typedef void (*pfnEngDst_ServerInfo_ValueForKey_t ) ( const char ** ); typedef void (*pfnEngDst_GetClientMaxspeed_t ) ( void ); typedef void (*pfnEngDst_CheckParm_t ) ( char **, char *** ); typedef void (*pfnEngDst_Key_Event_t ) ( int *, int * ); typedef void (*pfnEngDst_GetMousePosition_t ) ( int **, int ** ); typedef void (*pfnEngDst_IsNoClipping_t ) ( void ); typedef void (*pfnEngDst_GetLocalPlayer_t ) ( void ); typedef void (*pfnEngDst_GetViewModel_t ) ( void ); typedef void (*pfnEngDst_GetEntityByIndex_t ) ( int * ); typedef void (*pfnEngDst_GetClientTime_t ) ( void ); typedef void (*pfnEngDst_V_CalcShake_t ) ( void ); typedef void (*pfnEngDst_V_ApplyShake_t ) ( float **, float **, float * ); typedef void (*pfnEngDst_PM_PointContents_t ) ( float **, int ** ); typedef void (*pfnEngDst_PM_WaterEntity_t ) ( float ** ); typedef void (*pfnEngDst_PM_TraceLine_t ) ( float **, float **, int *, int *, int * ); typedef void (*pfnEngDst_CL_LoadModel_t ) ( const char **, int ** ); typedef void (*pfnEngDst_CL_CreateVisibleEntity_t ) ( int *, struct cl_entity_s ** ); typedef void (*pfnEngDst_GetSpritePointer_t ) ( AVHHSPRITE * ); typedef void (*pfnEngDst_pfnPlaySoundByNameAtLocation_t ) ( char **, float *, float ** ); typedef void (*pfnEngDst_pfnPrecacheEvent_t ) ( int *, const char* * ); typedef void (*pfnEngDst_pfnPlaybackEvent_t ) ( int *, const struct edict_s **, unsigned short *, float *, float **, float **, float *, float *, int *, int *, int *, int * ); typedef void (*pfnEngDst_pfnWeaponAnim_t ) ( int *, int * ); typedef void (*pfnEngDst_pfnRandomFloat_t ) ( float *, float * ); typedef void (*pfnEngDst_pfnRandomLong_t ) ( int32 *, int32 * ); typedef void (*pfnEngDst_pfnHookEvent_t ) ( char **, void ( **pfnEvent )( struct event_args_s *args ) ); typedef void (*pfnEngDst_Con_IsVisible_t) (); typedef void (*pfnEngDst_pfnGetGameDirectory_t ) ( void ); typedef void (*pfnEngDst_pfnGetCvarPointer_t ) ( const char ** ); typedef void (*pfnEngDst_Key_LookupBinding_t ) ( const char ** ); typedef void (*pfnEngDst_pfnGetLevelName_t ) ( void ); typedef void (*pfnEngDst_pfnGetScreenFade_t ) ( struct screenfade_s ** ); typedef void (*pfnEngDst_pfnSetScreenFade_t ) ( struct screenfade_s ** ); typedef void (*pfnEngDst_VGui_GetPanel_t ) ( ); typedef void (*pfnEngDst_VGui_ViewportPaintBackground_t ) (int **); typedef void (*pfnEngDst_COM_LoadFile_t ) ( char **, int *, int ** ); typedef void (*pfnEngDst_COM_ParseFile_t ) ( char **, char ** ); typedef void (*pfnEngDst_COM_FreeFile_t) ( void ** ); typedef void (*pfnEngDst_IsSpectateOnly_t ) ( void ); typedef void (*pfnEngDst_LoadMapSprite_t ) ( const char ** ); typedef void (*pfnEngDst_COM_AddAppDirectoryToSearchPath_t ) ( const char **, const char ** ); typedef void (*pfnEngDst_COM_ExpandFilename_t) ( const char **, char **, int * ); typedef void (*pfnEngDst_PlayerInfo_ValueForKey_t ) ( int *, const char ** ); typedef void (*pfnEngDst_PlayerInfo_SetValueForKey_t )( const char **, const char ** ); typedef void (*pfnEngDst_GetPlayerUniqueID_t) (int *, char **); typedef void (*pfnEngDst_GetTrackerIDForPlayer_t) (int *); typedef void (*pfnEngDst_GetPlayerForTrackerID_t) (int *); typedef void (*pfnEngDst_pfnServerCmdUnreliable_t ) ( char ** ); typedef void (*pfnEngDst_GetMousePos_t ) (struct tagPOINT **); typedef void (*pfnEngDst_SetMousePos_t ) (int *, int *); typedef void (*pfnEngDst_SetMouseEnable_t ) (qboolean *); typedef void (*pfnEngDst_pfnSetFilterMode_t) ( int * ); typedef void (*pfnEngDst_pfnSetFilterColor_t) ( float *, float *, float * ); typedef void (*pfnEngDst_pfnSetFilterBrightness_t) ( float * ); typedef void (*pfnEngDst_pfnSequenceGet_t ) ( const char**, const char** ); typedef void (*pfnEngDst_pfnSPR_DrawGeneric_t ) ( int *, int *, int *, const struct rect_s **, int *, int *, int *, int * ); typedef void (*pfnEngDst_pfnSequencePickSentence_t ) ( const char**, int *, int ** ); typedef void (*pfnEngDst_pfnDrawString_t ) ( int *, int *, const char *, int *, int *, int * ); typedef void (*pfnEngDst_pfnDrawStringReverse_t ) ( int *, int *, const char *, int *, int *, int * ); typedef void (*pfnEngDst_LocalPlayerInfo_ValueForKey_t )( const char **); typedef void (*pfnEngDst_pfnVGUI2DrawCharacter_t ) ( int *, int *, int *, unsigned int * ); typedef void (*pfnEngDst_pfnVGUI2DrawCharacterAdd_t ) ( int *, int *, int *, int *, int *, int *, unsigned int *); typedef void (*pfnEngDst_pfnProcessTutorMessageDecayBuffer_t )(int **, int *); typedef void (*pfnEngDst_pfnConstructTutorMessageDecayBuffer_t )(int **, int *); typedef void (*pfnEngDst_pfnResetTutorMessageDecayData_t)(); typedef void (*pfnEngDst_pfnFillRGBABlend_t ) ( int *, int *, int *, int *, int *, int *, int *, int * ); typedef void (*pfnEngDst_pfnGetAppID_t ) ( void ); typedef void (*pfnEngDst_pfnGetAliases_t ) ( void ); typedef void (*pfnEngDst_pfnVguiWrap2_GetMouseDelta_t) ( int *x, int *y ); // Pointers to the engine destination functions typedef struct { pfnEngDst_pfnSPR_Load_t pfnSPR_Load; pfnEngDst_pfnSPR_Frames_t pfnSPR_Frames; pfnEngDst_pfnSPR_Height_t pfnSPR_Height; pfnEngDst_pfnSPR_Width_t pfnSPR_Width; pfnEngDst_pfnSPR_Set_t pfnSPR_Set; pfnEngDst_pfnSPR_Draw_t pfnSPR_Draw; pfnEngDst_pfnSPR_DrawHoles_t pfnSPR_DrawHoles; pfnEngDst_pfnSPR_DrawAdditive_t pfnSPR_DrawAdditive; pfnEngDst_pfnSPR_EnableScissor_t pfnSPR_EnableScissor; pfnEngDst_pfnSPR_DisableScissor_t pfnSPR_DisableScissor; pfnEngDst_pfnSPR_GetList_t pfnSPR_GetList; pfnEngDst_pfnFillRGBA_t pfnFillRGBA; pfnEngDst_pfnGetScreenInfo_t pfnGetScreenInfo; pfnEngDst_pfnSetCrosshair_t pfnSetCrosshair; pfnEngDst_pfnRegisterVariable_t pfnRegisterVariable; pfnEngDst_pfnGetCvarFloat_t pfnGetCvarFloat; pfnEngDst_pfnGetCvarString_t pfnGetCvarString; pfnEngDst_pfnAddCommand_t pfnAddCommand; pfnEngDst_pfnHookUserMsg_t pfnHookUserMsg; pfnEngDst_pfnServerCmd_t pfnServerCmd; pfnEngDst_pfnClientCmd_t pfnClientCmd; pfnEngDst_pfnGetPlayerInfo_t pfnGetPlayerInfo; pfnEngDst_pfnPlaySoundByName_t pfnPlaySoundByName; pfnEngDst_pfnPlaySoundByIndex_t pfnPlaySoundByIndex; pfnEngDst_pfnAngleVectors_t pfnAngleVectors; pfnEngDst_pfnTextMessageGet_t pfnTextMessageGet; pfnEngDst_pfnDrawCharacter_t pfnDrawCharacter; pfnEngDst_pfnDrawConsoleString_t pfnDrawConsoleString; pfnEngDst_pfnDrawSetTextColor_t pfnDrawSetTextColor; pfnEngDst_pfnDrawConsoleStringLen_t pfnDrawConsoleStringLen; pfnEngDst_pfnConsolePrint_t pfnConsolePrint; pfnEngDst_pfnCenterPrint_t pfnCenterPrint; pfnEngDst_GetWindowCenterX_t GetWindowCenterX; pfnEngDst_GetWindowCenterY_t GetWindowCenterY; pfnEngDst_GetViewAngles_t GetViewAngles; pfnEngDst_SetViewAngles_t SetViewAngles; pfnEngDst_GetMaxClients_t GetMaxClients; pfnEngDst_Cvar_SetValue_t Cvar_SetValue; pfnEngDst_Cmd_Argc_t Cmd_Argc; pfnEngDst_Cmd_Argv_t Cmd_Argv; pfnEngDst_Con_Printf_t Con_Printf; pfnEngDst_Con_DPrintf_t Con_DPrintf; pfnEngDst_Con_NPrintf_t Con_NPrintf; pfnEngDst_Con_NXPrintf_t Con_NXPrintf; pfnEngDst_PhysInfo_ValueForKey_t PhysInfo_ValueForKey; pfnEngDst_ServerInfo_ValueForKey_t ServerInfo_ValueForKey; pfnEngDst_GetClientMaxspeed_t GetClientMaxspeed; pfnEngDst_CheckParm_t CheckParm; pfnEngDst_Key_Event_t Key_Event; pfnEngDst_GetMousePosition_t GetMousePosition; pfnEngDst_IsNoClipping_t IsNoClipping; pfnEngDst_GetLocalPlayer_t GetLocalPlayer; pfnEngDst_GetViewModel_t GetViewModel; pfnEngDst_GetEntityByIndex_t GetEntityByIndex; pfnEngDst_GetClientTime_t GetClientTime; pfnEngDst_V_CalcShake_t V_CalcShake; pfnEngDst_V_ApplyShake_t V_ApplyShake; pfnEngDst_PM_PointContents_t PM_PointContents; pfnEngDst_PM_WaterEntity_t PM_WaterEntity; pfnEngDst_PM_TraceLine_t PM_TraceLine; pfnEngDst_CL_LoadModel_t CL_LoadModel; pfnEngDst_CL_CreateVisibleEntity_t CL_CreateVisibleEntity; pfnEngDst_GetSpritePointer_t GetSpritePointer; pfnEngDst_pfnPlaySoundByNameAtLocation_t pfnPlaySoundByNameAtLocation; pfnEngDst_pfnPrecacheEvent_t pfnPrecacheEvent; pfnEngDst_pfnPlaybackEvent_t pfnPlaybackEvent; pfnEngDst_pfnWeaponAnim_t pfnWeaponAnim; pfnEngDst_pfnRandomFloat_t pfnRandomFloat; pfnEngDst_pfnRandomLong_t pfnRandomLong; pfnEngDst_pfnHookEvent_t pfnHookEvent; pfnEngDst_Con_IsVisible_t Con_IsVisible; pfnEngDst_pfnGetGameDirectory_t pfnGetGameDirectory; pfnEngDst_pfnGetCvarPointer_t pfnGetCvarPointer; pfnEngDst_Key_LookupBinding_t Key_LookupBinding; pfnEngDst_pfnGetLevelName_t pfnGetLevelName; pfnEngDst_pfnGetScreenFade_t pfnGetScreenFade; pfnEngDst_pfnSetScreenFade_t pfnSetScreenFade; pfnEngDst_VGui_GetPanel_t VGui_GetPanel; pfnEngDst_VGui_ViewportPaintBackground_t VGui_ViewportPaintBackground; pfnEngDst_COM_LoadFile_t COM_LoadFile; pfnEngDst_COM_ParseFile_t COM_ParseFile; pfnEngDst_COM_FreeFile_t COM_FreeFile; struct triangleapi_s *pTriAPI; struct efx_api_s *pEfxAPI; struct event_api_s *pEventAPI; struct demo_api_s *pDemoAPI; struct net_api_s *pNetAPI; struct IVoiceTweak_s *pVoiceTweak; pfnEngDst_IsSpectateOnly_t IsSpectateOnly; pfnEngDst_LoadMapSprite_t LoadMapSprite; pfnEngDst_COM_AddAppDirectoryToSearchPath_t COM_AddAppDirectoryToSearchPath; pfnEngDst_COM_ExpandFilename_t COM_ExpandFilename; pfnEngDst_PlayerInfo_ValueForKey_t PlayerInfo_ValueForKey; pfnEngDst_PlayerInfo_SetValueForKey_t PlayerInfo_SetValueForKey; pfnEngDst_GetPlayerUniqueID_t GetPlayerUniqueID; pfnEngDst_GetTrackerIDForPlayer_t GetTrackerIDForPlayer; pfnEngDst_GetPlayerForTrackerID_t GetPlayerForTrackerID; pfnEngDst_pfnServerCmdUnreliable_t pfnServerCmdUnreliable; pfnEngDst_GetMousePos_t pfnGetMousePos; pfnEngDst_SetMousePos_t pfnSetMousePos; pfnEngDst_SetMouseEnable_t pfnSetMouseEnable; pfnEngDst_pfnSetFilterMode_t pfnSetFilterMode ; pfnEngDst_pfnSetFilterColor_t pfnSetFilterColor ; pfnEngDst_pfnSetFilterBrightness_t pfnSetFilterBrightness ; pfnEngDst_pfnSequenceGet_t pfnSequenceGet; pfnEngDst_pfnSPR_DrawGeneric_t pfnSPR_DrawGeneric; pfnEngDst_pfnSequencePickSentence_t pfnSequencePickSentence; pfnEngDst_pfnDrawString_t pfnDrawString; pfnEngDst_pfnDrawString_t pfnDrawStringReverse; pfnEngDst_LocalPlayerInfo_ValueForKey_t LocalPlayerInfo_ValueForKey; pfnEngDst_pfnVGUI2DrawCharacter_t pfnVGUI2DrawCharacter; pfnEngDst_pfnVGUI2DrawCharacterAdd_t pfnVGUI2DrawCharacterAdd; pfnEngDst_pfnPlaySoundVoiceByName_t pfnPlaySoundVoiceByName; pfnEngDst_pfnPrimeMusicStream_t pfnPrimeMusicStream; pfnEngDst_pfnProcessTutorMessageDecayBuffer_t pfnProcessTutorMessageDecayBuffer; pfnEngDst_pfnConstructTutorMessageDecayBuffer_t pfnConstructTutorMessageDecayBuffer; pfnEngDst_pfnResetTutorMessageDecayData_t pfnResetTutorMessageDecayData; pfnEngDst_pfnPlaySoundByNameAtPitch_t pfnPlaySoundByNameAtPitch; pfnEngDst_pfnFillRGBABlend_t pfnFillRGBABlend; pfnEngDst_pfnGetAppID_t pfnGetAppID; pfnEngDst_pfnGetAliases_t pfnGetAliasList; pfnEngDst_pfnVguiWrap2_GetMouseDelta_t pfnVguiWrap2_GetMouseDelta; } cl_enginefunc_dst_t; // ******************************************************** // Functions exposed by the engine to the module // ******************************************************** // Functions for ModuleS typedef void (*PFN_KICKPLAYER)(int nPlayerSlot, int nReason); typedef struct modshelpers_s { PFN_KICKPLAYER m_pfnKickPlayer; // reserved for future expansion int m_nVoid1; int m_nVoid2; int m_nVoid3; int m_nVoid4; int m_nVoid5; int m_nVoid6; int m_nVoid7; int m_nVoid8; int m_nVoid9; } modshelpers_t; // Functions for moduleC typedef struct modchelpers_s { // reserved for future expansion int m_nVoid0; int m_nVoid1; int m_nVoid2; int m_nVoid3; int m_nVoid4; int m_nVoid5; int m_nVoid6; int m_nVoid7; int m_nVoid8; int m_nVoid9; } modchelpers_t; // ******************************************************** // Information about the engine // ******************************************************** typedef struct engdata_s { cl_enginefunc_t *pcl_enginefuncs; // functions exported by the engine cl_enginefunc_dst_t *pg_engdstAddrs; // destination handlers for engine exports cldll_func_t *pcl_funcs; // client exports cldll_func_dst_t *pg_cldstAddrs; // client export destination handlers struct modfuncs_s *pg_modfuncs; // engine's pointer to module functions struct cmd_function_s **pcmd_functions; // list of all registered commands void *pkeybindings; // all key bindings (not really a void *, but easier this way) void (*pfnConPrintf)(char *, ...); // dump to console struct cvar_s **pcvar_vars; // pointer to head of cvar list struct glwstate_t *pglwstate; // OpenGl information void *(*pfnSZ_GetSpace)(struct sizebuf_s *, int); // pointer to SZ_GetSpace struct modfuncs_s *pmodfuncs; // &g_modfuncs void *pfnGetProcAddress; // &GetProcAddress void *pfnGetModuleHandle; // &GetModuleHandle struct server_static_s *psvs; // &svs struct client_static_s *pcls; // &cls void (*pfnSV_DropClient)(struct client_s *, qboolean, char *, ...); // pointer to SV_DropClient void (*pfnNetchan_Transmit)(struct netchan_s *, int, byte *); // pointer to Netchan_Transmit void (*pfnNET_SendPacket)(enum netsrc_s sock, int length, void *data, netadr_t to); // &NET_SendPacket struct cvar_s *(*pfnCvarFindVar)(const char *pchName); // pointer to Cvar_FindVar int *phinstOpenGlEarly; // &g_hinstOpenGlEarly // Reserved for future expansion void *pVoid0; // reserved for future expan void *pVoid1; // reserved for future expan void *pVoid2; // reserved for future expan void *pVoid3; // reserved for future expan void *pVoid4; // reserved for future expan void *pVoid5; // reserved for future expan void *pVoid6; // reserved for future expan void *pVoid7; // reserved for future expan void *pVoid8; // reserved for future expan void *pVoid9; // reserved for future expan } engdata_t; // ******************************************************** // Functions exposed by the security module // ******************************************************** typedef void (*PFN_LOADMOD)(char *pchModule); typedef void (*PFN_CLOSEMOD)(void); typedef int (*PFN_NCALL)(int ijump, int cnArg, ...); typedef void (*PFN_GETCLDSTADDRS)(cldll_func_dst_t *pcldstAddrs); typedef void (*PFN_GETENGDSTADDRS)(cl_enginefunc_dst_t *pengdstAddrs); typedef void (*PFN_MODULELOADED)(void); typedef void (*PFN_PROCESSOUTGOINGNET)(struct netchan_s *pchan, struct sizebuf_s *psizebuf); typedef qboolean (*PFN_PROCESSINCOMINGNET)(struct netchan_s *pchan, struct sizebuf_s *psizebuf); typedef void (*PFN_TEXTURELOAD)(char *pszName, int dxWidth, int dyHeight, char *pbData); typedef void (*PFN_MODELLOAD)(struct model_s *pmodel, void *pvBuf); typedef void (*PFN_FRAMEBEGIN)(void); typedef void (*PFN_FRAMERENDER1)(void); typedef void (*PFN_FRAMERENDER2)(void); typedef void (*PFN_SETMODSHELPERS)(modshelpers_t *pmodshelpers); typedef void (*PFN_SETMODCHELPERS)(modchelpers_t *pmodchelpers); typedef void (*PFN_SETENGDATA)(engdata_t *pengdata); typedef void (*PFN_CONNECTCLIENT)(int iPlayer); typedef void (*PFN_RECORDIP)(unsigned int pnIP); typedef void (*PFN_PLAYERSTATUS)(unsigned char *pbData, int cbData); typedef void (*PFN_SETENGINEVERSION)(int nVersion); // typedef class CMachine *(*PFN_PCMACHINE)(void); typedef int (*PFN_PCMACHINE)(void); typedef void (*PFN_SETIP)(int ijump); typedef void (*PFN_EXECUTE)(void); typedef struct modfuncs_s { // Functions for the pcode interpreter PFN_LOADMOD m_pfnLoadMod; PFN_CLOSEMOD m_pfnCloseMod; PFN_NCALL m_pfnNCall; // API destination functions PFN_GETCLDSTADDRS m_pfnGetClDstAddrs; PFN_GETENGDSTADDRS m_pfnGetEngDstAddrs; // Miscellaneous functions PFN_MODULELOADED m_pfnModuleLoaded; // Called right after the module is loaded // Functions for processing network traffic PFN_PROCESSOUTGOINGNET m_pfnProcessOutgoingNet; // Every outgoing packet gets run through this PFN_PROCESSINCOMINGNET m_pfnProcessIncomingNet; // Every incoming packet gets run through this // Resource functions PFN_TEXTURELOAD m_pfnTextureLoad; // Called as each texture is loaded PFN_MODELLOAD m_pfnModelLoad; // Called as each model is loaded // Functions called every frame PFN_FRAMEBEGIN m_pfnFrameBegin; // Called at the beginning of each frame cycle PFN_FRAMERENDER1 m_pfnFrameRender1; // Called at the beginning of the render loop PFN_FRAMERENDER2 m_pfnFrameRender2; // Called at the end of the render loop // Module helper transfer PFN_SETMODSHELPERS m_pfnSetModSHelpers; PFN_SETMODCHELPERS m_pfnSetModCHelpers; PFN_SETENGDATA m_pfnSetEngData; // Which version of the module is this? int m_nVersion; // Miscellaneous game stuff PFN_CONNECTCLIENT m_pfnConnectClient; // Called whenever a new client connects PFN_RECORDIP m_pfnRecordIP; // Secure master has reported a new IP for us PFN_PLAYERSTATUS m_pfnPlayerStatus; // Called whenever we receive a PlayerStatus packet // Recent additions PFN_SETENGINEVERSION m_pfnSetEngineVersion; // 1 = patched engine // reserved for future expansion int m_nVoid2; int m_nVoid3; int m_nVoid4; int m_nVoid5; int m_nVoid6; int m_nVoid7; int m_nVoid8; int m_nVoid9; } modfuncs_t; #define k_nEngineVersion15Base 0 #define k_nEngineVersion15Patch 1 #define k_nEngineVersion16Base 2 #define k_nEngineVersion16Validated 3 // 1.6 engine with built-in validation typedef struct validator_s { int m_nRandomizer; // Random number to be XOR'd into all subsequent fields int m_nSignature1; // First signature that identifies this structure int m_nSignature2; // Second signature int m_pbCode; // Beginning of the code block int m_cbCode; // Size of the code block int m_nChecksum; // Checksum of the code block int m_nSpecial; // For engine, 1 if hw.dll, 0 if sw.dll. For client, pclfuncs checksum int m_nCompensator; // Keeps the checksum correct } validator_t; #define k_nChecksumCompensator 0x36a8f09c // Don't change this value: it's hardcorded in cdll_int.cpp, #define k_nModuleVersionCur 0x43210004 #endif // __APIPROXY__