MegastoRM

novo

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