Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
sv_rules.qc
Go to the documentation of this file.
1#include "sv_rules.qh"
2
3void GameRules_teams(bool value)
4{
5 if (value)
6 {
8 teamplay = 1; // aka AVAILABLE_TEAMS, updated by ScoreRules_basics() after team ents spawn
9 cvar_set("teamplay", "2"); // DP needs this for sending proper getstatus replies.
11 }
12 else
13 {
15 teamplay = 0;
16 cvar_set("teamplay", "0"); // DP needs this for sending proper getstatus replies.
18 }
19}
20
22void GameRules_limit_score(int limit)
23{
25 if (autocvar_g_campaign) return;
26 if (limit < 0) return;
27 cvar_set("fraglimit", ftos(limit));
29}
30
32void GameRules_limit_lead(int limit)
33{
35 if (autocvar_g_campaign) return;
36 if (limit < 0) return;
37 cvar_set("leadlimit", ftos(limit));
39}
40
42void GameRules_limit_time(int limit)
43{
45 if (autocvar_g_campaign) return;
46 if (limit < 0) return;
47 cvar_set("timelimit", ftos(limit));
49}
50
53{
55 if (autocvar_g_campaign) return;
56 if (limit < 0) return;
57 cvar_set("g_race_qualifying_timelimit", ftos(limit));
59}
60
67
72float _GameRules_scoring_add_float2int(entity client, entity sp, int st, float value, .float decimal_field, float score_factor, bool team)
73{
74 client.(decimal_field) += value;
75 float score_counter = client.(decimal_field) / score_factor;
76 if (score_counter >= -0.5 && score_counter < 0.5)
77 return 0;
78
79 // NOTE: this code works for subtracting score too
80 int points = floor(score_counter + 0.5);
81 if (!points)
82 return 0;
83 client.(decimal_field) -= points * score_factor;
84 return team ? PlayerTeamScore_Add(client, sp, st, points) : PlayerScore_Add(client, sp, points);
85}
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
int serverflags
Definition main.qh:211
int team
Definition main.qh:188
#define autocvar_timelimit_override
Definition stats.qh:93
#define autocvar_fraglimit_override
Definition stats.qh:91
const int SERVERFLAG_TEAMPLAY
Definition constants.qh:17
bool autocvar_g_campaign
Definition menu.qc:752
void cvar_set(string name, string value)
string ftos(float f)
float floor(float f)
float PlayerTeamScore_Add(entity player, PlayerScoreField pscorefield, float tscorefield, float score)
Adds a score to both the player and the team.
Definition scores.qc:403
float PlayerScore_Add(entity player, PlayerScoreField scorefield, float score)
Adds a score to the player's scores.
Definition scores.qc:349
void GameRules_limit_score(int limit)
Definition sv_rules.qc:22
bool GameRules_limit_lead_initialized
Definition sv_rules.qc:31
float _GameRules_scoring_add_float2int(entity client, entity sp, int st, float value,.float decimal_field, float score_factor, bool team)
Accumulates the decimal part of the score to player.
Definition sv_rules.qc:72
void GameRules_limit_fallbacks()
Set any unspecified rules to their defaults.
Definition sv_rules.qc:61
bool GameRules_limit_time_qualifying_initialized
Definition sv_rules.qc:51
bool GameRules_limit_score_initialized
Definition sv_rules.qc:21
void GameRules_teams(bool value)
Definition sv_rules.qc:3
bool GameRules_limit_time_initialized
Definition sv_rules.qc:41
void GameRules_limit_time_qualifying(int limit)
Definition sv_rules.qc:52
void GameRules_limit_lead(int limit)
Definition sv_rules.qc:32
void GameRules_limit_time(int limit)
Definition sv_rules.qc:42
#define GameRules_spawning_teams(value)
Used to disable team spawns in team modes.
Definition sv_rules.qh:35
int autocvar_leadlimit_override
Definition sv_rules.qh:9
bool teamplay
Definition teams.qh:59