Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. local Gauss
  2. local C4Distance = 0
  3. local box = gui.Groupbox(gui.Reference('VISUALS', "OTHER", "Options"), "Lethal C4 Radius", 0, 280, 213, 320);
  4. local check = gui.Checkbox(box, "check", "Active", false)
  5. local slider_r = gui.Slider(box, "slider_r", "Red", 255, 0, 255);
  6. local slider_g = gui.Slider(box, "slider_g", "Green", 255, 0, 255);
  7. local slider_b = gui.Slider(box, "slider_b", "Blue", 255, 0, 255);
  8. local slider_a = gui.Slider(box, "slider_a", "Alpha", 255, 0, 255);
  9.  
  10. function calc_dmg(Bomb, Player)
  11. Gauss = (C4Distance - 75.68) / 789.2
  12. local flDamage = 450.7 * math.exp(-Gauss * Gauss);
  13.  
  14. if Player:GetProp("m_ArmorValue") > 0 then
  15. local flArmorRatio = 0.5;
  16. local flArmorBonus = 0.5;
  17.  
  18. if Player:GetProp("m_ArmorValue") > 0 then
  19. local flNew = flDamage * flArmorRatio;
  20. local flArmor = (flDamage - flNew) * flArmorBonus;
  21.  
  22. if flArmor > Player:GetProp("m_ArmorValue") then
  23. flArmor = Player:GetProp("m_ArmorValue") * (1 / flArmorBonus);
  24. flNew = flDamage - flArmor;
  25. end
  26.  
  27. flDamage = flNew;
  28. end
  29. end
  30.  
  31. return math.max(flDamage, 0);
  32. end
  33.  
  34. local function drawCircle(x, y, z, radius, thickness, quality, r, g, b, a)
  35. local quality = quality or 20
  36. local thickness = thickness or 8
  37. local Screen_X_Line_Old, Screen_Y_Line_Old
  38. for rot = 0, 360, quality do
  39. local rot_temp = math.rad(rot)
  40. local LineX, LineY, LineZ = radius * math.cos(rot_temp) + x, radius * math.sin(rot_temp) + y, z
  41. local Screen_X_Line, Screen_Y_Line = client.WorldToScreen(LineX, LineY, LineZ)
  42. if Screen_X_Line ~= nil and Screen_X_Line_Old ~= nil then
  43. draw.SetFont(draw.CreateFont("Tahoma", 12));
  44. -- draw.Color(r, g, b, a)
  45. draw.Line(Screen_X_Line, Screen_Y_Line, Screen_X_Line_Old, Screen_Y_Line_Old)
  46. for i = 0, thickness do
  47. draw.Line(Screen_X_Line, Screen_Y_Line + i, Screen_X_Line_Old, Screen_Y_Line_Old + i)
  48. end
  49. end
  50. Screen_X_Line_Old, Screen_Y_Line_Old = Screen_X_Line, Screen_Y_Line
  51. end
  52. end
  53.  
  54. callbacks.Register("Draw", function()
  55.  
  56. if check:GetValue() then
  57.  
  58. local local_player = entities.GetLocalPlayer();
  59. local bomb = entities.FindByClass("CPlantedC4")[1];
  60.  
  61. if (bomb == nil or local_player == nil or not local_player:IsAlive()) then return end
  62.  
  63. if not (bomb:GetProp("m_bBombTicking") and bomb:GetProp("m_bBombDefused") == 0 and globals.CurTime() < bomb:GetProp("m_flC4Blow")) then
  64. return
  65. end
  66. local bomb_origin_x, bomb_origin_y, bomb_origin_z = bomb:GetAbsOrigin()
  67. local player_origin_x, player_origin_y, player_origin_z = local_player:GetAbsOrigin()
  68. local damage
  69. local radius = 0
  70.  
  71. repeat
  72. damage = calc_dmg(bomb, local_player)
  73. health_left = local_player:GetHealth() - damage
  74. if health_left < 0 then
  75. C4Distance = C4Distance + 1
  76. end
  77.  
  78. if health_left > 0 then end
  79. until (C4Distance == 1500 or health_left > 0)
  80.  
  81. radius = C4Distance
  82. -- 'cylinder'
  83. --for i=1,150,1 do
  84. -- drawCircle(bomb_origin_x, bomb_origin_y, player_origin_z+i, radius, 1, 40, 221, 33, 33, 100)
  85. --end
  86.  
  87. -- thick circle
  88. draw.Color(slider_r:GetValue(), slider_g:GetValue(), slider_b:GetValue(), slider_a:GetValue());
  89. drawCircle(bomb_origin_x, bomb_origin_y, player_origin_z, radius, 10, 1, 221, 33, 33, 100)
  90. end
  91. end)
  92.  
  93. client.AllowListener('bomb_exploded')
  94. callbacks.Register('FireGameEvent', function(event)
  95. if (event:GetName() == "bomb_exploded") then
  96. C4Distance = 0
  97. end
  98. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement