.:: Bots United ::.

.:: Bots United ::. (http://forums.bots-united.com/index.php)
-   Offtopic (http://forums.bots-united.com/forumdisplay.php?f=23)
-   -   CZ released!!! (http://forums.bots-united.com/showthread.php?t=1168)

dead bwoy 30-03-2004 11:20

Re: CZ released!!!
 
i get one of these for every file in the source:

! C:\Documents and Settings\Administrator\Local Settings\Temp\Rar$DI36.100\hlsdk-23: Cannot create hlsdk-2.3\multiplayer\cl_dll\hl\hl_baseentity.cpp

I figure theres something wrong with the bold and underlined parts. I don't think those filenames are allowed in windows... with the $ and the .
am i going to have to view each file in notepad and convert manually? that sounds like a lot of hassle, but if it HAS to be done... so be it.

Onno Kreuzinger 30-03-2004 12:12

Re: CZ released!!!
 
Quote:

Originally Posted by dead bwoy
i get one of these for every file in the source:

! C:\Documents and Settings\Administrator\Local Settings\Temp\Rar$DI36.100\hlsdk-23: Cannot create hlsdk-2.3\multiplayer\cl_dll\hl\hl_baseentity.cpp

I figure theres something wrong with the bold and underlined parts. I don't think those filenames are allowed in windows... with the $ and the .
am i going to have to view each file in notepad and convert manually? that sounds like a lot of hassle, but if it HAS to be done... so be it.

nope the bold no.1 is from winrars temp folder, and is a feature, the second bold misses a drive name, exept that it's ok.
the files themselfes are ok, but i will try them myself on whinedos.

cheers

/edit
verified, they work:
http://kreuzinger.biz/private/bots-u...rar-decomp.jpg
using winrar 3.20 on w2k pro, no special settings i'm aware of
edit/

dead bwoy 30-03-2004 23:26

Re: CZ released!!!
 
do i have the wrong file? i dont think so.
i see yours says hl_bot_build.tar.bz2
mine is just hlsdk-2.3.gz
EDIT:
Ok so i finally got it 9_9 whew...
don't exactly know what i did differently, but i finally got the damn sdk unpacked!!! :D
thanks for all your help
now for the compile... :|

Onno Kreuzinger 30-03-2004 23:54

Re: CZ released!!!
 
Hi sorry missed one page of posts,

im taking about the hlsdk i use, so not the one Pierre-Maire inssist to be the accurate one.

@PMB i ran a diff -Nru on your eiface.h and the one from the -tgz file from metamod.org, they are a little bit different ;):
Code:

  --- eiface.h-pmb        Tue Mar 30 23:44:43 2004
  +++ eiface.h-metamod.org        Wed Nov 27 05:32:34 2002
  @@ -1,10 +1,10 @@
  /***
  *
  -* Copyright (c) 1999, Valve LLC. All rights reserved.
  -*
  -* This product contains software technology licensed from Id
  -* Software, Inc. ("Id Technology").  Id Technology (c) 1996 Id Software, Inc.
  -* All Rights Reserved.
  +*        Copyright (c) 1996-2002, Valve LLC. All rights reserved.
  +*       
  +*        This product contains software technology licensed from Id
  +*        Software, Inc. ("Id Technology").  Id Technology (c) 1996 Id Software, Inc.
  +*        All Rights Reserved.
  *
  *  Use, distribution, and modification of this source code and/or resulting
  *  object code is restricted to non-commercial enhancements to products from
  @@ -14,442 +14,479 @@
  ****/
  #ifndef EIFACE_H
  #define EIFACE_H
  -#include "archtypes.h"        // DAL
  +
  #ifdef HLDEMO_BUILD
  #define INTERFACE_VERSION          001
  #else  // !HLDEMO_BUILD, i.e., regular version of HL
  -#define INTERFACE_VERSION  140
  +#define INTERFACE_VERSION                140
  #endif // !HLDEMO_BUILD
  +
  #include <stdio.h>
  #include "custom.h"
  #include "cvardef.h"
  -#include "Sequence.h"
  //
  // Defines entity interface between engine and DLLs.
  // This header file included by engine files and DLL files.
  //
  // Before including this header, DLLs must:
  -//  include progdefs.h
  +//                include progdefs.h
  // This is conveniently done for them in extdll.h
  //
  +
  #ifdef _WIN32
  #define DLLEXPORT __stdcall
  #else
  #define DLLEXPORT /* */
  #endif
  +
  typedef enum
  -{
  -at_notice,
  -at_console,  // same as at_notice, but forces a ConPrintf, not a message box
  -at_aiconsole, // same as at_console, but only shown if developer level is 2!
  -at_warning,
  -at_error,
  -at_logged  // Server print to console ( only in multiplayer games ).
  -} ALERT_TYPE;
  +        {
  +        at_notice,
 +        at_console,                // same as at_notice, but forces a ConPrintf, not a message box
  +        at_aiconsole,        // same as at_console, but only shown if developer level is 2!
  +        at_warning,
  +        at_error,
 +        at_logged                // Server print to console ( only in multiplayer games ).
  +        } ALERT_TYPE;
  +
  // 4-22-98  JOHN: added for use in pfnClientPrintf
  typedef enum
  -{
  -print_console,
  -print_center,
  -print_chat,
  -} PRINT_TYPE;
  +        {
  +        print_console,
  +        print_center,
  +        print_chat,
  +        } PRINT_TYPE;
  +
  // For integrity checking of content on clients
  typedef enum
  {
  -force_exactfile,        // File on client must exactly match server's file
  -force_model_samebounds,        // For model files only, the geometry must fit in the same bbox
  -force_model_specifybounds,  // For model files only, the geometry must fit in the specified bbox
 -force_model_specifybounds_if_avail, // For Steam model files only, the geometry must fit in the specified bbox (if the file is available)
 +        force_exactfile,                // File on client must exactly match server's file
 +        force_model_samebounds,        // For model files only, the geometry must fit in the same bbox
 +        force_model_specifybounds,        // For model files only, the geometry must fit in the specified bbox
  } FORCE_TYPE;
  +
  // Returned by TraceLine
  typedef struct
  -{
  -int  fAllSolid;  // if true, plane is not valid
  -int  fStartSolid;  // if true, the initial point was in a solid area
  -int  fInOpen;
  -int  fInWater;
  -float flFraction;  // time completed, 1.0 = didn't hit anything
  -vec3_t vecEndPos;  // final position
  -float flPlaneDist;
  -vec3_t vecPlaneNormal;  // surface normal at impact
  -edict_t *pHit;        // entity the surface is on
  -int  iHitgroup;  // 0 == generic, non zero is specific body part
  -} TraceResult;
  +        {
 +        int        fAllSolid;                        // if true, plane is not valid
 +        int        fStartSolid;                // if true, the initial point was in a solid area
  +        int                fInOpen;
  +        int                fInWater;
 +        float flFraction;                        // time completed, 1.0 = didn't hit anything
 +        vec3_t vecEndPos;                        // final position
  +        float        flPlaneDist;
 +        vec3_t        vecPlaneNormal;                // surface normal at impact
 +        edict_t        *pHit;                        // entity the surface is on
 +        int        iHitgroup;                        // 0 == generic, non zero is specific body part
  +        } TraceResult;
  +
  // CD audio status
  -typedef struct
  +typedef struct
  {
  -int fPlaying;// is sound playing right now?
  -int fWasPlaying;// if not, CD is paused if WasPlaying is true.
  -int fInitialized;
  -int fEnabled;
  -int fPlayLooping;
  -float cdvolume;
  -//BYTE  remap[100];
  -int fCDRom;
  -int fPlayTrack;
  +        int        fPlaying;// is sound playing right now?
  +        int        fWasPlaying;// if not, CD is paused if WasPlaying is true.
  +        int        fInitialized;
  +        int        fEnabled;
  +        int        fPlayLooping;
  +        float        cdvolume;
  +        //BYTE        remap[100];
  +        int        fCDRom;
  +        int        fPlayTrack;
  } CDStatus;
  +
  #include "../common/crc.h"
 
  // 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 );
  -// PSV: Added for CZ training map
  -// const char *(*pfnKeyNameForBinding)  ( const char* pBinding );
  -
  -void* (*pfnSequenceGet)  ( const char* fileName, const char* entryName );
  -void* (*pfnSequencePickSentence) ( const char* groupName, int pickMethod, int *picked );
  -// LH: Give access to filesize via filesystem
  -int  (*pfnGetFileSize)  ( char *filename );
  -unsigned int (*pfnGetApproxWavePlayLen) (const char *filepath);
  -// MDC: Added for CZ career-mode
  -int  (*pfnIsCareerMatch)  ( void );
  -// BGC: return the number of characters of the localized string referenced by using "label"
  -int  (*pfnGetLocalizedStringLength)(const char *label);
  -// BGC: added to facilitate persistent storage of tutor message decay values for
  -// different career game profiles.  Also needs to persist regardless of mp.dll being
  -// destroyed and recreated.
  -void (*pfnRegisterTutorMessageShown)(int mid);
  -int (*pfnGetTimesTutorMessageShown)(int mid);
  -void (*pfnProcessTutorMessageDecayBuffer)(int *buffer, int bufferLength);
  -void (*pfnConstructTutorMessageDecayBuffer)(int *buffer, int bufferLength);
  -void (*pfnResetTutorMessageDecayData)( void );
  -} enginefuncs_t;
 +        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)                (FILE *pfile, char *szFmt, ...);
 +        void*        (*pfnPvAllocEntPrivateData)        (edict_t *pEdict, long 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 );
  +        unsigned long (*pfnFunctionFromName)        ( const char *pName );
 +        const char *(*pfnNameForFunction)                ( unsigned long 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);
 +        long        (*pfnRandomLong)                (long lLow, long 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 );
  +} enginefuncs_t;
  // ONLY ADD NEW FUNCTIONS TO THE END OF THIS STRUCT.  INTERFACE VERSION IS FROZEN AT 138
  +
  // Passed to pfnKeyValue
  typedef struct KeyValueData_s
  {
  -char *szClassName; // in: entity classname
  -char *szKeyName;  // in: name of key
  -char *szValue;  // in: value of key
  -int32 fHandled;  // out: DLL sets to true if key-value pair was understood
  +        char        *szClassName;        // in: entity classname
 +        char        *szKeyName;                // in: name of key
 +        char        *szValue;                // in: value of key
 +        long        fHandled;        // out: DLL sets to true if key-value pair was understood
  } KeyValueData;
 
  +
  typedef struct
  {
  -char  mapName[ 32 ];
  -char  landmarkName[ 32 ];
  -edict_t *pentLandmark;
  -vec3_t  vecLandmarkOrigin;
  +        char                mapName[ 32 ];
  +        char                landmarkName[ 32 ];
  +        edict_t        *pentLandmark;
  +        vec3_t                vecLandmarkOrigin;
  } LEVELLIST;
  -#define MAX_LEVEL_CONNECTIONS 16  // These are encoded in the lower 16bits of ENTITYTABLE->flags
  -typedef struct
 +#define MAX_LEVEL_CONNECTIONS        16        // These are encoded in the lower 16bits of ENTITYTABLE->flags
  +
  +typedef struct
  {
  -int  id;        // Ordinal ID of this entity (used for entity <--> pointer conversions)
  -edict_t *pent;  // Pointer to the in-game entity
  -int  location;  // Offset from the base data of this entity
  -int  size;  // Byte size of this entity's data
  -int  flags;  // This could be a short -- bit mask of transitions that this entity is in the PVS of
  -string_t classname;  // entity class name
 +        int                id;                        // Ordinal ID of this entity (used for entity <--> pointer conversions)
 +        edict_t        *pent;                // Pointer to the in-game entity
  +
 +        int                location;                // Offset from the base data of this entity
 +        int                size;                // Byte size of this entity's data
 +        int                flags;                // This could be a short -- bit mask of transitions that this entity is in the PVS of
 +        string_t        classname;                // entity class name
  +
  } ENTITYTABLE;
  -#define FENTTABLE_PLAYER  0x80000000
  -#define FENTTABLE_REMOVED  0x40000000
  -#define FENTTABLE_MOVEABLE  0x20000000
  -#define FENTTABLE_GLOBAL  0x10000000
  +
  +#define FENTTABLE_PLAYER                0x80000000
  +#define FENTTABLE_REMOVED                0x40000000
  +#define FENTTABLE_MOVEABLE                0x20000000
  +#define FENTTABLE_GLOBAL                0x10000000
  +
  typedef struct saverestore_s SAVERESTOREDATA;
  +
  #ifdef _WIN32
  -typedef
  +typedef
  #endif
  struct saverestore_s
  {
  -char  *pBaseData;  // Start of all entity save data
  -char  *pCurrentData; // Current buffer pointer for sequential access
  -int  size;  // Current data size
  -int  bufferSize;  // Total space for data
  -int  tokenSize;  // Size of the linear list of tokens
  -int  tokenCount;  // Number of elements in the pTokens table
  -char  **pTokens;  // Hash table of entity strings (sparse)
  -int  currentIndex; // Holds a global entity table ID
  -int  tableCount;  // Number of elements in the entity table
  -int  connectionCount;// Number of elements in the levelList[]
  -ENTITYTABLE *pTable;  // Array of ENTITYTABLE elements (1 for each entity)
  -LEVELLIST levelList[ MAX_LEVEL_CONNECTIONS ];  // List of connections from this level
  -// smooth transition
  -int  fUseLandmark;
  -char  szLandmarkName[20];// landmark we'll spawn near in next level
  -vec3_t  vecLandmarkOffset;// for landmark transitions
  -float  time;
  -char  szCurrentMapName[32]; // To check global entities
  -}
 +        char        *pBaseData;                // Start of all entity save data
 +        char        *pCurrentData;        // Current buffer pointer for sequential access
 +        int                size;                // Current data size
 +        int                bufferSize;                // Total space for data
 +        int                tokenSize;                // Size of the linear list of tokens
 +        int                tokenCount;                // Number of elements in the pTokens table
 +        char        **pTokens;                // Hash table of entity strings (sparse)
 +        int                currentIndex;        // Holds a global entity table ID
 +        int                tableCount;                // Number of elements in the entity table
 +        int                connectionCount;// Number of elements in the levelList[]
 +        ENTITYTABLE *pTable;                // Array of ENTITYTABLE elements (1 for each entity)
 +        LEVELLIST        levelList[ MAX_LEVEL_CONNECTIONS ];                // List of connections from this level
  +
  +        // smooth transition
  +        int                        fUseLandmark;
 +        char                szLandmarkName[20];// landmark we'll spawn near in next level
  +        vec3_t                vecLandmarkOffset;// for landmark transitions
  +        float                time;
 +        char        szCurrentMapName[32];        // To check global entities
  +
  +}
  #ifdef _WIN32
  -SAVERESTOREDATA
  +SAVERESTOREDATA
  #endif
  ;
  +
  typedef enum _fieldtypes
  {
  -FIELD_FLOAT = 0,  // Any floating point value
  -FIELD_STRING,  // A string ID (return from ALLOC_STRING)
  -FIELD_ENTITY,  // An entity offset (EOFFSET)
  -FIELD_CLASSPTR,  // CBaseEntity *
  -FIELD_EHANDLE,  // Entity handle
  -FIELD_EVARS,  // EVARS *
  -FIELD_EDICT,  // edict_t *, or edict_t *  (same thing)
  -FIELD_VECTOR,  // Any vector
  -FIELD_POSITION_VECTOR, // A world coordinate (these are fixed up across level transitions automagically)
  -FIELD_POINTER,  // Arbitrary data pointer... to be removed, use an array of FIELD_CHARACTER
  -FIELD_INTEGER,  // Any integer or enum
  -FIELD_FUNCTION,  // A class function pointer (Think, Use, etc)
  -FIELD_BOOLEAN,  // boolean, implemented as an int, I may use this as a hint for compression
  -FIELD_SHORT,  // 2 byte integer
  -FIELD_CHARACTER,  // a byte
  -FIELD_TIME,        // a floating point time (these are fixed up automatically too!)
  -FIELD_MODELNAME,  // Engine string that is a model name (needs precache)
  -FIELD_SOUNDNAME,  // Engine string that is a sound name (needs precache)
  -FIELD_TYPECOUNT,  // MUST BE LAST
  +        FIELD_FLOAT = 0,                // Any floating point value
 +        FIELD_STRING,                // A string ID (return from ALLOC_STRING)
 +        FIELD_ENTITY,                        // An entity offset (EOFFSET)
 +        FIELD_CLASSPTR,                        // CBaseEntity *
  +        FIELD_EHANDLE,                        // Entity handle
  +        FIELD_EVARS,                        // EVARS *
 +        FIELD_EDICT,                // edict_t *, or edict_t * (same thing)
  +        FIELD_VECTOR,                        // Any vector
 +        FIELD_POSITION_VECTOR,        // A world coordinate (these are fixed up across level transitions automagically)
 +        FIELD_POINTER,                // Arbitrary data pointer... to be removed, use an array of FIELD_CHARACTER
 +        FIELD_INTEGER,                        // Any integer or enum
 +        FIELD_FUNCTION,                // A class function pointer (Think, Use, etc)
 +        FIELD_BOOLEAN,                // boolean, implemented as an int, I may use this as a hint for compression
  +        FIELD_SHORT,                        // 2 byte integer
  +        FIELD_CHARACTER,                // a byte
 +        FIELD_TIME,                        // a floating point time (these are fixed up automatically too!)
 +        FIELD_MODELNAME,                // Engine string that is a model name (needs precache)
 +        FIELD_SOUNDNAME,                // Engine string that is a sound name (needs precache)
  +
  +        FIELD_TYPECOUNT,                // MUST BE LAST
  } FIELDTYPE;
  +
  #ifndef offsetof
  -#define offsetof(s,m) (size_t)&(((s *)0)->m)
  +#define offsetof(s,m)        (size_t)&(((s *)0)->m)
  #endif
  -#define _FIELD(type,name,fieldtype,count,flags)  { fieldtype, #name, offsetof(type, name), count, flags }
  -#define DEFINE_FIELD(type,name,fieldtype)  _FIELD(type, name, fieldtype, 1, 0)
  -#define DEFINE_ARRAY(type,name,fieldtype,count)  _FIELD(type, name, fieldtype, count, 0)
  -#define DEFINE_ENTITY_FIELD(name,fieldtype)  _FIELD(entvars_t, name, fieldtype, 1, 0 )
  -#define DEFINE_ENTITY_GLOBAL_FIELD(name,fieldtype) _FIELD(entvars_t, name, fieldtype, 1, FTYPEDESC_GLOBAL )
  -#define DEFINE_GLOBAL_FIELD(type,name,fieldtype) _FIELD(type, name, fieldtype, 1, FTYPEDESC_GLOBAL )
 
  -#define FTYPEDESC_GLOBAL  0x0001  // This field is masked for global entity save/restore
  -typedef struct
 +#define _FIELD(type,name,fieldtype,count,flags)        { fieldtype, #name, offsetof(type, name), count, flags }
 +#define DEFINE_FIELD(type,name,fieldtype)                _FIELD(type, name, fieldtype, 1, 0)
 +#define DEFINE_ARRAY(type,name,fieldtype,count)                _FIELD(type, name, fieldtype, count, 0)
 +#define DEFINE_ENTITY_FIELD(name,fieldtype)                _FIELD(entvars_t, name, fieldtype, 1, 0 )
 +#define DEFINE_ENTITY_GLOBAL_FIELD(name,fieldtype)        _FIELD(entvars_t, name, fieldtype, 1, FTYPEDESC_GLOBAL )
  +#define DEFINE_GLOBAL_FIELD(type,name,fieldtype)        _FIELD(type, name, fieldtype, 1, FTYPEDESC_GLOBAL )
  +
  +
 +#define FTYPEDESC_GLOBAL                0x0001                // This field is masked for global entity save/restore
  +
  +typedef struct
  {
  -FIELDTYPE  fieldType;
  -char  *fieldName;
  -int        fieldOffset;
  -short  fieldSize;
  -short  flags;
  +        FIELDTYPE                fieldType;
  +        char                        *fieldName;
 +        int                                fieldOffset;
  +        short                        fieldSize;
  +        short                        flags;
  } TYPEDESCRIPTION;
  -#define ARRAYSIZE(p)  (sizeof(p)/sizeof(p[0]))
  -typedef struct
  +
  +#define ARRAYSIZE(p)                (sizeof(p)/sizeof(p[0]))
  +
  +typedef struct
  {
  -// Initialize/shutdown the game (one-time call after loading of game .dll )
  -void  (*pfnGameInit)  ( void );       
  -int        (*pfnSpawn)        ( edict_t *pent );
  -void  (*pfnThink)        ( edict_t *pent );
  -void  (*pfnUse)        ( edict_t *pentUsed, edict_t *pentOther );
  -void  (*pfnTouch)        ( edict_t *pentTouched, edict_t *pentOther );
  -void  (*pfnBlocked)  ( edict_t *pentBlocked, edict_t *pentOther );
  -void  (*pfnKeyValue)  ( edict_t *pentKeyvalue, KeyValueData *pkvd );
  -void  (*pfnSave)        ( edict_t *pent, SAVERESTOREDATA *pSaveData );
  -int        (*pfnRestore)  ( edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity );
  -void  (*pfnSetAbsBox)  ( edict_t *pent );
  -void  (*pfnSaveWriteFields) ( SAVERESTOREDATA *, const char *, void *, TYPEDESCRIPTION *, int );
  -void  (*pfnSaveReadFields) ( SAVERESTOREDATA *, const char *, void *, TYPEDESCRIPTION *, int );
  -void  (*pfnSaveGlobalState)  ( SAVERESTOREDATA * );
  -void  (*pfnRestoreGlobalState) ( SAVERESTOREDATA * );
  -void  (*pfnResetGlobalState)  ( void );
  -qboolean  (*pfnClientConnect)  ( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] );
  -
  -void  (*pfnClientDisconnect) ( edict_t *pEntity );
  -void  (*pfnClientKill)  ( edict_t *pEntity );
  -void  (*pfnClientPutInServer) ( edict_t *pEntity );
  -void  (*pfnClientCommand)  ( edict_t *pEntity );
  -void  (*pfnClientUserInfoChanged)( edict_t *pEntity, char *infobuffer );
  -void  (*pfnServerActivate) ( edict_t *pEdictList, int edictCount, int clientMax );
  -void  (*pfnServerDeactivate) ( void );
  -void  (*pfnPlayerPreThink) ( edict_t *pEntity );
  -void  (*pfnPlayerPostThink) ( edict_t *pEntity );
  -void  (*pfnStartFrame)  ( void );
  -void  (*pfnParmsNewLevel)  ( void );
  -void  (*pfnParmsChangeLevel) ( void );
  -  // Returns string describing current .dll.  E.g., TeamFotrress 2, Half-Life
  -const char        *(*pfnGetGameDescription)( void );       
  -// Notify dll about a player customization.
 -void                (*pfnPlayerCustomization) ( edict_t *pEntity, customization_t *pCustom );
  -// Spectator funcs
  -void  (*pfnSpectatorConnect)  ( edict_t *pEntity );
  -void  (*pfnSpectatorDisconnect) ( edict_t *pEntity );
  -void  (*pfnSpectatorThink)  ( edict_t *pEntity );
  -// Notify game .dll that engine is going to shut down.  Allows mod authors to set a breakpoint.
  -void  (*pfnSys_Error)  ( const char *error_string );
  -void  (*pfnPM_Move) ( struct playermove_s *ppmove, qboolean server );
  -void  (*pfnPM_Init) ( struct playermove_s *ppmove );
  -char  (*pfnPM_FindTextureType)( char *name );
 -void (*pfnSetupVisibility)( struct edict_s *pViewEntity, struct edict_s *pClient, unsigned char **pvs, unsigned char **pas );
  -void  (*pfnUpdateClientData) ( const struct edict_s *ent, int sendweapons, struct clientdata_s *cd );
 -int        (*pfnAddToFullPack)( struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet );
 -void (*pfnCreateBaseline) ( int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, vec3_t player_mins, vec3_t player_maxs );
  -void  (*pfnRegisterEncoders) ( void );
  -int        (*pfnGetWeaponData)  ( struct edict_s *player, struct weapon_data_s *info );
  -void  (*pfnCmdStart)  ( const edict_t *player, const struct usercmd_s *cmd, unsigned int random_seed );
  -void  (*pfnCmdEnd)  ( const edict_t *player );
 -// Return 1 if the packet is valid. Set response_buffer_size if you want to send a response packet. Incoming, it holds the max
  -//  size of the response_buffer, so you must zero it out if you choose not to respond.
 -int        (*pfnConnectionlessPacket ) ( const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size );
  -// Enumerates player hulls.  Returns 0 if the hull number doesn't exist, 1 otherwise
  -int        (*pfnGetHullBounds) ( int hullnumber, float *mins, float *maxs );
  -// Create baselines for certain "unplaced" items.
  -void  (*pfnCreateInstancedBaselines) ( void );
  -// One of the pfnForceUnmodified files failed the consistency check for the specified player
 -// Return 0 to allow the client to continue, 1 to force immediate disconnection ( with an optional disconnect message of up to 256 characters )
 -int        (*pfnInconsistentFile)( const struct edict_s *player, const char *filename, char *disconnect_message );
  -// The game .dll should return 1 if lag compensation should be allowed ( could also just set
  -//  the sv_unlag cvar.
  -// Most games right now should return 0, until client-side weapon prediction code is written
  -//  and tested for them.
  -int        (*pfnAllowLagCompensation)( void );
  +        // Initialize/shutdown the game (one-time call after loading of game .dll )
 +        void                (*pfnGameInit)                ( void );                       
 +        int                        (*pfnSpawn)                        ( edict_t *pent );
 +        void                (*pfnThink)                        ( edict_t *pent );
 +        void                (*pfnUse)                        ( edict_t *pentUsed, edict_t *pentOther );
 +        void                (*pfnTouch)                        ( edict_t *pentTouched, edict_t *pentOther );
 +        void                (*pfnBlocked)                ( edict_t *pentBlocked, edict_t *pentOther );
 +        void                (*pfnKeyValue)                ( edict_t *pentKeyvalue, KeyValueData *pkvd );
 +        void                (*pfnSave)                        ( edict_t *pent, SAVERESTOREDATA *pSaveData );
 +        int                  (*pfnRestore)                ( edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity );
 +        void                (*pfnSetAbsBox)                ( edict_t *pent );
  +
 +        void                (*pfnSaveWriteFields)        ( SAVERESTOREDATA *, const char *, void *, TYPEDESCRIPTION *, int );
 +        void                (*pfnSaveReadFields)        ( SAVERESTOREDATA *, const char *, void *, TYPEDESCRIPTION *, int );
  +
 +        void                (*pfnSaveGlobalState)        ( SAVERESTOREDATA * );
 +        void                (*pfnRestoreGlobalState)        ( SAVERESTOREDATA * );
 +        void                (*pfnResetGlobalState)        ( void );
  +
 +        qboolean        (*pfnClientConnect)                ( edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ] );
  +       
 +        void                (*pfnClientDisconnect)        ( edict_t *pEntity );
 +        void                (*pfnClientKill)        ( edict_t *pEntity );
 +        void                (*pfnClientPutInServer)        ( edict_t *pEntity );
 +        void                (*pfnClientCommand)        ( edict_t *pEntity );
 +        void                (*pfnClientUserInfoChanged)( edict_t *pEntity, char *infobuffer );
  +
 +        void                (*pfnServerActivate)        ( edict_t *pEdictList, int edictCount, int clientMax );
 +        void                (*pfnServerDeactivate)        ( void );
  +
 +        void                (*pfnPlayerPreThink)        ( edict_t *pEntity );
 +        void                (*pfnPlayerPostThink)        ( edict_t *pEntity );
  +
 +        void                (*pfnStartFrame)        ( void );
 +        void                (*pfnParmsNewLevel)        ( void );
 +        void                (*pfnParmsChangeLevel)        ( void );
  +
  +        // Returns string describing current .dll.  E.g., TeamFotrress 2, Half-Life
  +        const char        *(*pfnGetGameDescription)( void );       
  +
  +        // Notify dll about a player customization.
 + void                (*pfnPlayerCustomization) ( edict_t *pEntity, customization_t *pCustom );
  +
  +        // Spectator funcs
 +        void                (*pfnSpectatorConnect)        ( edict_t *pEntity );
 +        void                (*pfnSpectatorDisconnect)        ( edict_t *pEntity );
 +        void                (*pfnSpectatorThink)        ( edict_t *pEntity );
  +
  +        // Notify game .dll that engine is going to shut down.  Allows mod authors to set a breakpoint.
 +        void                (*pfnSys_Error)                ( const char *error_string );
  +
 +        void                (*pfnPM_Move) ( struct playermove_s *ppmove, qboolean server );
 +        void                        (*pfnPM_Init) ( struct playermove_s *ppmove );
 +        char                        (*pfnPM_FindTextureType)( char *name );
 +        void                (*pfnSetupVisibility)( struct edict_s *pViewEntity, struct edict_s *pClient, unsigned char **pvs, unsigned char **pas );
 +        void                (*pfnUpdateClientData) ( const struct edict_s *ent, int sendweapons, struct clientdata_s *cd );
 +        int                        (*pfnAddToFullPack)( struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet );
 +        void                (*pfnCreateBaseline) ( int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, vec3_t player_mins, vec3_t player_maxs );
 +        void                (*pfnRegisterEncoders)        ( void );
 +        int                  (*pfnGetWeaponData)                ( struct edict_s *player, struct weapon_data_s *info );
  +
 +        void                (*pfnCmdStart)                ( const edict_t *player, const struct usercmd_s *cmd, unsigned int random_seed );
 +        void                (*pfnCmdEnd)                ( const edict_t *player );
  +
 +        // Return 1 if the packet is valid. Set response_buffer_size if you want to send a response packet. Incoming, it holds the max
  +        //  size of the response_buffer, so you must zero it out if you choose not to respond.
 +        int                        (*pfnConnectionlessPacket )        ( const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size );
  +
  +        // Enumerates player hulls.  Returns 0 if the hull number doesn't exist, 1 otherwise
 +        int                  (*pfnGetHullBounds)        ( int hullnumber, float *mins, float *maxs );
  +
  +        // Create baselines for certain "unplaced" items.
 +        void                        (*pfnCreateInstancedBaselines) ( void );
  +
  +        // One of the pfnForceUnmodified files failed the consistency check for the specified player
 +        // Return 0 to allow the client to continue, 1 to force immediate disconnection ( with an optional disconnect message of up to 256 characters )
 +        int                        (*pfnInconsistentFile)( const struct edict_s *player, const char *filename, char *disconnect_message );
  +
  +        // The game .dll should return 1 if lag compensation should be allowed ( could also just set
  +        //  the sv_unlag cvar.
  +        // Most games right now should return 0, until client-side weapon prediction code is written
  +        //  and tested for them.
 +        int                        (*pfnAllowLagCompensation)( void );
  } DLL_FUNCTIONS;
  -extern DLL_FUNCTIONS  gEntityInterface;
  +
  +extern DLL_FUNCTIONS                gEntityInterface;
  +
  // Current version.
  -#define NEW_DLL_FUNCTIONS_VERSION 1
  +#define NEW_DLL_FUNCTIONS_VERSION        1
  +
  typedef struct
  {
  -// Called right before the object's memory is freed.
  -// Calls its destructor.
  -void  (*pfnOnFreeEntPrivateData)(edict_t *pEnt);
  -void  (*pfnGameShutdown)(void);
  -int        (*pfnShouldCollide)( edict_t *pentTouched, edict_t *pentOther );
  +        // Called right before the object's memory is freed.
  +        // Calls its destructor.
 +        void                        (*pfnOnFreeEntPrivateData)(edict_t *pEnt);
  +        void                        (*pfnGameShutdown)(void);
 +        int                        (*pfnShouldCollide)( edict_t *pentTouched, edict_t *pentOther );
  } NEW_DLL_FUNCTIONS;
  -typedef int (*NEW_DLL_FUNCTIONS_FN)( NEW_DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion );
  +typedef int        (*NEW_DLL_FUNCTIONS_FN)( NEW_DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion );
  +
  // Pointers will be null if the game DLL doesn't support this API.
  -extern NEW_DLL_FUNCTIONS gNewDLLFunctions;
  -typedef int (*APIFUNCTION)( DLL_FUNCTIONS *pFunctionTable, int interfaceVersion );
  -typedef int (*APIFUNCTION2)( DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion );
  -#endif EIFACE_H
  +extern NEW_DLL_FUNCTIONS        gNewDLLFunctions;
  +
  +typedef int        (*APIFUNCTION)( DLL_FUNCTIONS *pFunctionTable, int interfaceVersion );
  +typedef int        (*APIFUNCTION2)( DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion );
  +
  +#endif /* EIFACE_H */

