Advertisement
Guest User

Untitled

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