Advertisement
Guest User

Untitled

a guest
Jan 6th, 2011
443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.88 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <hamsandwich>
  4. #include <engine>
  5. #include <fakemeta>
  6.  
  7. #define PLUGIN "[Hns] Anti-BodyBlock"
  8. #define VERSION "1.0"
  9. #define AUTHOR "Xalus"
  10.  
  11. #define Tag "[Hide 'n Seek]"
  12.  
  13. new Blocked[33], Touched[33];
  14. new cStatus, cClassname, cBunnyhop, cNSBunnyhop, cTrampoline, cDmgBunnyhop, cBhopTask, cTrampTask;
  15.  
  16. public plugin_init() {
  17. register_plugin(PLUGIN, VERSION, AUTHOR);
  18.  
  19. /* Cvar */
  20. cStatus = register_cvar("bodyblock_status", "1");
  21. cClassname = register_cvar("bodyblock_classname", "bm_block");
  22. /* Blockmaker Number */
  23. /* Bunnyhops */
  24. cBunnyhop = register_cvar("bodyblock_bunnyhop", "1");
  25. cNSBunnyhop = register_cvar("bodyblock_noslowdownbunnyhop", "22");
  26. cDmgBunnyhop = register_cvar("bodyblock_damagebunnyhop", "999");
  27. /* Trampoline */
  28. cTrampoline = register_cvar("bodyblock_trampoline", "6");
  29. /* Task's */
  30. cBhopTask = register_cvar("bodyblock_bunnyhoptask", "4.0")
  31. cTrampTask = register_cvar("bodyblock_trampolinetask", "7.5")
  32.  
  33. /* Detect Touching */
  34. RegisterHam(Ham_Touch, "player", "PlayerTouch");
  35.  
  36. /* Player Damaged */
  37. RegisterHam(Ham_TakeDamage, "player", "FwdHamTakeDamage", 0);
  38. }
  39. /*
  40. Hns:
  41. - Player Touched Player
  42. - Reset Blocked
  43. */
  44. public PlayerTouch(id, player) {
  45. if(is_user_alive(id) && is_user_alive(player) && get_user_team(id) == 1 && get_pcvar_num(cStatus)) {
  46. if(Touched[id] && Touched[player])
  47. return PLUGIN_HANDLED;
  48.  
  49. Blocked[player] = id;
  50. set_task(2.0, "ResetBlocked", player);
  51. }
  52. return PLUGIN_CONTINUE;
  53. }
  54. public ResetBlocked(id)
  55. Blocked[id]=0;
  56. /*
  57. Hns:
  58. - Touch Bunnyhop / Trampoline block
  59. */
  60. public pfn_touch(ent, id) {
  61. if(get_pcvar_num(cStatus) && is_user_alive(id)) {
  62. if(isBlock(ent) && is_user_alive(id)) {
  63. new block_type = entity_get_int(ent, EV_INT_body);
  64. if ( block_type == get_pcvar_num(cBunnyhop) || block_type == get_pcvar_num(cNSBunnyhop) || block_type == get_pcvar_num(cDmgBunnyhop) || block_type == get_pcvar_num(cTrampoline) ) {
  65. if(!Touched[id])
  66. Touched[id]=true;
  67.  
  68. remove_task(id);
  69. if(block_type == get_pcvar_num(cTrampoline))
  70. set_task(get_pcvar_float(cTrampTask), "Touching", id)
  71. else
  72. set_task(get_pcvar_float(cBhopTask), "Touching", id);
  73. }
  74. }
  75. }
  76. }
  77. /*
  78. Hns:
  79. - Bhoping
  80. - On Trampoline
  81. */
  82. public Touching(id) {
  83. Touched[id]=false
  84. }
  85. /*
  86. Hns:
  87. - Player Damaged
  88. */
  89. public FwdHamTakeDamage(iVictim, iInflictor, iAttacker, Float:flDamage, iDamageBits) {
  90. if(is_user_alive(iVictim) && Blocked[iVictim] && iDamageBits & DMG_FALL && Touched[iVictim] && !Touched[Blocked[iVictim]]) {
  91. SetHamParamFloat(4, 0.0);
  92. /* Uber Slap! */
  93. user_slap(Blocked[iVictim], 1);
  94. user_slap(Blocked[iVictim], 1);
  95. /* Get Names */
  96. new szName[32]; get_user_name(Blocked[iVictim], szName, 31);
  97. new szName2[32]; get_user_name(iVictim, szName2, 31)
  98. /* Print Chat */
  99. ChatColor(0, "!g%s!team %s!y bodyblocked!team %s!y!", Tag, szName, szName2);
  100. /* Remove Task for no bugs */
  101. remove_task(iVictim);
  102. Touched[iVictim]=false
  103. }
  104. }
  105. /*
  106. Hns:
  107. - Is Block
  108. */
  109. bool:isBlock(ent) {
  110. if (is_valid_ent(ent)) {
  111. new szClassname[32]; pev(ent, pev_classname, szClassname, 32);
  112. new gClassname[32]; get_pcvar_string(cClassname, gClassname, 31);
  113.  
  114. if (equal(szClassname, gClassname))
  115. return true;
  116. }
  117. return false;
  118. }
  119. /*
  120. Hns:
  121. - Chat Color
  122. */
  123. stock ChatColor(const id, const input[], any:...) {
  124. new count = 1, players[32];
  125. static msg[191];
  126. vformat(msg, 190, input, 3);
  127.  
  128. replace_all(msg, 190, "!g", "^4"); // Green Color
  129. replace_all(msg, 190, "!y", "^1"); // Default Color
  130. replace_all(msg, 190, "!team", "^3"); // Team Color
  131.  
  132. if (id) players[0] = id; else get_players(players, count, "ch");
  133. {
  134. for (new i = 0; i < count; i++)
  135. {
  136. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
  137. write_byte(players[i]);
  138. write_string(msg);
  139. message_end();
  140. }
  141. }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement