vkQuake2 doxygen  1.0 dev
p_hud.c File Reference
#include "g_local.h"

Go to the source code of this file.

Functions

void MoveClientToIntermission (edict_t *ent)
 
void BeginIntermission (edict_t *targ)
 
void DeathmatchScoreboardMessage (edict_t *ent, edict_t *killer)
 
void DeathmatchScoreboard (edict_t *ent)
 
void Cmd_Score_f (edict_t *ent)
 
void HelpComputer (edict_t *ent)
 
void Cmd_Help_f (edict_t *ent)
 
void G_SetStats (edict_t *ent)
 
void G_CheckChaseStats (edict_t *ent)
 
void G_SetSpectatorStats (edict_t *ent)
 

Function Documentation

◆ BeginIntermission()

void BeginIntermission ( edict_t targ)

Definition at line 74 of file p_hud.c.

75 {
76  int i, n;
77  edict_t *ent, *client;
78 
79  if (level.intermissiontime)
80  return; // already activated
81 
82  game.autosaved = false;
83 
84  // respawn any dead clients
85  for (i=0 ; i<maxclients->value ; i++)
86  {
87  client = g_edicts + 1 + i;
88  if (!client->inuse)
89  continue;
90  if (client->health <= 0)
91  respawn(client);
92  }
93 
94  level.intermissiontime = level.time;
95  level.changemap = targ->map;
96 
97  if (strstr(level.changemap, "*"))
98  {
99  if (coop->value)
100  {
101  for (i=0 ; i<maxclients->value ; i++)
102  {
103  client = g_edicts + 1 + i;
104  if (!client->inuse)
105  continue;
106  // strip players of all keys between units
107  for (n = 0; n < MAX_ITEMS; n++)
108  {
109  if (itemlist[n].flags & IT_KEY)
110  client->client->pers.inventory[n] = 0;
111  }
112  }
113  }
114  }
115  else
116  {
117  if (!deathmatch->value)
118  {
119  level.exitintermission = 1; // go immediately to the next level
120  return;
121  }
122  }
123 
124  level.exitintermission = 0;
125 
126  // find an intermission spot
127  ent = G_Find (NULL, FOFS(classname), "info_player_intermission");
128  if (!ent)
129  { // the map creator forgot to put in an intermission point...
130  ent = G_Find (NULL, FOFS(classname), "info_player_start");
131  if (!ent)
132  ent = G_Find (NULL, FOFS(classname), "info_player_deathmatch");
133  }
134  else
135  { // chose one of four spots
136  i = rand() & 3;
137  while (i--)
138  {
139  ent = G_Find (ent, FOFS(classname), "info_player_intermission");
140  if (!ent) // wrap around the list
141  ent = G_Find (ent, FOFS(classname), "info_player_intermission");
142  }
143  }
144 
145  VectorCopy (ent->s.origin, level.intermission_origin);
146  VectorCopy (ent->s.angles, level.intermission_angle);
147 
148  // move all clients to the intermission point
149  for (i=0 ; i<maxclients->value ; i++)
150  {
151  client = g_edicts + 1 + i;
152  if (!client->inuse)
153  continue;
154  MoveClientToIntermission (client);
155  }
156 }

Referenced by EndDMLevel(), and use_target_changelevel().

◆ Cmd_Help_f()

void Cmd_Help_f ( edict_t ent)

Definition at line 347 of file p_hud.c.

348 {
349  // this is for backwards compatability
350  if (deathmatch->value)
351  {
352  Cmd_Score_f (ent);
353  return;
354  }
355 
356  ent->client->showinventory = false;
357  ent->client->showscores = false;
358 
359  if (ent->client->showhelp && (ent->client->pers.game_helpchanged == game.helpchanged))
360  {
361  ent->client->showhelp = false;
362  return;
363  }
364 
365  ent->client->showhelp = true;
366  ent->client->pers.helpchanged = 0;
367  HelpComputer (ent);
368 }

Referenced by ClientCommand(), and player_die().

◆ Cmd_Score_f()

void Cmd_Score_f ( edict_t ent)

Definition at line 277 of file p_hud.c.

278 {
279  ent->client->showinventory = false;
280  ent->client->showhelp = false;
281 
282  if (!deathmatch->value && !coop->value)
283  return;
284 
285  if (ent->client->showscores)
286  {
287  ent->client->showscores = false;
288  return;
289  }
290 
291  ent->client->showscores = true;
292  DeathmatchScoreboard (ent);
293 }

Referenced by ClientCommand(), and Cmd_Help_f().

◆ DeathmatchScoreboard()

void DeathmatchScoreboard ( edict_t ent)

Definition at line 263 of file p_hud.c.

264 {
266  gi.unicast (ent, true);
267 }

Referenced by Cmd_Score_f().

◆ DeathmatchScoreboardMessage()

void DeathmatchScoreboardMessage ( edict_t ent,
edict_t killer 
)

Definition at line 165 of file p_hud.c.

166 {
167  char entry[1024];
168  char string[1400];
169  int stringlength;
170  int i, j, k;
171  int sorted[MAX_CLIENTS];
172  int sortedscores[MAX_CLIENTS];
173  int score, total;
174  int picnum;
175  int x, y;
176  gclient_t *cl;
177  edict_t *cl_ent;
178  char *tag;
179 
180  // sort the clients by score
181  total = 0;
182  for (i=0 ; i<game.maxclients ; i++)
183  {
184  cl_ent = g_edicts + 1 + i;
185  if (!cl_ent->inuse || game.clients[i].resp.spectator)
186  continue;
187  score = game.clients[i].resp.score;
188  for (j=0 ; j<total ; j++)
189  {
190  if (score > sortedscores[j])
191  break;
192  }
193  for (k=total ; k>j ; k--)
194  {
195  sorted[k] = sorted[k-1];
196  sortedscores[k] = sortedscores[k-1];
197  }
198  sorted[j] = i;
199  sortedscores[j] = score;
200  total++;
201  }
202 
203  // print level name and exit rules
204  string[0] = 0;
205 
206  stringlength = (int)strlen(string);
207 
208  // add the clients in sorted order
209  if (total > 12)
210  total = 12;
211 
212  for (i=0 ; i<total ; i++)
213  {
214  cl = &game.clients[sorted[i]];
215  cl_ent = g_edicts + 1 + sorted[i];
216 
217  picnum = gi.imageindex ("i_fixme");
218  x = (i>=6) ? 160 : 0;
219  y = 32 + 32 * (i%6);
220 
221  // add a dogtag
222  if (cl_ent == ent)
223  tag = "tag1";
224  else if (cl_ent == killer)
225  tag = "tag2";
226  else
227  tag = NULL;
228  if (tag)
229  {
230  Com_sprintf (entry, sizeof(entry),
231  "xv %i yv %i picn %s ",x+32, y, tag);
232  j = (int)strlen(entry);
233  if (stringlength + j > 1024)
234  break;
235  strcpy (string + stringlength, entry);
236  stringlength += j;
237  }
238 
239  // send the layout
240  Com_sprintf (entry, sizeof(entry),
241  "client %i %i %i %i %i %i ",
242  x, y, sorted[i], cl->resp.score, cl->ping, (level.framenum - cl->resp.enterframe)/600);
243  j = (int)strlen(entry);
244  if (stringlength + j > 1024)
245  break;
246  strcpy (string + stringlength, entry);
247  stringlength += j;
248  }
249 
251  gi.WriteString (string);
252 }

Referenced by ClientEndServerFrame(), DeathmatchScoreboard(), and MoveClientToIntermission().

◆ G_CheckChaseStats()

void G_CheckChaseStats ( edict_t ent)

Definition at line 531 of file p_hud.c.

532 {
533  int i;
534  gclient_t *cl;
535 
536  for (i = 1; i <= maxclients->value; i++) {
537  cl = g_edicts[i].client;
538  if (!g_edicts[i].inuse || cl->chase_target != ent)
539  continue;
540  memcpy(cl->ps.stats, ent->client->ps.stats, sizeof(cl->ps.stats));
542  }
543 }

Referenced by ClientEndServerFrame().

◆ G_SetSpectatorStats()