i can see most are only some lines offset, but all in all there is quite some difference (46kb) ...

cheers

sPlOrYgOn 31-03-2004 01:01

Re: CZ released!!!
 
the sdk on metamod.org dates back to 2002...

dead bwoy 31-03-2004 01:17

Re: CZ released!!!
 
ok im stumped pmb
the new eiface.h (from the successfully unpacked gz file) is the same as the old one i have... wtf! >:(
sorry, im a little mad that it took me days to figure out how to unzip the linux sdk and its not even the right one.(?)
I downloaded:
hlsdk-2.3.tgz (which turned into .gz)
hl_sdk_v23.exe
both from metamod.org
the only difference is that the "multiplayer source" and "singleplayer source" directories have been renamed to "multiplayer" and "singleplayer" respectfully, as in says in http://metamod.org/files/sdk/hlsdk-2.3.txt I saw nothing about the changes that are included in your "current" sdk.
are you sure you got your "current" sdk from metamod.org? Can anyone provide me with a link to the current sdk?

Pierre-Marie Baty 31-03-2004 07:27

Re: CZ released!!!
 
heck, wtf ? They changed the metamod SDK??? that's the only explanation I see ! :( Sorry for all that I said then :(

Memed, our SDK at bots-united is up to date AFAIK ? "We" should (we = the first one to log in at the server) perhaps make a release and publish it...

dead bwoy 31-03-2004 08:29

Re: CZ released!!!
 
so where should i check for the download?
lemme know and ill check till its there

Terran 31-03-2004 12:30

Re: CZ released!!!
 
If I remember correctly I'm using the original HL-SDK 2.3 with the official patch from VALVe which included the new eiface.h, archtype.h and Sequence.h.
I also tried other variants of the HL-SDK but always failed because of some problems...

Onno Kreuzinger 31-03-2004 14:27

Re: CZ released!!!
 
A download of the version first used to make the hpb_bot and realbot wip for linux is allready here:
[removed, updated see below]

/edit
i made new releases, there are now two downloads:
one archive containing only the hlsdk-2.3:
BU-hl-sdk-2.3.tar.bz2

and a second archive containing the hlsdk-2.3, metamod sources and hpb_bot sources:
BU-hl-bot-build-example.tar.bz2

The fist pack is the hlsdk used internal by the bots united server, it should work for windows and linux, but i suggest to link only against the multiplayer tree, for me the singleplayer tree does not look fully updated.

The second pack is suitable to compile metamod and hpb_bot on it's own, a perfect startpoint to develop bots in linux and probably also for windows. The hpb_bot code is from march 3., i assume that's the lates version provided by Pierre-Marie.

Small readmes are included in both archives, if any questions arise feel fee to start a FAQ in the wiki :)
(section server wiki or developer wiki)

