SHARE
TWEET

Untitled

a guest Dec 14th, 2019 105 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #pragma semicolon 1
  2.  
  3. // ===================
  4. // >>> DEFINE
  5. // ===================
  6.  
  7. #define PLUGIN_AUTHOR "Bioly"
  8. #define PLUGIN_VERSION "0.1"
  9. #define LoopValidClients(%1) for(int %1 = 1; %1 < MaxClients; %1++) if(IsValidClient(%1))
  10.  
  11. // ===================
  12. // >>> CFG
  13. // ===================
  14.  
  15. #define PREFIX "[{lightred}Sklep{default}]"
  16. #define ITEMCOST_GLOCK 5
  17. #define ITEMCOST_USP 5
  18. #define ITEMCOST_PARACHUTE 5
  19. #define ITEMCOST_DEAGLE 5
  20. #define ITEMCOST_AK47 5
  21. #define ITEMCOST_AWP 5
  22. #define ITEMCOST_KNIFE 5
  23. #define ITEMCOST_REAMMO 5
  24. #define ITEMCOST_UAMMO 5
  25. #define ITEMCOST_FLASHLIGHT 5
  26. #define ITEMCOST_MHEALTH 5
  27. #define ITEMCOST_HEALTHS 5
  28. #define ITEMCOST_HE 5
  29. #define ITEMCOST_MOLO 5
  30. #define ITEMCOST_SPEED 5
  31. #define ITEMCOST_DJ 5
  32. #define ITEMCOST_JETPACK 5
  33. #define DEFINE_FUEL 1.0
  34. #define DEFINE_REGEN 0.1 // Ilosc regenerowanego paliwa przez 1 sekunde
  35.  
  36. // ====================
  37. // >>> INCLUDE
  38. // ====================
  39.  
  40. #include <sourcemod>
  41. #include <sdktools>
  42. #include <cstrike>
  43. #include <sdkhooks>
  44. #include <errors>
  45. #include <colors>
  46. #include <gum>
  47. #include <smlib>
  48.  
  49. // ====================
  50. // >>> ZMIENNE
  51. // ====================
  52.  
  53. bool g_bGlock[MAXPLAYERS];
  54. bool g_bUSP[MAXPLAYERS];
  55. bool g_bParachute[MAXPLAYERS];
  56. bool g_bParachuteInUse[MAXPLAYERS];
  57. bool g_bDeagle[MAXPLAYERS];
  58. bool g_bAK47[MAXPLAYERS];
  59. bool g_bAWP[MAXPLAYERS];
  60. bool g_bKnife[MAXPLAYERS];
  61. bool g_bKnifeCD[MAXPLAYERS];
  62. bool g_bUAmmo[MAXPLAYERS];
  63. bool g_bFlashLight[MAXPLAYERS];
  64. bool g_bDJ[MAXPLAYERS];
  65. bool g_bJetPack[MAXPLAYERS];
  66. float g_fFuel[MAXPLAYERS];
  67. float g_fTime[MAXPLAYERS];
  68. int g_iVelocity = -1;
  69.  
  70. #pragma newdecls required
  71.  
  72. EngineVersion g_Game;
  73.  
  74. // ===========================
  75. // >>> PLUGIN INFO
  76. // ===========================
  77.  
  78. public Plugin myinfo =
  79. {
  80.     name = "[Bioly] Gun EXP Shop",
  81.     author = PLUGIN_AUTHOR,
  82.     description = "N/A",
  83.     version = PLUGIN_VERSION,
  84.     url = "id/ToTenBioly"
  85. };
  86.  
  87. // ====================
  88. // >>> OnPluginStart
  89. // ====================
  90.  
  91. public void OnPluginStart()
  92. {
  93.     Errors.SetPluginName("[Bioly] Gun EXP Shop");
  94.     g_Game = GetEngineVersion();
  95.     if (g_Game != Engine_CSGO && g_Game != Engine_CSS)
  96.     {
  97.         Errors.ThrowCriticalError(0, "Ten plugin jest tylko do CSGO/CSS.");
  98.     }
  99.     HookEvent("player_spawn", playerSpawn);
  100.     HookEvent("weapon_fire", weaponFire, EventHookMode_Pre);
  101.     RegConsoleCmd("sm_sklep", ShopCommand);
  102.     AddCommandListener(FlashLight, "+lookatweapon");
  103.     g_iVelocity = FindSendPropInfo("CBasePlayer", "m_vecVelocity[0]");
  104.     if (g_iVelocity == -1)
  105.     {
  106.         SetFailState("Can not find m_vecVelocity[0] offset");
  107.     }
  108. }
  109. public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
  110. {
  111.     MarkNativeAsOptional("setPlayerUnlocks");
  112.     MarkNativeAsOptional("getPlayerUnlocks");
  113.     return APLRes_Success;
  114. }
  115. public void playerSpawn(Event event, char[] name, bool dontBroadcast)
  116. {
  117.     int client = GetClientOfUserId(event.GetInt("userid"));
  118.     g_bUAmmo[client] = false;
  119.     g_bDJ[client] = false;
  120.     g_bJetPack[client] = false;
  121. }
  122. public Action weaponFire(Event event, char[] name, bool dontBroadcast)
  123. {
  124.     int client = GetClientOfUserId(event.GetInt("userid"));
  125.     if (IsPlayerAlive(client))
  126.     {
  127.         if (g_bUAmmo[client])
  128.         {
  129.             int iWeaponIndex = GetEntPropEnt(client, Prop_Data, "m_hActiveWeapon");
  130.             if (IsValidEdict(iWeaponIndex))
  131.             {
  132.                 SetEntProp(iWeaponIndex, Prop_Data, "m_iClip1", GetEntProp(iWeaponIndex, Prop_Data, "m_iClip1") + 1);
  133.             }
  134.         }
  135.     }
  136. }
  137. public void OnClientPutInServer(int client)
  138. {
  139.     SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
  140.     ResetAllVariables(client);
  141. }
  142. public void OnClientDisconnect(int client)
  143. {
  144.     SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
  145.     ResetAllVariables(client);
  146. }
  147. public Action ShopCommand(int client, int args)
  148. {
  149.     char sBuffer[128];
  150.     Menu SHOPMenu = new Menu(SHOPMenuCallback);
  151.     SHOPMenu.SetTitle("Sklep :: Kup\n \n");
  152.    
  153.     Format(sBuffer, sizeof(sBuffer), "Większe obrażenia z Glocka [%i EXPa]", ITEMCOST_GLOCK);
  154.     SHOPMenu.AddItem("glock", sBuffer, g_bGlock[client] ? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
  155.    
  156.     Format(sBuffer, sizeof(sBuffer), "Większe obrażenia z USP-S [%i EXPa]", ITEMCOST_USP);
  157.     SHOPMenu.AddItem("usp", sBuffer, g_bUSP[client] ? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
  158.    
  159.     Format(sBuffer, sizeof(sBuffer), "Spadochron [%i EXPa]", ITEMCOST_PARACHUTE);
  160.     SHOPMenu.AddItem("parachute", sBuffer, g_bParachute[client] ? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
  161.    
  162.     Format(sBuffer, sizeof(sBuffer), "Większe obrażenia z Deagla [%i EXPa]", ITEMCOST_DEAGLE);
  163.     SHOPMenu.AddItem("deagle", sBuffer, g_bDeagle[client] ? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
  164.    
  165.     Format(sBuffer, sizeof(sBuffer), "Większe obrażenia z AK-47 [%i EXPa]", ITEMCOST_AK47);
  166.     SHOPMenu.AddItem("ak47", sBuffer, g_bAK47[client] ? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
  167.    
  168.     Format(sBuffer, sizeof(sBuffer), "Większe obrażenia z AWP [%i EXPa]", ITEMCOST_AWP);
  169.     SHOPMenu.AddItem("awp", sBuffer, g_bAWP[client] ? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
  170.    
  171.     Format(sBuffer, sizeof(sBuffer), "Odpychający nóż [%i EXPa]", ITEMCOST_KNIFE);
  172.     SHOPMenu.AddItem("knife", sBuffer, g_bKnife[client] ? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
  173.    
  174.     Format(sBuffer, sizeof(sBuffer), "Odnów amunicje [%i EXPa]", ITEMCOST_REAMMO);
  175.     SHOPMenu.AddItem("reammo", sBuffer, IsPlayerAlive(client) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
  176.    
  177.     Format(sBuffer, sizeof(sBuffer), "Nieskończona amunicja [%i EXPa]", ITEMCOST_UAMMO);
  178.     SHOPMenu.AddItem("uammo", sBuffer, g_bUAmmo[client] ? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
  179.    
  180.     Format(sBuffer, sizeof(sBuffer), "Latarka [%i EXPa]", ITEMCOST_FLASHLIGHT);
  181.     SHOPMenu.AddItem("flashlight", sBuffer, g_bFlashLight[client] ? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
  182.    
  183.     Format(sBuffer, sizeof(sBuffer), "Strzykawka [%i EXPa]", ITEMCOST_HEALTHS);
  184.     SHOPMenu.AddItem("healths", sBuffer, IsPlayerAlive(client) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
  185.    
  186.     Format(sBuffer, sizeof(sBuffer), "+50 HP [%i EXPa]", ITEMCOST_MHEALTH);
  187.     SHOPMenu.AddItem("mhealth", sBuffer, IsPlayerAlive(client) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
  188.    
  189.     Format(sBuffer, sizeof(sBuffer), "Granat odłamkowy [%i EXPa]", ITEMCOST_HE);
  190.     SHOPMenu.AddItem("he", sBuffer, IsPlayerAlive(client) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
  191.    
  192.     Format(sBuffer, sizeof(sBuffer), "Molotov [%i EXPa]", ITEMCOST_MOLO);
  193.     SHOPMenu.AddItem("molo", sBuffer, IsPlayerAlive(client) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
  194.    
  195.     Format(sBuffer, sizeof(sBuffer), "RedBull [%i EXPa]", ITEMCOST_SPEED);
  196.     SHOPMenu.AddItem("speed", sBuffer, IsPlayerAlive(client) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
  197.    
  198.     Format(sBuffer, sizeof(sBuffer), "Double Jump [%i EXPa]", ITEMCOST_DJ);
  199.     SHOPMenu.AddItem("dj", sBuffer, IsPlayerAlive(client) && g_bDJ[client] == false ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
  200.    
  201.     Format(sBuffer, sizeof(sBuffer), "JetPack [%i EXPa]", ITEMCOST_JETPACK);
  202.     SHOPMenu.AddItem("jetpack", sBuffer, IsPlayerAlive(client) && g_bJetPack[client] == false ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
  203.    
  204.     SHOPMenu.Display(client, 0);
  205.     return Plugin_Handled;
  206. }
  207. public int SHOPMenuCallback(Menu SHOPMenu, MenuAction action, int param1, int param2)
  208. {
  209.     switch (action)
  210.     {
  211.         case MenuAction_Select:
  212.         {
  213.             char sItem[64];
  214.             SHOPMenu.GetItem(param2, sItem, sizeof(sItem));
  215.             if (StrEqual(sItem, "glock"))
  216.             {
  217.                 if (getPlayerUnlocks(param1) < ITEMCOST_GLOCK)
  218.                 {
  219.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  220.                     return;
  221.                 }
  222.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  223.                 g_bGlock[param1] = true;
  224.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_GLOCK);
  225.             }
  226.             else if (StrEqual(sItem, "usp"))
  227.             {
  228.                 if (getPlayerUnlocks(param1) < ITEMCOST_USP)
  229.                 {
  230.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  231.                     return;
  232.                 }
  233.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  234.                 g_bUSP[param1] = true;
  235.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_USP);
  236.             }
  237.             else if (StrEqual(sItem, "parachute"))
  238.             {
  239.                 if (getPlayerUnlocks(param1) < ITEMCOST_PARACHUTE)
  240.                 {
  241.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  242.                     return;
  243.                 }
  244.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  245.                 g_bParachute[param1] = true;
  246.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_PARACHUTE);
  247.             }
  248.             else if (StrEqual(sItem, "deagle"))
  249.             {
  250.                 if (getPlayerUnlocks(param1) < ITEMCOST_DEAGLE)
  251.                 {
  252.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  253.                     return;
  254.                 }
  255.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  256.                 g_bDeagle[param1] = true;
  257.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_DEAGLE);
  258.             }
  259.             else if (StrEqual(sItem, "ak47"))
  260.             {
  261.                 if (getPlayerUnlocks(param1) < ITEMCOST_AK47)
  262.                 {
  263.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  264.                     return;
  265.                 }
  266.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  267.                 g_bAK47[param1] = true;
  268.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_AK47);
  269.             }
  270.             else if (StrEqual(sItem, "awp"))
  271.             {
  272.                 if (getPlayerUnlocks(param1) < ITEMCOST_AWP)
  273.                 {
  274.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  275.                     return;
  276.                 }
  277.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  278.                 g_bAWP[param1] = true;
  279.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_AWP);
  280.             }
  281.             else if (StrEqual(sItem, "knife"))
  282.             {
  283.                 if (getPlayerUnlocks(param1) < ITEMCOST_KNIFE)
  284.                 {
  285.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  286.                     return;
  287.                 }
  288.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  289.                 g_bKnife[param1] = true;
  290.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_KNIFE);
  291.             }
  292.             else if (StrEqual(sItem, "reammo"))
  293.             {
  294.                 if (getPlayerUnlocks(param1) < ITEMCOST_REAMMO)
  295.                 {
  296.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  297.                     return;
  298.                 }
  299.                 int iWeaponIndex = GetEntPropEnt(param1, Prop_Data, "m_hActiveWeapon");
  300.                 if (IsValidEdict(iWeaponIndex))
  301.                 {
  302.                     SetEntProp(iWeaponIndex, Prop_Data, "m_iClip1", 200);
  303.                     SetEntProp(iWeaponIndex, Prop_Data, "m_iClip2", 400);
  304.                     CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  305.                     setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_REAMMO);
  306.                 }
  307.             }
  308.             else if (StrEqual(sItem, "uammo"))
  309.             {
  310.                 if (getPlayerUnlocks(param1) < ITEMCOST_UAMMO)
  311.                 {
  312.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  313.                     return;
  314.                 }
  315.                 g_bUAmmo[param1] = true;
  316.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  317.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_UAMMO);
  318.             }
  319.             else if (StrEqual(sItem, "flashlight"))
  320.             {
  321.                 if (getPlayerUnlocks(param1) < ITEMCOST_FLASHLIGHT)
  322.                 {
  323.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  324.                     return;
  325.                 }
  326.                 g_bFlashLight[param1] = true;
  327.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  328.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_FLASHLIGHT);
  329.             }
  330.             else if (StrEqual(sItem, "healths"))
  331.             {
  332.                 if (getPlayerUnlocks(param1) < ITEMCOST_HEALTHS)
  333.                 {
  334.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  335.                     return;
  336.                 }
  337.                 GivePlayerItem(param1, "weapon_healthshot");
  338.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  339.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_HEALTHS);
  340.             }
  341.             else if (StrEqual(sItem, "mhealth"))
  342.             {
  343.                 if (getPlayerUnlocks(param1) < ITEMCOST_MHEALTH)
  344.                 {
  345.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  346.                     return;
  347.                 }
  348.                 SetEntityHealth(param1, GetClientHealth(param1) + 50);
  349.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  350.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_MHEALTH);
  351.             }
  352.             else if (StrEqual(sItem, "he"))
  353.             {
  354.                 if (getPlayerUnlocks(param1) < ITEMCOST_HE)
  355.                 {
  356.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  357.                     return;
  358.                 }
  359.                 GivePlayerItem(param1, "weapon_hegrenade");
  360.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  361.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_HE);
  362.             }
  363.             else if (StrEqual(sItem, "molo"))
  364.             {
  365.                 if (getPlayerUnlocks(param1) < ITEMCOST_MOLO)
  366.                 {
  367.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  368.                     return;
  369.                 }
  370.                 GivePlayerItem(param1, "weapon_molotov");
  371.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  372.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_MOLO);
  373.             }
  374.             else if (StrEqual(sItem, "speed"))
  375.             {
  376.                 if (getPlayerUnlocks(param1) < ITEMCOST_SPEED)
  377.                 {
  378.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  379.                     return;
  380.                 }
  381.                 SetEntPropFloat(param1, Prop_Send, "m_flLaggedMovementValue", 1.5);
  382.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  383.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_SPEED);
  384.             }
  385.             else if (StrEqual(sItem, "dj"))
  386.             {
  387.                 if (getPlayerUnlocks(param1) < ITEMCOST_DJ)
  388.                 {
  389.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  390.                     return;
  391.                 }
  392.                 g_bDJ[param1] = true;
  393.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  394.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_DJ);
  395.             }
  396.             else if (StrEqual(sItem, "jetpack"))
  397.             {
  398.                 if (getPlayerUnlocks(param1) < ITEMCOST_JETPACK)
  399.                 {
  400.                     CPrintToChat(param1, "%s Nie posiadasz wystarczająco dużo EXPa!", PREFIX);
  401.                     return;
  402.                 }
  403.                 g_bJetPack[param1] = true;
  404.                 CPrintToChat(param1, "%s Poprawnie zakupiłeś ulepszenie.", PREFIX);
  405.                 setPlayerUnlocks(param1, getPlayerUnlocks(param1) - ITEMCOST_JETPACK);
  406.             }
  407.         }
  408.         case MenuAction_End:
  409.         {
  410.             delete SHOPMenu;
  411.         }
  412.     }
  413. }
  414. public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3])
  415. {
  416.     char sWeapon[64];
  417.     GetClientWeapon(attacker, sWeapon, sizeof(sWeapon));
  418.     if (StrEqual(sWeapon, "weapon_glock"))
  419.     {
  420.         if (g_bGlock[attacker])
  421.         {
  422.             damage += (damage * 0.05);
  423.             return Plugin_Changed;
  424.         }
  425.     }
  426.     else if (StrEqual(sWeapon, "weapon_deagle"))
  427.     {
  428.         if (g_bDeagle[attacker])
  429.         {
  430.             damage += (damage * 0.2);
  431.             return Plugin_Changed;
  432.         }
  433.     }
  434.     else if (StrEqual(sWeapon, "weapon_ak47"))
  435.     {
  436.         if (g_bAK47[attacker])
  437.         {
  438.             damage += (damage * 0.15);
  439.             return Plugin_Changed;
  440.         }
  441.     }
  442.     else if (StrEqual(sWeapon, "weapon_awp"))
  443.     {
  444.         if (g_bAWP[attacker])
  445.         {
  446.             damage += (damage * 0.5);
  447.             return Plugin_Changed;
  448.         }
  449.     }
  450.     else if (StrEqual(sWeapon, "weapon_usp_silencer"))
  451.     {
  452.         if (g_bUSP[attacker])
  453.         {
  454.             damage += (damage * 0.05);
  455.             return Plugin_Changed;
  456.         }
  457.     }
  458.     else if ((StrContains(sWeapon, "weapon_knife", true) != -1) || (StrContains(sWeapon, "weapon_bayonet", true) != -1))
  459.     {
  460.         if (g_bKnife[attacker] && !g_bKnifeCD[attacker])
  461.         {
  462.             g_bKnifeCD[attacker] = true;
  463.             float vector[3];
  464.             float attackerloc[3];
  465.             float clientloc[3];
  466.             float origin[3];
  467.             GetEntPropVector(victim, Prop_Send, "m_vecOrigin", origin);
  468.             origin[2] += 50.0;
  469.             GetClientAbsOrigin(attacker, attackerloc);
  470.             GetClientAbsOrigin(victim, clientloc);
  471.             MakeVectorFromPoints(attackerloc, clientloc, vector);
  472.             NormalizeVector(vector, vector);
  473.             ScaleVector(vector, 800.0);
  474.             TeleportEntity(victim, origin, NULL_VECTOR, vector);
  475.             CreateTimer(5.0, CDKnife, attacker);
  476.         }
  477.     }
  478.     return Plugin_Continue;
  479. }
  480. public Action CDKnife(Handle timer, int client)
  481. {
  482.     g_bKnifeCD[client] = false;
  483. }
  484. public void OnGameFrame()
  485. {
  486.     for (int client = 0; client <= MaxClients; client++)
  487.     {
  488.         if (IsValidClient(client))
  489.         {
  490.             if (g_bParachuteInUse[client])
  491.             {
  492.                 float fVelocity[3];
  493.                 float fFallspeed = 100 * (-1.0);
  494.                 GetEntDataVector(client, g_iVelocity, fVelocity);
  495.                 if (fVelocity[2] < 0.0)
  496.                 {
  497.                     if (fVelocity[2] >= fFallspeed)
  498.                     {
  499.                         fVelocity[2] = fFallspeed;
  500.                     }
  501.                     else
  502.                     {
  503.                         fVelocity[2] = fVelocity[2] + 50.0;
  504.                     }
  505.                     TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, fVelocity);
  506.                     SetEntDataVector(client, g_iVelocity, fVelocity);
  507.                 }
  508.             }
  509.         }
  510.     }
  511. }
  512. public Action OnPlayerRunCmd(int client, int &buttons, int &impulse, float vel[3], float angles[3], int &weapon)
  513. {
  514.     if (!IsClientInGame(client))
  515.         return Plugin_Continue;
  516.    
  517.     if (IsPlayerAlive(client) && g_bParachute[client])
  518.     {
  519.         if (buttons & IN_USE)g_bParachuteInUse[client] = true;
  520.         else g_bParachuteInUse[client] = false;
  521.     }
  522.     if (IsPlayerAlive(client) && g_bDJ[client])
  523.     {
  524.         static int g_fLastButtons[MAXPLAYERS + 1], g_fLastFlags[MAXPLAYERS + 1], g_iJumps[MAXPLAYERS + 1], fCurFlags, fCurButtons;
  525.         fCurFlags = GetEntityFlags(client);
  526.         fCurButtons = GetClientButtons(client);
  527.         if (g_fLastFlags[client] & FL_ONGROUND && !(fCurFlags & FL_ONGROUND) && !(g_fLastButtons[client] & IN_JUMP) && fCurButtons & IN_JUMP)g_iJumps[client]++;
  528.         else if (fCurFlags & FL_ONGROUND)g_iJumps[client] = 0;
  529.         else if (!(g_fLastButtons[client] & IN_JUMP) && fCurButtons & IN_JUMP && g_iJumps[client] <= 1)
  530.         {
  531.             g_iJumps[client]++;
  532.             float vVel[3];
  533.             GetEntPropVector(client, Prop_Data, "m_vecVelocity", vVel);
  534.             vVel[2] = 250.0;
  535.             TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, vVel);
  536.         }
  537.         g_fLastFlags[client] = fCurFlags;
  538.         g_fLastButtons[client] = fCurButtons;
  539.     }
  540.     if (IsPlayerAlive(client) && g_bJetPack[client])
  541.     {
  542.         float m_fTime = GetGameTime();
  543.         if (buttons & IN_JUMP)
  544.         {
  545.             if (g_fFuel[client] > 0.1)
  546.             {
  547.                 float m_fVelocity[3];
  548.                 GetEntPropVector(client, Prop_Data, "m_vecVelocity", m_fVelocity);
  549.                
  550.                 m_fVelocity[2] += 12.0;
  551.                 TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, m_fVelocity);
  552.                
  553.                 g_fFuel[client] -= m_fTime - g_fTime[client];
  554.                 if (g_fFuel[client] < 0.0)
  555.                     g_fFuel[client] = 0.0;
  556.             }
  557.             else
  558.                 g_fFuel[client] = 0.0;
  559.         }
  560.        
  561.         if (g_fFuel[client] < DEFINE_FUEL)
  562.         {
  563.             g_fFuel[client] += (m_fTime - g_fTime[client]) * DEFINE_REGEN;
  564.             if (g_fFuel[client] > DEFINE_FUEL)
  565.                 g_fFuel[client] = DEFINE_FUEL;
  566.         }
  567.        
  568.         g_fTime[client] = m_fTime;
  569.     }
  570.     return Plugin_Continue;
  571. }
  572. public Action FlashLight(int client, const char[] command, int args)
  573. {
  574.     if (!g_bFlashLight[client])
  575.         return Plugin_Continue;
  576.    
  577.     if (!IsPlayerAlive(client))
  578.         return Plugin_Continue;
  579.    
  580.     SetEntProp(client, Prop_Send, "m_fEffects", GetEntProp(client, Prop_Send, "m_fEffects") ^ 4);
  581.     ClientCommand(client, "playgamesound \"items/flashlight1.wav\"");
  582.     return Plugin_Handled;
  583. }
  584. public void ResetAllVariables(int client)
  585. {
  586.     g_bGlock[client] = false;
  587.     g_bUSP[client] = false;
  588.     g_bParachute[client] = false;
  589.     g_bDeagle[client] = false;
  590.     g_bAK47[client] = false;
  591.     g_bAWP[client] = false;
  592.     g_bKnife[client] = false;
  593.     g_bKnifeCD[client] = false;
  594.     g_bUAmmo[client] = false;
  595.     g_bFlashLight[client] = false;
  596.     g_bDJ[client] = false;
  597.     g_bJetPack[client] = false;
  598.     g_fFuel[client] = 0.0;
  599.     g_fTime[client] = 0.0;
  600. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top