From fdfe8e5ca9f37865cd41d2efad824926287f2e5d Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 26 Jul 2008 07:12:10 +0000 Subject: [PATCH] LMS works! git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3922 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/defaultNexuiz.cfg | 1 + data/qcsrc/client/Main.qc | 2 +- data/qcsrc/client/main.qh | 4 ++-- data/qcsrc/client/sbar.qc | 8 ++++++-- data/qcsrc/client/teamplay.qc | 5 ++++- data/qcsrc/common/constants.qh | 4 ++-- data/qcsrc/server/g_world.qc | 9 +++++---- data/qcsrc/server/keyhunt.qc | 6 +++--- data/qcsrc/server/scores.qc | 2 +- data/qcsrc/server/teamplay.qc | 6 +++--- 10 files changed, 28 insertions(+), 19 deletions(-) diff --git a/data/defaultNexuiz.cfg b/data/defaultNexuiz.cfg index 1d994bbf1..c2e1abd08 100644 --- a/data/defaultNexuiz.cfg +++ b/data/defaultNexuiz.cfg @@ -1056,6 +1056,7 @@ set capturelimit 0 // sbar: font size set sbar_fontsize 11 alias sbar_font "loadfont user1 $*; sbar_columns_set" +seta sbar_columns default sbar_font gfx/vera-sans // these entities are not referenced by anything directly, they just represent diff --git a/data/qcsrc/client/Main.qc b/data/qcsrc/client/Main.qc index fcc8be81b..3096ee998 100644 --- a/data/qcsrc/client/Main.qc +++ b/data/qcsrc/client/Main.qc @@ -64,7 +64,7 @@ void CSQC_Init(void) registercmd("sbar_columns_help"); registercvar("sbar_usecsqc", "1"); - registercvar("sbar_columns", "ping name | caps returns frags deaths", CVAR_SAVE); + registercvar("sbar_columns", "default", CVAR_SAVE); gametype = 0; diff --git a/data/qcsrc/client/main.qh b/data/qcsrc/client/main.qh index 7744ea400..5e882ed56 100644 --- a/data/qcsrc/client/main.qh +++ b/data/qcsrc/client/main.qh @@ -90,8 +90,8 @@ float teamscores_flags[MAX_SCORE]; .float scores[MAX_SCORE]; .float teamscores[MAX_TEAMSCORE]; -#define IS_INCREASING(x) ( (x)&SFL_DECREASING ) -#define IS_DECREASING(x) ( !((x)&SFL_DECREASING) ) +#define IS_INCREASING(x) ( (x)&SFL_LOWER_IS_BETTER ) +#define IS_DECREASING(x) ( !((x)&SFL_LOWER_IS_BETTER) ) float csqc_flags; #define CSQC_FLAG_READPICTURE 1 diff --git a/data/qcsrc/client/sbar.qc b/data/qcsrc/client/sbar.qc index a636a4b92..5ad90b90f 100644 --- a/data/qcsrc/client/sbar.qc +++ b/data/qcsrc/client/sbar.qc @@ -285,6 +285,10 @@ void Cmd_Sbar_Help(float argc) print("^3kd^7 or ^3kdr^7 or ^3kdratio^7 or ^3k/d\n"); print(" The kill-death ratio\n"); + print("Before a field you can put a + or - sign, then a comma separated list\n"); + print("of game types, then a slash, to make the field show up only in these\n"); + print("or in all but these game types.\n"); + /* print("^3caps^7 or ^3captures^7 Number of flags captured\n"); print("^3rets^7 or ^3returns^7 Number of flags returned\n"); @@ -305,7 +309,7 @@ void Cmd_Sbar_Help(float argc) string Sbar_DefaultColumnLayout() { - return "ping name | +kh,ctf/caps -ctf,kh/kills -ctf,kh/deaths score"; + return "ping name | +kh,ctf/caps -ctf,kh/kills -ctf,kh/deaths -lms,score +lms,lives +lms,place"; /* switch(gametype) { @@ -433,7 +437,7 @@ string Sbar_GetField(entity pl, float field) if(field == ps_primary) sbar_field_rgb = '1 1 0'; else if(field == ps_secondary) - sbar_field_rgb = '1 0 1'; + sbar_field_rgb = '0 1 1'; else sbar_field_rgb = '1 1 1'; if(!tmp) diff --git a/data/qcsrc/client/teamplay.qc b/data/qcsrc/client/teamplay.qc index 3f98c9cda..0b172cf8f 100644 --- a/data/qcsrc/client/teamplay.qc +++ b/data/qcsrc/client/teamplay.qc @@ -18,7 +18,10 @@ float GetPlayerColor(float i) { if(getplayerkey(i, "frags") == "-666") return COLOR_SPECTATOR; - return stof(getplayerkey(i, "colors")) & 15; + else if(!teamplay) + return 0; + else + return stof(getplayerkey(i, "colors")) & 15; } vector GetTeamRGB(float color) diff --git a/data/qcsrc/common/constants.qh b/data/qcsrc/common/constants.qh index 6b8b267c3..427db5b84 100644 --- a/data/qcsrc/common/constants.qh +++ b/data/qcsrc/common/constants.qh @@ -195,9 +195,9 @@ const float MAPVOTE_NET_PIC = 2; const float MAPVOTE_NET_OWNVOTE = 3; /** - * Lower scores are better (e.g. deaths) + * Lower scores are better (e.g. suicides) */ -#define SFL_DECREASING 1 +#define SFL_LOWER_IS_BETTER 1 /** * Don't show zero values as scores diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index 5692888c7..e8ed70837 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -1324,8 +1324,7 @@ float WinningCondition_Assault() // limit. float WinningCondition_LMS() { - // FIXME make this use the new score system - entity head; + entity head, head2; float have_player; float have_players; float l; @@ -1337,8 +1336,8 @@ float WinningCondition_LMS() head = find(world, classname, "player"); if(head) have_player = TRUE; - head = find(head, classname, "player"); - if(head) + head2 = find(head, classname, "player"); + if(head2) have_players = TRUE; if(have_player) @@ -1363,6 +1362,8 @@ float WinningCondition_LMS() else { // a winner! + // and assign him his first place + PlayerScore_Add(head, SP_LMS_PLACE, 1); return WINNING_YES; } } diff --git a/data/qcsrc/server/keyhunt.qc b/data/qcsrc/server/keyhunt.qc index 5f2a81702..381f8588b 100644 --- a/data/qcsrc/server/keyhunt.qc +++ b/data/qcsrc/server/keyhunt.qc @@ -978,13 +978,13 @@ void kh_init() // sets up th KH environment ScoreInfo_SetLabel_TeamScore (ST_KH_CAPS, "caps", SFL_SORT_PRIO_SECONDARY); ScoreInfo_SetLabel_PlayerScore(SP_KILLS, "kills", 0); ScoreInfo_SetLabel_PlayerScore(SP_DEATHS, "deaths", 0); - ScoreInfo_SetLabel_PlayerScore(SP_SUICIDES, "suicides", SFL_DECREASING); + ScoreInfo_SetLabel_PlayerScore(SP_SUICIDES, "suicides", SFL_LOWER_IS_BETTER); ScoreInfo_SetLabel_PlayerScore(SP_SCORE, "score", SFL_SORT_PRIO_PRIMARY); ScoreInfo_SetLabel_PlayerScore(SP_KH_COLLECT, "collect", 0); - ScoreInfo_SetLabel_PlayerScore(SP_KH_LOSEKEY, "losekey", SFL_DECREASING); + ScoreInfo_SetLabel_PlayerScore(SP_KH_LOSEKEY, "losekey", SFL_LOWER_IS_BETTER); ScoreInfo_SetLabel_PlayerScore(SP_KH_CAPS, "caps", SFL_SORT_PRIO_SECONDARY); ScoreInfo_SetLabel_PlayerScore(SP_KH_PUSH, "push", 0); - ScoreInfo_SetLabel_PlayerScore(SP_KH_DESTROYED, "destroyed", SFL_DECREASING); + ScoreInfo_SetLabel_PlayerScore(SP_KH_DESTROYED, "destroyed", SFL_LOWER_IS_BETTER); ScoreInfo_SetLabel_PlayerScore(SP_KH_KCFRAG, "kcfrag", 0); } diff --git a/data/qcsrc/server/scores.qc b/data/qcsrc/server/scores.qc index afd3ca128..7ddb57aaf 100644 --- a/data/qcsrc/server/scores.qc +++ b/data/qcsrc/server/scores.qc @@ -29,7 +29,7 @@ vector ScoreField_Compare(entity t1, entity t2, .float field, float fieldflags, previous_y = fieldflags & SFL_SORT_PRIO_MASK; - if(fieldflags & SFL_DECREASING) + if(fieldflags & SFL_LOWER_IS_BETTER) previous_x = (t2.field - t1.field); else previous_x = (t1.field - t2.field); diff --git a/data/qcsrc/server/teamplay.qc b/data/qcsrc/server/teamplay.qc index fe37b0ce2..735938aeb 100644 --- a/data/qcsrc/server/teamplay.qc +++ b/data/qcsrc/server/teamplay.qc @@ -222,10 +222,10 @@ void InitGameplayMode() ScoreInfo_Init(0); ScoreInfo_SetLabel_PlayerScore(SP_KILLS, "kills", 0); ScoreInfo_SetLabel_PlayerScore(SP_DEATHS, "deaths", 0); - ScoreInfo_SetLabel_PlayerScore(SP_SUICIDES, "suicides", SFL_DECREASING); + ScoreInfo_SetLabel_PlayerScore(SP_SUICIDES, "suicides", SFL_LOWER_IS_BETTER); // do not define SP_SCORE for LMS ScoreInfo_SetLabel_PlayerScore(SP_LMS_LIVES, "lives", SFL_SORT_PRIO_SECONDARY); - ScoreInfo_SetLabel_PlayerScore(SP_LMS_PLACE, "place", SFL_DECREASING | SFL_HIDE_ZERO | SFL_SORT_PRIO_PRIMARY); + ScoreInfo_SetLabel_PlayerScore(SP_LMS_PLACE, "place", SFL_LOWER_IS_BETTER | SFL_HIDE_ZERO | SFL_SORT_PRIO_PRIMARY); } else if(game == GAME_ARENA || cvar("g_arena")) { @@ -339,7 +339,7 @@ void InitGameplayMode() ScoreInfo_SetLabel_TeamScore (ST_SCORE, "score", SFL_SORT_PRIO_PRIMARY); ScoreInfo_SetLabel_PlayerScore(SP_KILLS, "kills", 0); ScoreInfo_SetLabel_PlayerScore(SP_DEATHS, "deaths", 0); - ScoreInfo_SetLabel_PlayerScore(SP_SUICIDES, "suicides", SFL_DECREASING); + ScoreInfo_SetLabel_PlayerScore(SP_SUICIDES, "suicides", SFL_LOWER_IS_BETTER); ScoreInfo_SetLabel_PlayerScore(SP_SCORE, "score", SFL_SORT_PRIO_PRIMARY); } } -- 2.39.2