We will be releasing a new engine soon (within the next couple of days
we expect), we have added some new functions to the engine function
structure (from eiface.h). If you are responsible for a third party
program such as MetaMod you will need to update this engine structure
and recompile your program. Not updating will cause a crash when your
users try to use the new engine with the old engine interface structure.

- Alfred



// Engine hands this to DLLs for functionality callbacks
typedef struct enginefuncs_s
{
        int                     (*pfnPrecacheModel)
(char* s);
        int                     (*pfnPrecacheSound)
(char* s);
        void            (*pfnSetModel)                          (edict_t
*e, const char *m);
        int                     (*pfnModelIndex)
(const char *m);
        int                     (*pfnModelFrames)
(int modelIndex);
        void            (*pfnSetSize)                           (edict_t
*e, const float *rgflMin, const float *rgflMax);
        void            (*pfnChangeLevel)                       (char*
s1, char* s2);
        void            (*pfnGetSpawnParms)                     (edict_t
*ent);
        void            (*pfnSaveSpawnParms)            (edict_t *ent);
        float           (*pfnVecToYaw)                          (const
float *rgflVector);
        void            (*pfnVecToAngles)                       (const
float *rgflVectorIn, float *rgflVectorOut);
        void            (*pfnMoveToOrigin)                      (edict_t
*ent, const float *pflGoal, float dist, int iMoveType);
        void            (*pfnChangeYaw)
(edict_t* ent);
        void            (*pfnChangePitch)
(edict_t* ent);
        edict_t*        (*pfnFindEntityByString)        (edict_t
*pEdictStartSearchAfter, const char *pszField, const char *pszValue);
        int                     (*pfnGetEntityIllum)
(edict_t* pEnt);
        edict_t*        (*pfnFindEntityInSphere)        (edict_t
*pEdictStartSearchAfter, const float *org, float rad);
        edict_t*        (*pfnFindClientInPVS)           (edict_t
*pEdict);
        edict_t* (*pfnEntitiesInPVS)                    (edict_t
*pplayer);
        void            (*pfnMakeVectors)                       (const
float *rgflVector);
        void            (*pfnAngleVectors)                      (const
float *rgflVector, float *forward, float *right, float *up);
        edict_t*        (*pfnCreateEntity)                      (void);
        void            (*pfnRemoveEntity)
(edict_t* e);
        edict_t*        (*pfnCreateNamedEntity)         (int className);
        void            (*pfnMakeStatic)                        (edict_t
*ent);
        int                     (*pfnEntIsOnFloor)
(edict_t *e);
        int                     (*pfnDropToFloor)
(edict_t* e);
        int                     (*pfnWalkMove)
(edict_t *ent, float yaw, float dist, int iMode);
        void            (*pfnSetOrigin)                         (edict_t
*e, const float *rgflOrigin);
        void            (*pfnEmitSound)                         (edict_t
*entity, int channel, const char *sample, /*int*/float volume, float
attenuation, int fFlags, int pitch);
        void            (*pfnEmitAmbientSound)          (edict_t
*entity, float *pos, const char *samp, float vol, float attenuation, int
fFlags, int pitch);
        void            (*pfnTraceLine)                         (const
float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip,
TraceResult *ptr);
        void            (*pfnTraceToss)
(edict_t* pent, edict_t* pentToIgnore, TraceResult *ptr);
        int                     (*pfnTraceMonsterHull)          (edict_t
*pEdict, const float *v1, const float *v2, int fNoMonsters, edict_t
*pentToSkip, TraceResult *ptr);
        void            (*pfnTraceHull)                         (const
float *v1, const float *v2, int fNoMonsters, int hullNumber, edict_t
*pentToSkip, TraceResult *ptr);
        void            (*pfnTraceModel)                        (const
float *v1, const float *v2, int hullNumber, edict_t *pent, TraceResult
*ptr);
        const char *(*pfnTraceTexture)                  (edict_t
*pTextureEntity, const float *v1, const float *v2 );
        void            (*pfnTraceSphere)                       (const
float *v1, const float *v2, int fNoMonsters, float radius, edict_t
*pentToSkip, TraceResult *ptr);
        void            (*pfnGetAimVector)
(edict_t* ent, float speed, float *rgflReturn);
        void            (*pfnServerCommand)                     (char*
str);
        void            (*pfnServerExecute)                     (void);
        void            (*pfnClientCommand)
(edict_t* pEdict, char* szFmt, ...);
        void            (*pfnParticleEffect)            (const float
*org, const float *dir, float color, float count);
        void            (*pfnLightStyle)                        (int
style, char* val);
        int                     (*pfnDecalIndex)
(const char *name);
        int                     (*pfnPointContents)
(const float *rgflVector);
        void            (*pfnMessageBegin)                      (int
msg_dest, int msg_type, const float *pOrigin, edict_t *ed);
        void            (*pfnMessageEnd)                        (void);
        void            (*pfnWriteByte)                         (int
iValue);
        void            (*pfnWriteChar)                         (int
iValue);
        void            (*pfnWriteShort)                        (int
iValue);
        void            (*pfnWriteLong)                         (int
iValue);
        void            (*pfnWriteAngle)                        (float
flValue);
        void            (*pfnWriteCoord)                        (float
flValue);
        void            (*pfnWriteString)                       (const
char *sz);
        void            (*pfnWriteEntity)                       (int
iValue);
        void            (*pfnCVarRegister)                      (cvar_t
*pCvar);
        float           (*pfnCVarGetFloat)                      (const
char *szVarName);
        const char*     (*pfnCVarGetString)                     (const
char *szVarName);
        void            (*pfnCVarSetFloat)                      (const
char *szVarName, float flValue);
        void            (*pfnCVarSetString)                     (const
char *szVarName, const char *szValue);
        void            (*pfnAlertMessage)
(ALERT_TYPE atype, char *szFmt, ...);
        void            (*pfnEngineFprintf)                     (void
*pfile, char *szFmt, ...);
        void*           (*pfnPvAllocEntPrivateData)     (edict_t
*pEdict, int32 cb);
        void*           (*pfnPvEntPrivateData)          (edict_t
*pEdict);
        void            (*pfnFreeEntPrivateData)        (edict_t
*pEdict);
        const char*     (*pfnSzFromIndex)                       (int
iString);
        int                     (*pfnAllocString)
(const char *szValue);
        struct entvars_s*       (*pfnGetVarsOfEnt)
(edict_t *pEdict);
        edict_t*        (*pfnPEntityOfEntOffset)        (int
iEntOffset);
        int                     (*pfnEntOffsetOfPEntity)        (const
edict_t *pEdict);
        int                     (*pfnIndexOfEdict)
(const edict_t *pEdict);
        edict_t*        (*pfnPEntityOfEntIndex)         (int iEntIndex);
        edict_t*        (*pfnFindEntityByVars)          (struct
entvars_s* pvars);
        void*           (*pfnGetModelPtr)
(edict_t* pEdict);
        int                     (*pfnRegUserMsg)
(const char *pszName, int iSize);
        void            (*pfnAnimationAutomove)         (const edict_t*
pEdict, float flTime);
        void            (*pfnGetBonePosition)           (const edict_t*
pEdict, int iBone, float *rgflOrigin, float *rgflAngles );
        uint32 (*pfnFunctionFromName)   ( const char *pName );
        const char *(*pfnNameForFunction)               ( uint32
function );
        void            (*pfnClientPrintf)                      (
edict_t* pEdict, PRINT_TYPE ptype, const char *szMsg ); // JOHN: engine
callbacks so game DLL can print messages to individual clients
        void            (*pfnServerPrint)                       ( const
char *szMsg );
        const char *(*pfnCmd_Args)                              ( void
);              // these 3 added 
        const char *(*pfnCmd_Argv)                              ( int
argc ); // so game DLL can easily 
        int                     (*pfnCmd_Argc)
( void );               // access client 'cmd' strings
        void            (*pfnGetAttachment)                     (const
edict_t *pEdict, int iAttachment, float *rgflOrigin, float *rgflAngles
);
        void            (*pfnCRC32_Init)                        (CRC32_t
*pulCRC);
        void        (*pfnCRC32_ProcessBuffer)   (CRC32_t *pulCRC, void
*p, int len);
        void            (*pfnCRC32_ProcessByte)     (CRC32_t *pulCRC,
unsigned char ch);
        CRC32_t         (*pfnCRC32_Final)                       (CRC32_t
pulCRC);
        int32           (*pfnRandomLong)                        (int32
lLow,  int32  lHigh);
        float           (*pfnRandomFloat)                       (float
flLow, float flHigh);
        void            (*pfnSetView)                           (const
edict_t *pClient, const edict_t *pViewent );
        float           (*pfnTime)
( void );
        void            (*pfnCrosshairAngle)            (const edict_t
*pClient, float pitch, float yaw);
        byte *      (*pfnLoadFileForMe)         (char *filename, int
*pLength);
        void        (*pfnFreeFile)              (void *buffer);
        void        (*pfnEndSection)            (const char
*pszSectionName); // trigger_endsection
        int             (*pfnCompareFileTime)       (char *filename1,
char *filename2, int *iCompare);
        void        (*pfnGetGameDir)            (char *szGetGameDir);
        void            (*pfnCvar_RegisterVariable) (cvar_t *variable);
        void        (*pfnFadeClientVolume)      (const edict_t *pEdict,
int fadePercent, int fadeOutSeconds, int holdTime, int fadeInSeconds);
        void        (*pfnSetClientMaxspeed)     (const edict_t *pEdict,
float fNewMaxspeed);
        edict_t *       (*pfnCreateFakeClient)          (const char
*netname);      // returns NULL if fake client can't be created
        void            (*pfnRunPlayerMove)                     (edict_t
*fakeclient, const float *viewangles, float forwardmove, float sidemove,
float upmove, unsigned short buttons, byte impulse, byte msec );
        int                     (*pfnNumberOfEntities)          (void);
        char*           (*pfnGetInfoKeyBuffer)          (edict_t *e);
// passing in NULL gets the serverinfo
        char*           (*pfnInfoKeyValue)                      (char
*infobuffer, char *key);
        void            (*pfnSetKeyValue)                       (char
*infobuffer, char *key, char *value);
        void            (*pfnSetClientKeyValue)         (int
clientIndex, char *infobuffer, char *key, char *value);
        int                     (*pfnIsMapValid)
(char *filename);
        void            (*pfnStaticDecal)                       ( const
float *origin, int decalIndex, int entityIndex, int modelIndex );
        int                     (*pfnPrecacheGeneric)           (char*
s);
        int                     (*pfnGetPlayerUserId)           (edict_t
*e ); // returns the server assigned userid for this player.  useful for
logging frags, etc.  returns -1 if the edict couldn't be found in the
list of clients
        void            (*pfnBuildSoundMsg)                     (edict_t
*entity, int channel, const char *sample, /*int*/float volume, float
attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const
float *pOrigin, edict_t *ed);
        int                     (*pfnIsDedicatedServer)
(void);// is this a dedicated server?
        cvar_t          *(*pfnCVarGetPointer)           (const char
*szVarName);
        unsigned int (*pfnGetPlayerWONId)               (edict_t *e); //
returns the server assigned WONid for this player.  useful for logging
frags, etc.  returns -1 if the edict couldn't be found in the list of
clients

        // YWB 8/1/99 TFF Physics additions
        void            (*pfnInfo_RemoveKey)            ( char *s, const
char *key );
        const char *(*pfnGetPhysicsKeyValue)    ( const edict_t
*pClient, const char *key );
        void            (*pfnSetPhysicsKeyValue)        ( const edict_t
*pClient, const char *key, const char *value );
        const char *(*pfnGetPhysicsInfoString)  ( const edict_t *pClient
);
        unsigned short (*pfnPrecacheEvent)              ( int type,
const char*psz );
        void            (*pfnPlaybackEvent)                     ( int
flags, const edict_t *pInvoker, unsigned short eventindex, float delay,
float *origin, float *angles, float fparam1, float fparam2, int iparam1,
int iparam2, int bparam1, int bparam2 );

        unsigned char *(*pfnSetFatPVS)                  ( float *org );
        unsigned char *(*pfnSetFatPAS)                  ( float *org );

        int                     (*pfnCheckVisibility )          ( const
edict_t *entity, unsigned char *pset );

        void            (*pfnDeltaSetField)                     ( struct
delta_s *pFields, const char *fieldname );
        void            (*pfnDeltaUnsetField)           ( struct delta_s
*pFields, const char *fieldname );
        void            (*pfnDeltaAddEncoder)           ( char *name,
void (*conditionalencode)( struct delta_s *pFields, const unsigned char
*from, const unsigned char *to ) );
        int                     (*pfnGetCurrentPlayer)          ( void
);
        int                     (*pfnCanSkipPlayer)
( const edict_t *player );
        int                     (*pfnDeltaFindField)            ( struct
delta_s *pFields, const char *fieldname );
        void            (*pfnDeltaSetFieldByIndex)      ( struct delta_s
*pFields, int fieldNumber );
        void            (*pfnDeltaUnsetFieldByIndex)( struct delta_s
*pFields, int fieldNumber );

        void            (*pfnSetGroupMask)                      ( int
mask, int op );

        int                     (*pfnCreateInstancedBaseline) ( int
classname, struct entity_state_s *baseline );
        void            (*pfnCvar_DirectSet)            ( struct cvar_s
*var, char *value );

        // Forces the client and server to be running with the same
version of the specified file
        //  ( e.g., a player model ).
        // Calling this has no effect in single player
        void            (*pfnForceUnmodified)           ( FORCE_TYPE
type, float *mins, float *maxs, const char *filename );

        void            (*pfnGetPlayerStats)            ( const edict_t
*pClient, int *ping, int *packet_loss );

        void            (*pfnAddServerCommand)          ( char
*cmd_name, void (*function) (void) );

        // For voice communications, set which clients hear eachother.
        // NOTE: these functions take player entity indices (starting at
1).
        qboolean        (*pfnVoice_GetClientListening)(int iReceiver,
int iSender);
        qboolean        (*pfnVoice_SetClientListening)(int iReceiver,
int iSender, qboolean bListen);

        const char *(*pfnGetPlayerAuthId)               ( edict_t *e );

        //
        //
        //  **************** New functions ***************
        //
        //      


        sequenceEntry_s*        (*pfnSequenceGet)
( const char* fileName, const char* entryName );
        sentenceEntry_s*        (*pfnSequencePickSentence)      ( const
char* groupName, int pickMethod, int *picked );
        int                     (*pfnGetFileSize)
( char *filename );
        unsigned int (*pfnGetApproxWavePlayLen) (const char *filepath);
        int                     (*pfnIsCareerMatch)
( void );
        int                     (*pfnGetLocalizedStringLength)(const
char *label);
        void (*pfnRegisterTutorMessageShown)(int mid);
        int (*pfnGetTimesTutorMessageShown)(int mid);
        void (*ProcessTutorMessageDecayBuffer)(int *buffer, int
bufferLength);
        void (*ConstructTutorMessageDecayBuffer)(int *buffer, int
bufferLength);
        void (*ResetTutorMessageDecayData)( void );

} enginefuncs_t;


_______________________________________________
hlds_apps mailing list
[EMAIL PROTECTED]
http://list.valvesoftware.com/mailman/listinfo/hlds_apps

Reply via email to