void G_SetSpectatorStats ( edict_t ent)

Definition at line 550 of file p_hud.c.

551 {
552  gclient_t *cl = ent->client;
553 
554  if (!cl->chase_target)
555  G_SetStats (ent);
556 
557  cl->ps.stats[STAT_SPECTATOR] = 1;
558 
559  // layouts are independant in spectator
560  cl->ps.stats[STAT_LAYOUTS] = 0;
561  if (cl->pers.health <= 0 || level.intermissiontime || cl->showscores)
562  cl->ps.stats[STAT_LAYOUTS] |= 1;
563  if (cl->showinventory && cl->pers.health > 0)
564  cl->ps.stats[STAT_LAYOUTS] |= 2;
565 
566  if (cl->chase_target && cl->chase_target->inuse)
567  cl->ps.stats[STAT_CHASE] = CS_PLAYERSKINS +
568  (cl->chase_target - g_edicts) - 1;
569  else
570  cl->ps.stats[STAT_CHASE] = 0;
571 }

Referenced by ClientEndServerFrame(), and G_CheckChaseStats().

◆ G_SetStats()

void G_SetStats ( edict_t ent)

Definition at line 378 of file p_hud.c.

379 {
380  gitem_t *item;
381  int index = 0, cells = 0;
382  int power_armor_type;
383 
384  //
385  // health
386  //
387  ent->client->ps.stats[STAT_HEALTH_ICON] = level.pic_health;
388  ent->client->ps.stats[STAT_HEALTH] = ent->health;
389 
390  //
391  // ammo
392  //
393  if (!ent->client->ammo_index /* || !ent->client->pers.inventory[ent->client->ammo_index] */)
394  {
395  ent->client->ps.stats[STAT_AMMO_ICON] = 0;
396  ent->client->ps.stats[STAT_AMMO] = 0;
397  }
398  else
399  {
400  item = &itemlist[ent->client->ammo_index];
401  ent->client->ps.stats[STAT_AMMO_ICON] = gi.imageindex (item->icon);
402  ent->client->ps.stats[STAT_AMMO] = ent->client->pers.inventory[ent->client->ammo_index];
403  }
404 
405  //
406  // armor
407  //
408  power_armor_type = PowerArmorType (ent);
409  if (power_armor_type)
410  {
411  cells = ent->client->pers.inventory[ITEM_INDEX(FindItem ("cells"))];
412  if (cells == 0)
413  { // ran out of cells for power armor
414  ent->flags &= ~FL_POWER_ARMOR;
415  gi.sound(ent, CHAN_ITEM, gi.soundindex("misc/power2.wav"), 1, ATTN_NORM, 0);
416  power_armor_type = 0;;
417  }
418  }
419 
420  index = ArmorIndex (ent);
421  if (power_armor_type && (!index || (level.framenum & 8) ) )
422  { // flash between power armor and other armor icon
423  ent->client->ps.stats[STAT_ARMOR_ICON] = gi.imageindex ("i_powershield");
424  ent->client->ps.stats[STAT_ARMOR] = cells;
425  }
426  else if (index)
427  {
428  item = GetItemByIndex (index);
429  ent->client->ps.stats[STAT_ARMOR_ICON] = gi.imageindex (item->icon);
430  ent->client->ps.stats[STAT_ARMOR] = ent->client->pers.inventory[index];
431  }
432  else
433  {
434  ent->client->ps.stats[STAT_ARMOR_ICON] = 0;
435  ent->client->ps.stats[STAT_ARMOR] = 0;
436  }
437 
438  //
439  // pickup message
440  //
441  if (level.time > ent->client->pickup_msg_time)
442  {
443  ent->client->ps.stats[STAT_PICKUP_ICON] = 0;
444  ent->client->ps.stats[STAT_PICKUP_STRING] = 0;
445  }
446 
447  //
448  // timers
449  //
450  if (ent->client->quad_framenum > level.framenum)
451  {
452  ent->client->ps.stats[STAT_TIMER_ICON] = gi.imageindex ("p_quad");
453  ent->client->ps.stats[STAT_TIMER] = (ent->client->quad_framenum - level.framenum)/10;
454  }
455  else if (ent->client->invincible_framenum > level.framenum)
456  {
457  ent->client->ps.stats[STAT_TIMER_ICON] = gi.imageindex ("p_invulnerability");
458  ent->client->ps.stats[STAT_TIMER] = (ent->client->invincible_framenum - level.framenum)/10;
459  }
460  else if (ent->client->enviro_framenum > level.framenum)
461  {
462  ent->client->ps.stats[STAT_TIMER_ICON] = gi.imageindex ("p_envirosuit");
463  ent->client->ps.stats[STAT_TIMER] = (ent->client->enviro_framenum - level.framenum)/10;
464  }
465  else if (ent->client->breather_framenum > level.framenum)
466  {
467  ent->client->ps.stats[STAT_TIMER_ICON] = gi.imageindex ("p_rebreather");
468  ent->client->ps.stats[STAT_TIMER] = (ent->client->breather_framenum - level.framenum)/10;
469  }
470  else
471  {
472  ent->client->ps.stats[STAT_TIMER_ICON] = 0;
473  ent->client->ps.stats[STAT_TIMER] = 0;
474  }
475 
476  //
477  // selected item
478  //
479  if (ent->client->pers.selected_item == -1)
480  ent->client->ps.stats[STAT_SELECTED_ICON] = 0;
481  else
483 
485 
486  //
487  // layouts
488  //
489  ent->client->ps.stats[STAT_LAYOUTS] = 0;
490 
491  if (deathmatch->value)
492  {
493  if (ent->client->pers.health <= 0 || level.intermissiontime
494  || ent->client->showscores)
495  ent->client->ps.stats[STAT_LAYOUTS] |= 1;
496  if (ent->client->showinventory && ent->client->pers.health > 0)
497  ent->client->ps.stats[STAT_LAYOUTS] |= 2;
498  }
499  else
500  {
501  if (ent->client->showscores || ent->client->showhelp)
502  ent->client->ps.stats[STAT_LAYOUTS] |= 1;
503  if (ent->client->showinventory && ent->client->pers.health > 0)
504  ent->client->ps.stats[STAT_LAYOUTS] |= 2;
505  }
506 
507  //
508  // frags
509  //
510  ent->client->ps.stats[STAT_FRAGS] = ent->client->resp.score;
511 
512  //
513  // help icon / current weapon if not shown
514  //
515  if (ent->client->pers.helpchanged && (level.framenum&8) )
516  ent->client->ps.stats[STAT_HELPICON] = gi.imageindex ("i_help");
517  else if ( (ent->client->pers.hand == CENTER_HANDED)
518  && ent->client->pers.weapon)
520  else
521  ent->client->ps.stats[STAT_HELPICON] = 0;
522 
523  ent->client->ps.stats[STAT_SPECTATOR] = 0;
524 }

