Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
sv_rules.qh
Go to the documentation of this file.
1#pragma once
2
4#include <server/scores.qh>
6
7//int autocvar_leadlimit;
10
11// TODO: find a better location for these?
13
14.int ingame;
15#define INGAME_STATUS_NONE 0
16#define INGAME_STATUS_JOINING 0.5
17#define INGAME_STATUS_JOINED 1
18
19// typically used by gametypes that temporarily turn players into spectators/observers
20// when they are eliminated but keeping them "in game", i.e. listed among players
21#define INGAME_STATUS_SET(it, s) (it).ingame = s
22#define INGAME_STATUS_CLEAR(it) INGAME_STATUS_SET(it, INGAME_STATUS_NONE)
23
24#define INGAME(it) ((it).ingame)
25#define INGAME_JOINED(it) ((it).ingame == INGAME_STATUS_JOINED)
26#define INGAME_JOINING(it) ((it).ingame == INGAME_STATUS_JOINING)
27
28
29// todo: accept the number of teams as a parameter
30void GameRules_teams(bool value);
31
35#define GameRules_spawning_teams(value) have_team_spawns = (value) ? -1 : 0
36
41#define GameRules_score_enabled(value) _GameRules_score_enabled = (value)
42
43void GameRules_limit_score(int limit);
44void GameRules_limit_lead(int limit);
45void GameRules_limit_time(int limit);
47
52
58#define GameRules_scoring(teams, spprio, stprio, fields) MACRO_BEGIN \
59 _GameRules_scoring_begin((teams), (spprio), (stprio)); \
60 noref void(entity, string, float) field = _GameRules_scoring_field; \
61 /* todo: just have the one `field` function */ \
62 noref void(int, string, float) field_team = _GameRules_scoring_field_team; \
63 LAMBDA(fields); \
64 _GameRules_scoring_end(); \
65MACRO_END
66
67#define _GameRules_scoring_begin(teams, spprio, stprio) ScoreRules_basics(teams, spprio, stprio, _GameRules_score_enabled)
68#define _GameRules_scoring_field ScoreInfo_SetLabel_PlayerScore
69#define _GameRules_scoring_field_team ScoreInfo_SetLabel_TeamScore
70#define _GameRules_scoring_end ScoreRules_basics_end
71
78#define GameRules_scoring_vip(player, value) (player).m_GameRules_scoring_vip = (value)
79#define GameRules_scoring_is_vip(player) (player).m_GameRules_scoring_vip
80
81float _GameRules_scoring_add_float2int(entity client, entity sp, int st, float value, .float float_field, float score_factor, bool team);
82
83#define GameRules_scoring_add_float2int(client, fld, value, float_field, score_factor) \
84 _GameRules_scoring_add_float2int(client, SP_##fld, 0, value, float_field, score_factor, false)
85#define GameRules_scoring_add(client, fld, value) PlayerScore_Add(client, SP_##fld, value)
86
87#define GameRules_scoring_add_team_float2int(client, fld, value, float_field, score_factor) \
88 _GameRules_scoring_add_float2int(client, SP_##fld, ST_##fld, value, float_field, score_factor, true)
89#define GameRules_scoring_add_team(client, fld, value) PlayerTeamScore_Add(client, SP_##fld, ST_##fld, value)
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
int team
Definition main.qh:188
int autocvar_leadlimit_and_fraglimit
Definition sv_rules.qh:8
void GameRules_limit_score(int limit)
Definition sv_rules.qc:23
bool _GameRules_score_enabled
Disabling score disables the "score" column on the scoreboard.
Definition sv_rules.qh:40
bool m_GameRules_scoring_vip
Mark a player as being 'important' (flag carrier, ball carrier, etc)
Definition sv_rules.qh:77
void GameRules_limit_fallbacks()
Set any unspecified rules to their defaults.
Definition sv_rules.qc:62
int autocvar_leadlimit_override
Definition sv_rules.qh:9
int total_players
Definition sv_rules.qh:12
void GameRules_teams(bool value)
Definition sv_rules.qc:3
int ingame
Definition sv_rules.qh:14
float _GameRules_scoring_add_float2int(entity client, entity sp, int st, float value,.float float_field, float score_factor, bool team)
Accumulates the decimal part of the score to player.
Definition sv_rules.qc:73
void GameRules_limit_time_qualifying(int limit)
Definition sv_rules.qc:53
void GameRules_limit_lead(int limit)
Definition sv_rules.qc:33
void GameRules_limit_time(int limit)
Definition sv_rules.qc:43