Advertisement
Guest User

Aimworks 3.2

a guest
Mar 24th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --   /$$$$$$  /$$$$$$ /$$      /$$ /$$      /$$  /$$$$$$  /$$$$$$$  /$$   /$$  /$$$$$$         /$$$$$$      /$$$$$$
  2. --  /$$__  $$|_  $$_/| $$$    /$$$| $$  /$ | $$ /$$__  $$| $$__  $$| $$  /$$/ /$$__  $$       /$$__  $$    /$$__  $$
  3. -- | $$  \ $$  | $$  | $$$$  /$$$$| $$ /$$$| $$| $$  \ $$| $$  \ $$| $$ /$$/ | $$  \__/      |__/  \ $$   |__/  \ $$
  4. -- | $$$$$$$$  | $$  | $$ $$/$$ $$| $$/$$ $$ $$| $$  | $$| $$$$$$$/| $$$$$/  |  $$$$$$          /$$$$$/     /$$$$$$/
  5. -- | $$__  $$  | $$  | $$  $$$| $$| $$$$_  $$$$| $$  | $$| $$__  $$| $$  $$   \____  $$        |___  $$    /$$____/
  6. -- | $$  | $$  | $$  | $$\  $ | $$| $$$/ \  $$$| $$  | $$| $$  \ $$| $$\  $$  /$$  \ $$       /$$  \ $$   | $$      
  7. -- | $$  | $$ /$$$$$$| $$ \/  | $$| $$/   \  $$|  $$$$$$/| $$  | $$| $$ \  $$|  $$$$$$/      |  $$$$$$//$$| $$$$$$$$
  8. -- |__/  |__/|______/|__/     |__/|__/     \__/ \______/ |__/  |__/|__/  \__/ \______/        \______/|__/|________/
  9. -- "IT ACTUALLY WORKS THIS TIME"
  10.  
  11.  
  12. -- AIMWORKS 3.2: NEARLY DECENT..
  13. -- THE GREATEST AIMBOT ON ROBLOX
  14. -- AND PROBABLY THE BUGGIEST TOO
  15. -- BUT WHATEVER IT'S GOOD ENOUGH
  16. -- WRITTEN BY UNREAL AND SCAPTER
  17. -- THANKS AUSTIN, CACA22, SAFAZI
  18. -- THANKS THETRUERIAS TOO UR GR8
  19. -- THANKS FOR CHOOSING FAZE SHIT
  20. -- SHOUTOUT TO CHROME/XETRICS XD
  21.  
  22. -- i should probably be using userinputservice
  23. -- tbh i shud probably get working on proper FOV stuffs
  24. -- prune dead vars
  25. -- FOV restrictions
  26. -- ESPP :D(Chams - Scap)
  27.  
  28. -- added in this version (3.1): huge amount of bug fixes, even uglier code (i keep impressing myself with how bad this can get... i need 2 rewrite this soon),  
  29.  
  30. local accuracy = 100
  31. local aimkey = "f" --Disable/Enable AimWorks
  32. local toggle_teamcheck = "h" --Ez-Pz Fix so people don't have to rejoin on FFA/TDM Games.
  33. local lassokey = "q" --Disable/Enable Lasso Rendering
  34. local control = "p" --Hide/UnHide Gui
  35. local headshot = 100
  36. local ignoreFOV    =  true
  37. local ignoreWalls  =  true
  38. local perfect_aim  =  true
  39. local perfect_aim_firstperson_distance = 200
  40. local rage_triggers = false --Elysian Only
  41. local RenderLassos =  true
  42. local ShootingTeam =  false -- will target neutral people anyways XDDD
  43. local SpreadControlRadius = Vector3.new(25, 25, 15) -- the larger you make those numbers the more likely your bullet is to hit. anything above 25, 25, 25 is a bit much. try 15, 15, 5
  44. local trigger_speed = 0.1
  45. local triggers  =  false --Elysian Only
  46. local Chams = true --Works now!??!!?
  47.  
  48. --Player Whitelist(People who don't get shot at.)
  49. local Whitelist = {"ihanks", "Lua_Environment", "like_clockwork", "Gin_Freecs", "AimWorks"}
  50. for i,v in pairs(game.Players:GetChildren()) do  --Adds anyone in-game who's friends with the Currenet player into the list.
  51.     if game.Players.LocalPlayer:IsFriendsWith(v.userId) then
  52.         table.insert(Whitelist, v.Name)
  53.     end
  54. end
  55.  
  56. game.Players.PlayerAdded:connect(function(player) --Adds friends to whitelist if they're just joining the game.
  57.     if game.Players.LocalPlayer:IsFriendsWith(player.userId) then
  58.         table.insert(Whitelist, player.Name)
  59.     end
  60. end)
  61.  
  62. -- todo --
  63. _G.SwordFightMode = false -- stuff that i am testing goes in _G. so i can toggle it
  64.  
  65. -- aim engine vars
  66. -- todo: more priorities
  67. -- prune dead vars
  68. local aim_through_list = {nil, nil, nil}
  69. local bone_name
  70. local camera = workspace.CurrentCamera
  71. local closest_distance
  72. local deathBlock
  73. local distance
  74. local FilteringEnabled = workspace.FilteringEnabled
  75. local huge = math.huge
  76. local in_fov
  77. local lasso
  78. local localplayer = game:GetService("Players").LocalPlayer
  79. local most_viable_player
  80. local mouse = localplayer:GetMouse()
  81. local CreatorId = game.CreatorId
  82. local players_service = game:GetService("Players")
  83. local position
  84. local random = math.random
  85. local ray = Ray.new
  86. local ray_start
  87. local running = true
  88. local sleeping
  89. local target
  90. local tele_bone
  91. local targ_bone
  92. local ticksslept = 0
  93. local trigger_debounce
  94. local vector
  95. local viableplayers = {}
  96.  
  97. local function FindInstance(instance_className, search_directory) -- i can inline this in a LOT of places... plus i can very very easily make this return a table of all found parts if a certain parameter is passed... might add that feature to my boilerplate
  98.  
  99.     if not search_directory then return end
  100.  
  101.     for i, v in pairs(search_directory:GetChildren()) do
  102.         if v.className == instance_className then
  103.             return(v)
  104.         end
  105.     end
  106.  
  107. end
  108.  
  109. local function CreateBlockOfDeath()
  110.  
  111.     if deathBlock then deathBlock:Destroy() end
  112.  
  113.     deathBlock = Instance.new("Part", workspace)
  114.     deathBlock.CanCollide = false
  115.     deathBlock.Size = SpreadControlRadius
  116.     deathBlock.Locked = true
  117.     mouse.TargetFilter = deathBlock
  118.     return deathBlock -- unnecessary
  119.  
  120. end -- Finished
  121.  
  122. local function ReturnsScreenCoordinatesAsVectorAndFOVChecksAsBool(player, bone) -- note: figure out what i wanted to do with datas in here
  123.  
  124.     if not bone then
  125.         return {_, false}
  126.     end
  127.  
  128.     return camera:WorldToScreenPoint(player.Character[bone].Position)
  129.  
  130. end
  131.  
  132. local function ReturnsPlayerCheckResults(player)
  133.  
  134.     -- Checks teams. If we won't shoot teammates and they're a teammate when we're not neutral, target them. We do this now because it can save a lot of FPS.
  135.     if not ShootingTeam then -- if not shooting teammates
  136.         if player.TeamColor == localplayer.TeamColor then -- if we're not shooting teammates and they're teammates
  137.             if not (player.Neutral and localplayer.Neutral) then -- if we're not shooting teammates and they're teammates and they're not neutral
  138.                 return false
  139.             end
  140.         end
  141.     end
  142.    
  143.     --Read through player 'Whitelist'
  144.     for i,v in pairs(Whitelist) do
  145.         if player.Name == v then
  146.             return false
  147.         end
  148.     end
  149.    
  150.     -- Checks if person is yourself.
  151.     if player == localplayer then
  152.         return false
  153.     end
  154.  
  155.     -- Checks if the player can be hurt.
  156.     if FindInstance("ForceField", player.Character) or FindInstance("Humanoid", player.Character, true).MaxHealth == huge then
  157.         return false
  158.     end
  159.  
  160.     -- Checks if they're dead.
  161.     if FindInstance("Humanoid", player.Character, true).Health == 0 then
  162.         return false
  163.     end
  164.  
  165.     -- Checks if person is in FOV.
  166.     local screen_position, in_fov = ReturnsScreenCoordinatesAsVectorAndFOVChecksAsBool(player, "Torso")
  167.     if not (in_fov or ignoreFOV) then
  168.         return false
  169.     else
  170.         return player, screen_position
  171.     end
  172.  
  173. end
  174.  
  175. local function ReturnsBoneOrFalse(player)
  176.  
  177.     if perfect_aim then
  178.         return (FilteringEnabled and "Head" or "Left Arm") -- should be Head or left arm
  179.     end
  180.  
  181.     if not (random(1, 100) <= accuracy) then
  182.         return false
  183.     end
  184.  
  185.     if (random(1, 100) <= headshot) and FilteringEnabled then
  186.         return "Head"
  187.     end
  188.  
  189.     return "Left Arm" -- should be left arm
  190.  
  191. end
  192.  
  193.  
  194. -- rewrite for cursor distance checks then optimize
  195. local function ReturnsViablePlayerOrNil() -- this is a clusterfuck i should probably branch this off into more functions... especially one for raycasting
  196.     aim_through_list[1], aim_through_list[2] = deathBlock, localplayer.Character
  197.     local distance = 1000
  198.     local closest_distance = 1000
  199.     local most_viable_player = nil
  200.  
  201.     -- FPS optimizations for shitty pcs... should more than double FPS in some situations. not really necessary for me :D..
  202.     -- if sleeping and ticksslept ~= 15 then
  203.     --  ticksslept = ticksslept + 1
  204.     --  return target
  205.     -- end
  206.  
  207.     local your_character = localplayer.Character
  208.     local your_head = your_character and your_character:FindFirstChild "Head"
  209.  
  210.     for i, player_being_checked in pairs(players_service:GetPlayers()) do -- getplayers is underrated
  211.  
  212.         local player_or_false, targets_coordinates = ReturnsPlayerCheckResults(player_being_checked)
  213.  
  214.         if player_or_false then
  215.  
  216.             local char = player_being_checked.Character
  217.             local target_torso = char and char:FindFirstChild "Torso" -- where the ray will aim/shoot for
  218.  
  219.             if target_torso then
  220.  
  221.                 -- phantom fuckery tbh
  222.                 -- aim ahead (why arent we just taking advantage of ignorerays austin tf) of gun sights... Swag :O
  223.                 if (camera.Focus.p - camera.CoordinateFrame.p).magnitude <= 1 then
  224.                     ray_start = your_head.Position + your_head.CFrame.lookVector * 10 + Vector3.new(0, 3, 0)
  225.                 else
  226.                     ray_start = your_head.Position + Vector3.new(0, 2, 0)
  227.                 end
  228.  
  229.                 -- ray_start = your_head.Position + your_head.CFrame.lookVector * 10 + Vector3.new(0, 3, 0) -- doododoo do DOODODOododoDoERFAhaagr
  230.  
  231.                 if not targets_coordinates then -- unnecessary rn
  232.                     distance = (Vector2.new(targets_coordinates.X, targets_coordinates.Y) - Vector2.new(mouse.X, mouse.Y)).magnitude -- broken
  233.                 else
  234.                     distance = (Vector2.new(targets_coordinates.X, targets_coordinates.Y) - Vector2.new(mouse.X, mouse.Y)).magnitude
  235.                 end
  236.                 vector = (target_torso.Position - ray_start)
  237.  
  238.                 -- distance = vector -- bug
  239.  
  240.                 if (not targets_coordinates) or (distance <= closest_distance) then
  241.  
  242.                     -- create ray that starts at 'ray_start' and points towards the target
  243.                     local new_ray = ray(ray_start, vector.unit * 1000) -- "fire" ray and make sure to ignore our own character
  244.                     local hit, position = workspace:FindPartOnRayWithIgnoreList(new_ray, aim_through_list) -- check if the ray hit anything and if it's a descendant of the target's character
  245.  
  246.                     if (hit and hit:isDescendantOf(char)) or ignoreWalls then
  247.                         -- only change closest_distance if the target character is visible
  248.                         closest_distance = distance
  249.                         most_viable_player = player_being_checked
  250.                     end -- hit or ignore walls
  251.  
  252.                 end -- meets distance or no priority
  253.  
  254.             end -- closes player_or_false
  255.  
  256.         end -- closes player_or_false check
  257.     end -- closes table loop
  258.  
  259.     blockName = ReturnsBoneOrFalse(most_viable_player)
  260.     sleeping = true
  261.     return most_viable_player
  262.  
  263. end -- closes function
  264.  
  265.  
  266. function CreateChams()
  267.     if Chams then
  268.         for _,q in pairs(camera:GetChildren()) do
  269.             if q:IsA("BoxHandleAdornment") then
  270.                 q:Destroy()
  271.             end
  272.         end
  273.         for _,v in pairs(game.Players:GetChildren()) do
  274.             if v.Name ~= game.Players.LocalPlayer.Name and v.Character then
  275.                 for _,c in pairs(v.Character:GetChildren()) do
  276.                     if c.Name ~= "Head" and c:IsA("BasePart") then
  277.                         for _,p in pairs(Whitelist) do
  278.                             if v.TeamColor == game.Players.LocalPlayer.TeamColor or v.Name == p then
  279.                                 local esp = Instance.new("BoxHandleAdornment", camera)
  280.                                 esp.Color3 = Color3.new(0, 255, 0)
  281.                                 esp.Size = c.Size
  282.                                 esp.AlwaysOnTop = true
  283.                                 esp.ZIndex = 1
  284.                                 esp.Adornee = c
  285.                             elseif v.TeamColor ~= game.Players.LocalPlayer.TeamColor then
  286.                                 local esp = Instance.new("BoxHandleAdornment", camera)
  287.                                 esp.Color3 = Color3.new(255, 0, 0)
  288.                                 esp.Size = c.Size
  289.                                 esp.AlwaysOnTop = true
  290.                                 esp.ZIndex = 1
  291.                                 esp.Adornee = c
  292.                             end
  293.                         end
  294.                     end
  295.                 end
  296.             end
  297.         end
  298.     end
  299. end
  300.  
  301. CreateChams()
  302.  
  303. game.Workspace.ChildAdded:connect(function(child)
  304.     if child:IsA("Model") or child:IsA("Folder") or child:IsA("BasePart") then
  305.         CreateChams()
  306.     end
  307. end)
  308.  
  309. game.Workspace.ChildRemoved:connect(function(child)
  310.     if child:IsA("Model") or child:IsA("Folder") then
  311.         CreateChams()
  312.     end
  313. end)
  314.  
  315. game.Players.LocalPlayer.Changed:connect(function()
  316.     CreateChams()
  317. end)
  318.  
  319. local function TargetPlayer(player) -- this needs to be refactored
  320.  
  321.     -- not needed anymore unless you want sticky aim (this can be a good thing) or the aimbot lags you
  322.     -- sticky aim would be defined as "wont instantly target another guy if they enter the screen"
  323.  
  324.     -- if ticksslept == 15 then -- ok
  325.     --  ticksslept = 0
  326.     --  sleeping = false
  327.     -- end
  328.    
  329.     if aim_through_list[3] then
  330.         aim_through_list[3].Position = aim_through_list[3].Position + Vector3.new(0,200,0)
  331.         table.remove(aim_through_list, 3)
  332.     end
  333.  
  334.     if not player then -- i see this and i pretty much give up on rewriting
  335.         if lasso then lasso:Destroy() lasso = nil end -- this feels wrong. i cant stand reusing code outside functions >:(
  336.         target = nil
  337.         lasso = Instance.new("SelectionPointLasso", camera)
  338.         lasso.Humanoid, lasso.Point = FindInstance("Humanoid", localplayer.Character, true), mouse.Hit.p
  339.         lasso.Color3 = Color3.new(0,255,0)
  340.         return -- this one line here determines a surprising amount about how the aimbot works XD
  341.         -- thats not a good thing :(
  342.     end
  343.  
  344.     if RenderLassos then -- should be snaplassos... always gon be lassos tbh
  345.         if lasso then lasso:Destroy() lasso = nil end
  346.         lasso = Instance.new("SelectionPartLasso", camera)
  347.         lasso.Humanoid, lasso.Part = FindInstance("Humanoid", player.Character, true), game.Players.LocalPlayer.Character.Torso
  348.         lasso.Color3 = Color3.new(0,255,0)
  349.     end
  350.  
  351.     bone_name = ReturnsBoneOrFalse(player)
  352.  
  353.     if player.Character.Head and bone_name then
  354.         -- this lets us force headshots :D
  355.         tele_bone = player.Character[bone_name]
  356.         tele_bone.Parent = player.Character
  357.         tele_bone.Size = SpreadControlRadius
  358.         tele_bone.CanCollide = false
  359.         tele_bone.CFrame = CFrame.new(workspace.CurrentCamera.CoordinateFrame.p + workspace.CurrentCamera.CoordinateFrame.lookVector * perfect_aim_firstperson_distance, workspace.CurrentCamera.CoordinateFrame.p) -- // thx to my main man safazi,,,, for this and for showing me the magic of coordinateframe <3
  360.         tele_bone.Transparency=1
  361.         tele_bone:ClearAllChildren()
  362.         table.insert(aim_through_list, 3, tele_bone)
  363.         -- swager
  364.         target = player
  365.         return player
  366.  
  367.     end
  368.  
  369.     if bone_name then
  370.         deathBlock.Parent = player.Character
  371.         deathBlock.CanCollide = false
  372.         deathBlock.Name = bone_name
  373.     else
  374.         return
  375.     end
  376.  
  377.     target = player
  378.     return player
  379.  
  380. end
  381.  
  382.  
  383. --[[
  384.  
  385. INIT PROCESS DOCUMENTATION:
  386.  
  387. 1] CREATE DEATHBLOCK
  388. 2] MAKE DEATHBLOCK REGENERATE
  389. 3] USE BINDTORENDERSTEP TO START AIMBOT LOOP
  390. 4] DETECT KEY INPUT (WITHOUT USERINPUTSERVICE. I KNOW THAT IM LAME)
  391.  
  392. ]]--
  393.  
  394.  
  395. CreateBlockOfDeath()
  396. workspace.DescendantRemoving:connect(function(instance)
  397.     if instance == deathBlock then CreateBlockOfDeath() end
  398. end)
  399. -- Keeps blockie safe :33 XD
  400.  
  401. -- test? havent tried
  402. local function shoot() -- elysian only :33333 XDd. bother jordan, not mememememe.
  403.  
  404.     if not mouse1press then return end
  405.  
  406.     if trigger_debounce then return end
  407.  
  408.     trigger_debounce = true
  409.  
  410.     if rage_triggers and mouse1press() then
  411.  
  412.         mouse1press()
  413.         wait(0.1)
  414.         mouse1release()
  415.  
  416.     elseif mouse1press then
  417.  
  418.         mouse1press()
  419.         wait(0)
  420.         mouse1release()
  421.         wait(trigger_speed)
  422.  
  423.     end
  424.  
  425.     trigger_debounce = false
  426.  
  427. end
  428.  
  429. -- refaactorrrr
  430. game:GetService("RunService"):BindToRenderStep("First", Enum.RenderPriority.First.Value, function() -- another clusterfuck
  431.  
  432.     if running then
  433.         if localplayer.Character then -- pretty sure i do this in getviableplayer lmao tbh
  434.             TargetPlayer(ReturnsViablePlayerOrNil())
  435.             if target and target.Character then
  436.                 if localplayer:GetMouse().Target == deathBlock then return end -- praise targetfilter!
  437.                 -- later
  438.                 -- deathBlock.CFrame = CFrame.new(localplayer.Character.Head.Position + (mouse.Hit.p + localplayer.Character.Head.Position).unit * 16)
  439.                 -- print(deathBlock)
  440.                 if triggers then shoot() end
  441.             else
  442.                 deathBlock.Parent = workspace
  443.             end
  444.         end
  445.     end
  446.  
  447. end)
  448.  
  449. local Keys = Instance.new("ScreenGui", game.Players.LocalPlayer.PlayerGui)
  450. Keys.Name = "AimWorks Container"
  451. local Frame = Instance.new("Frame", Keys)
  452. Frame.Name = "Holder"
  453. Frame.BackgroundColor3 = Color3.new(62/255, 62/255, 62/255)
  454. Frame.BackgroundTransparency = 0.3
  455. Frame.BorderSizePixel = 2
  456. Frame.BorderColor3 = Color3.new(255,255,255)
  457. Frame.Size = UDim2.new(0, 200, 0, 300)
  458. Frame.Position = UDim2.new(0, 0, 0.5, 0)
  459. local Aim = Instance.new("TextLabel", Frame)
  460. Aim.BackgroundTransparency = 1
  461. Aim.Size = UDim2.new(0, 200, 0, 100)
  462. Aim.FontSize = "Size32"
  463. Aim.Font = "SourceSans"
  464. Aim.Text = " Rendering Lassos: "..tostring(RenderLassos).." \n Key: "..lassokey
  465. Aim.TextColor3 = Color3.new(255, 255, 255)
  466. Aim.TextXAlignment = "Left"
  467. Aim.TextStrokeTransparency = 0
  468. Aim.TextYAlignment = "Top"
  469. Aim.TextWrapped = true
  470. local Team = Instance.new("TextLabel", Frame)
  471. Team.Position = UDim2.new(0, 0, 0, 100)
  472. Team.BackgroundTransparency = 1
  473. Team.Size = UDim2.new(0, 200, 0, 100)
  474. Team.FontSize = "Size32"
  475. Team.Font = "SourceSans"
  476. Team.Text = " Team Check: \n "..tostring(ShootingTeam).." \n Key: "..toggle_teamcheck
  477. Team.TextColor3 = Color3.new(255, 255, 255)
  478. Team.TextXAlignment = "Left"
  479. Team.TextStrokeTransparency = 0
  480. Team.TextYAlignment = "Top"
  481. Team.TextWrapped = true
  482. local Run = Instance.new("TextLabel", Frame)
  483. Run.Position = UDim2.new(0, 0, 0, 200)
  484. Run.BackgroundTransparency = 1
  485. Run.Size = UDim2.new(0, 200, 0, 100)
  486. Run.FontSize = "Size32"
  487. Run.Font = "SourceSans"
  488. Run.Text = " Running: "..tostring(running).." \n Key: "..aimkey
  489. Run.TextColor3 = Color3.new(255, 255, 255)
  490. Run.TextXAlignment = "Left"
  491. Run.TextStrokeTransparency = 0
  492. Run.TextYAlignment = "Top"
  493. Run.TextWrapped = true
  494.  
  495. local keydown = mouse.KeyDown:connect(function(keys)
  496.     if (keys == aimkey) then
  497.         running = not running
  498.         if (running) then
  499.             print("[SILENTAIM] activated.")
  500.             Run.Text = " Running: "..tostring(running).." \n Key: "..aimkey
  501.         else
  502.             print("[SILENTAIM] deactivated.")
  503.             Run.Text = " Running: "..tostring(running).." \n Key: "..aimkey
  504.         end
  505.     end
  506. end)
  507.  
  508. local keydowns = mouse.KeyDown:connect(function(keys)
  509.     if (keys == toggle_teamcheck) then
  510.         if (ShootingTeam) then
  511.             print("[SILENTAIM] Team Shooting deactivated")
  512.             ShootingTeam = false
  513.             Team.Text = " Team Check: \n "..tostring(ShootingTeam).." \n Key: "..toggle_teamcheck
  514.         else
  515.             print("[SILENTAIM] Team Shooting activated")
  516.             ShootingTeam = true
  517.             Team.Text = " Team Check: \n "..tostring(ShootingTeam).." \n Key: "..toggle_teamcheck
  518.         end
  519.     end
  520. end)
  521.  
  522. local keydowns = mouse.KeyDown:connect(function(keys)
  523.     if (keys == lassokey) then
  524.         if (RenderLassos) then
  525.             print("[SILENTAIM] No Longer Rendering Lassos")
  526.             RenderLassos = false
  527.             Aim.Text = " Rendering Lassos: "..tostring(RenderLassos).." \n Key: "..lassokey
  528.         else
  529.             print("[SILENTAIM] Rendering Lassos")
  530.             RenderLassos = true
  531.             Aim.Text = " Rendering Lassos: "..tostring(RenderLassos).." \n Key: "..lassokey
  532.         end
  533.     end
  534. end)
  535.  
  536. local keydowns = mouse.KeyDown:connect(function(keys)
  537.     if (keys == control) then
  538.         if (Frame.Visible == true) then
  539.             Frame.Visible = false
  540.         else
  541.            Frame.Visible = true
  542.         end
  543.     end
  544. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement