Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.25 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <vault>
  5. #include <fun>
  6.  
  7. #define PLUGIN "Knife Mod"
  8. #define VERSION "1.0"
  9. #define AUTHOR "spunko"
  10.  
  11. #define TASK_INTERVAL 4.0
  12. #define MAX_HEALTH 255
  13.  
  14. new knife_model[33]
  15. new g_Menu
  16.  
  17. new CVAR_HIGHSPEED
  18. new CVAR_LOWSPEED
  19. new CVAR_LOWGRAV
  20. new CVAR_NORMGRAV
  21. new CVAR_HEALTH_ADD
  22. new CVAR_HEALTH_MAX
  23. new CVAR_DAMAGE
  24.  
  25. public plugin_init() {
  26.  
  27. register_plugin(PLUGIN, VERSION, AUTHOR)
  28.  
  29. register_event( "Damage", "event_damage", "be" )
  30. register_event("CurWeapon","CurWeapon","be","1=1")
  31.  
  32. g_Menu = register_menuid("Knife Mod")
  33. register_menucmd(g_Menu, 1023, "knifemenu")
  34.  
  35. register_clcmd("say /knife", "display_knife")
  36.  
  37. CVAR_HIGHSPEED = register_cvar("km_highspeed","340")
  38. CVAR_LOWSPEED = register_cvar("km_lowspeed","170")
  39. CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3")
  40. CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "75")
  41. CVAR_DAMAGE = register_cvar("km_damage", "2")
  42. CVAR_LOWGRAV = register_cvar("km_lowgravity" , "400")
  43. CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")
  44.  
  45. set_task(480.0, "kmodmsg", 0, _, _, "b")
  46. }
  47.  
  48. public plugin_precache() {
  49.  
  50. }
  51.  
  52. public display_knife(id) {
  53. new menuBody[512]
  54. add(menuBody, 511, "\rKnife Mod\w^n^n")
  55. add(menuBody, 511, "1. Maczeta \y(Wieksze obrazenia/Wolny bieg)\w^n")
  56. add(menuBody, 511, "2. Bak Knife \y(Bez dzwieku)\w^n")
  57. add(menuBody, 511, "3. Scyzoryk \y(Hight Speed)\w^n")
  58. add(menuBody, 511, "4. Noz Rzezniczy \y(Mala grawitacja)\w^n")
  59. add(menuBody, 511, "5. Zwykly \y(Regeneracja hp)\w^n^n")
  60. add(menuBody, 511, "0. Exit^n")
  61.  
  62. new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 )
  63. show_menu(id, keys, menuBody, -1, "Knife Mod")
  64. }
  65.  
  66. public knifemenu(id, key) {
  67. switch(key)
  68. {
  69. case 0: SetKnife(id , 4)
  70. case 1: SetKnife(id , 2)
  71. case 2: SetKnife(id , 3)
  72. case 3: SetKnife(id , 1)
  73. case 4: SetKnife(id , 0)
  74. default: return PLUGIN_HANDLED
  75. }
  76. SaveData(id)
  77. return PLUGIN_HANDLED
  78. }
  79.  
  80. public SetKnife(id , Knife) {
  81. knife_model[id] = Knife
  82.  
  83. new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
  84. if ( Weapon != CSW_KNIFE )
  85. return PLUGIN_HANDLED
  86.  
  87. new vModel[56],pModel[56]
  88.  
  89. return PLUGIN_HANDLED;
  90. }
  91.  
  92. public event_damage( id ) {
  93.  
  94. new victim_id = id;
  95. if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE
  96. new dmg_take = read_data( 2 );
  97. new dmgtype = read_data( 3 );
  98. new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
  99. new Float:damage = dmg_take * multiplier;
  100. new health = get_user_health( victim_id );
  101.  
  102. new iWeapID, attacker_id = get_user_attacker( victim_id, iWeapID );
  103.  
  104. if( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) {
  105. return PLUGIN_HANDLED
  106. }
  107.  
  108. if( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4 ) {
  109.  
  110. if( floatround(damage) >= health ) {
  111. if( victim_id == attacker_id ) {
  112. return PLUGIN_CONTINUE
  113. }else{
  114. log_kill( attacker_id, victim_id, "knife", 0 );
  115. }
  116.  
  117. return PLUGIN_CONTINUE
  118. }else {
  119. if( victim_id == attacker_id ) return PLUGIN_CONTINUE
  120.  
  121. fakedamage( victim_id, "weapon_knife", damage, dmgtype );
  122. }
  123. }
  124. return PLUGIN_CONTINUE
  125. }
  126.  
  127. public CurWeapon(id)
  128. {
  129. new Weapon = read_data(2)
  130.  
  131. // Set Knife Model
  132. SetKnife(id, knife_model[id])
  133.  
  134. // Task Options
  135.  
  136. if(knife_model[id] == 0 && !task_exists(id) && Weapon == CSW_KNIFE)
  137. set_task(TASK_INTERVAL , "task_healing",id,_,_,"b")
  138. else if(task_exists(id))
  139. remove_task(id)
  140.  
  141. // Abilities
  142. set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE) ? 1 : 0) )
  143.  
  144. new Float:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
  145. set_user_gravity(id , Gravity)
  146.  
  147. // Speed
  148. new Float:Speed
  149. if(Weapon != CSW_KNIFE || knife_model[id] < 3)
  150. return PLUGIN_CONTINUE
  151. else if(knife_model[id] == 3)
  152. Speed = get_pcvar_float(CVAR_HIGHSPEED)
  153. else if(knife_model[id] == 4)
  154. Speed = get_pcvar_float(CVAR_LOWSPEED)
  155.  
  156. set_user_maxspeed(id, Speed)
  157.  
  158. return PLUGIN_HANDLED
  159.  
  160. }
  161.  
  162. stock log_kill(killer, victim, weapon[],headshot) {
  163. user_silentkill( victim );
  164.  
  165. message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
  166. write_byte( killer );
  167. write_byte( victim );
  168. write_byte( headshot );
  169. write_string( weapon );
  170. message_end();
  171.  
  172. new kfrags = get_user_frags( killer );
  173. set_user_frags( killer, kfrags++ );
  174. new vfrags = get_user_frags( victim );
  175. set_user_frags( victim, vfrags++ );
  176.  
  177. return PLUGIN_CONTINUE
  178. }
  179.  
  180.  
  181. public task_healing(id) {
  182. new addhealth = get_pcvar_num(CVAR_HEALTH_ADD)
  183. if (!addhealth)
  184. return
  185.  
  186. new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX)
  187. if (maxhealth > MAX_HEALTH) {
  188. set_pcvar_num(CVAR_HEALTH_MAX, MAX_HEALTH)
  189. maxhealth = MAX_HEALTH
  190. }
  191.  
  192. new health = get_user_health(id)
  193.  
  194. if (is_user_alive(id) && (health < maxhealth)) {
  195. set_user_health(id, health + addhealth)
  196. set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
  197. show_hudmessage(id,"<< !!HEAL IN PROGRESS!! >>")
  198. message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
  199. write_short(1<<10)
  200. write_short(1<<10)
  201. write_short(0x0000)
  202. write_byte(0)
  203. write_byte(200)
  204. write_byte(0)
  205. write_byte(75)
  206. message_end()
  207. }
  208.  
  209. else {
  210. if (is_user_alive(id) && (health > maxhealth))
  211. remove_task(id)
  212. }
  213. }
  214.  
  215. public client_disconnect(id) {
  216. if(task_exists(id)) remove_task(id)
  217. }
  218.  
  219.  
  220. public kmodmsg() {
  221.  
  222. client_print(0,print_chat,"[AMXX] Wpisz /knife aby zmienic noz. Noze zawieraja indywidualny wyglad i wlasciwosci")
  223. }
  224.  
  225. public client_authorized(id)
  226. {
  227. LoadData(id)
  228. }
  229.  
  230. SaveData(id)
  231. {
  232.  
  233. new authid[32]
  234. get_user_authid(id, authid, 31)
  235.  
  236. new vaultkey[64]
  237. new vaultdata[64]
  238.  
  239. format(vaultkey, 63, "KMOD_%s", authid)
  240. format(vaultdata, 63, "%d", knife_model[id])
  241. set_vaultdata(vaultkey, vaultdata)
  242. }
  243.  
  244. LoadData(id)
  245. {
  246. new authid[32]
  247. get_user_authid(id,authid,31)
  248.  
  249. new vaultkey[64], vaultdata[64]
  250.  
  251. format(vaultkey, 63, "KMOD_%s", authid)
  252. get_vaultdata(vaultkey, vaultdata, 63)
  253. knife_model[id] = str_to_num(vaultdata)
  254.  
  255. }
  256. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  257. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
  258. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement