typedef enum server_state_e {ss_loading, ss_active} server_state_t;
#define MAX_CONNECTFLOODADDRESSES 16
-typedef struct server_connectfloodaddress_s
+#define MAX_GETSTATUSFLOODADDRESSES 128
+typedef struct server_floodaddress_s
{
double lasttime;
lhnetaddress_t address;
}
-server_connectfloodaddress_t;
+server_floodaddress_t;
typedef struct server_s
{
/// connection flood blocking
/// note this is in server_t rather than server_static_t so that it is
/// reset on each map command (such as New Game in singleplayer)
- server_connectfloodaddress_t connectfloodaddresses[MAX_CONNECTFLOODADDRESSES];
+ server_floodaddress_t connectfloodaddresses[MAX_CONNECTFLOODADDRESSES];
+ server_floodaddress_t getstatusfloodaddresses[MAX_GETSTATUSFLOODADDRESSES];
#define SV_MAX_PARTICLEEFFECTNAME 256
qboolean particleeffectnamesloaded;
// number of skipped entity frames
// if it exceeds a limit, an empty entity frame is sent
int num_skippedentityframes;
+
+ // last sent move sequence
+ // if the move sequence changed, an empty entity frame is sent
+ int lastmovesequence;
} client_t;
// LordHavoc: corpse code
#define SOLID_CORPSE 5 ///< same as SOLID_BBOX, except it behaves as SOLID_NOT against SOLID_SLIDEBOX objects (players/monsters)
// LordHavoc: physics
+// VorteX: now these fields are deprecated, as geomtype is more flexible
#define SOLID_PHYSICS_BOX 32 ///< physics object (mins, maxs, mass, origin, axis_forward, axis_left, axis_up, velocity, spinvelocity)
#define SOLID_PHYSICS_SPHERE 33 ///< physics object (mins, maxs, mass, origin, axis_forward, axis_left, axis_up, velocity, spinvelocity)
#define SOLID_PHYSICS_CAPSULE 34 ///< physics object (mins, maxs, mass, origin, axis_forward, axis_left, axis_up, velocity, spinvelocity)
void SV_StartThread(void);
void SV_StopThread(void);
-#define SV_LockThreadMutex() (svs.threaded ? Thread_LockMutex(svs.threadmutex),1 : 0)
-#define SV_UnlockThreadMutex() (svs.threaded ? Thread_UnlockMutex(svs.threadmutex),1 : 0)
+#define SV_LockThreadMutex() (void)(svs.threaded ? Thread_LockMutex(svs.threadmutex) : 0)
+#define SV_UnlockThreadMutex() (void)(svs.threaded ? Thread_UnlockMutex(svs.threadmutex) : 0)
void VM_CustomStats_Clear(void);
void VM_SV_UpdateCustomStats(client_t *client, prvm_edict_t *ent, sizebuf_t *msg, int *stats);