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