edit/
cheers memed

dead bwoy 31-03-2004 17:38

Re: CZ released!!!
 
well i got a successfull compile now but the thing still dont work right yet:
Couldn't get GiveFnptrsToDll in .\czero\addons\metamod\metamod_cz.dll
HOST_ERROR: Couldn't get DLL API from .\czero\addons\metamod\metamod_cz.dll

Pierre-Marie Baty 01-04-2004 00:33

Re: CZ released!!!
 
Could you post your GiveFnptrsToDll() prototype ?

dead bwoy 01-04-2004 17:37

Re: CZ released!!!
 
Code:

/***
*
* Copyright (c) 1996-2002, Valve LLC. All rights reserved.
*
* This product contains software technology licensed from Id
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
* All Rights Reserved.
*
* Use, distribution, and modification of this source code and/or resulting
* object code is restricted to non-commercial enhancements to products from
* Valve LLC. All other use, distribution, or modification is prohibited
* without written permission from Valve LLC.
*
****/
/*
===== h_export.cpp ========================================================
Entity classes exported by Halflife.
*/
#include "extdll.h"
#include "util.h"
#include "cbase.h"
// Holds engine functionality callbacks
enginefuncs_t g_engfuncs;
globalvars_t *gpGlobals;
#ifdef _WIN32
// Required DLL entry point
BOOL WINAPI DllMain(
HINSTANCE hinstDLL,
DWORD fdwReason,
LPVOID lpvReserved)
{
if        (fdwReason == DLL_PROCESS_ATTACH)
        {
        }
else if (fdwReason == DLL_PROCESS_DETACH)
        {
        }
return TRUE;
}
void DLLEXPORT GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals )
{
memcpy(&g_engfuncs, pengfuncsFromEngine, sizeof(enginefuncs_t));
gpGlobals = pGlobals;
}
#else
extern "C" {
void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals )
{
memcpy(&g_engfuncs, pengfuncsFromEngine, sizeof(enginefuncs_t));
gpGlobals = pGlobals;
}
}
#endif