Referenced by ClientEndServerFrame(), and G_SetSpectatorStats().

◆ HelpComputer()

void HelpComputer ( edict_t ent)

Definition at line 303 of file p_hud.c.

304 {
305  char string[1024];
306  char *sk;
307 
308  if (skill->value == 0)
309  sk = "easy";
310  else if (skill->value == 1)
311  sk = "medium";
312  else if (skill->value == 2)
313  sk = "hard";
314  else
315  sk = "hard+";
316 
317  // send the layout
318  Com_sprintf (string, sizeof(string),
319  "xv 32 yv 8 picn help " // background
320  "xv 202 yv 12 string2 \"%s\" " // skill
321  "xv 0 yv 24 cstring2 \"%s\" " // level name
322  "xv 0 yv 54 cstring2 \"%s\" " // help 1
323  "xv 0 yv 110 cstring2 \"%s\" " // help 2
324  "xv 50 yv 164 string2 \" kills goals secrets\" "
325  "xv 50 yv 172 string2 \"%3i/%3i %i/%i %i/%i\" ",
326  sk,
327  level.level_name,
330  level.killed_monsters, level.total_monsters,
331  level.found_goals, level.total_goals,
332  level.found_secrets, level.total_secrets);
333 
335  gi.WriteString (string);
336  gi.unicast (ent, true);
337 }

