Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.95 KB | None | 0 0
  1. var grenades = [];
  2. var types = ["CSmokeGrenadeProjectile", "CDecoyProjectile",
  3. "CMolotovProjectile", "CBaseCSGrenadeProjectile"
  4. ];
  5. var local = Entity.GetLocalPlayer();
  6. var binlib = {};
  7.  
  8. function test() {
  9. var enabled = UI.GetValue("Script items",
  10. "[EGPred] Enable Indicators");
  11. if (!enabled)
  12. return;
  13. var entities = Entity.GetEntities();
  14. for (var i = 0; i < entities.length; i++) {
  15. var ent = entities[i];
  16. var t = Entity.GetClassName(ent);
  17. if (inArray(t, types)) {
  18. var damage = Entity.GetProp(ent, "CBaseGrenade",
  19. "m_flDamage");
  20. var opts = fetchDropdown("[EGPred] Show grenades");
  21. if (opts == undefined)
  22. opts = [];
  23. if (t == "CBaseCSGrenadeProjectile" && inArray(
  24. "Flash + Frag", opts))
  25. grenade(ent, 500, "he", damage);
  26. else
  27. if (t == "CMolotovProjectile" && inArray("Molotov", opts))
  28. grenade(ent, 500, "mol", damage);
  29. else
  30. if (t == "CDecoyProjectile" && inArray("Decoy", opts))
  31. grenade(ent, 500, "decoy", damage);
  32. else
  33. if (t == "CSmokeGrenadeProjectile" && inArray("Smoke",
  34. opts))
  35. grenade(ent, 500, "smoke", damage);
  36. }
  37. }
  38. }
  39.  
  40. function grenade(ent, distanceMax, type, damage) {
  41. var eloc;
  42. var lLoc = Entity.GetHitboxPosition(local, 12);
  43. var name;
  44. var iColor = UI.GetColor("Script items",
  45. "[EGPred] Interior indicator");
  46. var xColor = UI.GetColor("Script items",
  47. "[EGPred] Exterior indicator");
  48. var exColor = UI.GetColor("Script items",
  49. "[EGPred] Exclamation indicator");
  50. var nameColor = UI.GetColor("Script items",
  51. "[EGPred] Name indicator");
  52. var distColor = UI.GetColor("Script items",
  53. "[EGPred] Distance indicator");
  54. var killColor = UI.GetColor("Script items",
  55. "[EGPred] Death indicator");
  56. var dmgColor = UI.GetColor("Script items",
  57. "[EGPred] Damage indication");
  58. var size = UI.GetValue("Script items",
  59. "[EGPred] Size of warning",
  60. "Integer");
  61. var sizeName = UI.GetValue("Script items",
  62. "[EGPred] Size of name", "Integer");
  63. var dispName = UI.GetValue("Script items",
  64. "[EGPred] Display Nade Name");
  65. var showDist = UI.GetValue("Script items",
  66. "[EGPred] Display Distance");
  67. var dispDmg = UI.GetValue("Script items",
  68. "[EGPred] Display Damage");
  69. if (type == "mol") {
  70. name = "Molotov";
  71. var eLoc = Entity.GetProp(ent, "CMolotovProjectile",
  72. "m_vecOrigin");
  73. } else if (type == "he") {
  74. name = "Flash/Frag";
  75. var eLoc = Entity.GetProp(ent, "CBaseCSGrenadeProjectile",
  76. "m_vecOrigin");
  77. } else if (type == "decoy") {
  78. name = "Decoy";
  79. var eLoc = Entity.GetProp(ent, "CDecoyProjectile",
  80. "m_vecOrigin");
  81. } else if (type == "smoke") {
  82. name = "Smoke";
  83. var eLoc = Entity.GetProp(ent, "CSmokeGrenadeProjectile",
  84. "m_vecOrigin");
  85. }
  86. if (!Entity.IsValid(ent) || Entity.IsDormant(ent))
  87. return;
  88. var distance = calcDist(eLoc, lLoc);
  89. if (distance <= distanceMax) {
  90. var world = Entity.GetRenderOrigin(ent);
  91. var cPos = Render.WorldToScreen(world);
  92. var willKill = false;
  93. var dmg;
  94. if (type == "he") {
  95. var damage = Entity.GetProp(ent, "CBaseGrenade", "m_flDamage");
  96. var armor = Entity.GetProp(local, "CCSPlayerResource", "m_iArmor");
  97. var health = Entity.GetProp(local, "CBasePlayer", "m_iHealth");
  98. const a = 105.0;
  99. const b = 25.0;
  100. const c = 140.0;
  101. const d = (distance - b) / (c + 1);
  102. var damage = (a - 18) * Math.exp(-d * d);
  103. if (armor > 0) {
  104. var newDmg = damage * 0.5;
  105. var armorDmg = (damage - newDmg) * 0.5;
  106. if (armorDmg > armor) {
  107. armor = armor * (1 / .5);
  108. newDmg = damage - armorDmg;
  109. }
  110. damage = newDmg;
  111. }
  112. dmg = Math.ceil(damage);
  113. if (dmg + 5 > health)
  114. willKill = true;
  115. else
  116. willKill = false;
  117. }
  118. size = Math.floor((size - distance / 20));
  119. sizeName = Math.floor((sizeName - distance / 20));
  120. size = adjTextSize(size);
  121. sizeName = adjTextSize(sizeName);
  122. for (var j = 0; j < size; j++) {
  123. if (willKill)
  124. Render.Circle(cPos[0], cPos[1], j, killColor);
  125. else
  126. if (j < (size / 1.5))
  127. Render.Circle(cPos[0], cPos[1], j, iColor);
  128. else
  129. Render.Circle(cPos[0], cPos[1], j, xColor);
  130. }
  131. var dmgX = (cPos[0] - (14 * (sizeName / 1.2)));
  132. var distX = (cPos[0] - (7 * (sizeName / 1.2)));
  133. if (dispDmg)
  134. Render.String(dmgX, cPos[1] - 60, 0, "Dmg:" + dmg, dmgColor,
  135. sizeName);
  136. if (dispName)
  137. Render.String(cPos[0] - 25, cPos[1] + 20, 0, name, nameColor,
  138. sizeName);
  139. if (showDist)
  140. Render.String(distX, cPos[1] - 60, 0, "D: " + Math.round(
  141. distance), distColor, sizeName);
  142. Render.String(cPos[0] - (size / 3.6), cPos[1] - (size / 1.3),
  143. 0, "!", exColor, size);
  144. }
  145. }
  146.  
  147. function adjTextSize(size) {
  148. if (size < 8)
  149. size = 8;
  150. if (size > 48)
  151. size = 48;
  152. if (size % 2 != 0)
  153. size += 1;
  154. return size;
  155. }
  156.  
  157. function inArray(string, array) {
  158. if (array == [] || array == undefined)
  159. return false;
  160. for (var i = 0; i < array.length; i++) {
  161. if (array[i] == string)
  162. return true;
  163. else if (i + 1 >= array.length)
  164. return false;
  165. }
  166. }
  167.  
  168. function calcDist(local, target) {
  169. var lx = local[0];
  170. var ly = local[1];
  171. var lz = local[2];
  172. var tx = target[0];
  173. var ty = target[1];
  174. var tz = target[2];
  175. var dx = lx - tx;
  176. var dy = ly - ty;
  177. var dz = lz - tz;
  178. return Math.sqrt(dx * dx + dy * dy + dz * dz);
  179. }
  180.  
  181. function setup() {
  182. UI.AddSliderInt("[EGPred] Size of warning", 0, 30);
  183. UI.AddSliderInt("[EGPred] Size of name", 0, 30);
  184. UI.AddColorPicker("[EGPred] Interior indicator");
  185. UI.AddColorPicker("[EGPred] Exterior indicator");
  186. UI.AddColorPicker("[EGPred] Exclamation indicator");
  187. UI.AddColorPicker("[EGPred] Name indicator");
  188. UI.AddColorPicker("[EGPred] Death indicator");
  189. UI.AddColorPicker("[EGPred] Damage indicator");
  190. UI.AddColorPicker("[EGPred] Distance indicator");
  191. UI.AddCheckbox("[EGPred] Enable Indicators");
  192. UI.AddCheckbox("[EGPred] Display Damage");
  193. UI.AddCheckbox("[EGPred] Display Distance");
  194. UI.AddCheckbox("[EGPred] Display Nade Name");
  195. createDropdown("[EGPred] Show grenades", ["Smoke", "Flash + Frag",
  196. "Molotov", "Decoy"
  197. ], true);
  198. Global.PrintColor([0, 255, 255, 255], "\n------------------------\n[EGPred] v1.0 by Ultranite\n------------------------\n");
  199. }
  200.  
  201. function dictLength(dict) {
  202. var count = 0;
  203. for (_ in dict) {
  204. count++;
  205. }
  206. return count;
  207. }
  208.  
  209. function createDropdown(name, values, multi) {
  210. UI[multi ? "AddMultiDropdown" : "AddDropdown"](name, values);
  211. binlib[name] = {
  212. "multi": multi,
  213. "values": {}
  214. };
  215. multi && values.reverse();
  216. var i = 0;
  217. for (value in values) {
  218. var index = multi ? (1 << (values.length - (i + 1))) : i;
  219. binlib[name].values[index] = values[value];
  220. i++;
  221. }
  222. }
  223.  
  224. function fetchDropdown(name) {
  225. var selection = (name ? [] : {})
  226. var bin = UI.GetValue("Misc", name);
  227. !name && function() {
  228. for (dropdown in binlib) selection[dropdown] =
  229. fetchDropdown(dropdown)
  230. }();
  231. if (name) {
  232. !binlib[name].multi && bin == 0 && selection.push(binlib[name]
  233. .values[0]) && function() {
  234. return selection;
  235. }();
  236. for (var i = dictLength(binlib[name].values) - 1; i >=
  237. 0; i--) {
  238. if (!binlib[name].multi && i == 0) continue;
  239. var index = binlib[name].multi ? (1 << i) : i;
  240. if (bin - index >= 0) {
  241. bin -= (index);
  242. selection.push(binlib[name].values[index]);
  243. }
  244. }
  245. }
  246. return selection;
  247. }
  248. /*function armorReduction(damage, armorVal) {
  249. var armorRatio = .5;
  250. var armorBonus = .5;
  251. if (armor > 0) {
  252. var newDmg = (damage * armorRatio);
  253. var armor = (damage - newDmg) * armorBonus;
  254. if (armor > armorVal) {
  255. armor = armorVal * (1 / armorBonus);
  256. newDmg = damage - armor;
  257. }
  258. damage = newDmg;
  259. }
  260. return newDmg;
  261. }*/
  262. setup();
  263. Global.RegisterCallback("Draw", "test");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement