#include "utils.qh"
#include <server/intermission.qh>
+//#include <common/resources/resources.qh>
#include <common/replicate.qh>
#include <common/sounds/all.qh>
bool autocvar__notarget;
+bool autocvar_sv_show_entnum;
int autocvar_g_balance_armor_start;
float autocvar_g_balance_pause_armor_rot_spawn;
float autocvar_g_balance_pause_fuel_rot_spawn;
int autocvar_spawn_debug;
string autocvar_sv_motd;
int autocvar_sv_name_maxlength = 64;
+string autocvar_sv_quickmenu_file;
bool autocvar_sv_servermodelsonly;
+bool autocvar_sv_showspectators;
int autocvar_sv_spectate;
bool autocvar_sv_teamnagger;
float autocvar_sv_player_scale;
-bool autocvar_sv_showspectators;
// WEAPONTODO
.string weaponorder_byimpulse;
.float jointime; // time of connecting
.float startplaytime; // time of switching from spectator to player
.float alivetime; // time of being alive
-.float motd_actived_time; // used for both motd and campaign_message
.bool wasplayer;
ATTRIB(Client, teamkill_soundtime, float, this.teamkill_soundtime);
ATTRIB(Client, teamkill_soundsource, entity, this.teamkill_soundsource);
ATTRIB(Client, usekeypressed, bool, this.usekeypressed);
- ATTRIB(Client, motd_actived_time, float, this.motd_actived_time);
ATTRIB(Client, jointime, float, this.jointime);
ATTRIB(Client, spectatortime, float, this.spectatortime);
ATTRIB(Client, startplaytime, float, this.startplaytime);
ATTRIB(Client, specialcommand_pos, int, this.specialcommand_pos);
ATTRIB(Client, hitplotfh, int, this.hitplotfh);
ATTRIB(Client, clientdata, entity, this.clientdata);
- ATTRIB(Client, cmd_floodcount, int, this.cmd_floodcount);
ATTRIB(Client, cmd_floodtime, float, this.cmd_floodtime);
ATTRIB(Client, wasplayer, bool, this.wasplayer);
ATTRIB(Client, weaponorder_byimpulse, string, this.weaponorder_byimpulse);
ATTRIB(Client, cvar_cl_clippedspectating, bool, this.cvar_cl_clippedspectating);
ATTRIB(Client, cvar_cl_autoscreenshot, int, this.cvar_cl_autoscreenshot);
ATTRIB(Client, cvar_cl_jetpack_jump, bool, this.cvar_cl_jetpack_jump);
- ATTRIB(Client, cvar_cl_newusekeysupported, bool, this.cvar_cl_newusekeysupported);
ATTRIB(Client, cvar_cl_noantilag, bool, this.cvar_cl_noantilag);
ATTRIB(Client, cvar_cl_movement_track_canjump, bool, this.cvar_cl_movement_track_canjump);
ATTRIB(Client, cvar_cl_weaponimpulsemode, int, this.cvar_cl_weaponimpulsemode);
.float nickspamtime; // time of last nick change
.float nickspamcount;
+void SendWelcomeMessage(entity this, int msg_type);
+
// respawning
.int respawn_flags;
.float respawn_time;
bool PlayerInList(entity player, string list);
+bool PlayerInIDList(entity p, string idlist);
+
+bool PlayerInIPList(entity p, string iplist);
+
void ClientData_Touch(entity e);
int nJoinAllowed(entity this, entity ignore);
void play_countdown(entity this, float finished, Sound samp);
void player_powerups_remove_all(entity this);
-void RotRegen(entity this, float current, float limit_mod,
+// NOTE: current type is Resource (avoiding circular includes!)
+void RotRegen(entity this, entity current, float limit_mod,
float regenstable, float regenfactor, float regenlinear, float regenframetime,
float rotstable, float rotfactor, float rotlinear, float rotframetime);
void ClientInit_Spawn();
-void PutObserverInServer(entity this, bool is_forced);
+void PutObserverInServer(entity this, bool is_forced, bool use_spawnpoint);
void SetSpectatee(entity this, entity spectatee);
void SetSpectatee_status(entity this, int spectatee_num);
void FixPlayermodel(entity player);
+void GiveWarmupResources(entity this);
+
void ClientInit_misc(entity this);
int GetPlayerLimit();