Referenced by Cmd_Help_f().

◆ MoveClientToIntermission()

void MoveClientToIntermission ( edict_t ent)

Definition at line 33 of file p_hud.c.

34 {
35  if (deathmatch->value || coop->value)
36  ent->client->showscores = true;
37  VectorCopy (level.intermission_origin, ent->s.origin);
38  ent->client->ps.pmove.origin[0] = level.intermission_origin[0]*8;
39  ent->client->ps.pmove.origin[1] = level.intermission_origin[1]*8;
40  ent->client->ps.pmove.origin[2] = level.intermission_origin[2]*8;
41  VectorCopy (level.intermission_angle, ent->client->ps.viewangles);
43  ent->client->ps.gunindex = 0;
44  ent->client->ps.blend[3] = 0;
45  ent->client->ps.rdflags &= ~RDF_UNDERWATER;
46 
47  // clean up powerup info
48  ent->client->quad_framenum = 0;
49  ent->client->invincible_framenum = 0;
50  ent->client->breather_framenum = 0;
51  ent->client->enviro_framenum = 0;
52  ent->client->grenade_blew_up = false;
53  ent->client->grenade_time = 0;
54 
55  ent->viewheight = 0;
56  ent->s.modelindex = 0;
57  ent->s.modelindex2 = 0;
58  ent->s.modelindex3 = 0;
59  ent->s.modelindex = 0;
60  ent->s.effects = 0;
61  ent->s.sound = 0;
62  ent->solid = SOLID_NOT;
63 
64  // add the layout
65 
66  if (deathmatch->value || coop->value)
67  {
69  gi.unicast (ent, true);
70  }
71 
72 }

Referenced by BeginIntermission(), ClientBegin(), and ClientBeginDeathmatch().

