MegastoRM

private

Apr 26th, 2012
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 11.09 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <vault>
  5. #include <fun>
  6.  
  7. #define PLUGIN "[SRB] Knife Mod"
  8. #define VERSION "1.1"
  9. #define AUTHOR "Robby"
  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("[SRB] 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.     precache_model("models/knife/v_rucni.mdl")
  50.     precache_model("models/knife/v_mac.mdl")
  51.     precache_model("models/knife/v_riba.mdl")
  52.     precache_model("models/knife/v_kosa.mdl")
  53.     precache_model("models/knife/v_srbija.mdl")
  54.     precache_model("models/knife2/v_butcher.mdl")
  55.     precache_model("models/knife2/p_butcher.mdl")
  56.     precache_model("models/knife2/v_machete.mdl")
  57.     precache_model("models/knife2/p_machete.mdl")
  58.     precache_model("models/knife2/v_bak.mdl")
  59.     precache_model("models/knife2/p_bak.mdl")
  60.     precache_model("models/knife2/v_pocket.mdl")
  61.     precache_model("models/knife2/p_pocket.mdl")
  62.     precache_model("models/v_knife.mdl")
  63.     precache_model("models/p_knife.mdl")
  64. }
  65.  
  66. public display_knife(id)
  67. {
  68.     new menu = menu_create("[SRB] Knife Mod:", "knifemenu");
  69.     menu_additem(menu, "\rObicni Knife-i\y");
  70.     menu_additem(menu, "\rPremium Knife-i\y");
  71.     menu_additem(menu, "\bBesplatni Premium Knife-i \y");
  72.     menu_additem(menu, "\rSpecialni Knife-i\y")
  73.     menu_display(id, menu);
  74. }
  75. public knifemenu(id, menu, item)
  76. {
  77.     //client_cmd(id, "spk QTM_CodMod/select");
  78.        
  79.     if(item == MENU_EXIT)
  80.     {
  81.             menu_destroy(menu);
  82.             return PLUGIN_CONTINUE;
  83.     }
  84.     switch(item)
  85.     {
  86.             case 0:
  87.             {
  88.              Obicni(id)
  89.             }
  90.             case 1:
  91.             {
  92.              Premium(id)
  93.             }
  94.             case 2:
  95.             {
  96.              Besplatni(id)
  97.             }
  98.             case 3:
  99.             {
  100.              Specialni(id)
  101.             }
  102.     }
  103.     return PLUGIN_CONTINUE;
  104. }
  105. public Obicni(id) {
  106.     new menuBody[512]
  107.     add(menuBody, 511, "\rObicni Knife-i\w^n^n")
  108.     add(menuBody, 511, "1. Krvavi Mac \y(Veci Damage/Manji Speed)\w^n")
  109.     add(menuBody, 511, "2. Losos \y(Necujan)\w^n")
  110.     add(menuBody, 511, "3. Smrtonosna Kosa \y(Veca Speed)\w^n")
  111.     add(menuBody, 511, "4. Metalne Sape \y(Manja Gravitacija)\w^n")
  112.     add(menuBody, 511, "5. [SRB] Knife \y(Povecan Healt)\w^n^n")
  113.     add(menuBody, 511, "0. Izadji^n")
  114.    
  115.     new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 )
  116.     show_menu(id, keys, menuBody, -1, "[SRB] Knife Mod")
  117. }
  118. public SetKnife(id , Knife) {
  119.     knife_model[id] = Knife
  120.    
  121.     new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
  122.     if ( Weapon != CSW_KNIFE )
  123.         return PLUGIN_HANDLED
  124.    
  125.     new vModel[56]
  126.    
  127.     switch(Knife)
  128.     {
  129.         case 0: {
  130.             format(vModel,55,"models/knife/v_mac.mdl")
  131.         }
  132.         case 1: {
  133.             format(vModel,55,"models/knife/v_riba.mdl")
  134.         }
  135.         case 2: {
  136.             format(vModel,55,"models/knife/v_kosa.mdl")
  137.         }
  138.         case 3: {
  139.             format(vModel,55,"models/knife/v_rucni.mdl")
  140.         }
  141.         case 4: {
  142.             format(vModel,55,"models/knife/v_srbija.mdl")
  143.         }
  144.     }
  145.    
  146.     entity_set_string(id, EV_SZ_viewmodel, vModel)
  147.    
  148.     return PLUGIN_HANDLED;  
  149. }
  150.  
  151. public Premium(id) {
  152.     new menuBody[512]
  153.     add(menuBody, 511, "\rPremium Knife-i\w^n^n")
  154.     add(menuBody, 511, "1. Krvavi Mac \y(Veci Damage/Manji Speed)\w^n")
  155.     add(menuBody, 511, "2. Losos \y(Necujan)\w^n")
  156.     add(menuBody, 511, "3. Smrtonosna Kosa \y(Veca Speed)\w^n")
  157.     add(menuBody, 511, "4. Metalne Sape \y(Manja Gravitacija)\w^n")
  158.     add(menuBody, 511, "5. [SRB] Knife \y(Povecan Healt)\w^n^n")
  159.     add(menuBody, 511, "0. Izadji^n")
  160.    
  161.     new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 )
  162.     show_menu(id, keys, menuBody, -1, "[SRB] Knife Mod")
  163. }
  164.  
  165. public SetKnife2(id , Knife2) {
  166.     knife_model[id] = Knife2
  167.    
  168.     new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
  169.     if ( Weapon != CSW_KNIFE )
  170.         return PLUGIN_HANDLED
  171.    
  172.     new vModel[56]
  173.    
  174.     switch(Knife2)
  175.     {
  176.         case 0: {
  177.             format(vModel,55,"models/knife/v_mac.mdl")
  178.         }
  179.         case 1: {
  180.             format(vModel,55,"models/knife/v_riba.mdl")
  181.         }
  182.         case 2: {
  183.             format(vModel,55,"models/knife/v_kosa.mdl")
  184.         }
  185.         case 3: {
  186.             format(vModel,55,"models/knife/v_rucni.mdl")
  187.         }
  188.         case 4: {
  189.             format(vModel,55,"models/knife/v_srbija.mdl")
  190.         }
  191.     }
  192.    
  193.     entity_set_string(id, EV_SZ_viewmodel, vModel)
  194.    
  195.     return PLUGIN_HANDLED;  
  196. }
  197.  
  198. public Besplatni(id) {
  199.     new menuBody[512]
  200.     add(menuBody, 511, "\rBesplatni Premium Knife-i\w^n^n")
  201.     add(menuBody, 511, "1. Krvavi Mac \y(Veci Damage/Manji Speed)\w^n")
  202.     add(menuBody, 511, "2. Losos \y(Necujan)\w^n")
  203.     add(menuBody, 511, "3. Smrtonosna Kosa \y(Veca Speed)\w^n")
  204.     add(menuBody, 511, "4. Metalne Sape \y(Manja Gravitacija)\w^n")
  205.     add(menuBody, 511, "5. [SRB] Knife \y(Povecan Healt)\w^n^n")
  206.     add(menuBody, 511, "0. Izadji^n")
  207.    
  208.     new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 )
  209.     show_menu(id, keys, menuBody, -1, "[SRB] Knife Mod")
  210. }
  211.  
  212. public SetKnife3(id , Knife3) {
  213.     knife_model[id] = Knife3
  214.    
  215.     new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
  216.     if ( Weapon != CSW_KNIFE )
  217.         return PLUGIN_HANDLED
  218.    
  219.     new vModel[56]
  220.    
  221.     switch(Knife3)
  222.     {
  223.         case 0: {
  224.             format(vModel,55,"models/knife/v_mac.mdl")
  225.         }
  226.         case 1: {
  227.             format(vModel,55,"models/knife/v_riba.mdl")
  228.         }
  229.         case 2: {
  230.             format(vModel,55,"models/knife/v_kosa.mdl")
  231.         }
  232.         case 3: {
  233.             format(vModel,55,"models/knife/v_rucni.mdl")
  234.         }
  235.         case 4: {
  236.             format(vModel,55,"models/knife/v_srbija.mdl")
  237.         }
  238.     }
  239.    
  240.     entity_set_string(id, EV_SZ_viewmodel, vModel)
  241.    
  242.     return PLUGIN_HANDLED;  
  243. }
  244.  
  245. public Specialni(id) {
  246.     new menuBody[512]
  247.     add(menuBody, 511, "\rSpecialni Knife-i\w^n^n")
  248.     add(menuBody, 511, "1. Krvavi Mac \y(Veci Damage/Manji Speed)\w^n")
  249.     add(menuBody, 511, "2. Losos \y(Necujan)\w^n")
  250.     add(menuBody, 511, "3. Smrtonosna Kosa \y(Veca Speed)\w^n")
  251.     add(menuBody, 511, "4. Metalne Sape \y(Manja Gravitacija)\w^n")
  252.     add(menuBody, 511, "5. [SRB] Knife \y(Povecan Healt)\w^n^n")
  253.     add(menuBody, 511, "0. Izadji^n")
  254.    
  255.     new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<9 )
  256.     show_menu(id, keys, menuBody, -1, "[SRB] Knife Mod")
  257. }
  258.  
  259. public SetKnife4(id , Knife4) {
  260.     knife_model[id] = Knife4
  261.    
  262.     new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
  263.     if ( Weapon != CSW_KNIFE )
  264.         return PLUGIN_HANDLED
  265.    
  266.     new vModel[56]
  267.    
  268.     switch(Knife4)
  269.     {
  270.         case 0: {
  271.             format(vModel,55,"models/knife/v_mac.mdl")
  272.         }
  273.         case 1: {
  274.             format(vModel,55,"models/knife/v_riba.mdl")
  275.         }
  276.         case 2: {
  277.             format(vModel,55,"models/knife/v_kosa.mdl")
  278.         }
  279.         case 3: {
  280.             format(vModel,55,"models/knife/v_rucni.mdl")
  281.         }
  282.         case 4: {
  283.             format(vModel,55,"models/knife/v_srbija.mdl")
  284.         }
  285.     }
  286.    
  287.     entity_set_string(id, EV_SZ_viewmodel, vModel)
  288.    
  289.     return PLUGIN_HANDLED;  
  290. }
  291.  
  292. public event_damage( id ) {
  293.    
  294.     new victim_id = id;
  295.     if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE
  296.     new dmg_take = read_data( 2 );
  297.     new dmgtype = read_data( 3 );
  298.     new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
  299.     new Float:damage = dmg_take * multiplier;
  300.     new health = get_user_health( victim_id );
  301.    
  302.     new iWeapID, attacker_id = get_user_attacker( victim_id, iWeapID );
  303.    
  304.     if( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) {
  305.         return PLUGIN_HANDLED
  306.     }
  307.    
  308.     if( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4 ) {
  309.        
  310.         if( floatround(damage) >= health ) {
  311.             if( victim_id == attacker_id ) {
  312.                 return PLUGIN_CONTINUE
  313.                 }else{
  314.                 log_kill( attacker_id, victim_id, "knife", 0 );
  315.             }
  316.            
  317.             return PLUGIN_CONTINUE
  318.             }else {
  319.             if( victim_id == attacker_id ) return PLUGIN_CONTINUE
  320.            
  321.             fakedamage( victim_id, "weapon_knife", damage, dmgtype );
  322.         }
  323.     }
  324.     return PLUGIN_CONTINUE
  325. }
  326.  
  327. public CurWeapon(id)
  328.     {
  329.     new Weapon = read_data(2)
  330.    
  331.     // Set Knife Model
  332.     SetKnife(id, knife_model[id])  
  333.    
  334.     // Task Options
  335.    
  336.     if(knife_model[id] == 0 && !task_exists(id) && Weapon == CSW_KNIFE)
  337.         set_task(TASK_INTERVAL , "task_healing",id,_,_,"b")
  338.     else if(task_exists(id))
  339.         remove_task(id)
  340.    
  341.     // Abilities
  342.     set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE) ? 1 : 0) )
  343.    
  344.     new Float:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
  345.     set_user_gravity(id , Gravity)
  346.    
  347.     // Speed
  348.     new Float:Speed
  349.     if(Weapon != CSW_KNIFE || knife_model[id] < 3)
  350.         return PLUGIN_CONTINUE
  351.     else if(knife_model[id] == 3)
  352.         Speed = get_pcvar_float(CVAR_HIGHSPEED)
  353.     else if(knife_model[id] == 4)
  354.         Speed = get_pcvar_float(CVAR_LOWSPEED)
  355.    
  356.     set_user_maxspeed(id, Speed)
  357.    
  358.     return PLUGIN_HANDLED  
  359.    
  360. }
  361.  
  362. stock log_kill(killer, victim, weapon[],headshot) {
  363.     user_silentkill( victim );
  364.    
  365.     message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
  366.     write_byte( killer );
  367.     write_byte( victim );
  368.     write_byte( headshot );
  369.     write_string( weapon );
  370.     message_end();
  371.    
  372.     new kfrags = get_user_frags( killer );
  373.     set_user_frags( killer, kfrags++ );
  374.     new vfrags = get_user_frags( victim );
  375.     set_user_frags( victim, vfrags++ );
  376.    
  377.     return  PLUGIN_CONTINUE
  378. }
  379.  
  380.  
  381. public task_healing(id) {  
  382.     new addhealth = get_pcvar_num(CVAR_HEALTH_ADD)  
  383.     if (!addhealth)
  384.         return  
  385.    
  386.     new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX)  
  387.     if (maxhealth > MAX_HEALTH) {
  388.         set_pcvar_num(CVAR_HEALTH_MAX, MAX_HEALTH)  
  389.         maxhealth = MAX_HEALTH
  390.     }  
  391.    
  392.     new health = get_user_health(id)  
  393.    
  394.     if (is_user_alive(id) && (health < maxhealth)) {
  395.         set_user_health(id, health + addhealth)
  396.         set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
  397.         show_hudmessage(id,"<< !!HEAL IN PROGRESS!! >>")
  398.         message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
  399.         write_short(1<<10)
  400.         write_short(1<<10)
  401.         write_short(0x0000)
  402.         write_byte(0)
  403.         write_byte(200)
  404.         write_byte(0)
  405.         write_byte(75)
  406.         message_end()
  407.     }
  408.    
  409.     else {
  410.         if (is_user_alive(id) && (health > maxhealth))
  411.             remove_task(id)
  412.     }
  413. }  
  414.  
  415. public client_disconnect(id)
  416. {  
  417.     SaveData(id)
  418.     if(task_exists(id)) remove_task(id)  
  419. }  
  420.  
  421.  
  422. public kmodmsg() {
  423.    
  424.     client_print(0,print_chat,"[[SRB] Knifes] Kucaj /knife da promenis svoj knife !!!")
  425. }  
  426.  
  427. public client_authorized(id)
  428.     {
  429.     LoadData(id)
  430. }
  431.  
  432. SaveData(id)
  433. {
  434.    
  435.     new authid[32]
  436.     get_user_authid(id, authid, 31)
  437.    
  438.     new vaultkey[64]
  439.     new vaultdata[64]
  440.    
  441.     format(vaultkey, 63, "KMOD_%s", authid)
  442.     format(vaultdata, 63, "%d", knife_model[id])
  443.     set_vaultdata(vaultkey, vaultdata)
  444. }
  445.  
  446. LoadData(id)
  447. {
  448.     new authid[32]
  449.     get_user_authid(id,authid,31)
  450.    
  451.     new vaultkey[64], vaultdata[64]
  452.    
  453.     format(vaultkey, 63, "KMOD_%s", authid)
  454.     get_vaultdata(vaultkey, vaultdata, 63)
  455.     knife_model[id] = str_to_num(vaultdata)
  456.    
  457. }
Advertisement
Add Comment
Please, Sign In to add comment