Advertisement
Guest User

adasd

a guest
Apr 19th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 24.72 KB | None | 0 0
  1. #include < amxmodx >
  2. #include < amxmisc>
  3. #include < engine >
  4. #include < cstrike >
  5. #include < fun >
  6. #include < hamsandwich >
  7. #include < fakemeta_util >
  8.  
  9. native fcs_get_user_credits(id);
  10. native fcs_set_user_credits(id, credits);
  11.  
  12. #define PLUGIN "Furien Shop"
  13. #define VERSION "0.1"
  14.  
  15. #define IsPlayer(%0)    ( 1 <= %0 <= g_iMaxPlayers )
  16.  
  17.  
  18. // -- | Shop | -- //
  19.  
  20. new const Prefix[  ] = "^x04[SHOP]^x01";
  21.  
  22. // == | Super-Knife | == //
  23.  
  24. new bool:Katana [ 33 ];
  25.  
  26. new v_Katana [ 66 ] = "models/v_sk2.mdl";
  27. //new p_Katana [ 66 ] = "models/lolpgl/p_dfknife.mdl";
  28.  
  29.  
  30. // -- | Take Damage | -- //
  31. new g_iMaxPlayers;
  32.  
  33. new bool: HaveNoFlash [ 33 ];
  34. new g_msgScreenFade;
  35.  
  36.  
  37. // -- | Pet | -- //
  38. #define fm_precache_model(%1)           engfunc(EngFunc_PrecacheModel,%1)
  39. #define fm_precache_sound(%1)           engfunc(EngFunc_PrecacheSound,%1)
  40. #define fm_remove_entity(%1)            engfunc(EngFunc_RemoveEntity, %1)
  41. #define fm_find_ent_by_class(%1,%2)     engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
  42. #define fm_set_user_gravity(%1,%2)      set_pev(%1,pev_gravity,%2)
  43.  
  44. #define PET_FLAG                        pev_flTimeStepSound
  45. #define PET_KILLED                      389
  46.  
  47. static const pet_model[] = "models/stukabat.mdl"
  48. static const pet_sounds[][] = { "bullchicken/bc_die1.wav", "bullchicken/bc_die2.wav", "bullchicken/bc_die3.wav", "bullchicken/bc_idle1.wav", "bullchicken/bc_pain3.wav" }
  49. static const pet_idle = 13
  50. static const pet_run = 13
  51. static const pet_die = 5
  52. static const Float:pet_idle_speed = 0.3
  53. static const Float:pet_run_speed = 10.0
  54. static const Float:player_gravity = 0.65
  55.  
  56. new item_pet[33]
  57. new item_have[33]
  58. new item_at_spawn[33]
  59. new Float:item_leaptime[33]
  60. new bool:g_has_speed[33]
  61.  
  62. new maxplayers, g_msgSayText
  63.  
  64. new Pet[33], Pack[33];
  65. new CountF[33] = 0, CountH[33] = 0;
  66. new Restrict[33], RestrictF[33];
  67.  
  68. public plugin_init() {
  69.     register_plugin(PLUGIN, VERSION, "Truth");
  70.    
  71.     //Register Shop
  72.     register_clcmd("say /shop", "FurienShop" );
  73.     register_clcmd("say shop", "FurienShop" );
  74.     register_clcmd("say_team /shop", "FurienShop" );
  75.     register_clcmd("say_team shop", "FurienShop" );
  76.    
  77.     //Register Arme
  78.     register_event ( "CurWeapon", "CurrWeapon", "be", "1=1" );
  79.     RegisterHam ( Ham_TakeDamage, "player", "Player_TakeDamage" );
  80.     RegisterHam ( Ham_Spawn, "player", "Spawn", true );
  81.    
  82.     register_event("ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199")
  83.    
  84.    
  85.     g_iMaxPlayers = get_maxplayers (    );
  86.     g_msgScreenFade = get_user_msgid("ScreenFade")
  87.    
  88.    
  89.     //Pet
  90.     register_event("DeathMsg","DeathMsg","a")
  91.     register_event("HLTV","HLTV", "a","1=0", "2=0")
  92.    
  93.     register_forward(FM_Think,"FM_Think_hook")
  94.     register_forward(FM_PlayerPreThink, "FM_PlayerPreThink_hook")
  95.    
  96.     RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
  97.    
  98.     maxplayers = get_maxplayers()
  99.     g_msgSayText = get_user_msgid("SayText")
  100. }
  101.  
  102.  
  103. public plugin_precache ( ) {
  104.    
  105.     //Super-Knife
  106.     precache_model ( v_Katana );
  107.     ///precache_model ( p_Katana );
  108.    
  109.     //Pet
  110.     new i = 0
  111.    
  112.     for(i = 0; i < sizeof pet_sounds; i++)
  113.         fm_precache_sound(pet_sounds[i])
  114.    
  115.     fm_precache_model(pet_model)
  116. }
  117.  
  118.  
  119.  
  120. public Spawn( id ) {
  121.    
  122.     if ( !is_user_connected ( id ) )
  123.         return;
  124.     strip_user_weapons(id)
  125.     give_item(id, "weapon_knife" );
  126.    
  127.     HaveNoFlash [ id ] = false;
  128.     Katana [ id ] = false;
  129.     Pet[id] = false;
  130.     Pack[id] = false;
  131.     CountF[id] = 0;
  132.     CountH[id] = 0;
  133.     Restrict[id] = false;
  134.     RestrictF[id] = false;
  135.    
  136. }
  137. public CurrWeapon ( id ) {
  138.    
  139.     if ( Katana [ id ] && get_user_weapon ( id ) == CSW_KNIFE ) {
  140.        
  141.         set_pev ( id, pev_viewmodel2, v_Katana );
  142.         //set_pev ( id, pev_weaponmodel2, p_Katana );
  143.     }
  144. }
  145.  
  146. public FurienShop ( id ) {
  147.    
  148.     if ( cs_get_user_team(id) == CS_TEAM_T ) {
  149.        
  150.         ShopFurien( id )
  151.     }
  152.    
  153.     if ( cs_get_user_team (id ) == CS_TEAM_CT ) {
  154.        
  155.         ShopAntiFurien ( id )
  156.     }
  157. }
  158.  
  159. public ShopAntiFurien ( id ) {  
  160.    
  161.     new Temp[101], credits = fcs_get_user_credits(id);
  162.    
  163.     formatex(Temp,100, "\yShop Anti-Furien \y:^nCreditele Tale:\r %d", credits);
  164.     new menu = menu_create(Temp, "AntiFurien")
  165.    
  166.     menu_additem(menu, "\yPack HP si AP [\r9 Credite\y]", "1", 0);
  167.     menu_additem(menu, "\y50AP [\r3 Credite\y]", "2", 0);
  168.     menu_additem(menu, "\y50HP [\r3 Credite\y]", "3", 0);
  169.     menu_additem(menu, "\yHe Grenade [\r3 Credite\y]", "4", 0);
  170.     menu_additem(menu, "\yFrostNade [\r3 Credite\y]", "5", 0);
  171.     menu_additem(menu, "\yNo Flash [\r5 Credite\y]^n", "6", 0);
  172.     menu_additem(menu, "\yAnimal-Pet [\r15 Credite\y]", "7", 0);
  173.    
  174.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  175.     menu_display(id, menu, 0);
  176.    
  177. }
  178.  
  179. public ShopFurien( id ) {    
  180.    
  181.     new Temp[101], credits = fcs_get_user_credits(id);
  182.    
  183.     formatex(Temp,100, "\yShop Furien \y:^nCreditele Tale:\r %d", credits);
  184.     new menu = menu_create(Temp, "Furien")
  185.    
  186.     menu_additem(menu, "\ySuper Knife x2 DMG [\r15 Credite\y]", "1", 0);
  187.     menu_additem(menu, "\yPack HP + AP [\r9 Credite\y]", "2", 0 );
  188.     menu_additem(menu, "\y50AP [\r3 Credite\y]", "3", 0);
  189.     menu_additem(menu, "\y50HP [\r3 Credite\y]", "4", 0 );
  190.     menu_additem(menu, "\yHe Grenade [\r3 Credite\y]", "5", 0);
  191.     menu_additem(menu, "\yFrostNade [\r3 Credite\y]", "6", 0);
  192.     menu_additem(menu, "\yNo Flash [\r5 Credite\y]", "7", 0);
  193.    
  194.    
  195.    
  196.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  197.     menu_display(id, menu, 0);
  198.    
  199. }
  200.  
  201. public Furien(id, menu, item) {
  202.    
  203.     if( item == MENU_EXIT )
  204.         {
  205.         return 1;
  206.     }
  207.    
  208.     new data [ 6 ], szName [ 64 ];
  209.     new access, callback;
  210.     menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
  211.     new key = str_to_num ( data );
  212.    
  213.     switch ( key )
  214.     {  
  215.        
  216.        
  217.         case 1:
  218.         {
  219.             if( get_user_team(id) == 1 ) {
  220.                 if(Katana[ id ]) {
  221.                     ColorChat( id, "%s Ai deja acest item.", Prefix);
  222.                     return 1;
  223.                 }
  224.                 new iCredits = fcs_get_user_credits ( id ) - 15;
  225.                 if( iCredits < 0 ) {
  226.                     ColorChat( id, "%s Nu ai credite suficiente.", Prefix);
  227.                     return 1;
  228.                    
  229.                 }
  230.                 else
  231.                 {
  232.                     Katana [ id ] = true;
  233.                     CurrWeapon(id);
  234.                    
  235.                     ColorChat(id, "%s Ai cumparat Super Knife x2 DMG.", Prefix );
  236.                     fcs_set_user_credits(id, iCredits);
  237.                 }
  238.             }
  239.             else
  240.             {
  241.                 ColorChat(id, "%s Doar Teroristi au acces la accest meniu.", Prefix );
  242.             }
  243.         }
  244.        
  245.         case 2:
  246.         {
  247.             if( get_user_team(id) == 1 ) {
  248.                 new iCredits = fcs_get_user_credits ( id ) - 9;
  249.                 if( iCredits < 0 ) {
  250.                     ColorChat( id, "!%s Nu ai suficiente credite.", Prefix);
  251.                     return 1;
  252.                    
  253.                 }
  254.                 else
  255.                 {
  256.                     new Health = get_user_health ( id );
  257.                     if ( Health < 250 ) {
  258.                         fm_set_user_health( id, 250 );
  259.                         fm_set_user_armor( id, 250 );
  260.                         ColorChat(id, "%s Ai cumparat Pack HP si AP.", Prefix );
  261.                         fcs_set_user_credits ( id, iCredits );
  262.                         return 1;
  263.                     }
  264.                    
  265.                     if ( Health >= 250 ) {
  266.                        
  267.                         ColorChat( id, "%s Ai atins limita de HP.", Prefix);
  268.                         return 1;
  269.                     }
  270.                 }
  271.             }
  272.             else
  273.             {
  274.                 ColorChat(id, "%s Doar Teroristi au acces la accest meniu.", Prefix );
  275.             }
  276.         }
  277.        
  278.        
  279.         case 3:
  280.         {
  281.             if( get_user_team(id) == 1 ) {
  282.                 new iCredits = fcs_get_user_credits ( id ) - 3;
  283.                 if( iCredits < 0 ) {
  284.                     ColorChat( id, "%s Nu ai suficiente credite.", Prefix );
  285.                     return 1;
  286.                    
  287.                 }
  288.                 else
  289.                 {
  290.                     new Armor = get_user_armor ( id );
  291.                     if ( Armor < 300 ) {
  292.                         fm_set_user_armor( id, get_user_armor ( id ) + 50 );
  293.                         ColorChat(id, "%s Ai cumparat 50 AP.", Prefix );
  294.                         fcs_set_user_credits ( id, iCredits );
  295.                         return 1;
  296.                     }
  297.                    
  298.                     if ( Armor >= 300 ) {
  299.                        
  300.                         ColorChat( id, "%s Ai atins limita de AP.", Prefix);
  301.                         return 1;
  302.                     }
  303.                 }
  304.             }
  305.             else
  306.             {
  307.                 ColorChat(id, "%s Doar Teroristi au acces la accest meniu.", Prefix );
  308.             }
  309.         }
  310.        
  311.         case 4:
  312.         {
  313.             if( get_user_team(id) == 1 ) {
  314.                 new iCredits = fcs_get_user_credits ( id ) - 3;
  315.                 if( iCredits < 0 ) {
  316.                     ColorChat( id, "!%s Nu ai suficiente credite.", Prefix);
  317.                     return 1;
  318.                    
  319.                 }
  320.                 else
  321.                 {
  322.                     new Health = get_user_health ( id );
  323.                     if ( Health < 250 ) {
  324.                         fm_set_user_health( id, get_user_health ( id ) + 50 );
  325.                         ColorChat(id, "%s Ai cumparat 50 HP.", Prefix );
  326.                         fcs_set_user_credits ( id, iCredits );
  327.                         return 1;
  328.                     }
  329.                    
  330.                     if ( Health >= 250 ) {
  331.                        
  332.                         ColorChat( id, "%s Ai atins limita de HP.", Prefix);
  333.                         return 1;
  334.                     }
  335.                 }
  336.             }
  337.             else
  338.             {
  339.                 ColorChat(id, "%s Doar Teroristi au acces la accest meniu.", Prefix );
  340.             }
  341.         }
  342.        
  343.        
  344.         case 5:
  345.         {
  346.             if( get_user_team(id) == 1 ) {
  347.                 if(Restrict[id]) {
  348.                     ColorChat(id, "%s Poti cumpara doar odata la 5 secunde.", Prefix );
  349.                     return 1;
  350.                 }
  351.                 if(CountH[id] == 4) {
  352.                     ColorChat(id, "%s Ai atins limita de HE.", Prefix );
  353.                     return 1;
  354.                 }
  355.                 if( get_user_weapon(id) == CSW_HEGRENADE) {
  356.                     ColorChat(id, "%s Detii deja un HE.", Prefix );
  357.                 }
  358.                 new iCredits = fcs_get_user_credits ( id ) - 3;
  359.                 if( iCredits < 0 ) {
  360.                     ColorChat( id, "%s Nu ai suficiente credite.", Prefix);
  361.                     return 1;
  362.                    
  363.                 }
  364.                 else
  365.                 {
  366.                     CountH[id]++;
  367.                     Restrict[id] = true;
  368.                     set_task(4.0, "RestrictHE", id);
  369.                     fm_give_item(id, "weapon_hegrenade");
  370.                     fcs_set_user_credits(id, iCredits);
  371.                     return 1;
  372.                 }
  373.             }
  374.             else
  375.             {
  376.                 ColorChat(id, "%s Doar Teroristi au acces la accest meniu.", Prefix );
  377.             }
  378.         }
  379.        
  380.         case 6:
  381.         {
  382.             if( get_user_team(id) == 1 ) {
  383.                 if(RestrictF[id]) {
  384.                     ColorChat(id, "%s Poti cumpara doar odata la 5 secunde.", Prefix );
  385.                     return 1;
  386.                 }
  387.                 if(CountF[id] == 4) {
  388.                     ColorChat(id, "%s Ai atins limita de Forst Nade.", Prefix );
  389.                     return 1;
  390.                 }
  391.                 if( get_user_weapon(id) == CSW_SMOKEGRENADE) {
  392.                     ColorChat(id, "%s Detii deja un FrostNade.", Prefix );
  393.                 }
  394.                 new iCredits = fcs_get_user_credits ( id ) - 3;
  395.                 if( iCredits < 0 ) {
  396.                     ColorChat( id, "%s Nu ai suficiente credite.", Prefix);
  397.                     return 1;
  398.                    
  399.                 }
  400.                 else
  401.                 {
  402.                     CountF[id]++;
  403.                     RestrictF[id] = true;
  404.                     set_task(4.0, "RestrictieFN", id);
  405.                     fm_give_item(id, "weapon_smokegrenade");
  406.                     fcs_set_user_credits(id, iCredits);
  407.                     return 1;
  408.                 }
  409.             }
  410.             else
  411.             {
  412.                 ColorChat(id, "%s Doar Teroristi au acces la accest meniu.", Prefix );
  413.             }
  414.         }
  415.         case 7:
  416.         {
  417.             if( get_user_team(id) == 1 ) {
  418.                 if(HaveNoFlash[id]) {
  419.                     ColorChat( id, "%s Ai deja NoFlash.", Prefix);
  420.                     return 1;
  421.                 }
  422.                 new iCredits = fcs_get_user_credits ( id ) - 5;
  423.                 if( iCredits < 0 ) {
  424.                     ColorChat( id, "%s Nu ai suficiente credite.", Prefix);
  425.                     return 1;
  426.                    
  427.                 }
  428.                 else
  429.                 {
  430.                     HaveNoFlash [ id ] = true;
  431.                    
  432.                     ColorChat(id, "%s Ai cumparat No Flash.", Prefix );
  433.                     fcs_set_user_credits(id, iCredits);
  434.                     return 1;
  435.                 }
  436.             }
  437.             else
  438.             {
  439.                 ColorChat(id, "%s Doar Teroristi au acces la accest meniu.", Prefix );
  440.             }
  441.         }
  442.        
  443.        
  444.     }
  445.     menu_destroy(menu);
  446.     return 1;
  447. }
  448.  
  449. public AntiFurien(id, menu, item ) {
  450.    
  451.     if( item == MENU_EXIT )
  452.         {
  453.         return 1;
  454.     }
  455.    
  456.     new data [ 6 ], szName [ 64 ];
  457.     new access, callback;
  458.     menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
  459.     new key = str_to_num ( data );
  460.    
  461.     switch ( key )
  462.     {
  463.        
  464.         case 1:
  465.         {
  466.             if( get_user_team(id) == 2 ) {
  467.                 if(Pet[id]) {
  468.                     ColorChat(id, "%s Poti cumpara pack-ul doar fara pet.", Prefix);
  469.                     return 1;
  470.                 }
  471.                 new iCredits = fcs_get_user_credits ( id ) - 9;
  472.                 if( iCredits < 0 ) {
  473.                     ColorChat( id, "!%s Nu ai suficiente credite.", Prefix);
  474.                     return 1;
  475.                    
  476.                 }
  477.                 else
  478.                 {
  479.                     new Health = get_user_health ( id );
  480.                     if ( Health < 250 ) {
  481.                         fm_set_user_health( id, 250 );
  482.                         fm_set_user_armor( id, 250 );
  483.                         ColorChat(id, "%s Ai cumparat Pack HP si AP.", Prefix );
  484.                         Pack[id] = true;
  485.                         fcs_set_user_credits ( id, iCredits );
  486.                         return 1;
  487.                     }
  488.                    
  489.                     if ( Health >= 250 ) {
  490.                        
  491.                         ColorChat( id, "%s Ai atins limita de HP.", Prefix);
  492.                         return 1;
  493.                     }
  494.                 }
  495.             }
  496.             else
  497.             {
  498.                 ColorChat(id, "%s Doar Counter-Teroristi au acces la accest meniu.", Prefix );
  499.             }
  500.         }
  501.        
  502.        
  503.        
  504.        
  505.         case 2:
  506.         {
  507.             if( get_user_team(id) == 2 ) {
  508.                 new iCredits = fcs_get_user_credits ( id ) - 3;
  509.                 if( iCredits < 0 ) {
  510.                     ColorChat( id, "%s Nu ai suficiente credite.", Prefix );
  511.                     return 1;
  512.                    
  513.                 }
  514.                 else
  515.                 {
  516.                     new Armor = get_user_armor ( id );
  517.                     if ( Armor < 300 ) {
  518.                         fm_set_user_armor( id, get_user_armor ( id ) + 50 );
  519.                         ColorChat(id, "%s Ai cumparat 50 AP.", Prefix );
  520.                         fcs_set_user_credits ( id, iCredits );
  521.                         return 1;
  522.                     }
  523.                    
  524.                     if ( Armor >= 300 ) {
  525.                        
  526.                         ColorChat( id, "%s Ai atins limita de AP.", Prefix);
  527.                         return 1;
  528.                     }
  529.                 }
  530.             }
  531.             else
  532.             {
  533.                 ColorChat(id, "%s Doar Counter-Teroristi au acces la accest meniu.", Prefix );
  534.             }
  535.         }
  536.        
  537.         case 3:
  538.         {
  539.             if( get_user_team(id) == 2 ) {
  540.                 new iCredits = fcs_get_user_credits ( id ) - 3;
  541.                 if( iCredits < 0 ) {
  542.                     ColorChat( id, "!%s Nu ai suficiente credite.", Prefix);
  543.                     return 1;
  544.                    
  545.                 }
  546.                 else
  547.                 {
  548.                     new Health = get_user_health ( id );
  549.                     if ( Health < 250 ) {
  550.                         fm_set_user_health( id, get_user_health ( id ) + 50 );
  551.                         ColorChat(id, "%s Ai cumparat 50 HP.", Prefix );
  552.                         fcs_set_user_credits ( id, iCredits );
  553.                         return 1;
  554.                     }
  555.                    
  556.                     if ( Health >= 250 ) {
  557.                        
  558.                         ColorChat( id, "%s Ai atins limita de HP.", Prefix);
  559.                         return 1;
  560.                     }
  561.                 }
  562.             }
  563.             else
  564.             {
  565.                 ColorChat(id, "%s Doar Counter-Teroristi au acces la accest meniu.", Prefix );
  566.             }
  567.         }
  568.        
  569.        
  570.         case 4:
  571.         {
  572.            
  573.             if( get_user_team(id) == 2 ){
  574.                 if(CountH[id] == 4) {
  575.                     ColorChat(id, "%s Ai atins limita de HE.", Prefix );
  576.                     return 1;
  577.                 }
  578.                 if( get_user_weapon(id) == CSW_HEGRENADE){
  579.                     ColorChat(id, "%s Detii deja un HE.", Prefix );
  580.                     return 1;
  581.                 }
  582.                 new iCredits = fcs_get_user_credits ( id ) - 3;
  583.                 if( iCredits < 0 ){
  584.                     ColorChat( id, "%s Nu ai credite suficiente.", Prefix);
  585.                     return 1;
  586.                    
  587.                 }
  588.                 else
  589.                 {
  590.                     CountH[id]++;
  591.                     Restrict[id] = true;
  592.                     set_task(4.0, "RestrictHE", id);
  593.                     fm_give_item(id, "weapon_hegrenade");
  594.                     fcs_set_user_credits(id, iCredits);
  595.                     return 1;
  596.                 }
  597.             }
  598.             else
  599.             {
  600.                 ColorChat(id, "%s Doar Counter-Teroristi au acces la accest meniu.", Prefix );
  601.             }
  602.         }
  603.        
  604.         case 5:
  605.         {
  606.             if( get_user_team(id) == 2 ) {
  607.                 if(RestrictF[id]) {
  608.                     ColorChat(id, "%s Poti cumpara doar odata la 5 secunde.", Prefix );
  609.                     return 1;
  610.                 }
  611.                 if( get_user_weapon(id) == CSW_SMOKEGRENADE) {
  612.                     ColorChat(id, "%s Detii deja un FrostNade.", Prefix );
  613.                     return 1;
  614.                 }
  615.                 if(CountF[id] == 4) {
  616.                     ColorChat(id, "%s Ai atins limita de Forst Nade.", Prefix );
  617.                     return 1;
  618.                 }
  619.                 new iCredits = fcs_get_user_credits ( id ) - 3;
  620.                 if( iCredits < 0 ) {
  621.                     ColorChat( id, "%s Nu ai suficiente credite.", Prefix);
  622.                     return 1;
  623.                    
  624.                 }
  625.                 else
  626.                 {
  627.                     CountF[id]++;
  628.                     RestrictF[id] = true;
  629.                     set_task(4.0, "RestrictFN", id);
  630.                     fm_give_item(id, "weapon_smokegrenade");
  631.                     fcs_set_user_credits(id, iCredits);
  632.                     return 1;
  633.                 }
  634.             }
  635.             else
  636.             {
  637.                 ColorChat(id, "%s Doar Counter-Teroristi au acces la accest meniu.", Prefix );
  638.             }
  639.         }
  640.         case 6:
  641.         {
  642.            
  643.             if( get_user_team(id) == 2 ) {
  644.                 new iCredits = fcs_get_user_credits ( id ) - 5;
  645.                 if( iCredits < 0 ) {
  646.                     ColorChat( id, "%s Nu ai credite suficiente.", Prefix);
  647.                     return 1;
  648.                    
  649.                 }
  650.                 else
  651.                 {
  652.                     HaveNoFlash [ id ] = true;
  653.                    
  654.                     ColorChat(id, "%s Ai cumparat No Flash.", Prefix );
  655.                     fcs_set_user_credits(id, iCredits);
  656.                     return 1;
  657.                 }
  658.             }
  659.             else
  660.             {
  661.                 ColorChat(id, "%s Doar Counter-Teroristi au acces la accest meniu.", Prefix );
  662.             }
  663.            
  664.         }
  665.        
  666.        
  667.         case 7:
  668.         {
  669.             if(Pack[id]) {
  670.                 ColorChat(id, "%s Poti cumpara pet-ul doar fara pack.", Prefix);
  671.                 return 1;
  672.             }
  673.             buypet(id);
  674.         }
  675.     }
  676.     menu_destroy(menu);
  677.     return 1;
  678. }
  679.  
  680. public RestrictHE ( id ) {
  681.     Restrict[id] = false;
  682.     return 1;
  683. }
  684. public RestrictFN ( id ) {
  685.     Restrict[id] = false;
  686.     return 1;
  687. }
  688.  
  689. public eventFlash(id) {
  690.     if(is_user_connected(id) && HaveNoFlash [ id ]) {
  691.         message_begin(MSG_ONE, g_msgScreenFade, {0,0,0}, id)
  692.         write_short(1)
  693.         write_short(1)
  694.         write_short(1)
  695.         write_byte(0)
  696.         write_byte(0)
  697.         write_byte(0)
  698.         write_byte(255)
  699.         message_end()
  700.     }
  701. }
  702.  
  703. public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits )  {
  704.     if ( IsPlayer ( iAttacker ) ) {
  705.         if( iInflictor == iAttacker && Katana [ iAttacker ] && is_user_alive( iAttacker ) && get_user_weapon( iAttacker ) == CSW_KNIFE && cs_get_user_team( iAttacker ) == CS_TEAM_T ) {
  706.             SetHamParamFloat( 4, fDamage * 2.0);
  707.             return HAM_HANDLED;
  708.         }
  709.     }
  710.    
  711.     return HAM_IGNORED;
  712. }
  713.  
  714. public HLTV() {
  715.     new entid = -1
  716.     while((entid = fm_find_ent_by_class(entid, "zp_bat"))) {
  717.         if(pev(entid,PET_FLAG) == PET_KILLED)
  718.             {
  719.             fm_remove_entity(entid)
  720.         }              
  721.     }      
  722. }
  723. public client_disconnect(id)
  724.    remove_task(id)
  725.    
  726. public DeathMsg() {
  727.     new id = read_data(2)
  728.    
  729.     if(item_have[id]) {
  730.         kill_pet(id)
  731.         item_have[id] = 0
  732.     }
  733.    
  734.     if (!is_user_alive(id)){
  735.         return PLUGIN_HANDLED
  736.         } else {
  737.        
  738.        
  739.         if(cs_get_user_team(id) == CS_TEAM_T)
  740.             item_have[id] = 0
  741.        
  742.         if(g_has_speed[id])
  743.             g_has_speed[id] = false
  744.     }
  745.     return PLUGIN_CONTINUE;
  746. }
  747.  
  748. public buypet(id) {
  749.     if (!is_user_alive(id)) {
  750.         ColorChat(id, "%s Nu poti cumpara pet cand esti mort.", Prefix);
  751.         return PLUGIN_HANDLED;
  752.     }
  753.    
  754.     if (cs_get_user_team(id) != CS_TEAM_CT) {
  755.         ColorChat(id, "%s Numai^x03 Anti-furienii^x01 pot cumpara pet.", Prefix);
  756.         return PLUGIN_HANDLED;
  757.     }
  758.    
  759.     if (!item_have[id]) {      
  760.         if (fcs_get_user_credits(id) >= 15) {
  761.             fcs_set_user_credits(id, fcs_get_user_credits(id) - 15);
  762.             ColorChat(id, "%s Ai cumparat^x03 PET.", Prefix);
  763.             create_pet(id)
  764.         }else
  765.         ColorChat(id, "%s Nu ai destule^x03 credite.", Prefix);
  766.     }else
  767.     ColorChat(id, "%s Detii deja un pet!", Prefix);
  768.    
  769.     return PLUGIN_CONTINUE;
  770. }
  771.  
  772. public kill_pet(id) {
  773.     if(pev_valid(item_pet[id]))
  774.         {
  775.         set_pev(item_pet[id],pev_sequence,pet_die)
  776.         set_pev(item_pet[id],pev_gaitsequence,pet_die)
  777.         set_pev(item_pet[id],pev_framerate,1.0)
  778.        
  779.         set_pev(item_pet[id],PET_FLAG,PET_KILLED)
  780.        
  781.         fm_drop_to_floor(item_pet[id])
  782.        
  783.         item_have[id] = 0
  784.         g_has_speed[id] = false
  785.     }      
  786.     item_pet[id] = 0
  787. }
  788.  
  789. public player_spawn(player) {
  790.     if(is_user_alive(player)) {
  791.         if (cs_get_user_team(player) != CS_TEAM_CT) {
  792.             kill_pet(player)
  793.             item_have[player] = 0
  794.         }
  795.         if(item_have[player]) {
  796.             fm_set_user_gravity(player, player_gravity)
  797.             set_user_health(player, 250)
  798.             set_user_armor(player, 250)
  799.             g_has_speed[player] = true
  800.         }
  801.         else if(item_at_spawn[player]) {
  802.             create_pet(player)
  803.             item_at_spawn[player] = 0
  804.             g_has_speed[player] = true
  805.         }
  806.     }
  807. }
  808.  
  809. public create_pet(id) {
  810.     if(item_have[id]) {
  811.         ColorChat(id, "%s Detii deja un^x03 pet.", Prefix)
  812.         return PLUGIN_HANDLED
  813.     }
  814.     else if(!is_user_alive(id)) {
  815.         ColorChat(id, "%s Petul iti va aparea runda viitoare.", Prefix)
  816.         item_at_spawn[id] = 1
  817.         return PLUGIN_HANDLED
  818.     }      
  819.     else
  820.     {
  821.         item_pet[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
  822.         set_pev(item_pet[id],pev_classname,"zp_bat")
  823.        
  824.         engfunc(EngFunc_SetModel,item_pet[id],pet_model)
  825.        
  826.         new Float:origin[3]
  827.         pev(id,pev_origin,origin)                      
  828.        
  829.         set_pev(item_pet[id],pev_origin,origin)
  830.         set_pev(item_pet[id],pev_solid,SOLID_TRIGGER)
  831.         set_pev(item_pet[id],pev_movetype,MOVETYPE_FLY)
  832.         set_pev(item_pet[id],pev_owner,33)
  833.         set_pev(item_pet[id],pev_nextthink,1.0)
  834.         set_pev(item_pet[id],pev_sequence,0)
  835.         set_pev(item_pet[id],pev_gaitsequence,0)
  836.         set_pev(item_pet[id],pev_framerate,1.0)
  837.        
  838.         set_pev(item_pet[id], pev_renderfx, kRenderFxGlowShell)
  839.         set_pev(item_pet[id], pev_rendercolor, Float:{0.0, 0.0, 200.0})
  840.        
  841.         fm_set_user_gravity(id,player_gravity)
  842.        
  843.         set_user_health(id, 400)
  844.         set_user_armor(id, 400)
  845.        
  846.         engfunc(EngFunc_EmitSound,item_pet[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds - 1)],1.0, 1.2, 0, PITCH_NORM)              
  847.        
  848.         item_have[id] = 1
  849.         g_has_speed[id] = true
  850.     }
  851.     return PLUGIN_HANDLED
  852. }
  853.  
  854. public FM_Think_hook(ent) {
  855.     for(new i = 0; i <= maxplayers; i++) {
  856.         if(ent == item_pet[i]) {
  857.             static Float:origin[3]
  858.             static Float:origin2[3]
  859.             static Float:velocity[3]
  860.             pev(ent,pev_origin,origin2)
  861.             get_offset_origin_body(i,Float:{50.0,0.0,0.0},origin)
  862.            
  863.             if(get_distance_f(origin,origin2) > 300.0) {
  864.                 set_pev(ent,pev_origin,origin)
  865.             }
  866.            
  867.             else if(get_distance_f(origin,origin2) > 80.0) {
  868.                 get_speed_vector(origin2,origin,250.0,velocity)
  869.                 set_pev(ent,pev_velocity,velocity)
  870.                 if(pev(ent,pev_sequence) != pet_run || pev(ent,pev_framerate) != pet_run_speed)
  871.                     {
  872.                     set_pev(ent,pev_sequence,pet_run)
  873.                     set_pev(ent,pev_gaitsequence,pet_run)
  874.                     set_pev(ent,pev_framerate,pet_run_speed)
  875.                 }
  876.             }
  877.            
  878.             else if(get_distance_f(origin,origin2) < 75.0) {
  879.                 if(pev(ent,pev_sequence) != pet_idle || pev(ent,pev_framerate) != pet_idle_speed) {
  880.                     set_pev(ent,pev_sequence,pet_idle)
  881.                     set_pev(ent,pev_gaitsequence,pet_idle)
  882.                     set_pev(ent,pev_framerate,pet_idle_speed)
  883.                 }
  884.                 set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0})
  885.             }
  886.             pev(i,pev_origin,origin)
  887.             origin[2] = origin2[2]
  888.             entity_set_aim(ent,origin)                    
  889.             set_pev(ent,pev_nextthink,1.0)
  890.             break
  891.         }
  892.     }
  893. }
  894.  
  895. public FM_PlayerPreThink_hook(id) {
  896.     if (!is_user_alive(id))
  897.         return
  898.    
  899.     if(allowed_leap(id)) {
  900.         static Float:velocity[3]
  901.         velocity_by_aim(id, 500, velocity)
  902.        
  903.         velocity[2] = 300.0
  904.        
  905.         set_pev(id, pev_velocity, velocity)
  906.        
  907.         item_leaptime[id] = get_gametime()
  908.     }
  909. }
  910.  
  911. public allowed_leap(id) {      
  912.     if(!item_have[id])
  913.         return false
  914.    
  915.     if (!(pev(id, pev_flags) & FL_ONGROUND) || fm_get_speed(id) < 80)
  916.         return false
  917.    
  918.     static buttons
  919.     buttons = pev(id, pev_button)
  920.    
  921.     if (!is_user_bot(id) && (!(buttons & IN_JUMP) || !(buttons & IN_DUCK)))
  922.         return false
  923.    
  924.     if (get_gametime() - item_leaptime[id] < 3)
  925.         return false
  926.    
  927.     return true
  928. }
  929.  
  930. public is_a_player(ent) {
  931.     if(ent > 0 && ent < 33)
  932.         return true
  933.    
  934.     return false
  935. }
  936.  
  937. public remove_pet(ent) {
  938.     if(pev_valid(ent))
  939.         fm_remove_entity(ent)
  940. }
  941.  
  942. stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3]) {
  943.     if(!pev_valid(ent))
  944.         return 0;
  945.    
  946.     new Float:angle[3]
  947.     pev(ent,pev_angles,angle)
  948.    
  949.     pev(ent,pev_origin,origin)
  950.    
  951.     origin[0] += floatcos(angle[1],degrees) * offset[0]
  952.     origin[1] += floatsin(angle[1],degrees) * offset[0]
  953.    
  954.     origin[1] += floatcos(angle[1],degrees) * offset[1]
  955.     origin[0] += floatsin(angle[1],degrees) * offset[1]
  956.    
  957.     return 1;
  958. }
  959.  
  960. stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3]) {
  961.     new_velocity[0] = origin2[0] - origin1[0]
  962.     new_velocity[1] = origin2[1] - origin1[1]
  963.     new_velocity[2] = origin2[2] - origin1[2]
  964.     new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
  965.     new_velocity[0] *= num
  966.     new_velocity[1] *= num
  967.     new_velocity[2] *= num
  968.    
  969.     return 1;
  970. }
  971.  
  972. stock entity_set_aim(ent,const Float:origin2[3],bone=0) {
  973.     if(!pev_valid(ent))
  974.         return 0;
  975.    
  976.     static Float:origin[3]
  977.     origin[0] = origin2[0]
  978.     origin[1] = origin2[1]
  979.     origin[2] = origin2[2]
  980.    
  981.     static Float:ent_origin[3], Float:angles[3]
  982.    
  983.     if(bone)
  984.         engfunc(EngFunc_GetBonePosition,ent,bone,ent_origin,angles)
  985.     else
  986.     pev(ent,pev_origin,ent_origin)
  987.    
  988.     origin[0] -= ent_origin[0]
  989.     origin[1] -= ent_origin[1]
  990.     origin[2] -= ent_origin[2]
  991.    
  992.     static Float:v_length
  993.     v_length = vector_length(origin)
  994.    
  995.     static Float:aim_vector[3]
  996.     aim_vector[0] = origin[0] / v_length
  997.     aim_vector[1] = origin[1] / v_length
  998.     aim_vector[2] = origin[2] / v_length
  999.    
  1000.     static Float:new_angles[3]
  1001.     vector_to_angle(aim_vector,new_angles)
  1002.    
  1003.     new_angles[0] *= -1
  1004.    
  1005.     if(new_angles[1]>180.0) new_angles[1] -= 360
  1006.     if(new_angles[1]<-180.0) new_angles[1] += 360
  1007.     if(new_angles[1]==180.0 || new_angles[1]==-180.0) new_angles[1]=-179.999999
  1008.    
  1009.     set_pev(ent,pev_angles,new_angles)
  1010.     set_pev(ent,pev_fixangle,1)
  1011.    
  1012.     return 1;
  1013. }
  1014.  
  1015. stock ColorChat(id, const input[], any:...) {
  1016.     static iPlayersNum[32], iCount; iCount = 1
  1017.     static szMsg[191]
  1018.    
  1019.     vformat(szMsg, charsmax(szMsg), input, 3)
  1020.    
  1021.     replace_all(szMsg, 190, "/g", "^x04") // green txt
  1022.     replace_all(szMsg, 190, "/y", "^x01") // orange txt
  1023.     replace_all(szMsg, 190, "/ctr", "^x03") // team txt
  1024.     replace_all(szMsg, 190, "/w", "^x00") // team txt
  1025.    
  1026.     if(id) iPlayersNum[0] = id
  1027.     else get_players(iPlayersNum, iCount, "ch")
  1028.        
  1029.     for (new i = 0; i < iCount; i++) {
  1030.         if (is_user_connected(iPlayersNum[i])) {
  1031.             message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, iPlayersNum[i])
  1032.             write_byte(iPlayersNum[i])
  1033.             write_string(szMsg)
  1034.             message_end()
  1035.         }
  1036.     }
  1037. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement