From a8e1109e34f67382b0c7d1872e879f603f337075 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 19 Nov 2010 02:48:59 -0500 Subject: [PATCH] Some work on scoring.... still have to fix the bug of not displaying the correct columns, but that'll have to be tomorrow. Lots of cleaning up is going to need done soon as well. --- qcsrc/client/scoreboard.qc | 4 +- qcsrc/server/mutators/gamemode_keepaway.qc | 82 ++++++++-------------- qcsrc/server/scores_rules.qc | 1 + 3 files changed, 33 insertions(+), 54 deletions(-) diff --git a/qcsrc/client/scoreboard.qc b/qcsrc/client/scoreboard.qc index ec17dfca7..cb93c5325 100644 --- a/qcsrc/client/scoreboard.qc +++ b/qcsrc/client/scoreboard.qc @@ -248,12 +248,12 @@ string HUD_DefaultColumnLayout() { return strcat( // fteqcc sucks "ping pl name | ", - "-teams,race,lms/kills -teams,lms/deaths -teams,lms,race/suicides -race,dm,tdm/frags ", // tdm already has this in "score" + "-teams,race,lms/kills -teams,lms/deaths -teams,lms,race,keepaway/suicides -race,dm,tdm,keepaway/frags ", // tdm already has this in "score" "+ctf/caps +ctf/pickups +ctf/fckills +ctf/returns ", "+lms/lives +lms/rank ", "+kh/caps +kh/pushes +kh/destroyed ", "?+race/laps ?+race/time ?+race/fastest ", - "+as/objectives +nexball/faults +nexball/goals ", + "+as/objectives +nexball/faults +nexball/goals +keepaway/drops +keepaway/pickups +keepaway/bckills ", "-lms,race,nexball/score"); } diff --git a/qcsrc/server/mutators/gamemode_keepaway.qc b/qcsrc/server/mutators/gamemode_keepaway.qc index 6435f05e0..378c45b5e 100644 --- a/qcsrc/server/mutators/gamemode_keepaway.qc +++ b/qcsrc/server/mutators/gamemode_keepaway.qc @@ -4,11 +4,15 @@ void ka_RespawnBall(void); void ka_Initialize() { + print("^4ka_Initialize was just called!\n"); + if(!g_keepaway) return; precache_sound("keepaway/pickedup.wav"); precache_sound("keepaway/dropped.wav"); + + ScoreRules_keepaway(); entity e; e = spawn(); @@ -150,47 +154,39 @@ MUTATOR_HOOKFUNCTION(ka_RemovePlayer) ball.owner.kaballcarried = world; ball.owner = world; } - return 1; -} - -/* -void ka_DropEvent(entity plyr, entity ball) -{ - setattachment(ball, world, ""); - ball.movetype = MOVETYPE_BOUNCE; - ball.solid = SOLID_TRIGGER; - ball.wait = time + 1; - ball.ctf_droptime = time; - ball.think = ka_SpawnBall; - ball.nextthink = time + cvar("g_keepawayball_respawntime"); - ball.touch = ka_TouchEvent; - plyr.effects = EF_LOWPRECISION; - plyr.alpha = 1.0; - ball.alpha = 1.0; - setorigin(ball, plyr.origin + '0 0 10'); - ball.velocity = '0 0 200' + '0 100 0'*crandom() + '100 0 0'*crandom(); - - bprint(plyr.netname, "^7 has dropped the ball!\n"); - WriteByte(MSG_BROADCAST, SVC_CENTERPRINT); - WriteString(MSG_BROADCAST, strcat("\n\n", plyr.netname, "^7 has dropped the ball!\n")); - sound(other, CHAN_AUTO, "keepaway/dropped.wav", VOL_BASE, ATTN_NORM); - PlayerScore_Add(plyr, SP_KEEPAWAY_DROPS, 1); + if((frag_attacker || frag_target) && !(frag_attacker == frag_target)) { + if(frag_target.kaballcarried) // get amount of times killing carrier + PlayerScore_Add(frag_attacker, SP_KEEPAWAY_CARRIERKILLS, 1); + else if not(frag_attacker.kaballcarried) + if(cvar("g_keepaway_noncarrier_warn")) + centerprint_atprio(frag_attacker, (CENTERPRIO_SPAM + 5), "Killing people while you don't have the ball gives no points!"); - // todo - //WaypointSprite_AttachCarrier("ka-ball", ball); - //WaypointSprite_Kill(plyr.waypointsprite_attachedforcarrier); - - ball.owner.kaballcarried = world; - ball.owner = world; + if(frag_attacker.kaballcarried) // get kills as carrier + PlayerScore_Add(frag_attacker, SP_KEEPAWAY_SCORE, 1); + } + return 1; } - - -void ka_CheckWinner() +/* +MUTATOR_HOOKFUNCTION(ka_Scoring) { + if not(frag_attacker == frag_target) + { + if(frag_target.kaballcarried) { // get amount of times killing carrier + PlayerScore_Add(frag_attacker, SP_KEEPAWAY_CARRIERKILLS, 1); + //ka_RemovePlayer(); + } + else if not(frag_attacker.kaballcarried) + if(cvar("g_keepaway_noncarrier_warn")) + centerprint_atprio(frag_attacker, (CENTERPRIO_SPAM + 5), "Killing people while you don't have the ball gives no points!"); + if(frag_attacker.kaballcarried) // get kills as carrier + PlayerScore_Add(frag_attacker, SP_KEEPAWAY_SCORE, 1); + } + return 1; } + MUTATOR_HOOKFUNCTION(ka_PlayerDies) { float i; @@ -243,24 +239,6 @@ MUTATOR_HOOKFUNCTION(ka_PlayerDies) return 1; } - -MUTATOR_HOOKFUNCTION(tag_RemovePlayer) -{ - - return 1; -} - -MUTATOR_HOOKFUNCTION(tag_GiveFragsForKill) -{ - frag_score = 0; // no frags counted in Tag, maybe later (TODO) - return 1; -} - -MUTATOR_HOOKFUNCTION(tag_PlayerPreThink) -{ - setcolor(self, 16 * self.tagcolor + self.tagcolor); // prevent cheating by changing player colors - return 1; -} */ diff --git a/qcsrc/server/scores_rules.qc b/qcsrc/server/scores_rules.qc index dcfad174d..78b6560f9 100644 --- a/qcsrc/server/scores_rules.qc +++ b/qcsrc/server/scores_rules.qc @@ -195,6 +195,7 @@ void ScoreRules_nexball(float teams) #define SP_KEEPAWAY_SCORE 7 void ScoreRules_keepaway() { + print("^4ScoreRules_keepaway was just called!\n"); ScoreRules_basics(0, SFL_SORT_PRIO_PRIMARY, 0, FALSE); ScoreInfo_SetLabel_PlayerScore(SP_KEEPAWAY_SCORE, "score", SFL_SORT_PRIO_PRIMARY); ScoreInfo_SetLabel_PlayerScore(SP_KEEPAWAY_PICKUPS, "pickups", 0); -- 2.39.2