X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=server.h;h=669174bc42ff785c66cd4b03f6ed9d9b9af6c54d;hb=48aa8723e4e82f2329a6053f95075af8cbf37444;hp=321185634c1ade6bb2d0521794f0934ff097e416;hpb=8e4d41ab346185f7e878e4eaf97c47dc70321e9d;p=xonotic%2Fdarkplaces.git diff --git a/server.h b/server.h index 32118563..669174bc 100644 --- a/server.h +++ b/server.h @@ -66,12 +66,13 @@ typedef struct server_static_s 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 { @@ -137,7 +138,8 @@ 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; @@ -189,8 +191,12 @@ typedef struct client_s qboolean active; /// false = don't do ClientDisconnect on drop qboolean clientconnectcalled; - /// false = don't send datagrams + /// false = don't allow spawn + qboolean prespawned; + /// false = don't allow begin qboolean spawned; + /// false = don't send datagrams + qboolean begun; /// 1 = send svc_serverinfo and advance to 2, 2 doesn't send, then advances to 0 (allowing unlimited sending) when prespawn is received int sendsignon; @@ -231,7 +237,7 @@ typedef struct client_s float clmovement_inputtimeout; /// spawn parms are carried from level to level - float spawn_parms[NUM_SPAWN_PARMS]; + prvm_vec_t spawn_parms[NUM_SPAWN_PARMS]; // properties that are sent across the network only when changed char name[MAX_SCOREBOARDNAME], old_name[MAX_SCOREBOARDNAME]; @@ -456,7 +462,6 @@ extern cvar_t sv_gameplayfix_nogravityonground; extern cvar_t sv_gameplayfix_setmodelrealbox; extern cvar_t sv_gameplayfix_slidemoveprojectiles; extern cvar_t sv_gameplayfix_stepdown; -extern cvar_t sv_gameplayfix_stepwhilejumping; extern cvar_t sv_gameplayfix_stepmultipletimes; extern cvar_t sv_gameplayfix_nostepmoveonsteepslopes; extern cvar_t sv_gameplayfix_swiminbmodels; @@ -561,6 +566,10 @@ void SV_LinkEdict_TouchAreaGrid_Call(prvm_edict_t *touch, prvm_edict_t *ent); // * returns true if it found a better place */ qboolean SV_UnstickEntity (prvm_edict_t *ent); +/*! move an entity that is stuck out of the surface it is stuck in (can move large amounts) + * returns true if it found a better place + */ +qboolean SV_NudgeOutOfSolid(prvm_edict_t *ent); /// calculates hitsupercontentsmask for a generic qc entity int SV_GenericHitSuperContentsMask(const prvm_edict_t *edict);