Messy, this is my goal. The system I currently use can poll multiple servers and download the ut2004 stats logfiles automatically. This is already being done on my server every 15mins. (see link to the existing stats in the other thread)
For the server stats and a databasing system, I don't want to try and reinvent the wheel. Instead, all we need to do is provide more into to the native ut2004 gamestats engine. If we do that, the existing and highly recognized stats tracking package called UTStatsDB will be happy to include DeathBall in its list of supported mods. I had a little bit of a chat with Robert and he agrees that it is easy to do. His current task focus happens to be on the award system and he will begin implementing the necessary lines to track the stats.
The end result should be such that the serverside stats file should be able to reproduce all the events and ending scores of a game with this sequential logging of each event as it happened. Let me try and illustrate using the proposed new awards system:
Deathball award system: 06:04 10.09.2004 by DavidM
***********************
show the following in the hud, middle left, x,y,z,a are the values
---
defense: x
attack: y
keeper: z
passing: a
---
When you get a point play "pointsup" sound, when you lose points play "pointsdown" sound.
The according number should turn green/red in this moment. Normal color should be white (!?)
And the number should "glow" or something for a moment. Since there is no glow effect we need to highlight in a different way.
I think the color change for a moment isn't enough. But we'll see. A size change could be done...other ideas?
--------------
F3 award box has to look like this:
Defender award: 1.name (x) 2.name (x) 3.name (x)
Attacker award: 1.name (y) 2.name (y) 3.name (y)
Keeper award: 1.name (z) 2.name (z) 3.name (z)
pass award: 1.name (a) 2.name (a) 3.name (a)
--------------
(another note to this, they have to be frozen. when an awarded player leaves he has to stay in there tho.)
now a list of all awards and how the points are given
-defender award
-attacker award
-keeper award
-passing award
when 'near goal' is mentioned, it means 2000 units away from goal (value might be changed later)
missed chances = post hit, keeper saves, ball carrier gets killed in enemy pbox
defender award:
--------------
-defender killing an enemy player who just released the ball near defender's goal:
*ball goes to other enemy player after the pass
#if that player scores or misses: -1 points ScoreEvent(defenderID,-1,def_NoPrevent)
#if nothing special happens: 2 points to defender ScoreEvent(defenderID,2,def_Prevent)
*if it goes directly in goal: -2 points for def ScoreEvent(defenderID,-2,def_NoPrevent)
*if it ends up as a direct missed chance (keeper saves, post hit): -2 points ScoreEvent(defenderID,2,def_Prevent)
*if it goes to other team (defender team) give 2 points to defender ScoreEvent(defenderID,2,def_Prevent)
-defender kills enemy ballcarrier near own goal: 2 points ScoreEvent(defenderID,2,def_TackleKill)
-defender HURTS enemy ballcarrier near own goal:
*if hurt player keeps ball: 1 point to def ScoreEvent(defenderID,1,def_Tackle)
*if hurt player is doing a shaken shot due to the tackling (overload): 3 points to def ScoreEvent(defenderID,3,def_Tackle)
*if hurt player gets off a proper shot (not overload)
#if goal: -3 for def ScoreEvent(defenderID,-3,def_Tackle)
#if missed: -2 for def ScoreEvent(defenderID,-2,def_Tackle)
#if pass to other attacker: -1 for def ScoreEvent(defenderID,-1,def_Tackle)
#anything else: 0 ScoreEvent(defenderID,0,def_Tackle)
(make sure that when a shaken shot turns out as assist, goal, missed or so, that the defender gets not blamed for it. defender gets points for the successfull tackling, even if its a goal. afterall, a shaken assist is pure luck!)
-defender kills enemy player without ball in own pbox
*if attacker team has ball: 3 points ScoreEvent(defenderID,3,def_TackleKill)
*if defender team got the ball withing 2 seconds ago: 0 points ScoreEvent(defenderID,0,def_TackleKill)
*if defender team has ball but attacker team gets ball within the next 5 seconds: 3 points ScoreEvent(defenderID,3,def_WatchedItem)
*if defender team has ball, attacker is 250 close to defender team's ballcarrier: 1 point ScoreEvent(defenderID,1,def_TackleKill)
-defender intercepts enemy ball ("altfire bounce" counts as intercept too)
*near own goal: 3 points ScoreEvent(defenderID,3,def_Intercept)
*somewhere else on pitch: 1 point ScoreEvent(defenderID,1,def_Intercept)
-defender kicks enemy attacker away, who was about to get a locked pass
*enemy attacker doesnt get it: 2 points ScoreEvent(defenderID,2,def_Prevent)
// (*enemy attacker doesnt get it and defender catches ball: 4 points) <- i figured out its bullshit, because you get points for "interception" already. ScoreEvent(defenderID,4,def_Prevent)
-defender has an attacker ball deflect off him near own goal: 2 point ScoreEvent(defenderID,2,def_Prevent)
-defender kicked away by attacker
*attacker scores within 4 secs after: -5 points ScoreEvent(defenderID,-5,def_Beaten)
*attacker misses within 4 secs after: -3 points ScoreEvent(defenderID,-3,def_Beaten)
attacker award:
--------------
-attacker scores goal: 9 points ScoreEvent(attackerID,9,atk_Goal)
-attacker misses with a shot: -4 ScoreEvent(attackerID,-4,atk_MissGoal)
-attacker misses with a volley or "altfire bounce": -3 ScoreEvent(attackerID,-3,atk_MissGoal)
-attacker misses by being killed with ball in enemy pbox: -3 ScoreEvent(attackerID,-3,atk_MissGoal)
-attacker misses (no matter how) from 3500+ units away: -1 ScoreEvent(attackerID,-1,atk_MissGoal)
-attacker A passes to attacker B, attacker B misses: 4 points for attacker A ScoreEvent(attackerID,4,atk_MissAssist)
-attacker A passes to attacker B, attacker B scores: 9 points for attacker A (so 9 points for last assist) ScoreEvent(attackerID,9,atk_Assist)
-4 points for 2nd last assist (that would be 4 points for player C in this case: C pass to B, B pass to A, A scores); If C=A don't give points ScoreEvent(attackerID,4,atk_Assist)
-attacker is being shaken due to well timed tackling by defender NEAR ENEMY GOAL: -2 points for attacker ScoreEvent(attackerID,-2,atk_Hurt)
-attacker creates a bad pass near enemy goal: -3 points ScoreEvent(attackerID,-3,pas_BadPass) *atk or pas points here?!*
-attacker A boosts attacker B, attacker B scores within the next 5 seconds: 4 points ScoreEvent(attackerID,4,atk_Booster)
-attacker A boosts attacker B, attacker B is last assist for a goal that's being scored in the next 7 seconds: 4 points ScoreEvent(attackerID,4,atk_Booster)
keeper award:
--------------
-keeper kills enemy player without ball in own pbox
*if attacker team has ball: 3 points ScoreEvent(keeperID,3,kep_TackleKill)
*if keeper team got the ball withing 2 seconds ago: 0 points ScoreEvent(keeperID,0,kep_TackleKill)
*if keeper team has ball but attacker team gets ball within the next 5 seconds: 3 points ScoreEvent(keeperID,3,kep_WatchedItem)
*if keeper team has ball, attacker is 250 close to defender team's ballcarrier: 1 point ScoreEvent(keeperID,1,kep_TackleKill)
-keeper saves ball
*ball has less than 60km/h: 1 point ScoreEvent(keeperID,1,kep_Save)
*ball 60km/h and above and shot from 23 to 35 meters: 3 points ScoreEvent(keeperID,3,kep_Save)
*ball 60km/h and above and shot from farer than 35 meters away: 1 point ScoreEvent(keeperID,1,kep_Save)
*ball shot from less than 12 meters away from goal: 7 points (even if speed below 60km/h; so dissable the 1st point if distance that low) ScoreEvent(keeperID,7,kep_Save)
*ball shot from 23 to 12 meters: 5 points (only if speed above 60km/h) ScoreEvent(keeperID,5,kep_Save)
-keeper kills player with ball in own box ScoreEvent(keeperID,5,kep_TackleKill)
-intercepts ball (keeper outside box; if he was keeper 5 secs before): 3 points ScoreEvent(keeperID,3,kep_Intercept)
-keeper has last assist: 5 points [5 for keeper and 9 for attacker] ScoreEvent(keeperID,5,kep_Assist)
-keeper has 2nd last assist: 3 points ScoreEvent(keeperID,3,kep_Assist)
-keeper passes to enemy player -5 points ScoreEvent(keeperID,-5,pas_BadPass) *kep or pas points here?!*
pass award:
--------------
as usual
you need 3 good passes to compensate 1 bad pass
so
+1 for good pass ScoreEvent(passerID,1,pas_GoodPass)
-3 for bad pass ScoreEvent(passerID,-3,pas_BadPass)
I think these are redundant after assist points
+5 if pass was last assist ScoreEvent(passerID,5,pas_WatchedItem)
+3 if pass was 2nd last assist ScoreEvent(passerID,3,pas_WatchedItem)