...I think this is what you're asking for

stefanhendriks 03-04-2004 19:24

Re: CZ released!!!
 
guys, i thought we had a similiar problem when we tried to compile metamod and such on our server. Can't we just get that source bundled?

Onno Kreuzinger 03-04-2004 21:17

Re: CZ released!!!
 
it is allready Pres :-)

http://server.bots-united.com/downloads

dead bwoy 04-04-2004 06:30

Re: CZ released!!!
 
so is this GiveFnptrsToDll() error; is it a sdk problem (still not current?) or is this a metamod code problem?

Pierre-Marie Baty 04-04-2004 23:42

Re: CZ released!!!
 
I think it's a compiler issue. Metamod is meant to compile with GCC on Linux, GCC + Cross-compiling (on Linux) for Windows, or MSVC natively for Windows. Other compilers may not behave correctly and GiveFnptrsToDll is not correctly exported.

How is "DLLEXPORT" defined in the code you're using ?

Onno Kreuzinger 05-04-2004 00:28

Re: CZ released!!!
 
Quote:

+ Cross-compiling (on Linux) for Windows
nope that is broken and not fixed, i read it after installing the cross compile stuff ...

dead bwoy 05-04-2004 03:34

Re: CZ released!!!
 
Code:

// Macro for function-exporting from DLL..
// from SDK dlls/cbase.h:
//! C functions for external declarations that call the appropriate C++ methods

