Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.23 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement