PageRenderTime 45ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/html/includes/weaponstats.php

https://github.com/graywh/utstats
PHP | 211 lines | 184 code | 25 blank | 2 comment | 35 complexity | 3285864113bf3f0e4258af226cf87687 MD5 | raw file
  1. <?php
  2. function weaponstats($_mid, $_pid, $title = 'Weapons Summary') {
  3. global $gamename, $gid;
  4. $sql_weapons = "SELECT ws.matchid,
  5. ws.pid AS playerid,
  6. ws.weapon,
  7. ws.kills,
  8. ws.shots,
  9. ws.hits,
  10. ws.damage,
  11. ws.acc,
  12. pi.name AS playername,
  13. pi.country AS country,
  14. pi.banned AS banned,
  15. w.id AS weaponid,
  16. w.name AS weaponname,
  17. w.image AS weaponimg,
  18. w.sequence AS sequence
  19. FROM uts_weapons AS w,
  20. uts_weaponstats AS ws
  21. LEFT JOIN uts_pinfo AS pi
  22. ON ws.pid = pi.id
  23. WHERE ws.matchid = '$_mid'
  24. AND ws.pid = '$_pid'
  25. AND w.id = ws.weapon
  26. AND w.hide <> 'Y'";
  27. if ($_pid == 0 and $_mid != 0) {
  28. $sql_weapons = "SELECT ws.matchid,
  29. ws.pid AS playerid,
  30. ws.weapon,
  31. ws.kills AS kills,
  32. ws.shots AS shots,
  33. ws.hits AS hits,
  34. ws.damage AS damage,
  35. ws.acc AS acc,
  36. pi.name AS playername,
  37. pi.country AS country,
  38. pi.banned AS banned,
  39. w.id AS weaponid,
  40. w.name AS weaponname,
  41. w.image AS weaponimg,
  42. w.sequence AS sequence,
  43. w.hide AS hideweapon
  44. FROM uts_weapons as w,
  45. uts_weaponstats AS ws
  46. LEFT JOIN uts_pinfo AS pi
  47. ON ws.pid = pi.id
  48. WHERE ws.matchid = '$_mid'
  49. AND w.id = ws.weapon
  50. AND w.hide <> 'Y'
  51. GROUP BY ws.pid,
  52. ws.weapon";
  53. }
  54. $q_weapons = mysql_query($sql_weapons) or die(mysql_error());
  55. while ($r_weapons = zero_out(mysql_fetch_array($q_weapons))) {
  56. $weaponid = intval($r_weapons[weaponid]);
  57. $playerid = intval($r_weapons[playerid]);
  58. // Don't include banned players
  59. if ($r_weapons[banned] != 'Y') $psort[$playerid] = strtolower($r_weapons[playername]);
  60. if ($r_weapons[damage] > 1000000) $r_weapons[damage] = round($r_weapons[damage] / 1000, 0) .'k';
  61. // if ($r_weapons[damage] > 1000) $r_weapons[damage] = round($r_weapons[damage] / 1000, 0) .'k';
  62. $wd[$playerid][playername] = $r_weapons[playername];
  63. $wd[$playerid][country] = $r_weapons[country];
  64. $wd[$playerid][banned] = $r_weapons[banned];
  65. $wd[$playerid][$weaponid][kills] = $r_weapons[kills];
  66. $wd[$playerid][$weaponid][shots] = $r_weapons[shots];
  67. $wd[$playerid][$weaponid][hits] = $r_weapons[hits];
  68. $wd[$playerid][$weaponid][damage] = $r_weapons[damage];
  69. $wd[$playerid][$weaponid][acc] = ((!empty($r_weapons[acc])) ? get_dp($r_weapons[acc]) : '');
  70. if (!isset($wsort[$weaponid]) and $r_weapons[hideweapon] != 'Y') {
  71. $wsort[$weaponid] = intval($r_weapons[sequence]);
  72. $weapons[$weaponid][name] = $r_weapons[weaponname];
  73. $weapons[$weaponid][image] = $r_weapons[weaponimg];
  74. $weapons[$weaponid][sequence] = $r_weapons[sequence];
  75. }
  76. }
  77. if (!isset($psort)) return;
  78. asort($psort);
  79. asort($wsort);
  80. $playercol = 1;
  81. if (count($wsort) < 3) {
  82. $one = true;
  83. $colspan = 5;
  84. if (count($psort) == 1) {
  85. $playercol = 0;
  86. }
  87. } else {
  88. $one = false;
  89. $colspan = 1;
  90. }
  91. echo'
  92. <table border="0" cellpadding="0" cellspacing="2">
  93. <tbody>
  94. <tr>
  95. <td class="heading" colspan="'. ((count($wsort) * $colspan) + $playercol) .'" align="center">'.htmlentities($title).'</td>
  96. </tr>';
  97. if ($one) {
  98. ws_header($wsort, $weapons, $colspan, $one, $playercol);
  99. echo '<tr>';
  100. foreach($wsort as $wid => $bar) {
  101. for ($i = 1; $i <= $colspan; $i++) {
  102. switch($i) {
  103. case 1: $extra = 'Kills'; break;
  104. case 2: $extra = 'Shots'; break;
  105. case 3: $extra = 'Hits'; break;
  106. case 4: $extra = 'Acc'; break;
  107. case 5: $extra = 'Dmg'; break;
  108. }
  109. $extra = '<span style="font-size: 100%">'. $extra .'</span>';
  110. echo '<td class="smheading" align="center" width="35">'.$extra.'</td>';
  111. }
  112. }
  113. echo '</tr>';
  114. $i = 0;
  115. foreach($psort as $pid => $foo) {
  116. $i++;
  117. echo '<tr>';
  118. if ($playercol) echo '<td nowrap class="darkhuman" align="left"><a class="darkhuman" href="./?p=matchp&amp;mid='.$_mid.'&amp;pid='.urlencode($pid).'">'.FormatPlayerName($wd[$pid][country], $pid, $wd[$pid][playername], $gid, $gamename).'</a></td>';
  119. foreach($wsort as $wid => $bar) {
  120. ws_cell($wd, $pid, $wid, 'kills', $i);
  121. ws_cell($wd, $pid, $wid, 'shots', $i);
  122. ws_cell($wd, $pid, $wid, 'hits', $i);
  123. ws_cell($wd, $pid, $wid, 'acc', $i);
  124. ws_cell($wd, $pid, $wid, 'damage', $i);
  125. }
  126. echo '</tr>';
  127. }
  128. }
  129. if (!$one) {
  130. ws_block($wd, $weapons, $wsort, $psort, $colspan, $playercol, $one, $_mid, $gamename, 'Kills', 'kills');
  131. ws_block($wd, $weapons, $wsort, $psort, $colspan, $playercol, $one, $_mid, $gamename, 'Shots', 'shots');
  132. ws_block($wd, $weapons, $wsort, $psort, $colspan, $playercol, $one, $_mid, $gamename, 'Hits', 'hits');
  133. ws_block($wd, $weapons, $wsort, $psort, $colspan, $playercol, $one, $_mid, $gamename, 'Damage', 'damage');
  134. ws_block($wd, $weapons, $wsort, $psort, $colspan, $playercol, $one, $_mid, $gamename, 'Accuracy', 'acc');
  135. }
  136. echo '</tbody></table>';
  137. }
  138. function ws_header(&$wsort, &$weapons, $colspan, $one, $playercol) {
  139. echo '<tr>';
  140. if ($playercol and $playercol != -1) echo '<td class="smheading" align="center" width="150" '.(($one) ? 'rowspan="2"' : '') .'>Player</td>';
  141. if ($playercol == -1) echo '<td class="smheading" align="center" width="150">&nbsp;</td>';
  142. foreach($wsort as $wid => $bar) {
  143. if (!empty($weapons[$wid][image])) {
  144. $content = '<img border="0" src="images/weapons/'.$weapons[$wid][image].'" alt="'.$weapons[$wid][name].'" title="'.$weapons[$wid][name].'">';
  145. } else {
  146. $content = '<span style="font-size: 60%;">'.$weapons[$wid][name].'</span>';
  147. }
  148. echo '<td class="smheading" align="center" '. (($one) ? 'colspan="'.$colspan.'"' : 'width="35"') .'>'.$content.'</td>';
  149. }
  150. echo '</tr>';
  151. }
  152. function ws_cell(&$wd, $pid, $wid, $field, $i) {
  153. $content = '';
  154. if (isset($wd[$pid][$wid][$field])) $content = $wd[$pid][$wid][$field];
  155. $class = ($i % 2) ? 'grey' : 'grey2';
  156. echo '<td class="'.$class.'" align="center">'.$content.'</td>';
  157. }
  158. function ws_block(&$wd, &$weapons, &$wsort, &$psort, &$colspan, $playercol, $one,$_mid, $gamename, $caption, $field) {
  159. global $gamename, $gid;
  160. if (count($psort) != 1) {
  161. echo '
  162. <tr>
  163. <td height="5" colspan="'. ((count($wsort) * $colspan) + $playercol) .'" align="center"></td>
  164. </tr>
  165. <tr>
  166. <td class="smheading" height="20" colspan="'. ((count($wsort) * $colspan) + $playercol) .'" align="center">'.$caption.'</td>
  167. </tr>';
  168. ws_header($wsort, $weapons, $colspan, $one, $playercol);
  169. }
  170. if (count($psort) == 1) {
  171. $playercol = -1;
  172. if ($field == 'kills') ws_header($wsort, $weapons, $colspan, $one, $playercol);
  173. }
  174. $i = 0;
  175. foreach($psort as $pid => $foo) {
  176. $i++;
  177. echo '<tr>';
  178. if ($playercol and $playercol != -1) echo '<td nowrap class="darkhuman" align="left"><a class="darkhuman" href="./?p=matchp&amp;mid='.$_mid.'&amp;pid='.urlencode($pid).'">'.FormatPlayerName($wd[$pid][country], $pid, $wd[$pid][playername], $gid, $gamename).'</a></td>';
  179. if ($playercol == -1) echo '<td nowrap class="dark" align="center">'.$caption.'</a></td>';
  180. foreach($wsort as $wid => $bar) {
  181. ws_cell($wd, $pid, $wid, $field, $i);
  182. }
  183. echo '</tr>';
  184. }
  185. }
  186. ?>