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.
12 }
13 else
14 {
16 teamplay = 0;
17 cvar_set("teamplay", "0"); // DP needs this for sending proper getstatus replies.
19 }
20}
21
23void GameRules_limit_score(int limit)
24{
26 if (autocvar_g_campaign) return;
27 if (limit < 0) return;
28 cvar_set("fraglimit", ftos(limit));
30}
31
33void GameRules_limit_lead(int limit)
34{
36 if (autocvar_g_campaign) return;
37 if (limit < 0) return;
38 cvar_set("leadlimit", ftos(limit));
40}
41
43void GameRules_limit_time(int limit)
44{
46 if (autocvar_g_campaign) return;
47 if (limit < 0) return;
48 cvar_set("timelimit", ftos(limit));
50}
51
54{
56 if (autocvar_g_campaign) return;
57 if (limit < 0) return;
58 cvar_set("g_race_qualifying_timelimit", ftos(limit));
60}
61
68
73float _GameRules_scoring_add_float2int(entity client, entity sp, int st, float value, .float decimal_field, float score_factor, bool team)
74{
75 client.(decimal_field) += value;
76 float score_counter = client.(decimal_field) / score_factor;
77 if (score_counter >= -0.5 && score_counter < 0.5)
78 return 0;
79
80 // NOTE: this code works for subtracting score too
81 int points = floor(score_counter + 0.5);
82 if (!points)
83 return 0;
84 client.(decimal_field) -= points * score_factor;
85 return team ? PlayerTeamScore_Add(client, sp, st, points) : PlayerScore_Add(client, sp, points);
86}
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:747
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:406
float PlayerScore_Add(entity player, PlayerScoreField scorefield, float score)
Adds a score to the player's scores.
Definition scores.qc:352
void GameRules_limit_score(int limit)
Definition sv_rules.qc:23
bool GameRules_limit_lead_initialized
Definition sv_rules.qc:32
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:73
void GameRules_limit_fallbacks()
Set any unspecified rules to their defaults.
Definition sv_rules.qc:62
bool GameRules_limit_time_qualifying_initialized
Definition sv_rules.qc:52
bool GameRules_limit_score_initialized
Definition sv_rules.qc:22
void GameRules_teams(bool value)
Definition sv_rules.qc:3
bool GameRules_limit_time_initialized
Definition sv_rules.qc:42
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
#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
void Team_InitTeams()
Definition teamplay.qc:47
bool teamplay
Definition teams.qh:59