PageRenderTime 45ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/html/import/import_ranking.php

https://github.com/graywh/utstats
PHP | 110 lines | 67 code | 15 blank | 28 comment | 16 complexity | d583ebbe4223bdc4409b081ade2173a0 MD5 | raw file
  1. <?php
  2. if ($playerbanned) return;
  3. // Get sums of different events
  4. // Work out all possible ranking scores
  5. $r_cnt = small_query("SELECT
  6. SUM(frags*0.5) AS frags,
  7. SUM(deaths*0.25) AS deaths,
  8. SUM(suicides*0.25) AS suicides,
  9. SUM(teamkills*2) AS teamkills,
  10. SUM(flag_taken*1) AS flag_taken,
  11. SUM(flag_pickedup*1) AS flag_pickedup,
  12. SUM(flag_return*5) AS flag_return,
  13. SUM(flag_capture*10) AS flag_capture,
  14. SUM(flag_cover*3) AS flag_cover,
  15. SUM(flag_seal*2) AS flag_seal,
  16. SUM(flag_assist*5) AS flag_assist,
  17. SUM(flag_kill*3) AS flag_kill,
  18. SUM(dom_cp*1) AS dom_cp,
  19. SUM(ass_obj*10) AS ass_obj,
  20. SUM(spree_double*1) AS spree_double,
  21. SUM(spree_multi*1) AS spree_multi,
  22. SUM(spree_ultra*1) AS spree_ultra,
  23. SUM(spree_monster*2) AS spree_monster,
  24. SUM(spree_kill*1) AS spree_kill,
  25. SUM(spree_rampage*1) AS spree_rampage,
  26. SUM(spree_dom*1.5) AS spree_dom,
  27. SUM(spree_uns*2) AS spree_uns,
  28. SUM(spree_god*3) AS spree_god,
  29. SUM(gametime) AS gametime
  30. FROM uts_player
  31. WHERE pid = $pid and gid = $gid and matchid <= $matchid");
  32. // Work out per game ranking amounts
  33. $rank_ctf = $r_cnt[flag_taken] + $r_cnt[flag_pickedup] + $r_cnt[flag_return] + $r_cnt[flag_capture] + $r_cnt[flag_cover] + $r_cnt[flag_seal] + $r_cnt[flag_assist] + $r_cnt[flag_kill];
  34. $rank_ass = $r_cnt[ass_obj];
  35. $rank_dom = $r_cnt[dom_cp];
  36. $rank_jb = $r_cnt[ass_obj] * 0.15;
  37. $rank_fpos = $r_cnt[frags] + $r_cnt[spree_double] + $r_cnt[spree_multi] + $r_cnt[spree_ultra] + $r_cnt[spree_monster] + $r_cnt[spree_kill] + $r_cnt[spree_rampage] + $r_cnt[spree_dom] + $r_cnt[spree_uns] + $r_cnt[spree_god];
  38. $rank_fneg = $r_cnt[deaths] + $r_cnt[suicides] + $r_cnt[teamkills];
  39. $r_gametime = ceil($r_cnt[gametime] / 60);
  40. // Select rank record
  41. $r_rankp = small_query("SELECT id, time, rank, matches FROM uts_rank WHERE pid = '$pid' AND gid = '$gid'");
  42. $rank_id = $r_rankp[id];
  43. $rank_gametime = $r_rankp[time];
  44. $rank_crank = $r_rankp[rank];
  45. $rank_matches = $r_rankp[matches];
  46. // Work out initial rank dependant on game, if no game known use DM ranking
  47. IF ($gamename == "Assault" || $gamename == "Assault (insta)") {
  48. $rank_nrank = $rank_ass+$rank_fpos-$rank_fneg;
  49. } elseIF ($gamename == "Capture the Flag" || $gamename == "Capture the Flag (insta)") {
  50. $rank_nrank = $rank_ctf+$rank_fpos-$rank_fneg;
  51. } elseIF ($gamename == "Domination" || $gamename == "Domination (insta)") {
  52. $rank_nrank = $rank_dom+$rank_fpos-$rank_fneg;
  53. } elseIF ($gamename == "JailBreak" || $gamename == "JailBreak (insta)") {
  54. $rank_nrank = $rank_jb+$rank_fpos-$rank_fneg;
  55. } else {
  56. $rank_nrank = $rank_fpos-$rank_fneg;
  57. }
  58. // Average the rank over game minutes
  59. $rank_nrank = ($rank_nrank/$r_gametime) * 60;
  60. if ($dbg) echo "Nrank: $rank_nrank ";
  61. // Add rank gametime to previous amount
  62. $rank_gametime = $r_gametime;
  63. // Reduce ranking if player hasnt played that much
  64. /*IF ($rank_gametime < 10) {
  65. $rank_nrank = $rank_nrank*.1;
  66. }
  67. ELSE IF ($rank_gametime < 50) {
  68. $rank_nrank = $rank_nrank*.25;
  69. }
  70. ELSE IF ($rank_gametime < 100) {
  71. $rank_nrank = $rank_nrank*.50;
  72. }
  73. ELSE IF ($rank_gametime < 200) {
  74. $rank_nrank = $rank_nrank*.70;
  75. }
  76. ELSE IF ($rank_gametime < 300) {
  77. $rank_nrank = $rank_nrank*.85;
  78. }*/
  79. // Add new rank record if one does not exist
  80. IF($rank_id == NULL) {
  81. mysql_query("INSERT INTO uts_rank SET time = $r_gametime, pid = $pid, gid = $gid, rank = 0, matches = 0;") or die(mysql_error());
  82. $rank_id = mysql_insert_id();
  83. $rank_gametime = 0;
  84. $rank_crank = 0;
  85. $rank_matches = 0;
  86. }
  87. // Add number of matches played
  88. $rank_matches = $rank_matches+1;
  89. // Work out effective rank given
  90. $eff_rank = $rank_nrank-$rank_crank;
  91. // Add effective rank points given to uts_player record
  92. mysql_query("UPDATE uts_player SET rank = $eff_rank WHERE id = $playerecordid") or die(mysql_error());
  93. // Update the rank
  94. mysql_query("UPDATE uts_rank SET time = $rank_gametime, rank = $rank_nrank, prevrank = $rank_crank, matches = $rank_matches WHERE id = $rank_id;") or die(mysql_error());
  95. ?>