FindItem
gitem_t * FindItem(char *pickup_name)
Definition: g_items.c:100
gi
game_import_t gi
Definition: g_main.c:25
Cmd_Score_f
void Cmd_Score_f(edict_t *ent)
Definition: p_hud.c:277
MAX_CLIENTS
#define MAX_CLIENTS
Definition: q_shared.h:86
edict_s::s
entity_state_t s
Definition: g_local.h:970
deathmatch
cvar_t * deathmatch
Definition: g_main.c:35
client_persistant_t::selected_item
int selected_item
Definition: g_local.h:847
STAT_HEALTH
#define STAT_HEALTH
Definition: q_shared.h:1002
game_locals_t::helpmessage1
char helpmessage1[512]
Definition: g_local.h:274
int
CONST PIXELFORMATDESCRIPTOR int
Definition: qgl_win.c:35
CHAN_ITEM
#define CHAN_ITEM
Definition: q_shared.h:986
gclient_s::grenade_blew_up
qboolean grenade_blew_up
Definition: g_local.h:950
STAT_HEALTH_ICON
#define STAT_HEALTH_ICON
Definition: q_shared.h:1001
maxclients
cvar_t * maxclients
Definition: g_main.c:44
STAT_HELPICON
#define STAT_HELPICON
Definition: q_shared.h:1012
client_persistant_t::helpchanged
int helpchanged
Definition: g_local.h:865
DeathmatchScoreboard
void DeathmatchScoreboard(edict_t *ent)
Definition: p_hud.c:263
PM_FREEZE
@ PM_FREEZE
Definition: q_shared.h:477
PowerArmorType
int PowerArmorType(edict_t *ent)
Definition: g_items.c:688
entity_state_s::origin
vec3_t origin
Definition: q_shared.h:1149
game_locals_t::helpchanged
int helpchanged
Definition: g_local.h:276
edict_s::map
char * map
Definition: g_local.h:1065
gclient_s::showhelp
qboolean showhelp
Definition: g_local.h:896
ITEM_INDEX
#define ITEM_INDEX(x)
Definition: g_local.h:616
FL_POWER_ARMOR
#define FL_POWER_ARMOR
Definition: g_local.h:71
x
GLint GLenum GLint x
Definition: qgl_win.c:116
edict_s::inuse
qboolean inuse
Definition: g_local.h:976
i
int i
Definition: q_shared.c:305
G_Find
edict_t * G_Find(edict_t *from, int fieldofs, char *match)
Definition: g_utils.c:45
edict_s::client
struct gclient_s * client
Definition: g_local.h:971
game_import_t::sound
void(* sound)(edict_t *ent, int channel, int soundindex, float volume, float attenuation, float timeofs)
Definition: game.h:109
FOFS
#define FOFS(x)
Definition: g_local.h:510
client_respawn_t::spectator
qboolean spectator
Definition: g_local.h:878
gclient_s::grenade_time
float grenade_time
Definition: g_local.h:951
gclient_s::pickup_msg_time
float pickup_msg_time
Definition: g_local.h:955
ArmorIndex
int ArmorIndex(edict_t *ent)
Definition: g_items.c:590
STAT_SELECTED_ITEM
#define STAT_SELECTED_ITEM
Definition: q_shared.h:1013
g_edicts
edict_t * g_edicts
Definition: g_main.c:33
player_state_t::rdflags
int rdflags
Definition: q_shared.h:1194
ATTN_NORM
#define ATTN_NORM
Definition: q_shared.h:995
STAT_PICKUP_ICON
#define STAT_PICKUP_ICON
Definition: q_shared.h:1008
entity_state_s::modelindex3
int modelindex3
Definition: q_shared.h:1153
itemlist
gitem_t itemlist[]
Definition: g_items.c:1134
client_persistant_t::inventory
int inventory[MAX_ITEMS]
Definition: g_local.h:848
STAT_FRAGS
#define STAT_FRAGS
Definition: q_shared.h:1015
entity_state_s::effects
unsigned int effects
Definition: q_shared.h:1156
gitem_s::icon
char * icon
Definition: g_local.h:249
game_import_t::imageindex
int(* imageindex)(char *name)
Definition: game.h:123
j
GLint j
Definition: qgl_win.c:150
IT_KEY
#define IT_KEY
Definition: g_local.h:220
STAT_AMMO_ICON
#define STAT_AMMO_ICON
Definition: q_shared.h:1003
entity_state_s::sound
int sound
Definition: q_shared.h:1161
gclient_s::enviro_framenum
float enviro_framenum
Definition: g_local.h:948
MoveClientToIntermission
void MoveClientToIntermission(edict_t *ent)
Definition: p_hud.c:33
STAT_ARMOR_ICON
#define STAT_ARMOR_ICON
Definition: q_shared.h:1005
gclient_s::pers
client_persistant_t pers
Definition: g_local.h:890
game_locals_t::helpmessage2
char helpmessage2[512]
Definition: g_local.h:275
client_respawn_t::score
int score
Definition: g_local.h:875
edict_s
Definition: g_local.h:968
pmove_state_t::pm_type
pmtype_t pm_type
Definition: q_shared.h:496
client_persistant_t::weapon
gitem_t * weapon
Definition: g_local.h:858
edict_s::viewheight
int viewheight
Definition: g_local.h:1067
player_state_t::viewangles
vec3_t viewangles
Definition: q_shared.h:1180
game_import_t::soundindex
int(* soundindex)(char *name)
Definition: game.h:122
player_state_t::pmove
pmove_state_t pmove
Definition: q_shared.h:1176
STAT_TIMER
#define STAT_TIMER
Definition: q_shared.h:1011
player_state_t::blend
float blend[4]
Definition: q_shared.h:1190
CS_PLAYERSKINS
#define CS_PLAYERSKINS
Definition: q_shared.h:1117
game_locals_t::clients
gclient_t * clients
Definition: g_local.h:279
cvar_s::value
float value
Definition: q_shared.h:331
game
game_locals_t game
Definition: g_main.c:23
gclient_s::ps
player_state_t ps
Definition: g_local.h:886
NULL
#define NULL
Definition: q_shared.h:67
edict_s::solid
solid_t solid
Definition: g_local.h:992
respawn
void respawn(edict_t *ent)
Definition: p_client.c:980
STAT_ARMOR
#define STAT_ARMOR
Definition: q_shared.h:1006
svc_layout
@ svc_layout
Definition: qcommon.h:228
MAX_ITEMS
#define MAX_ITEMS
Definition: q_shared.h:92
skill
cvar_t * skill
Definition: g_main.c:38
SOLID_NOT
@ SOLID_NOT
Definition: game.h:35
STAT_SPECTATOR
#define STAT_SPECTATOR
Definition: q_shared.h:1018
HelpComputer
void HelpComputer(edict_t *ent)
Definition: p_hud.c:303
gclient_s::breather_framenum
float breather_framenum
Definition: g_local.h:947
game_locals_t::autosaved
qboolean autosaved
Definition: g_local.h:295
y
GLint y
Definition: qgl_win.c:115
gclient_s::quad_framenum
float quad_framenum
Definition: g_local.h:945
RDF_UNDERWATER
#define RDF_UNDERWATER
Definition: q_shared.h:621
gclient_s::showscores
qboolean showscores
Definition: g_local.h:894
VectorCopy
#define VectorCopy(a, b)
Definition: q_shared.h:165
coop
cvar_t * coop
Definition: g_main.c:36
G_SetSpectatorStats
void G_SetSpectatorStats(edict_t *ent)
Definition: p_hud.c:550
game_import_t::unicast
void(* unicast)(edict_t *ent, qboolean reliable)
Definition: game.h:145
STAT_PICKUP_STRING
#define STAT_PICKUP_STRING
Definition: q_shared.h:1009
game_import_t::WriteByte
void(* WriteByte)(int c)
Definition: game.h:147
level
GLint level
Definition: qgl_win.c:116
edict_s::flags
int flags
Definition: g_local.h:1002
CENTER_HANDED
#define CENTER_HANDED
Definition: g_local.h:166
client_persistant_t::game_helpchanged
int game_helpchanged
Definition: g_local.h:864
gclient_s::showinventory
qboolean showinventory
Definition: g_local.h:895
gclient_s::invincible_framenum
float invincible_framenum
Definition: g_local.h:946
STAT_TIMER_ICON
#define STAT_TIMER_ICON
Definition: q_shared.h:1010
gclient_s::ammo_index
int ammo_index
Definition: g_local.h:899
GetItemByIndex
gitem_t * GetItemByIndex(int index)
Definition: g_items.c:62
entity_state_s::modelindex
int modelindex
Definition: q_shared.h:1152
entity_state_s::modelindex2
int modelindex2
Definition: q_shared.h:1153
G_SetStats
void G_SetStats(edict_t *ent)
Definition: p_hud.c:378
STAT_AMMO
#define STAT_AMMO
Definition: q_shared.h:1004
pmove_state_t::origin
short origin[3]
Definition: q_shared.h:498
STAT_LAYOUTS
#define STAT_LAYOUTS
Definition: q_shared.h:1014
client_persistant_t::hand
int hand
Definition: g_local.h:837
STAT_CHASE
#define STAT_CHASE
Definition: q_shared.h:1017
gclient_s
Definition: g_local.h:883
edict_s::enemy
edict_t * enemy
Definition: g_local.h:1076
player_state_t::gunindex
int gunindex
Definition: q_shared.h:1187
entity_state_s::angles
vec3_t angles
Definition: q_shared.h:1150
DeathmatchScoreboardMessage
void DeathmatchScoreboardMessage(edict_t *ent, edict_t *killer)
Definition: p_hud.c:165
cl
client_state_t cl
Definition: cl_main.c:91
game_import_t::WriteString
void(* WriteString)(char *s)
Definition: game.h:151
Com_sprintf
void Com_sprintf(char *dest, int size, char *fmt,...)
Definition: q_shared.c:1223
player_state_t::stats
short stats[MAX_STATS]
Definition: q_shared.h:1196
client_persistant_t::health
int health
Definition: g_local.h:843
gclient_s::resp
client_respawn_t resp
Definition: g_local.h:891
STAT_SELECTED_ICON
#define STAT_SELECTED_ICON
Definition: q_shared.h:1007
edict_s::health
int health
Definition: g_local.h:1057
gitem_s
Definition: g_local.h:236
game_locals_t::maxclients
int maxclients
Definition: g_local.h:286