Making this change won't cause a problem with WON users as long as you
don't use the new functions (as you won't have valid pointers to the
functions as they don't exist on WON).

- Alfred

Ben Banfield wrote:
I am assuming we don't update our mods with this if we want to retain
won compatibility for the moment.

Ben

Alfred Reynolds wrote:

This change is not needed for mods, I didn't want to confuse people with
what was required. It will be okay to add this to your mod however as
long as you release it after our update.

Yes, there will be a steam update that contains an updated client (and
engine) that will occur when this change is made live.

- Alfred



-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
Jeffrey "botman" Broome
Sent: Monday, November 10, 2003 7:12 PM
To: [EMAIL PROTECTED]
Subject: [hlcoders] [Fwd: [hlds_apps] Engine interface changes]

Any reason this wasn't sent to hlcoders?

Alfred, will this only effect dedicated servers or will there be a
client update coming in the "near" future?



-------- Original Message --------
Subject: [hlds_apps] Engine interface changes
Date: Mon, 10 Nov 2003 13:49:44 -0800
From: Alfred Reynolds <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>

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



--
Jeffrey "botman" Broome


_______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders





_______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders









_______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders


_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders



Reply via email to