Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.88 KB | None | 0 0
  1. #pragma semicolon 1
  2. #pragma newdecls required
  3.  
  4. #include <sdktools>
  5. #include <sdkhooks>
  6.  
  7. Handle sdkSetAttack;
  8.  
  9. float vRadius[18];
  10.  
  11. int iChance = 2;
  12.  
  13. public void OnPluginStart()
  14. {
  15. Handle hGameConf = LoadGameConfigFile("SetAttackSurvivorCommons");
  16. StartPrepSDKCall(SDKCall_Entity);
  17. if( PrepSDKCall_SetFromConf(hGameConf, SDKConf_Signature, "SetAttackToSurvivors") == false )
  18. SetFailState("Could not load the \"SetAttackToSurvivors\" gamedata offset.");
  19. sdkSetAttack = EndPrepSDKCall();
  20. SetFuse();
  21. HookEvent("bullet_impact", Bullet);
  22. }
  23.  
  24. public void SetFuse()
  25. {
  26. vRadius[0] = 1650.0;
  27. vRadius[1] = 660.0;
  28. vRadius[2] = 880.0;
  29. vRadius[3] = 1980.0;
  30. vRadius[4] = 1650.0;
  31. vRadius[5] = 1100.0;
  32. vRadius[6] = 1100.0;
  33. vRadius[7] = 1100.0;
  34. vRadius[8] = 1320.0;
  35. vRadius[9] = 1100.0;
  36. vRadius[10] = 1540.0;
  37. vRadius[11] = 1540.0;
  38. vRadius[12] = 880.0;
  39. vRadius[13] = 880.0;
  40. vRadius[14] = 880.0;
  41. vRadius[15] = 1870.0;
  42. vRadius[16] = 1320.0;
  43. vRadius[17] = 1320.0;
  44. }
  45.  
  46. public Action Bullet(Handle event, const char[] name, bool dontbroadcast)
  47. {
  48. int client = GetClientOfUserId(GetEventInt(event, "userid"));
  49. int weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
  50. if(IsValidEntity(weapon))
  51. {
  52. char weaponname[36];
  53. GetEntityClassname(weapon, weaponname, sizeof(weaponname));
  54. if(bIsSurvivor(client))
  55. {
  56. for(int i = 33; i < 2049; i++)
  57. {
  58. float vPos[3], vTargetPos[3];
  59. GetClientEyePosition(client, vPos);
  60. if(strcmp(weaponname, "weapon_autoshotgun") == 0)
  61. {
  62. if(IsCommonInfected(i))
  63. {
  64. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  65. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  66. if(IsVisibleTo(vPos, vTargetPos))
  67. {
  68. if(fTargetDistance < vRadius[0])
  69. {
  70. SDKCall(sdkSetAttack, i);
  71. }
  72. }
  73. else
  74. {
  75. if(GetRandomInt(0, 100) <= iChance)
  76. {
  77. if(fTargetDistance < vRadius[0])
  78. {
  79. SDKCall(sdkSetAttack, i);
  80. }
  81. }
  82. }
  83. }
  84. }
  85. else if(strcmp(weaponname, "weapon_hunting_rifle") == 0)
  86. {
  87. if(IsCommonInfected(i))
  88. {
  89. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  90. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  91. if(IsVisibleTo(vPos, vTargetPos))
  92. {
  93. if(fTargetDistance < vRadius[1])
  94. {
  95. SDKCall(sdkSetAttack, i);
  96. }
  97. }
  98. else
  99. {
  100. if(GetRandomInt(0, 100) <= iChance)
  101. {
  102. if(fTargetDistance < vRadius[1])
  103. {
  104. SDKCall(sdkSetAttack, i);
  105. }
  106. }
  107. }
  108. }
  109. }
  110. else if(strcmp(weaponname, "weapon_pistol") == 0)
  111. {
  112. if(IsCommonInfected(i))
  113. {
  114. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  115. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  116. if(IsVisibleTo(vPos, vTargetPos))
  117. {
  118. if(fTargetDistance < vRadius[2])
  119. {
  120. SDKCall(sdkSetAttack, i);
  121. }
  122. }
  123. else
  124. {
  125. if(GetRandomInt(0, 100) <= iChance)
  126. {
  127. if(fTargetDistance < vRadius[2])
  128. {
  129. SDKCall(sdkSetAttack, i);
  130. }
  131. }
  132. }
  133. }
  134. }
  135. else if(strcmp(weaponname, "weapon_pistol_magnum") == 0)
  136. {
  137. if(IsCommonInfected(i))
  138. {
  139. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  140. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  141. if(IsVisibleTo(vPos, vTargetPos))
  142. {
  143. if(fTargetDistance < vRadius[3])
  144. {
  145. SDKCall(sdkSetAttack, i);
  146. }
  147. }
  148. else
  149. {
  150. if(GetRandomInt(0, 100) <= iChance)
  151. {
  152. if(fTargetDistance < vRadius[3])
  153. {
  154. SDKCall(sdkSetAttack, i);
  155. }
  156. }
  157. }
  158. }
  159. }
  160. else if(strcmp(weaponname, "weapon_pumpshotgun") == 0)
  161. {
  162. if(IsCommonInfected(i))
  163. {
  164. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  165. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  166. if(IsVisibleTo(vPos, vTargetPos))
  167. {
  168. if(fTargetDistance < vRadius[4])
  169. {
  170. SDKCall(sdkSetAttack, i);
  171. }
  172. }
  173. else
  174. {
  175. if(GetRandomInt(0, 100) <= iChance)
  176. {
  177. if(fTargetDistance < vRadius[4])
  178. {
  179. SDKCall(sdkSetAttack, i);
  180. }
  181. }
  182. }
  183. }
  184. }
  185. else if(strcmp(weaponname, "weapon_rifle") == 0)
  186. {
  187. if(IsCommonInfected(i))
  188. {
  189. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  190. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  191. if(IsVisibleTo(vPos, vTargetPos))
  192. {
  193. if(fTargetDistance < vRadius[5])
  194. {
  195. SDKCall(sdkSetAttack, i);
  196. }
  197. }
  198. else
  199. {
  200. if(GetRandomInt(0, 100) <= iChance)
  201. {
  202. if(fTargetDistance < vRadius[5])
  203. {
  204. SDKCall(sdkSetAttack, i);
  205. }
  206. }
  207. }
  208. }
  209. }
  210. else if(strcmp(weaponname, "weapon_rifle_ak47") == 0)
  211. {
  212. if(IsCommonInfected(i))
  213. {
  214. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  215. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  216. if(IsVisibleTo(vPos, vTargetPos))
  217. {
  218. if(fTargetDistance < vRadius[6])
  219. {
  220. SDKCall(sdkSetAttack, i);
  221. }
  222. }
  223. else
  224. {
  225. if(GetRandomInt(0, 100) <= iChance)
  226. {
  227. if(fTargetDistance < vRadius[6])
  228. {
  229. SDKCall(sdkSetAttack, i);
  230. }
  231. }
  232. }
  233. }
  234. }
  235. else if(strcmp(weaponname, "weapon_rifle_desert") == 0)
  236. {
  237. if(IsCommonInfected(i))
  238. {
  239. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  240. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  241. if(IsVisibleTo(vPos, vTargetPos))
  242. {
  243. if(fTargetDistance < vRadius[7])
  244. {
  245. SDKCall(sdkSetAttack, i);
  246. }
  247. }
  248. else
  249. {
  250. if(GetRandomInt(0, 100) <= iChance)
  251. {
  252. if(fTargetDistance < vRadius[7])
  253. {
  254. SDKCall(sdkSetAttack, i);
  255. }
  256. }
  257. }
  258. }
  259. }
  260. else if(strcmp(weaponname, "weapon_rifle_m60") == 0)
  261. {
  262. if(IsCommonInfected(i))
  263. {
  264. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  265. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  266. if(IsVisibleTo(vPos, vTargetPos))
  267. {
  268. if(fTargetDistance < vRadius[8])
  269. {
  270. SDKCall(sdkSetAttack, i);
  271. }
  272. }
  273. else
  274. {
  275. if(GetRandomInt(0, 100) <= iChance)
  276. {
  277. if(fTargetDistance < vRadius[8])
  278. {
  279. SDKCall(sdkSetAttack, i);
  280. }
  281. }
  282. }
  283. }
  284. }
  285. else if(strcmp(weaponname, "weapon_rifle_sg552") == 0)
  286. {
  287. if(IsCommonInfected(i))
  288. {
  289. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  290. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  291. if(IsVisibleTo(vPos, vTargetPos))
  292. {
  293. if(fTargetDistance < vRadius[8])
  294. {
  295. SDKCall(sdkSetAttack, i);
  296. }
  297. }
  298. else
  299. {
  300. if(GetRandomInt(0, 100) <= iChance)
  301. {
  302. if(fTargetDistance < vRadius[8])
  303. {
  304. SDKCall(sdkSetAttack, i);
  305. }
  306. }
  307. }
  308. }
  309. }
  310. else if(strcmp(weaponname, "weapon_shotgun_chrome") == 0)
  311. {
  312. if(IsCommonInfected(i))
  313. {
  314. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  315. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  316. if(IsVisibleTo(vPos, vTargetPos))
  317. {
  318. if(fTargetDistance < vRadius[9])
  319. {
  320. SDKCall(sdkSetAttack, i);
  321. }
  322. }
  323. else
  324. {
  325. if(GetRandomInt(0, 100) <= iChance)
  326. {
  327. if(fTargetDistance < vRadius[9])
  328. {
  329. SDKCall(sdkSetAttack, i);
  330. }
  331. }
  332. }
  333. }
  334. }
  335. else if(strcmp(weaponname, "weapon_shotgun_spas") == 0)
  336. {
  337. if(IsCommonInfected(i))
  338. {
  339. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  340. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  341. if(IsVisibleTo(vPos, vTargetPos))
  342. {
  343. if(fTargetDistance < vRadius[9])
  344. {
  345. SDKCall(sdkSetAttack, i);
  346. }
  347. }
  348. else
  349. {
  350. if(GetRandomInt(0, 100) <= iChance)
  351. {
  352. if(fTargetDistance < vRadius[9])
  353. {
  354. SDKCall(sdkSetAttack, i);
  355. }
  356. }
  357. }
  358. }
  359. }
  360. else if(strcmp(weaponname, "weapon_smg") == 0)
  361. {
  362. if(IsCommonInfected(i))
  363. {
  364. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  365. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  366. if(IsVisibleTo(vPos, vTargetPos))
  367. {
  368. if(fTargetDistance < vRadius[10])
  369. {
  370. SDKCall(sdkSetAttack, i);
  371. }
  372. }
  373. else
  374. {
  375. if(GetRandomInt(0, 100) <= iChance)
  376. {
  377. if(fTargetDistance < vRadius[10])
  378. {
  379. SDKCall(sdkSetAttack, i);
  380. }
  381. }
  382. }
  383. }
  384. }
  385. else if(strcmp(weaponname, "weapon_smg_mp5") == 0)
  386. {
  387. if(IsCommonInfected(i))
  388. {
  389. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  390. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  391. if(IsVisibleTo(vPos, vTargetPos))
  392. {
  393. if(fTargetDistance < vRadius[11])
  394. {
  395. SDKCall(sdkSetAttack, i);
  396. }
  397. }
  398. else
  399. {
  400. if(GetRandomInt(0, 100) <= iChance)
  401. {
  402. if(fTargetDistance < vRadius[11])
  403. {
  404. SDKCall(sdkSetAttack, i);
  405. }
  406. }
  407. }
  408. }
  409. }
  410. else if(strcmp(weaponname, "weapon_smg_silenced") == 0)
  411. {
  412. if(IsCommonInfected(i))
  413. {
  414. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  415. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  416. if(IsVisibleTo(vPos, vTargetPos))
  417. {
  418. if(fTargetDistance < vRadius[12])
  419. {
  420. SDKCall(sdkSetAttack, i);
  421. }
  422. }
  423. else
  424. {
  425. if(GetRandomInt(0, 100) <= iChance)
  426. {
  427. if(fTargetDistance < vRadius[12])
  428. {
  429. SDKCall(sdkSetAttack, i);
  430. }
  431. }
  432. }
  433. }
  434. }
  435. else if(strcmp(weaponname, "weapon_sniper_awp") == 0)
  436. {
  437. if(IsCommonInfected(i))
  438. {
  439. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  440. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  441. if(IsVisibleTo(vPos, vTargetPos))
  442. {
  443. if(fTargetDistance < vRadius[13])
  444. {
  445. SDKCall(sdkSetAttack, i);
  446. }
  447. }
  448. else
  449. {
  450. if(GetRandomInt(0, 100) <= iChance)
  451. {
  452. if(fTargetDistance < vRadius[13])
  453. {
  454. SDKCall(sdkSetAttack, i);
  455. }
  456. }
  457. }
  458. }
  459. }
  460. else if(strcmp(weaponname, "weapon_sniper_military") == 0)
  461. {
  462. if(IsCommonInfected(i))
  463. {
  464. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  465. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  466. if(IsVisibleTo(vPos, vTargetPos))
  467. {
  468. if(fTargetDistance < vRadius[14])
  469. {
  470. SDKCall(sdkSetAttack, i);
  471. }
  472. }
  473. else
  474. {
  475. if(GetRandomInt(0, 100) <= iChance)
  476. {
  477. if(fTargetDistance < vRadius[14])
  478. {
  479. SDKCall(sdkSetAttack, i);
  480. }
  481. }
  482. }
  483. }
  484. }
  485. else if(strcmp(weaponname, "weapon_sniper_scout") == 0)
  486. {
  487. if(IsCommonInfected(i))
  488. {
  489. GetEntPropVector(i, Prop_Send, "m_vecOrigin", vTargetPos);
  490. float fTargetDistance = GetVectorDistance(vPos, vTargetPos);
  491. if(IsVisibleTo(vPos, vTargetPos))
  492. {
  493. if(fTargetDistance < vRadius[15])
  494. {
  495. SDKCall(sdkSetAttack, i);
  496. }
  497. }
  498. else
  499. {
  500. if(GetRandomInt(0, 100) <= iChance)
  501. {
  502. if(fTargetDistance < vRadius[15])
  503. {
  504. SDKCall(sdkSetAttack, i);
  505. }
  506. }
  507. }
  508. }
  509. }
  510. }
  511. }
  512. }
  513. return Plugin_Continue;
  514. }
  515.  
  516. static bool IsVisibleTo(float position[3], float targetposition[3])
  517. {
  518. float vAngles[3], vLookAt[3];
  519.  
  520. MakeVectorFromPoints(position, targetposition, vLookAt);
  521. GetVectorAngles(vLookAt, vAngles);
  522.  
  523. Handle trace = TR_TraceRayFilterEx(position, vAngles, MASK_SHOT, RayType_Infinite, _TraceFilter);
  524.  
  525. bool isVisible = false;
  526. if (TR_DidHit(trace))
  527. {
  528. float vStart[3];
  529. TR_GetEndPosition(vStart, trace);
  530.  
  531. if ((GetVectorDistance(position, vStart, false) + 25.0) >= GetVectorDistance(position, targetposition))
  532. {
  533. isVisible = true;
  534. }
  535. }
  536.  
  537. return isVisible;
  538. }
  539.  
  540. public bool _TraceFilter(int entity, int contentsMask)
  541. {
  542. if (IsValidEntity(entity))
  543. {
  544. return false;
  545. }
  546. return true;
  547. }
  548.  
  549. stock bool bIsSurvivor(int client)
  550. {
  551. return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 2 && !IsClientInKickQueue(client) && IsPlayerAlive(client);
  552. }
  553.  
  554. stock bool IsCommonInfected(int entity)
  555. {
  556. if (entity > 33 && IsValidEntity(entity) && IsValidEdict(entity))
  557. {
  558. char entType[64];
  559. GetEdictClassname(entity, entType, sizeof(entType));
  560. return StrEqual(entType, "infected");
  561. }
  562. return false;
  563. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement