#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 spectatee_status;
.bool zoomstate;
+.bool team_selected;
.bool just_joined;
+.bool wants_join;
.int pressedkeys;
void ClientState_attach(entity this);
-IntrusiveList g_players;
-STATIC_INIT(g_players) { g_players = IL_NEW(); }
-
CLASS(Client, Object)
/** Client name */
ATTRIB(Client, netname, string, this.netname);
ATTRIB(Client, teamkill_soundsource, entity, this.teamkill_soundsource);
ATTRIB(Client, usekeypressed, bool, this.usekeypressed);
ATTRIB(Client, jointime, float, this.jointime);
+ ATTRIB(Client, wants_join, bool, this.wants_join);
ATTRIB(Client, spectatortime, float, this.spectatortime);
ATTRIB(Client, startplaytime, float, this.startplaytime);
ATTRIB(Client, version_nagtime, float, this.version_nagtime);
ATTRIB(Client, cvar_cl_pokenade_type, string, this.cvar_cl_pokenade_type);
ATTRIB(Client, cvar_cl_spawn_near_teammate, bool, this.cvar_cl_spawn_near_teammate);
ATTRIB(Client, cvar_cl_gunalign, int, this.cvar_cl_gunalign);
- ATTRIB(Client, cvar_cl_handicap, float, this.cvar_cl_handicap);
+ ATTRIB(Client, cvar_cl_handicap_damage_given, float, this.cvar_cl_handicap_damage_given);
+ ATTRIB(Client, cvar_cl_handicap_damage_taken, float, this.cvar_cl_handicap_damage_taken);
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);
INIT(Player) {
this.classname = STR_PLAYER;
- IL_PUSH(g_players, this);
}
DESTRUCTOR(Player) {
- IL_REMOVE(g_players, this);
}
ENDCLASS(Player)
bool PlayerInList(entity player, string list);
-void ClientData_Touch(entity e);
+bool PlayerInIDList(entity p, string idlist);
-int nJoinAllowed(entity this, entity ignore);
+bool PlayerInIPList(entity p, string iplist);
+
+void ClientData_Touch(entity e);
void PlayerUseKey(entity this);
int GetPlayerLimit();
const int MIN_SPEC_TIME = 1;
+void Join(entity this, bool queued_join);
+int nJoinAllowed(entity this, entity ignore);
+bool queuePlayer(entity this, int team_index);
bool joinAllowed(entity this);
-void Join(entity this);
+
+void PlayerFrame (entity this);
#define SPECTATE_COPY() ACCUMULATE void SpectateCopy(entity this, entity spectatee)
#define SPECTATE_COPYFIELD(fld) SPECTATE_COPY() { this.(fld) = spectatee.(fld); }