Xonotic
client.qh
Go to the documentation of this file.
1 #pragma once
2 
3 #include "utils.qh"
4 #include <server/intermission.qh>
5 //#include <common/resources/resources.qh>
6 #include <common/replicate.qh>
7 #include <common/sounds/all.qh>
8 
58 
59 // WEAPONTODO
61 
62 .entity clientdata;
63 
64 .float jointime; // time of connecting
65 .float startplaytime; // time of switching from spectator to player
66 .float alivetime; // time of being alive
67 .float motd_actived_time; // used for both motd and campaign_message
68 
69 .bool wasplayer;
70 
72 .bool zoomstate;
73 
75 
77 
78 .int playerid;
79 
80 .string playermodel;
81 .string playerskin;
82 
83 void ClientState_attach(entity this);
84 
86 STATIC_INIT(g_players) { g_players = IL_NEW(); }
87 
90  ATTRIB(Client, netname, string, this.netname);
91  ATTRIB(Client, colormap, int, this.colormap);
92  ATTRIB(Client, team, int, this.team);
93  ATTRIB(Client, clientcolors, int, this.clientcolors);
95  ATTRIB(Client, netaddress, string, this.netaddress);
96  ATTRIB(Client, playermodel, string, this.playermodel);
97  ATTRIB(Client, playerskin, string, this.playerskin);
98 
100  ATTRIB(Client, crypto_keyfp, string, this.crypto_keyfp);
102  ATTRIB(Client, crypto_mykeyfp, string, this.crypto_mykeyfp);
104  ATTRIB(Client, crypto_idfp, string, this.crypto_idfp);
106  ATTRIB(Client, crypto_idfp_signed, bool, this.crypto_idfp_signed);
108  ATTRIB(Client, crypto_encryptmethod, string, this.crypto_encryptmethod);
110  ATTRIB(Client, crypto_signmethod, string, this.crypto_signmethod);
111 
112  // engine client fields
113  ATTRIB(Client, impulse, int, this.impulse);
114 
115  ATTRIB(Client, button0, int, this.button0);
116  ATTRIB(Client, button2, int, this.button2);
117  ATTRIB(Client, button3, int, this.button3);
118  ATTRIB(Client, button4, int, this.button4);
119  ATTRIB(Client, button5, int, this.button5);
120  ATTRIB(Client, button6, int, this.button6);
121  ATTRIB(Client, button7, int, this.button7);
122  ATTRIB(Client, button8, int, this.button8);
123  ATTRIB(Client, button9, int, this.button9);
124  ATTRIB(Client, button10, int, this.button10);
125  ATTRIB(Client, button11, int, this.button11);
126  ATTRIB(Client, button12, int, this.button12);
127  ATTRIB(Client, button13, int, this.button13);
128  ATTRIB(Client, button14, int, this.button14);
129  ATTRIB(Client, button15, int, this.button15);
130  ATTRIB(Client, button16, int, this.button16);
131  ATTRIB(Client, buttonuse, int, this.buttonuse);
132  ATTRIB(Client, buttonchat, int, this.buttonchat);
133 
134  ATTRIB(Client, cursor_active, int, this.cursor_active);
135  ATTRIB(Client, cursor_screen, vector, this.cursor_screen);
136  ATTRIB(Client, cursor_trace_start, vector, this.cursor_trace_start);
137  ATTRIB(Client, cursor_trace_endpos, vector, this.cursor_trace_endpos);
138  ATTRIB(Client, cursor_trace_ent, entity, this.cursor_trace_ent);
139 
140  ATTRIB(Client, ping, float, this.ping);
141  ATTRIB(Client, ping_packetloss, float, this.ping_packetloss);
142  ATTRIB(Client, ping_movementloss, float, this.ping_movementloss);
143 
144  ATTRIB(Client, v_angle, vector, this.v_angle);
145  ATTRIB(Client, movement, vector, this.movement);
146 
147  // custom
148 
149  ATTRIB(Client, playerid, int, this.playerid);
150 
151  ATTRIB(Client, parm_idlesince, int, this.parm_idlesince);
152  ATTRIB(Client, muted, bool, this.muted);
153  ATTRIB(Client, idlekick_lasttimeleft, float, this.idlekick_lasttimeleft);
154  ATTRIB(Client, pm_frametime, float, this.pm_frametime);
155  ATTRIB(Client, pressedkeys, int, this.pressedkeys);
156  ATTRIB(Client, movement_old, vector, this.movement_old);
157  ATTRIB(Client, buttons_old, int, this.buttons_old);
158  ATTRIB(Client, teamkill_complain, float, this.teamkill_complain);
159  ATTRIB(Client, teamkill_soundtime, float, this.teamkill_soundtime);
160  ATTRIB(Client, teamkill_soundsource, entity, this.teamkill_soundsource);
161  ATTRIB(Client, usekeypressed, bool, this.usekeypressed);
162  ATTRIB(Client, motd_actived_time, float, this.motd_actived_time);
163  ATTRIB(Client, jointime, float, this.jointime);
164  ATTRIB(Client, spectatortime, float, this.spectatortime);
165  ATTRIB(Client, startplaytime, float, this.startplaytime);
166  ATTRIB(Client, version_nagtime, float, this.version_nagtime);
167  ATTRIB(Client, netname_previous, string, this.netname_previous);
168  ATTRIB(Client, allowed_timeouts, int, this.allowed_timeouts);
169  ATTRIB(Client, active_minigame, entity, this.active_minigame);
170  ATTRIB(Client, taunt_soundtime, float, this.taunt_soundtime);
171  ATTRIB(Client, killcount, int, this.killcount);
172  ATTRIB(Client, version_mismatch, bool, this.version_mismatch);
173  ATTRIB(Client, version, int, this.version);
174  ATTRIB(Client, spectatee_status, int, this.spectatee_status);
175  ATTRIB(Client, zoomstate, bool, this.zoomstate);
176  ATTRIB(Client, just_joined, bool, this.just_joined);
177  ATTRIB(Client, race_completed, bool, this.race_completed);
178  ATTRIB(Client, latency_sum, float, this.latency_sum);
179  ATTRIB(Client, latency_cnt, int, this.latency_cnt);
180  ATTRIB(Client, latency_time, float, this.latency_time);
181  ATTRIB(Client, v_angle_old, vector, this.v_angle_old);
182  ATTRIB(Client, model_randomizer, float, this.model_randomizer);
183  ATTRIB(Client, accuracy, entity, this.accuracy);
184  ATTRIB(Client, hasweapon_complain_spam, float, this.hasweapon_complain_spam);
185  ATTRIB(Client, scorekeeper, entity, this.scorekeeper);
186  ATTRIB(Client, specialcommand_pos, int, this.specialcommand_pos);
187  ATTRIB(Client, hitplotfh, int, this.hitplotfh);
188  ATTRIB(Client, clientdata, entity, this.clientdata);
189  ATTRIB(Client, cmd_floodcount, int, this.cmd_floodcount);
190  ATTRIB(Client, cmd_floodtime, float, this.cmd_floodtime);
191  ATTRIB(Client, wasplayer, bool, this.wasplayer);
192  ATTRIB(Client, weaponorder_byimpulse, string, this.weaponorder_byimpulse);
193  ATTRIB(Client, autojoin_checked, int, this.wasplayer);
194 
195  // networked cvars
196 
197 // not currently handled by ClientState
198 #if 0
199  ATTRIBARRAY(Client, msg_choice_choices, int, 20); // TODO: actually NOTIF_CHOICE_MAX
200  ATTRIB(Client, cvar_cl_allow_uid2name, int, this.cvar_cl_allow_uid2name);
201  ATTRIB(Client, cvar_cl_allow_uidtracking, int, this.cvar_cl_allow_uidtracking);
202  ATTRIB(Client, cvar_cl_autotaunt, float, this.cvar_cl_autotaunt);
203  ATTRIB(Client, cvar_cl_voice_directional, int, this.cvar_cl_voice_directional);
204  ATTRIB(Client, cvar_cl_voice_directional_taunt_attenuation, float, this.cvar_cl_voice_directional_taunt_attenuation);
205  ATTRIB(Client, cvar_cl_physics, string, this.cvar_cl_physics);
206  ATTRIB(Client, cvar_cl_buffs_autoreplace, bool, this.cvar_cl_buffs_autoreplace);
207  ATTRIB(Client, cvar_cl_nade_type, int, this.cvar_cl_nade_type);
208  ATTRIB(Client, cvar_cl_pokenade_type, string, this.cvar_cl_pokenade_type);
209  ATTRIB(Client, cvar_cl_spawn_near_teammate, bool, this.cvar_cl_spawn_near_teammate);
210  ATTRIB(Client, cvar_cl_gunalign, int, this.cvar_cl_gunalign);
211  ATTRIB(Client, cvar_cl_handicap, float, this.cvar_cl_handicap);
212  ATTRIB(Client, cvar_cl_clippedspectating, bool, this.cvar_cl_clippedspectating);
213  ATTRIB(Client, cvar_cl_autoscreenshot, int, this.cvar_cl_autoscreenshot);
214  ATTRIB(Client, cvar_cl_jetpack_jump, bool, this.cvar_cl_jetpack_jump);
215  ATTRIB(Client, cvar_cl_noantilag, bool, this.cvar_cl_noantilag);
216  ATTRIB(Client, cvar_cl_movement_track_canjump, bool, this.cvar_cl_movement_track_canjump);
217  ATTRIB(Client, cvar_cl_weaponimpulsemode, int, this.cvar_cl_weaponimpulsemode);
218  ATTRIB(Client, cvar_g_xonoticversion, string, this.cvar_g_xonoticversion);
219  ATTRIB(Client, cvar_cl_autoswitch, bool, this.cvar_cl_autoswitch);
220  ATTRIB(Client, cvar_cl_casings, bool, this.cvar_cl_casings);
221  ATTRIB(Client, cvar_r_drawviewmodel, bool, this.cvar_r_drawviewmodel);
222  ATTRIB(Client, cvar_cl_dodging_timeout, float, this.cvar_cl_dodging_timeout);
223  ATTRIB(Client, cvar_cl_dodging, float, this.cvar_cl_dodging);
224  ATTRIB(Client, cvar_cl_multijump, bool, this.cvar_cl_multijump);
225  ATTRIB(Client, cvar_cl_accuracy_data_share, bool, this.cvar_cl_accuracy_data_share);
226  ATTRIB(Client, cvar_cl_accuracy_data_receive, bool, this.cvar_cl_accuracy_data_receive);
227  ATTRIBARRAY(Client, cvar_cl_weaponpriorities, string, 10);
228  ATTRIB(Client, cvar_cl_weaponpriority, string, this.cvar_cl_weaponpriority);
229  ATTRIB(Client, cvar_cl_cts_noautoswitch, bool, this.cvar_cl_cts_noautoswitch);
230  ATTRIB(Client, cvar_cl_weapon_switch_reload, bool, this.cvar_cl_weapon_switch_reload);
231  ATTRIB(Client, cvar_cl_weapon_switch_fallback_to_impulse, bool, this.cvar_cl_weapon_switch_fallback_to_impulse);
232 #endif
233 
234  METHOD(Client, m_unwind, bool(Client this));
235 
236  STATIC_METHOD(Client, Add, void(Client this, int _team));
237  STATIC_METHOD(Client, Remove, void(Client this));
238 
239  INIT(Client) {
240  if (this.m_unwind(this)) return this;
241  make_impure(this);
242  this.classname = "player_joining";
243  static int playerid_last;
244  this.playerid = ++playerid_last;
245  ClientState_attach(this);
246  }
247  DESTRUCTOR(Client) {
248  Client_Remove(this);
249  }
250  CONSTRUCTOR(Client, string name) {
251  CONSTRUCT(Client);
252  this.netname = name;
253  this.netaddress = "local";
254  this.playermodel = cvar_defstring("sv_defaultplayermodel");
255  }
256 ENDCLASS(Client)
257 
258 CLASS(Observer, Client)
259  INIT(Observer) {
260  this.classname = STR_OBSERVER;
261  }
264 
265 CLASS(Spectator, Client)
266  INIT(Spectator) {
267  this.classname = STR_SPECTATOR;
268  }
271 
272 CLASS(Player, Client)
273 
274  // custom
275 
276  ATTRIB(Player, dual_weapons, vector, this.dual_weapons); // TODO: actually WepSet!
277  ATTRIB(Player, itemkeys, int, this.itemkeys);
278  ATTRIB(Player, ballistics_density, float, this.ballistics_density);
279 
280  INIT(Player) {
281  this.classname = STR_PLAYER;
282  IL_PUSH(g_players, this);
283  }
285  IL_REMOVE(g_players, this);
286  }
288 
289 METHOD(Client, m_unwind, bool(Client this))
290 {
291  TC(Client, this);
292  #define UNWIND(class) MACRO_BEGIN if (this.instanceOf##class) { METHOD_REFERENCE(class, dtorimpl)(this); } MACRO_END
293  switch (this.classname) {
294  case "Observer":
295  UNWIND(Spectator);
296  UNWIND(Player);
297  return true;
298  case "Spectator":
299  UNWIND(Observer);
300  UNWIND(Player);
301  return true;
302  case "Player":
303  UNWIND(Observer);
304  UNWIND(Spectator);
305  return true;
306  }
307  #undef UNWIND
308  return false;
309 }
310 
313 #define INDEPENDENT_PLAYERS (autocvar__independent_players ? (autocvar__independent_players > 0) : independent_players)
314 #define IS_INDEPENDENT_PLAYER(e) ((e).solid == SOLID_TRIGGER)
315 #define MAKE_INDEPENDENT_PLAYER(e) (((e).solid = SOLID_TRIGGER), ((e).frags = FRAGS_PLAYER_OUT_OF_GAME))
316 
318 
319 //flood fields
320 .float nickspamtime; // time of last nick change
322 
323 // respawning
327 
328 .float respawn_countdown; // next number to count
329 
330 const int RESPAWN_FORCE = BIT(0);
331 const int RESPAWN_SILENT = BIT(1);
332 const int RESPAWN_DENY = BIT(2);
333 
334 float blockSpectators; // if set, new or existing spectators or observers will be removed unless they become a player within g_maxplayers_spectator_blocktime seconds
335 .float spectatortime; // point in time since the client is spectating or observing
336 
338 
339 const int SVC_SETVIEW = 5; // TODO: move to dpdefs where this belongs!
340 
341 // TODO: standardise resource regeneration
346 
347 // g_<gametype>_str:
348 // If 0, default is used.
349 // If <0, 0 is used.
350 // Otherwise, g_str (default value) is used.
351 // For consistency, negative values there are mapped to zero too.
352 #define GAMETYPE_DEFAULTED_SETTING(str) \
353  ((gametype_setting_tmp = cvar(strcat("g_", GetGametype(), "_" #str))), \
354  (gametype_setting_tmp < 0) ? 0 \
355  : (gametype_setting_tmp == 0 || autocvar_g_respawn_delay_forced) ? max(0, autocvar_g_##str) \
356  : gametype_setting_tmp)
357 
358 void calculate_player_respawn_time(entity this);
359 
360 bool PlayerInList(entity player, string list);
361 
362 void ClientData_Touch(entity e);
363 
364 int nJoinAllowed(entity this, entity ignore);
365 
366 void PlayerUseKey(entity this);
367 
368 void FixClientCvars(entity e);
369 
370 // called when a client connects, useful for updating sounds and such of static objects
371 .void(entity this, entity player) init_for_player;
372 
374 STATIC_INIT(g_initforplayer) { g_initforplayer = IL_NEW(); }
375 
376 void play_countdown(entity this, float finished, Sound samp);
377 void player_powerups_remove_all(entity this);
378 
379 // NOTE: current type is Resource (avoiding circular includes!)
380 void RotRegen(entity this, entity current, float limit_mod,
381  float regenstable, float regenfactor, float regenlinear, float regenframetime,
382  float rotstable, float rotfactor, float rotlinear, float rotframetime);
383 
384 bool Spectate(entity this, entity pl);
385 
386 void ClientInit_Spawn();
387 
388 void PutObserverInServer(entity this, bool is_forced, bool use_spawnpoint);
389 
390 void SetSpectatee(entity this, entity spectatee);
391 void SetSpectatee_status(entity this, int spectatee_num);
392 
393 void FixPlayermodel(entity player);
394 
395 void ClientInit_misc(entity this);
396 
397 int GetPlayerLimit();
398 
399 const int MIN_SPEC_TIME = 1;
400 bool joinAllowed(entity this);
401 void Join(entity this);
402 
403 #define SPECTATE_COPY() ACCUMULATE void SpectateCopy(entity this, entity spectatee)
404 #define SPECTATE_COPYFIELD(fld) SPECTATE_COPY() { this.(fld) = spectatee.(fld); }
405 
406 const int MAX_SPECTATORS = 7;
#define DESTRUCTOR(cname)
Definition: oo.qh:208
const string STR_SPECTATOR
Definition: utils.qh:6
int autocvar_sv_name_maxlength
Definition: client.qh:52
float autocvar_g_balance_pause_health_regen_spawn
Definition: client.qh:13
string playermodel
Definition: client.qh:80
WepSet dual_weapons
Definition: selection.qh:12
ERASEABLE void IL_REMOVE(IntrusiveList this, entity it)
Remove any element, anywhere in the list.
int GetPlayerLimit()
Definition: client.qc:1990
const int RESPAWN_FORCE
Definition: client.qh:330
float latency_time
Definition: world.qc:55
string crypto_signmethod
float autocvar_g_balance_pause_health_rot_spawn
Definition: client.qh:14
float model_randomizer
Definition: client.qc:422
const int RESPAWN_DENY
Definition: client.qh:332
int msg_choice_choices[NOTIF_CHOICE_MAX]
Definition: all.qh:715
bool Spectate(entity this, entity pl)
Definition: client.qc:1873
int autocvar_g_respawn_delay_small_count
Definition: client.qh:22
bool zoomstate
Definition: client.qh:72
float colormap
Definition: csprogsdefs.qc:131
float autocvar_sv_player_scale
Definition: client.qh:56
bool autocvar_g_nodepthtestplayers
Definition: client.qh:33
float respawn_countdown
Definition: client.qh:328
float hitplotfh
Definition: hitplot.qh:6
float autocvar_g_respawn_ghosts_speed
Definition: client.qh:31
float nickspamcount
Definition: client.qh:321
float button3
bool wasplayer
Definition: client.qh:69
CLASS(Object) Object
Definition: oo.qh:318
int respawn_flags
Definition: client.qh:324
bool PlayerInList(entity player, string list)
Definition: client.qc:995
float button12
float hasweapon_complain_spam
Definition: selection.qh:17
float autocvar_sv_maxidle
Definition: client.qh:36
float autocvar_g_balance_pause_armor_rot_spawn
Definition: client.qh:11
float blockSpectators
Definition: client.qh:334
bool joinAllowed(entity this)
Definition: client.qc:2108
float teamkill_complain
Definition: damage.qh:57
float respawn_time
Definition: client.qh:325
int team
Definition: main.qh:157
const int MAX_SPECTATORS
Definition: client.qh:406
string crypto_mykeyfp
int autocvar_sv_maxidle_minplayers
Definition: client.qh:37
float buttonchat
Definition: dpextensions.qc:36
float autocvar_g_respawn_delay_max
Definition: client.qh:25
void Join(entity this)
Definition: client.qc:1966
#define IL_NEW()
vector cursor_screen
vector movement_old
Definition: player.qh:65
string autocvar_sv_motd
Definition: client.qh:51
string autocvar_g_mutatormsg
Definition: client.qh:34
entity() spawn
void FixPlayermodel(entity player)
Definition: client.qc:423
int playerid
Definition: client.qh:78
float autocvar_g_respawn_ghosts_fadetime
Definition: client.qh:29
int autocvar_g_balance_armor_start
Definition: client.qh:10
void SetSpectatee(entity this, entity spectatee)
Definition: client.qc:1836
vector v_angle
Definition: progsdefs.qc:161
int autocvar_g_respawn_delay_large_count
Definition: client.qh:24
float autocvar_gameversion_max
Definition: client.qh:48
float autocvar_g_respawn_delay_large
Definition: client.qh:23
float button6
string netname
Definition: powerups.qc:20
int autocvar_spawn_debug
Definition: client.qh:50
int autocvar__independent_players
Definition: client.qh:311
void SetSpectatee_status(entity this, int spectatee_num)
Definition: client.qc:1819
bool autocvar_g_forced_respawn
Definition: client.qh:42
float autocvar_g_respawn_ghosts_time
Definition: client.qh:30
limitations: NULL cannot be present elements can only be present once a maximum of IL_MAX lists can e...
float autocvar_g_player_damageforcescale
Definition: client.qh:20
float ping
Definition: main.qh:138
vector cursor_trace_start
string classname
Definition: csprogsdefs.qc:107
#define METHOD(cname, name, prototype)
Definition: oo.qh:257
void PlayerUseKey(entity this)
Definition: client.qc:2349
#define CONSTRUCT(cname,...)
Definition: oo.qh:111
bool autocvar_g_botclip_collisions
Definition: client.qh:15
int killcount
Definition: client.qh:317
void ClientData_Touch(entity e)
Definition: client.qc:171
vector cursor_trace_endpos
float impulse
Definition: progsdefs.qc:158
void ClientInit_misc(entity this)
Definition: client.qc:855
#define make_impure(e)
Definition: oo.qh:15
float taunt_soundtime
Definition: damage.qh:62
float cmd_floodcount
Definition: cmd.qh:7
bool autocvar_g_respawn_ghosts
Definition: client.qh:27
float autocvar_g_respawn_delay_small
Definition: client.qh:21
void FixClientCvars(entity e)
Definition: client.qc:947
IntrusiveList g_initforplayer
Definition: client.qh:373
float crypto_idfp_signed
#define ATTRIB(...)
Definition: oo.qh:136
float autocvar_gameversion_min
Definition: client.qh:47
int autocvar_sv_maxidle_slots
Definition: client.qh:40
float allowed_timeouts
Definition: common.qh:61
bool autocvar_sv_teamnagger
Definition: client.qh:55
int nJoinAllowed(entity this, entity ignore)
Determines whether the player is allowed to join.
Definition: client.qc:2006
float respawn_time_max
Definition: client.qh:326
float button8
#define INIT(cname)
Definition: oo.qh:198
entity accuracy
Definition: accuracy.qh:26
float button5
#define BIT(n)
Only ever assign into the first 24 bits in QC (so max is BIT(23)).
Definition: bits.qh:8
bool autocvar_sv_maxidle_slots_countbots
Definition: client.qh:41
float button10
string crypto_keyfp
entity active_minigame
Definition: cl_minigames.qh:85
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
bool autocvar__notarget
Definition: client.qh:9
string autocvar_hostname
Definition: client.qh:49
bool autocvar_sv_maxidle_alsokickspectators
Definition: client.qh:39
void ClientInit_Spawn()
Definition: client.qc:894
int cursor_active
Definition: view.qh:108
float ping_packetloss
Definition: main.qh:138
entity scorekeeper
Definition: scores.qc:19
bool just_joined
Definition: client.qh:74
void calculate_player_respawn_time(entity this)
Definition: client.qc:1315
STATIC_INIT(g_players)
Definition: client.qh:86
float pauserothealth_finished
Definition: client.qh:343
IntrusiveList g_players
Definition: client.qh:85
void player_powerups_remove_all(entity this)
Definition: client.qc:1457
float motd_actived_time
Definition: client.qh:67
float autocvar_sv_maxidle_playertospectator
Definition: client.qh:38
float pauserotfuel_finished
Definition: client.qh:345
float teamkill_soundtime
Definition: damage.qh:58
float button4
float spectatortime
Definition: client.qh:335
int autocvar_sv_spectate
Definition: client.qh:54
string netaddress
float pauserotarmor_finished
Definition: client.qh:344
#define TC(T, sym)
Definition: _all.inc:82
float jointime
Definition: client.qh:64
int buttons_old
Definition: player.qh:64
Definition: client.qh:88
float button7
bool autocvar_sv_showspectators
Definition: client.qh:57
float ballistics_density
Definition: tracing.qh:77
float alivetime
Definition: client.qh:66
float startplaytime
Definition: client.qh:65
entity this
Definition: self.qh:83
Definition: sound.qh:119
float latency_sum
Definition: world.qc:53
float itemkeys
Definition: subs.qh:61
vector movement
float autocvar_gameversion
Definition: client.qh:46
vector(float skel, float bonenum) _skel_get_boneabs_hidden
entity cursor_trace_ent
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)
float button13
float button16
bool independent_players
Definition: client.qh:312
bool autocvar_g_fullbrightplayers
Definition: client.qh:16
float cmd_floodtime
Definition: cmd.qh:6
float autocvar_sv_foginterval
Definition: client.qh:35
const string STR_OBSERVER
Definition: utils.qh:7
const string STR_PLAYER
Definition: utils.qh:5
float race_completed
Definition: race.qh:25
float nickspamtime
Definition: client.qh:320
int pressedkeys
Definition: client.qh:76
float autocvar_g_maxplayers_spectator_blocktime
Definition: client.qh:44
float button0
Definition: progsdefs.qc:154
float button2
Definition: progsdefs.qc:156
const int SVC_SETVIEW
Definition: client.qh:339
#define ENDCLASS(cname)
Definition: oo.qh:269
entity clientdata
Definition: client.qh:62
float ping_movementloss
Definition: main.qh:138
int spectatee_status
Definition: client.qh:71
#define UNWIND(class)
bool player_blocked
Definition: client.qh:337
float button14
bool autocvar_g_respawn_delay_forced
Definition: client.qh:26
float clientcolors
int autocvar_g_respawn_waves
Definition: client.qh:32
#define STATIC_METHOD(cname, name, prototype)
Definition: oo.qh:266
void play_countdown(entity this, float finished, Sound samp)
Definition: client.qc:1447
float pauseregen_finished
Definition: client.qh:342
#define ATTRIBARRAY(cname, name, type, cnt)
Definition: oo.qh:254
float button15
float button9
const int MIN_SPEC_TIME
Definition: client.qh:399
string playerskin
Definition: client.qh:81
int autocvar_g_maxplayers
Definition: client.qh:43
bool autocvar_sv_servermodelsonly
Definition: client.qh:53
bool autocvar_g_playerclip_collisions
Definition: client.qh:17
float autocvar_g_player_brightness
Definition: client.qh:19
float latency_cnt
Definition: world.qc:54
entity teamkill_soundsource
Definition: damage.qh:59
float autocvar_g_balance_pause_fuel_rot_spawn
Definition: client.qh:12
float autocvar_g_respawn_ghosts_alpha
Definition: client.qh:28
void ClientState_attach(entity this)
Definition: state.qc:46
string crypto_idfp
string weaponorder_byimpulse
Definition: client.qh:60
string crypto_encryptmethod
#define CONSTRUCTOR(cname,...)
Definition: oo.qh:201
const int RESPAWN_SILENT
Definition: client.qh:331
vector v_angle_old
Definition: player.qh:66
float buttonuse
Definition: dpextensions.qc:44
void PutObserverInServer(entity this, bool is_forced, bool use_spawnpoint)
putting a client as observer in the server
Definition: client.qc:238
string autocvar_g_xonoticversion
Definition: client.qh:45
float autocvar_g_player_alpha
Definition: client.qh:18
float button11