HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmod>
  2. #include <amxmisc>
  3. #include <csstats>
  4.  
  5. #define MAX_BUFFER_LENGTH 2047
  6. #define MAX_NAME_LENGTH 31
  7.  
  8. #define STATS_KILLS 0
  9. #define STATS_DEATHS 1
  10. #define STATS_HS 2
  11. #define STATS_TKS 3
  12. #define STATS_SHOTS 4
  13. #define STATS_HITS 5
  14. #define STATS_DAMAGE 6
  15.  
  16. #define STATS_NUM 10
  17.  
  18. new g_sBuffer[MAX_BUFFER_LENGTH+1] = "";
  19. new t_sName[MAX_NAME_LENGTH+1] = "";
  20.  
  21. public plugin_init() {
  22. register_plugin("TopX", "1.0", "SAMURAI & DangerMan")
  23. register_clcmd("say", "hookSay")
  24. }
  25.  
  26. public hookSay(id) {
  27. new args[128]
  28. read_args(args, 127)
  29. remove_quotes(args)
  30. if(equal(args, "/top", 4)) {
  31. new szStatsFrom[16]
  32. copy(szStatsFrom, 15, args[4])
  33. new statsFrom = strtonum(szStatsFrom)
  34. new iMax = get_statsnum();
  35. if(statsFrom > 0 && statsFrom < iMax) {
  36. format_top15(g_sBuffer, statsFrom)
  37. show_motd(id, g_sBuffer, "HLMOD.hu TOPX")
  38. }
  39. }
  40. return PLUGIN_CONTINUE
  41. }
  42.  
  43.  
  44. Float:accuracy( izStats[8] ) {
  45. if( !izStats[STATS_SHOTS] ) return ( 0.0 );
  46. new Float:result
  47. result = 100.0 * float( izStats[STATS_HITS] ) / float( izStats[STATS_SHOTS] );
  48. return (result > 100.0) ? 100.0 : result
  49. }
  50.  
  51. Float:effec( izStats[8] ) {
  52. if( !izStats[STATS_KILLS] ) return ( 0.0 );
  53. new Float:result
  54. result = 100.0 * float( izStats[STATS_KILLS] ) / float( izStats[STATS_KILLS] + izStats[STATS_DEATHS] );
  55. return (result > 100.0) ? 100.0 : result
  56. }
  57.  
  58. format_top15(sBuffer[MAX_BUFFER_LENGTH+1], statsFrom){
  59. statsFrom--;
  60. new iStatsMax = statsFrom + STATS_NUM;
  61. new iMax = get_statsnum();
  62. new izStats[8], izBody[8];
  63. new iLen = 0, iOldLen = 0;
  64.  
  65. if(iStatsMax > iMax)
  66. iStatsMax = iMax;
  67.  
  68. iLen = format( sBuffer, MAX_BUFFER_LENGTH,
  69. "<body bgcolor=#000000><font color=#FFB000><pre>" );
  70. iLen += format( sBuffer[iLen], MAX_BUFFER_LENGTH - iLen,
  71. "%2s %-22.22s %9s %9s %9s %9s %4s %4s %4s^n",
  72. "#",
  73. "Nick",
  74. "Kills",
  75. "Deaths",
  76. "Hits",
  77. "Shots",
  78. "HS",
  79. "Eff.",
  80. "Acc.");
  81. for(new i = statsFrom; i < iStatsMax && MAX_BUFFER_LENGTH - iLen > 0; i++) {
  82. get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH);
  83. iOldLen = iLen
  84. iLen += format( sBuffer[iLen], MAX_BUFFER_LENGTH - iLen,
  85. "%2d %-22.22s %9d %9d %9d %9d %4d %3.0f%% %3.0f%%^n", i+1, t_sName,
  86. izStats[STATS_KILLS], izStats[STATS_DEATHS], izStats[STATS_HITS],
  87. izStats[STATS_SHOTS], izStats[STATS_HS],
  88. effec( izStats ), accuracy( izStats ) );
  89. while(MAX_BUFFER_LENGTH-iLen > 2 && replace(sBuffer[iOldLen], MAX_BUFFER_LENGTH-iOldLen, "<", "&lt;")) {
  90. iLen += 3;
  91. }
  92. }
  93. }
  94.