// Windows uses "__declspec(dllexport)" to mark functions in the DLL that
// should be visible/callable externally.
//
// It also apparently requires WINAPI for GiveFnptrsToDll().
//
// See doc/notes_windows_coding for more information..

// Attributes to specify an "exported" function, visible from outside the
// DLL.
#undef DLLEXPORT
#ifdef _WIN32
                  #define DLLEXPORT __declspec(dllexport)
                  // WINAPI should be provided in the windows compiler headers.
                  // It's usually defined to something like "__stdcall".
#elif defined(linux)
                  #define DLLEXPORT /* */
                  #define WINAPI  /* */
#endif /* linux */

this?
__declspec(dllexport)

dead bwoy 07-04-2004 17:50

Re: CZ released!!!
 
so for those who are a$$ broke, like me, i found out that microsoft offers the same command line compiler that comes with msvc; FOR FREE!!! W00T!
check it out:
http://www.thefreecountry.com/compilers/cpp.shtml
here's hoping i can get it to work.

HELP:
ok, so im assuming that you use this command line compiler with dos (on windows). every command i try comes back with "not recognized as an internal or external command, operable program, or batch file." do i need to create a batch file to compile? what are the commands?

Cpl. Shrike 07-04-2004 18:09

Re: CZ released!!!
 
My eye fell on the intel compiler.
I hope to get that working. ;)


All times are GMT +2. The time now is 23:24.

Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.