Advertisement
Guest User

Untitled

a guest
Oct 30th, 2022
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.82 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3.  
  4. #define PLUGIN "[DD2] (MVP) Najlepszy gracz"
  5. #define VERSION "0.07"
  6. #define AUTHOR "Leqally"
  7. #define MAX_PLAYERS 32
  8. //rozrabiaka
  9. #define PREPARE_HUD() set_dhudmessage(0, 255, 0, -1.0, 0.13, 0, 6.0, 6.0,_,_,2)
  10. //koniec szalenstwa
  11. #define PREPARE_HUD2() set_hudmessage(42, 42, 255, 0.62, -1.0, 0, 6.0, 6.0,_,_,1)
  12.  
  13. //#define DEBUG
  14.  
  15. new g_points[MAX_PLAYERS+1][2];
  16. new g_pointsThisRound[MAX_PLAYERS+1][2];
  17. new g_cvarLimit,g_cvarEndShow;
  18.  
  19. public plugin_init(){
  20. register_plugin(PLUGIN, VERSION, AUTHOR);
  21. register_event("DeathMsg","onDeath","a");
  22. register_event("TextMsg", "resetAll", "a", "2&#Game_will_restart_in" );
  23. register_event("TextMsg", "resetAll", "a", "2&#Game_C");
  24. register_logevent("onEndRound", 2, "1=Round_End")
  25. register_logevent("resetAllThisRound", 2, "1=Round_Start")
  26. g_cvarLimit=register_cvar("amx_spree_limit","5");
  27. g_cvarEndShow=register_cvar("amx_endshow","1");
  28. #if defined DEBUG
  29. register_concmd("show_points","cmd_show_points",ADMIN_KICK);
  30. #endif
  31. }
  32. reset(id){
  33. g_points[id][0]=0;
  34. g_points[id][1]=0;
  35. }
  36. resetRound(id){
  37. g_pointsThisRound[id][0]=0;
  38. g_pointsThisRound[id][1]=0;
  39. }
  40. public resetAllThisRound(){
  41. for(new i=0;i<=MAX_PLAYERS;i++)
  42. resetRound(i);
  43. }
  44. public resetAll(){
  45. for(new i=0;i<=MAX_PLAYERS;i++)
  46. reset(i);
  47. }
  48. public onEndRound(){
  49. if(get_pcvar_num(g_cvarEndShow))
  50. set_task(0.3,"podsumowanie");
  51. }
  52. public podsumowanie(){
  53. new bool:double=false;
  54. new id=0;
  55. for(new i=1;i<=MAX_PLAYERS;i++){
  56. if(g_pointsThisRound[id][0]==g_pointsThisRound[i][0]){
  57. if(g_pointsThisRound[id][1] == g_pointsThisRound[i][1]){
  58. double=true;
  59. }
  60. else if(g_pointsThisRound[id][1] < g_pointsThisRound[i][1]){
  61. id=i;
  62. double=false;
  63. }
  64. }
  65. else if(g_pointsThisRound[id][0] < g_pointsThisRound[i][0]){
  66. id=i;
  67. double=false;
  68. }
  69. }
  70. if(!double && id){
  71. PREPARE_HUD();
  72. new szNick[33];
  73. get_user_name(id,szNick,32);
  74. show_dhudmessage(0, "[DD2] %s %d zabojstwa oraz %d headshot",szNick,g_pointsThisRound[id][0],g_pointsThisRound[id][1]);
  75. }
  76. }
  77. public client_putinserver(id){
  78. reset(id);
  79. resetRound(id);
  80. }
  81. public client_disconnect(id){
  82. reset(id);
  83. resetRound(id);
  84. }
  85. public onDeath(){
  86. new kid=read_data(1);
  87. new vid=read_data(2);
  88. log_amx("%d->%d",kid,vid);
  89. if(!is_user_connected(kid)){
  90. reset(vid);
  91. return PLUGIN_CONTINUE;
  92. }
  93. log_amx("(2)%d->%d",kid,vid);
  94. g_points[kid][0]++;
  95. g_pointsThisRound[kid][0]++;
  96.  
  97. if(read_data(3)){
  98. g_points[kid][1]++;
  99. g_pointsThisRound[kid][1]++;
  100. }
  101. if(get_pcvar_num(g_cvarLimit)<=0)
  102. return PLUGIN_CONTINUE;
  103. if(g_points[vid][0]>=get_pcvar_num(g_cvarLimit)){
  104. new szVicNick[33],szKilNick[33];
  105. get_user_name(vid,szVicNick,32);
  106. get_user_name(kid,szKilNick,32);
  107. PREPARE_HUD2();
  108. show_hudmessage(0, "Szalenstwo zabijania^n%s^n [%d w tym %d w glowe]^n^nzatrzymane przez:^n%s",szVicNick,g_points[vid][0],g_points[vid][1],szKilNick);
  109. }
  110. reset(vid);
  111. return PLUGIN_CONTINUE;
  112. }
  113. #if defined DEBUG
  114. public cmd_show_points(id,level,cid){
  115. if( !cmd_access(id, level, cid, 1))
  116. return PLUGIN_HANDLED;
  117. client_print(id,print_console,"----------Points------------");
  118. new Players[32];
  119. new playerCount, id2;
  120. get_players(Players, playerCount);
  121. for ( new i=0; i<playerCount; i++){
  122. id2 = Players[i];
  123. client_print(id,print_console,"[%d] P=%d(%dhs), PTR=%d(%dhs)",id2,g_points[id2][0],g_points[id2][1],g_pointsThisRound[id2][0],g_pointsThisRound[id2][1])
  124. }
  125. client_print(id,print_console,"--------------------------");
  126. return PLUGIN_HANDLED;
  127. }
  128. #endif
  129.  
  130. stock __dhud_color;
  131. stock __dhud_x;
  132. stock __dhud_y;
  133. stock __dhud_effect;
  134. stock __dhud_fxtime;
  135. stock __dhud_holdtime;
  136. stock __dhud_fadeintime;
  137. stock __dhud_fadeouttime;
  138. stock __dhud_reliable;
  139.  
  140. stock set_dhudmessage( red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 6.0, Float:holdtime = 3.0, Float:fadeintime = 0.1, Float:fadeouttime = 1.5, bool:reliable = false )
  141. {
  142. #define clamp_byte(%1) ( clamp( %1, 0, 255 ) )
  143. #define pack_color(%1,%2,%3) ( %3 + ( %2 << 8 ) + ( %1 << 16 ) )
  144.  
  145. __dhud_color = pack_color( clamp_byte( red ), clamp_byte( green ), clamp_byte( blue ) );
  146. __dhud_x = _:x;
  147. __dhud_y = _:y;
  148. __dhud_effect = effects;
  149. __dhud_fxtime = _:fxtime;
  150. __dhud_holdtime = _:holdtime;
  151. __dhud_fadeintime = _:fadeintime;
  152. __dhud_fadeouttime = _:fadeouttime;
  153. __dhud_reliable = _:reliable;
  154.  
  155. return 1;
  156. }
  157.  
  158. stock show_dhudmessage( index, const message[], any:... )
  159. {
  160. new buffer[ 128 ];
  161. new numArguments = numargs();
  162.  
  163. if( numArguments == 2 )
  164. {
  165. send_dhudMessage( index, message );
  166. }
  167. else if( index || numArguments == 3 )
  168. {
  169. vformat( buffer, charsmax( buffer ), message, 3 );
  170. send_dhudMessage( index, buffer );
  171. }
  172. else
  173. {
  174. new playersList[ 32 ], numPlayers;
  175. get_players( playersList, numPlayers, "ch" );
  176.  
  177. if( !numPlayers )
  178. {
  179. return 0;
  180. }
  181.  
  182. new Array:handleArrayML = ArrayCreate();
  183.  
  184. for( new i = 2, j; i < numArguments; i++ )
  185. {
  186. if( getarg( i ) == LANG_PLAYER )
  187. {
  188. while( ( buffer[ j ] = getarg( i + 1, j++ ) ) ) {}
  189. j = 0;
  190.  
  191. if( GetLangTransKey( buffer ) != TransKey_Bad )
  192. {
  193. ArrayPushCell( handleArrayML, i++ );
  194. }
  195. }
  196. }
  197.  
  198. new size = ArraySize( handleArrayML );
  199.  
  200. if( !size )
  201. {
  202. vformat( buffer, charsmax( buffer ), message, 3 );
  203. send_dhudMessage( index, buffer );
  204. }
  205. else
  206. {
  207. for( new i = 0, j; i < numPlayers; i++ )
  208. {
  209. index = playersList[ i ];
  210.  
  211. for( j = 0; j < size; j++ )
  212. {
  213. setarg( ArrayGetCell( handleArrayML, j ), 0, index );
  214. }
  215.  
  216. vformat( buffer, charsmax( buffer ), message, 3 );
  217. send_dhudMessage( index, buffer );
  218. }
  219. }
  220.  
  221. ArrayDestroy( handleArrayML );
  222. }
  223.  
  224. return 1;
  225. }
  226.  
  227. stock send_dhudMessage( const index, const message[] )
  228. {
  229. message_begin( __dhud_reliable ? ( index ? MSG_ONE : MSG_ALL ) : ( index ? MSG_ONE_UNRELIABLE : MSG_BROADCAST ), SVC_DIRECTOR, _, index );
  230. {
  231. write_byte( strlen( message ) + 31 );
  232. write_byte( DRC_CMD_MESSAGE );
  233. write_byte( __dhud_effect );
  234. write_long( __dhud_color );
  235. write_long( __dhud_x );
  236. write_long( __dhud_y );
  237. write_long( __dhud_fadeintime );
  238. write_long( __dhud_fadeouttime );
  239. write_long( __dhud_holdtime );
  240. write_long( __dhud_fxtime );
  241. write_string( message );
  242. }
  243. message_end();
  244. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement