Advertisement
sudhanshuprasad

ANOMIC: REVAMP SCRIPT | SILENT AIM, INSTANT KILL, AUTO RELOAD, GUN SCRIPT

Jul 22nd, 2022
2,582
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 33.44 KB | None | 1 0
  1. ---------------- [[Local Variables]]
  2. local ReplicatedStorageService = game:GetService("ReplicatedStorage")
  3. local ContextActionService = game:GetService("ContextActionService")
  4. local UserInputService = game:GetService("UserInputService")
  5. local PlayersService = game:GetService("Players")
  6. local GuiService = game:GetService("GuiService")
  7. local System = {}
  8. ---------------- [[Main Variables]]
  9. System.IsSilentAimEnabled = true
  10. System.IsInstantKillEnabled = true
  11. System.SACircleSizeControlSpeed = 10 -- don't touch unless you understand what it does
  12. System.SACircleTransparencyControlSpeed = .1 -- don't touch unless you understand what it does
  13. System.SilentAimCircleRange = System.SACircleSizeControlSpeed * 10 -- just don't touch
  14. ---------
  15. System.LocalPlayer = PlayersService.LocalPlayer
  16. System.Mouse = System.LocalPlayer:GetMouse()
  17. System.RSRemotesFolder = ReplicatedStorageService:WaitForChild("Events", 100)
  18. System.RSAmmoFolder = ReplicatedStorageService:WaitForChild("AmmoFolder", 100)
  19. System.PlayerVehiclesFolder = workspace:WaitForChild("PlayerVehicles", 100)
  20. System.ViewModelsFolder = workspace:WaitForChild("ViewModels", 100)
  21. System.TemporaryIgnore = workspace:WaitForChild("TemporaryIgnore", 100)
  22. System.Modules = {}
  23. System.Modules.GunModule = require(ReplicatedStorageService:WaitForChild("GunModule",100))
  24. System.Modules.TeamList = require(ReplicatedStorageService:WaitForChild("TeamList",100))
  25. System.Modules.ItemList = require(ReplicatedStorageService:WaitForChild("ItemList",100))
  26. System.Modules.CameraModifier = require(ReplicatedStorageService:WaitForChild("CameraModifier",100))
  27. System.Modules.ShoulderCamera = require(ReplicatedStorageService.CameraModifier:WaitForChild("ShoulderCamera",100))
  28. System.Remotes = {}
  29. System.Remotes.GunServer = System.RSRemotesFolder:WaitForChild("GunServer", 100)
  30. System.Remotes.GetDataInfo = System.RSRemotesFolder:WaitForChild("GetDataInfo", 100)
  31. System.ServerRunTimeHolder = ReplicatedStorageService:WaitForChild("ServerRunTime", 100)
  32. System.LocalPlayerAmmoFolder = System.RSAmmoFolder:WaitForChild(System.LocalPlayer.Name, 100)
  33. System.RecordedToolData = {}
  34. System.VehiclesDataTab = {}
  35. System.TargetsDataTab = {}
  36. System.LocalPlayerDataTab = nil
  37. System.LastGunUsedTick = 0
  38. System.CurrentGunRange = 300
  39. System.LocalPlayerPing = 1
  40. System.LocalPlayerPingHalf = 1
  41. System.SilentAimIgnoreList = {System.ViewModelsFolder, System.TemporaryIgnore}
  42. System.SilentAimIgnoreListStartFrom = #System.SilentAimIgnoreList + 1
  43. ---------------- [[Functions]]
  44. local TickForPing
  45. function System:updateLocalPlayerPing()
  46. TickForPing = tick()
  47. self.Remotes.GetDataInfo:InvokeServer("Playtime")
  48. TickForPing = tick() - TickForPing
  49. self.LocalPlayerPing, self.LocalPlayerPingHalf = TickForPing, TickForPing/2
  50. end
  51. function System:registerNewObjectToTable(TargetTable, NewObject, OldObject, TableFindStartFrom)
  52. if NewObject ~= nil then
  53. table.insert(TargetTable, NewObject)
  54. end
  55. if OldObject ~= nil then
  56. local OldObjectIndex = table.find(TargetTable, OldObject, TableFindStartFrom)
  57. --warn("Removing Value: ", OldObject, "Index: ", OldObjectIndex)
  58. if OldObjectIndex ~= nil then
  59. table.remove(TargetTable, OldObjectIndex)
  60. end
  61. end
  62. end
  63. function System:registerItemType(ToolName)
  64. if self.RecordedToolData[ToolName] == nil then
  65. local CurrentToolData = self.Modules.ItemList[ToolName]
  66. if CurrentToolData ~= nil then
  67. local ItemDataTab = {}
  68. ItemDataTab.MaxAmmo = CurrentToolData.MaxAmmo -- fixed
  69. ItemDataTab.AmmoType = CurrentToolData.AmmoType -- fixed
  70. ItemDataTab.Damage = CurrentToolData.Damage -- fixed
  71. ItemDataTab.Firerate = CurrentToolData.Firerate -- fixed
  72. ItemDataTab.Accuracy = (CurrentToolData.Accuracy ~= nil and CurrentToolData.Accuracy.MinAimingAccuracy) or nil -- fixed
  73. ItemDataTab.ReloadTime = CurrentToolData.ReloadTime -- fixed
  74. ItemDataTab.DamageMultiplier = CurrentToolData.DamageMultiplier -- fixed
  75. ItemDataTab.ProjectileAmount = CurrentToolData.ProjectileAmount -- fixed
  76. ItemDataTab.FullDamageRange = CurrentToolData.FullDamageRange -- fixed
  77. ItemDataTab.Range = CurrentToolData.Range -- fixed
  78. self.RecordedToolData[ToolName] = ItemDataTab
  79. return ItemDataTab
  80. else
  81. self.RecordedToolData[ToolName] = false
  82. return false
  83. end
  84. else
  85. return self.RecordedToolData[ToolName]
  86. end
  87. end
  88. function System:returnIsGovernmentFromTeamName(TeamName)
  89. local CurrentTeamData = self.Modules.TeamList[TeamName]
  90. if CurrentTeamData ~= nil then
  91. return CurrentTeamData.IsGovernment
  92. else
  93. return false
  94. end
  95. end
  96. function System:findCharacterHeadFromTargetPart(TargetPart)
  97. if TargetPart.Name ~= "Head" then
  98. local CurrentParent
  99. for Repeat = 1, 5 do
  100. CurrentParent = TargetPart.Parent
  101. if CurrentParent == nil then
  102. break
  103. elseif CurrentParent:IsA("Model") == true and CurrentParent:FindFirstChildOfClass("Humanoid") ~= nil then
  104. return CurrentParent:FindFirstChild("Head") or TargetPart, CurrentParent.Humanoid
  105. end
  106. end
  107. else
  108. return TargetPart, TargetPart.Parent:FindFirstChildOfClass("Humanoid")
  109. end
  110. return TargetPart
  111. end
  112. System.ProcessedToolNamesForPass = {}
  113. function System:generatePassForGunRemote(ToolName, MagValue)
  114. local ToolData = self:registerItemType(ToolName)
  115. local Pass1, Pass2 = nil, 1
  116. local ToolNameLength = ToolName:len()
  117. if self.ProcessedToolNamesForPass[ToolName] == nil then
  118. for Num1 = 1, ToolNameLength do
  119. Pass2 = Pass2 + (string.byte(string.sub(ToolName, Num1, Num1)) * 2)
  120. end
  121. self.ProcessedToolNamesForPass[ToolName] = Pass2
  122. else
  123. Pass2 = self.ProcessedToolNamesForPass[ToolName]
  124. end
  125. Pass1 = self.ServerRunTimeHolder.Value
  126. Pass2 = tonumber(string.sub(tostring(Pass2 * Pass1 * MagValue * ToolNameLength * ToolData.Firerate * ToolData.Accuracy), 1, 16))
  127. return Pass2, Pass1
  128. end
  129. function System:customGunReloadFunction(GunTool)
  130. self.Remotes.GunServer:FireServer("Reload", GunTool)
  131. end
  132. System.DamageHitInfoHolderTabs = {}
  133. System.DamageHitInfoTab = {}
  134. System.DamageHitInfoTab.HitType = "Player"
  135. function System:returnHitInfoHolderTab(GunProjectileAmount)
  136. local CurrentDamageHitInfoHolderTab = self.DamageHitInfoHolderTabs[GunProjectileAmount]
  137. if CurrentDamageHitInfoHolderTab == nil then
  138. CurrentDamageHitInfoHolderTab = {}
  139. for ProjectileCount = 1, GunProjectileAmount or 1 do
  140. CurrentDamageHitInfoHolderTab["HitInfo"..tostring(ProjectileCount)] = self.DamageHitInfoTab
  141. end
  142. self.DamageHitInfoHolderTabs[GunProjectileAmount] = CurrentDamageHitInfoHolderTab
  143. end
  144. return CurrentDamageHitInfoHolderTab
  145. end
  146. function System:customDamagePlayerFunction(RepeatCount, HitPosition, HitObject, HitNormal, GunTool, GunMagValue, GunProjectileAmount)
  147. local CurrentDamageHitInfoHolderTab = self:returnHitInfoHolderTab(GunProjectileAmount)
  148. self.DamageHitInfoTab.HitPoint = HitPosition
  149. self.DamageHitInfoTab.HitPart = HitObject
  150. self.DamageHitInfoTab.Surface = HitPosition.Unit
  151. for ShootCount = 0, RepeatCount - 1 do
  152. self.Remotes.GunServer:FireServer("Fire", GunTool, CurrentDamageHitInfoHolderTab, self:generatePassForGunRemote(GunTool.Name, GunMagValue - ShootCount));
  153. end
  154. end
  155. --------
  156. function System:returnDamageFromTargetDistance(TargetDistance, TargetDamageMultiplier, FullDamageRange, MaxGunRange, DamageValue)
  157. if TargetDistance > FullDamageRange then
  158. if TargetDistance < MaxGunRange then
  159. return math.floor(math.ceil(DamageValue-DamageValue*((TargetDistance-FullDamageRange)/(MaxGunRange-FullDamageRange))) * TargetDamageMultiplier)
  160. else
  161. return 0
  162. end
  163. else
  164. return math.floor(DamageValue * TargetDamageMultiplier)
  165. end
  166. end
  167. function System:requestInstantKill(GunSelf, HitPosition, HitObject, HitNormal)
  168. --warn(GunSelf, HitPosition, HitObject, HitNormal, "End")
  169. if HitObject ~= nil and HitObject:IsA("BasePart") == true and HitObject.Parent ~= nil then
  170. local HitHumanoid, HitPlayer, HitPlayerDataTab; HitObject, HitHumanoid = self:findCharacterHeadFromTargetPart(HitObject)
  171. if HitHumanoid ~= nil and HitHumanoid.Health > 0 then
  172. HitPlayer = PlayersService:GetPlayerFromCharacter(HitObject.Parent)
  173. HitPlayerDataTab = self.TargetsDataTab[HitPlayer]
  174. --warn("Player About To Target: ", HitPlayer, HitPlayerDataTab.IsOnVehicleSeat, HitPlayerDataTab.WantedStatusHolder.Value, HitPlayerDataTab.InMyTeam)
  175. if HitPlayerDataTab ~= nil and HitPlayerDataTab.InMyTeam == false then
  176. local CurrentShootDamage = System:returnDamageFromTargetDistance((GunSelf.GunHandle.Position - HitPosition).Magnitude, HitPlayerDataTab.DamageMultiplier or 1, GunSelf.FullDamageRange, GunSelf.MaxGunRange, GunSelf.GunDamageOnHead)
  177. --print("+Damage From Range ::", CurrentShootDamage, (GunSelf.GunHandle.Position - HitPosition).Magnitude, HitPlayerDataTab.DamageMultiplier or 1, GunSelf.FullDamageRange, GunSelf.MaxGunRange, GunSelf.GunDamageOnHead)
  178. if CurrentShootDamage ~= 0 then
  179. local CurrentShootLoopCount = math.ceil((HitHumanoid.Health/CurrentShootDamage)/GunSelf.GunProjectileAmount) -- ModuleTab.FullDamageRange
  180. if CurrentShootLoopCount > GunSelf.GunMagHolder.Value then
  181. CurrentShootLoopCount = GunSelf.GunMagHolder.Value
  182. end
  183. self:customDamagePlayerFunction(CurrentShootLoopCount, HitPosition, HitObject, HitNormal, GunSelf.GunTool, GunSelf.GunMagHolder.Value, GunSelf.GunProjectileAmount)
  184. --print("+Damage Loop Count : ", CurrentShootLoopCount, GunSelf.GunTool, GunSelf.GunMagHolder.Value)
  185. return nil
  186. end
  187. end
  188. end
  189. end
  190. return HitPosition, HitObject, HitNormal
  191. end
  192. System.CosmeticBulletObject = Instance.new("Part")
  193. System.CosmeticBulletObject.Anchored = true
  194. System.CosmeticBulletObject.CanCollide = false
  195. System.CosmeticBulletObject.CanTouch = false
  196. System.CosmeticBulletObject.Transparency = 0
  197. System.CosmeticBulletObject.Material = Enum.Material.Neon
  198. System.CosmeticBulletObject.Color = Color3.new(0.666667, 0, 1)
  199. System.CosmeticBulletObject.Size = Vector3.new(.1, .1, 0)
  200. function System.playSilentAimBulletEffect(Origin, TargetHead)
  201. local cosmeticBulletObject = System.CosmeticBulletObject:Clone()
  202. cosmeticBulletObject.Size = Vector3.new(cosmeticBulletObject.Size.X, cosmeticBulletObject.Size.Y, (TargetHead.Position - Origin).Magnitude)
  203. cosmeticBulletObject.CFrame = CFrame.new(Origin, TargetHead.Position) * CFrame.new(0, 0, -cosmeticBulletObject.Size.Z/2)
  204. cosmeticBulletObject.Parent = System.TemporaryIgnore
  205. task.wait(.1)
  206. cosmeticBulletObject:Destroy()
  207. end
  208. function System.modedFireSingleProjectile(GunSelf, GunTool)
  209. System.LastGunUsedTick = tick()
  210. System.CurrentGunRange = GunSelf.MaxGunRange
  211. --print("Using ModedFireSingleShot", GunSelf, GunTool)
  212. local TargetPosition, TargetObject, TargetNormal
  213. if System.IsSilentAimEnabled == true then
  214. if GunSelf.AmmoType ~= "12 Gauge" or tick() - GunSelf.SilentShotgunTick >= .1 then
  215. local SilentTargetHead = System:returnClosestVisibleTargetToMouse()
  216. if SilentTargetHead ~= nil then
  217. TargetPosition, TargetObject, TargetNormal = SilentTargetHead.Position, SilentTargetHead, SilentTargetHead.Position.Unit
  218. task.spawn(System.playSilentAimBulletEffect, GunSelf.GunHandle.Position, SilentTargetHead)
  219. else
  220. TargetPosition, TargetObject, TargetNormal = GunSelf:FireCuteProjectile(GunTool)
  221. end
  222. else
  223. return nil
  224. end
  225. else
  226. TargetPosition, TargetObject, TargetNormal = GunSelf:FireCuteProjectile(GunTool)
  227. end
  228. if System.IsInstantKillEnabled == true then
  229. if GunSelf.AmmoType == "12 Gauge" then
  230. if tick() - GunSelf.SilentShotgunTick < .1 then
  231. return nil
  232. else
  233. GunSelf.SilentShotgunTick = tick()
  234. end
  235. end
  236. return System:requestInstantKill(GunSelf, TargetPosition, TargetObject, TargetNormal)
  237. end
  238. return TargetPosition, TargetObject, TargetNormal
  239. end
  240. function System:modifyGunHandlerModule(Module, ModuleTab)
  241. if ModuleTab.LoumecDum == nil then
  242. ModuleTab.LoumecDum = true
  243. if Module.Parent ~= nil and Module.Parent.Parent ~= nil then
  244. ModuleTab.GunTool = Module.Parent.Parent
  245. ModuleTab.GunName = ModuleTab.GunTool.Name
  246. ModuleTab.GunHandle = ModuleTab.GunTool.Handle
  247. ModuleTab.GunInfoFolder = ModuleTab.GunTool.InfoFolder
  248. ModuleTab.GunMagHolder = ModuleTab.GunInfoFolder.Mag
  249. ModuleTab.GunDataTab = self:registerItemType(ModuleTab.GunName)
  250. ModuleTab.AmmoType, ModuleTab.GunDamage, ModuleTab.GunProjectileAmount, ModuleTab.FullDamageRange, ModuleTab.MaxGunRange = ModuleTab.GunDataTab.AmmoType, ModuleTab.GunDataTab.Damage, ModuleTab.GunDataTab.ProjectileAmount, ModuleTab.GunDataTab.FullDamageRange, ModuleTab.GunDataTab.Range
  251. ModuleTab.GunDamageOnHead = ModuleTab.GunDamage.Head
  252. --warn(Module:GetFullName(), ModuleTab, ModuleTab.AmmoType, ModuleTab.GunDamage, ModuleTab.GunDamageOnHead)
  253. ModuleTab.SilentShotgunTick = 0
  254. ModuleTab.FireCuteProjectile = ModuleTab.FireSingleProjectile
  255. ModuleTab.FireSingleProjectile = self.modedFireSingleProjectile
  256. end
  257. end
  258. end
  259. System.OriginalRequire = getrenv().require
  260. function System:initiateGunHandlerModification()
  261. getrenv().require = function(Module)
  262. if Module.Name == "GunHandlerLocal" then
  263. self:modifyGunHandlerModule(Module, require(Module))
  264. end
  265. return self.OriginalRequire(Module)
  266. end
  267. local ClientInteractor, GunHandlerLocal
  268. for _, GunTool in next, self.LocalPlayer:WaitForChild("Backpack"):GetChildren() do
  269. if GunTool:IsA("Tool") == true then
  270. ClientInteractor = GunTool:FindFirstChild("ClientInteractor")
  271. if ClientInteractor ~= nil then
  272. GunHandlerLocal = ClientInteractor:FindFirstChild("GunHandlerLocal")
  273. if GunHandlerLocal ~= nil then
  274. task.spawn(self.modifyGunHandlerModule, self, GunHandlerLocal, require(GunHandlerLocal))
  275. end
  276. end
  277. end
  278. end
  279. if self.LocalPlayer.Character ~= nil then
  280. for _, GunTool in next, self.LocalPlayer.Character:GetChildren() do
  281. if GunTool:IsA("Tool") == true then
  282. ClientInteractor = GunTool:FindFirstChild("ClientInteractor")
  283. if ClientInteractor ~= nil then
  284. GunHandlerLocal = ClientInteractor:FindFirstChild("GunHandlerLocal")
  285. if GunHandlerLocal ~= nil then
  286. task.spawn(self.modifyGunHandlerModule, self, GunHandlerLocal, require(GunHandlerLocal))
  287. end
  288. end
  289. end
  290. end
  291. end
  292. end
  293. ----
  294. function System:updateInMyTeamTargetData(TargetData)
  295. if TargetData.WantedStatusHolder ~= nil then
  296. local CurrentTargetWantedValue = TargetData.WantedStatusHolder.Value
  297. if self.LocalPlayerDataTab.TeamIsGovernment == true then
  298. if CurrentTargetWantedValue == 1 or (CurrentTargetWantedValue == 2 and TargetData.IsOnVehicleSeat == false) then
  299. TargetData.InMyTeam = true
  300. else
  301. TargetData.InMyTeam = false
  302. end
  303. else
  304. TargetData.InMyTeam = self.LocalPlayerDataTab.PassiveMode
  305. end
  306. end
  307. end
  308. function System.updateTargetCharacterData(Character)
  309. local Player = PlayersService:GetPlayerFromCharacter(Character)
  310. if Player ~= nil then
  311. local CurrentPlayerData, CurrentHumanoidSeatPart = System.TargetsDataTab[Player], nil
  312. System:registerNewObjectToTable(System.SilentAimIgnoreList, Character, CurrentPlayerData.Character, System.SilentAimIgnoreListStartFrom)
  313. CurrentPlayerData.DamageMultiplier = 1
  314. CurrentPlayerData.Character = Character
  315. CurrentPlayerData.Head = Character:WaitForChild("Head", 10)
  316. CurrentPlayerData.Humanoid = Character:WaitForChild("Humanoid", 10)
  317. local function onChildAddedToCharacter(Child)
  318. if Child:IsA("Accessory") == true and Child.Name:find("Helmet") ~= nil then
  319. local CurrentAccessoryData = System:registerItemType(Child.Name)
  320. if CurrentAccessoryData ~= false and CurrentAccessoryData.DamageMultiplier ~= nil then
  321. CurrentPlayerData.DamageMultiplier = CurrentAccessoryData.DamageMultiplier
  322. end
  323. end
  324. end
  325. Character.ChildAdded:Connect(onChildAddedToCharacter)
  326. for _, Child in next, Character:GetChildren() do
  327. if Child:IsA("Accessory") == true then
  328. task.spawn(onChildAddedToCharacter, Child)
  329. end
  330. end
  331. CurrentPlayerData.Dead = false
  332. end
  333. end
  334. function System.registerTargetPlayer(TargetPlayer)
  335. if TargetPlayer ~= System.LocalPlayer then
  336. local CurrentTargetTab = {}
  337. CurrentTargetTab.Dead = true
  338. CurrentTargetTab.InMyTeam = false
  339. CurrentTargetTab.IsOnVehicleSeat = false
  340. CurrentTargetTab.LastVisiblityCheck = 0
  341. CurrentTargetTab.DamageMultiplier = 1
  342. System.TargetsDataTab[TargetPlayer] = CurrentTargetTab
  343. CurrentTargetTab.WantedStatusFolder = TargetPlayer:WaitForChild("WantedStatus", 10)
  344. if CurrentTargetTab.WantedStatusFolder ~= nil then
  345. CurrentTargetTab.WantedStatusHolder = CurrentTargetTab.WantedStatusFolder:WaitForChild("WantedStatus", 10)
  346. if CurrentTargetTab.WantedStatusHolder ~= nil then
  347. local function WantedValueChanged()
  348. --warn("--++++--", Value, CurrentPlayerData.WantedHolder.Value, " Wanted Or Team Changed ", Player)
  349. System:updateInMyTeamTargetData(CurrentTargetTab)
  350. end
  351. CurrentTargetTab.WantedStatusHolder.Changed:Connect(WantedValueChanged)
  352. System:updateInMyTeamTargetData(CurrentTargetTab)
  353. TargetPlayer.CharacterAdded:Connect(System.updateTargetCharacterData)
  354. if TargetPlayer.Character ~= nil and TargetPlayer.Character.Parent ~= nil then
  355. System.updateTargetCharacterData(TargetPlayer.Character)
  356. end
  357. end
  358. end
  359. else
  360. if System.LocalPlayerDataTab == nil then
  361. local NewLocalPlayerDataTab = {}
  362. NewLocalPlayerDataTab.TeamHolder = {Value = "IDK"}
  363. NewLocalPlayerDataTab.TeamValue = "IDK"
  364. NewLocalPlayerDataTab.TeamIsGovernment = false
  365. NewLocalPlayerDataTab.PassiveMode = true
  366. System.LocalPlayerDataTab = NewLocalPlayerDataTab
  367. NewLocalPlayerDataTab.WantedStatusFolder = TargetPlayer:WaitForChild("WantedStatus", 10)
  368. NewLocalPlayerDataTab.PassiveModeHolder = NewLocalPlayerDataTab.WantedStatusFolder:WaitForChild("PassiveMode", 10)
  369. local function updateAllTargetsData()
  370. for _, TargetDataTab in next, System.TargetsDataTab do
  371. System:updateInMyTeamTargetData(TargetDataTab)
  372. end
  373. end
  374. local function onLocalTeamValueChanged()
  375. if NewLocalPlayerDataTab.TeamHolder.Value ~= NewLocalPlayerDataTab.TeamValue then
  376. NewLocalPlayerDataTab.TeamValue = NewLocalPlayerDataTab.TeamHolder.Value
  377. NewLocalPlayerDataTab.TeamIsGovernment = System:returnIsGovernmentFromTeamName(NewLocalPlayerDataTab.TeamValue)
  378. updateAllTargetsData()
  379. end
  380. end
  381. local function onLocalCharacterAdded(Character)
  382. System:registerNewObjectToTable(System.SilentAimIgnoreList, Character, NewLocalPlayerDataTab.Character, System.SilentAimIgnoreListStartFrom)
  383. NewLocalPlayerDataTab.Character = Character
  384. NewLocalPlayerDataTab.TeamHolder = Character:WaitForChild("PlayerTeam", 10)
  385. NewLocalPlayerDataTab.TeamHolder.Changed:Connect(onLocalTeamValueChanged)
  386. onLocalTeamValueChanged()
  387. end
  388. local function onPassiveModeChanged()
  389. if NewLocalPlayerDataTab.PassiveModeHolder.Value ~= NewLocalPlayerDataTab.PassiveMode then
  390. NewLocalPlayerDataTab.PassiveMode = NewLocalPlayerDataTab.PassiveModeHolder.Value
  391. updateAllTargetsData()
  392. end
  393. end
  394. NewLocalPlayerDataTab.PassiveModeHolder.Changed:Connect(onPassiveModeChanged)
  395. onPassiveModeChanged()
  396. System.LocalPlayer.CharacterAdded:Connect(onLocalCharacterAdded)
  397. if System.LocalPlayer.Character ~= nil then
  398. onLocalCharacterAdded(System.LocalPlayer.Character)
  399. end
  400. end
  401. end
  402. end
  403. function System.unregisterTargetPlayer(Player)
  404. local PlayerDataTab = System.TargetsDataTab[Player]
  405. --print("Player Left: ", Player, "Data: ", PlayerDataTab)
  406. if PlayerDataTab ~= nil and PlayerDataTab.Character ~= nil then
  407. --print("Player Left: ", Player, "Removing Character")
  408. System:registerNewObjectToTable(System.SilentAimIgnoreList, nil, PlayerDataTab.Character, System.SilentAimIgnoreListStartFrom)
  409. end
  410. System.TargetsDataTab[Player] = nil
  411. end
  412. System.raycastParams = RaycastParams.new()
  413. System.raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
  414. System.raycastParams.FilterDescendantsInstances = {}
  415. System.raycastParams.IgnoreWater = true
  416. function System:isTargetHeadVisible(TargetCharacterHeadPosition, LocalPlayerRootPosition, IgnoreList)
  417. local CurrentCameraPosition =  workspace.CurrentCamera.CFrame.Position
  418. --table.insert(IgnoreList, TargetCharacter)
  419. self.raycastParams.FilterDescendantsInstances = IgnoreList
  420. if workspace:Raycast(CurrentCameraPosition, TargetCharacterHeadPosition - CurrentCameraPosition, self.raycastParams) == nil and workspace:Raycast(CurrentCameraPosition, LocalPlayerRootPosition - CurrentCameraPosition, self.raycastParams) == nil then
  421. return true
  422. end
  423. return false
  424. end
  425. function System:returnClosestVisibleTargetToMouse()
  426. if self.LocalPlayer.Character ~= nil and self.LocalPlayer.Character.PrimaryPart ~= nil then
  427. local LocalPlayerCharacter = self.LocalPlayer.Character
  428. local LocalPlayerRootPart = LocalPlayerCharacter.PrimaryPart
  429. local CurrentCamera = workspace.CurrentCamera
  430. local MousePositionVector2 = Vector2.new(self.Mouse.X, self.Mouse.Y)
  431. local CurrentIgnoreList = self.SilentAimIgnoreList
  432. local ClosestTargetData = {}
  433. local currentTargetScreenPositionV2, currentTargetScreenPosition, currentTargetScreenZIndex, currentTargetDistanceFromMouse, currentTargetOnScreen, currentTargetVisible
  434. for TargetPlayer, TargetPlayerTab in next, self.TargetsDataTab do
  435. if TargetPlayerTab.InMyTeam == false and TargetPlayerTab.Dead == false then
  436. if TargetPlayerTab.Humanoid.Health > 0 then
  437. if self.LocalPlayer:DistanceFromCharacter(TargetPlayerTab.Head.Position) < self.CurrentGunRange then
  438. --print("WorldToViewportPoint --- --- ---", CurrentCamera:WorldToViewportPoint(TargetPlayerTab.Head.Position))
  439. currentTargetScreenPosition, currentTargetOnScreen = CurrentCamera:WorldToScreenPoint(TargetPlayerTab.Head.Position)
  440. if currentTargetOnScreen == true then
  441. currentTargetScreenPositionV2 = Vector2.new(currentTargetScreenPosition.X, currentTargetScreenPosition.Y)
  442. --currentTargetScreenZIndex = currentTargetScreenPosition.Z
  443. currentTargetDistanceFromMouse = (MousePositionVector2 - currentTargetScreenPositionV2).Magnitude
  444. --print(TargetPlayer, "-------- 1", currentTargetDistanceFromMouse)
  445. --if CurrentIgnoreList == nil then CurrentIgnoreList = self:returnNewSilentIgnoreList(LocalPlayerCharacter) end
  446. if currentTargetDistanceFromMouse <= self.SilentAimCircleRange and (tick() - TargetPlayerTab.LastVisiblityCheck <= .1 or self:isTargetHeadVisible(TargetPlayerTab.Head.Position, LocalPlayerRootPart.Position, CurrentIgnoreList) == true) then
  447. --print(TargetPlayer, "----------------- 2", currentTargetDistanceFromMouse)
  448. if tick() - TargetPlayerTab.LastVisiblityCheck > .1 then
  449. TargetPlayerTab.LastVisiblityCheck = tick()
  450. end
  451. if ClosestTargetData.Head == nil then
  452. ClosestTargetData.Head = TargetPlayerTab.Head
  453. --ClosestTargetData.ScreenZIndex = currentTargetScreenZIndex
  454. ClosestTargetData.DistanceFromMouse = currentTargetDistanceFromMouse
  455. --warn("-- Updated List  ", TargetPlayerTab.Head, currentTargetDistanceFromMouse)
  456. elseif ClosestTargetData.DistanceFromMouse > currentTargetDistanceFromMouse then --and ClosestTargetData.ScreenZIndex > currentTargetScreenZIndex then
  457. ClosestTargetData.Head = TargetPlayerTab.Head
  458. --ClosestTargetData.ScreenZIndex = currentTargetScreenZIndex
  459. ClosestTargetData.DistanceFromMouse = currentTargetDistanceFromMouse
  460. --warn("-- Updated List 2 ", TargetPlayerTab.Head, currentTargetDistanceFromMouse)
  461. end
  462. end
  463. end
  464. end
  465. else
  466. TargetPlayerTab.Dead = true
  467. end
  468. end
  469. end
  470. if ClosestTargetData.Head ~= nil then
  471. return ClosestTargetData.Head
  472. end
  473. end
  474. end
  475. --------
  476. function System:updateSeatedPlayerFromSeatWeld(VehicleDataTab, VehicleSeatWeld)
  477. local LastSeatedPlayerDataTab = VehicleDataTab.SeatedPlayerDataTab
  478. if LastSeatedPlayerDataTab ~= nil then
  479. VehicleDataTab.SeatedPlayerDataTab = nil
  480. LastSeatedPlayerDataTab.IsOnVehicleSeat = false
  481. if self.LocalPlayerDataTab.TeamIsGovernment == true then
  482. self:updateInMyTeamTargetData(LastSeatedPlayerDataTab)
  483. end
  484. --warn("-- Player Un-Seated: ", LastSeatedPlayerDataTab.Character)
  485. end
  486. if VehicleSeatWeld ~= nil and VehicleSeatWeld.Part1 ~= nil and VehicleSeatWeld.Part1.Parent ~= nil then
  487. local SeatedPlayerDataTab = self.TargetsDataTab[PlayersService:GetPlayerFromCharacter(VehicleSeatWeld.Part1.Parent)]
  488. if SeatedPlayerDataTab ~= nil then
  489. VehicleDataTab.SeatedPlayerDataTab = SeatedPlayerDataTab
  490. SeatedPlayerDataTab.IsOnVehicleSeat = true
  491. --warn("++ Player Seated: ", SeatedPlayerDataTab.Character)
  492. if self.LocalPlayerDataTab.TeamIsGovernment == true then
  493. self:updateInMyTeamTargetData(SeatedPlayerDataTab)
  494. end
  495. end
  496. end
  497. end
  498. function System.registerVehicleModel(VehicleModel)
  499. local VehicleDataTab = {}
  500. System.VehiclesDataTab[VehicleModel] = VehicleDataTab
  501. VehicleDataTab.SeatedPlayerDataTab = nil
  502. VehicleDataTab.VehicleChassis = VehicleModel:WaitForChild("Chassis", 5)
  503. if VehicleDataTab.VehicleChassis ~= nil and System.VehiclesDataTab[VehicleModel] ~= nil then
  504. VehicleDataTab.VehicleSeat = VehicleDataTab.VehicleChassis:WaitForChild("VehicleSeat", 5)
  505. if VehicleDataTab.VehicleSeat ~= nil and System.VehiclesDataTab[VehicleModel] ~= nil then
  506. VehicleDataTab.VehicleSeat.ChildAdded:Connect(function(Child)
  507. if Child.Name == "SeatWeld" then
  508. System:updateSeatedPlayerFromSeatWeld(VehicleDataTab, Child)
  509. end
  510. end)
  511. VehicleDataTab.VehicleSeat.ChildRemoved:Connect(function(Child)
  512. if Child.Name == "SeatWeld" then
  513. System:updateSeatedPlayerFromSeatWeld(VehicleDataTab, nil)
  514. end
  515. end)
  516. if VehicleDataTab.VehicleSeat:FindFirstChild("SeatWeld") ~= nil then
  517. System:updateSeatedPlayerFromSeatWeld(VehicleDataTab, VehicleDataTab.VehicleSeat.SeatWeld)
  518. end
  519. end
  520. end
  521. end
  522. function System.unregisterVehicleModel(VehicleModel)
  523. System.VehiclesDataTab[VehicleModel] = nil
  524. end
  525. function System:initiateVehicleRegistrationSystem()
  526. self.PlayerVehiclesFolder.ChildAdded:Connect(self.registerVehicleModel)
  527. self.PlayerVehiclesFolder.ChildRemoved:Connect(self.unregisterVehicleModel)
  528. for _, VehicleModel in next, self.PlayerVehiclesFolder:GetChildren() do
  529. task.spawn(self.registerVehicleModel, VehicleModel)
  530. end
  531. end
  532. --------
  533. System.CurrentGuiInest = GuiService:GetGuiInset()
  534. function System.updateSilentAimCirclePosition()
  535. System.SilentAimCircle.Position = Vector2.new(System.Mouse.X + System.CurrentGuiInest.X, System.Mouse.Y + System.CurrentGuiInest.Y)
  536. end
  537. function System:updateSilentAimCircleRadius(CurrentSrollDirection)
  538. local CurrentRadius, CurrentSizeControlSpeed = self.SilentAimCircle.Radius, self.SACircleSizeControlSpeed
  539. if CurrentSrollDirection == 1 then
  540. self.SilentAimCircle.Radius = self.SilentAimCircle.Radius + CurrentSizeControlSpeed
  541. else
  542. if CurrentRadius - CurrentSizeControlSpeed <= 0 then
  543. self.SilentAimCircle.Radius = CurrentSizeControlSpeed
  544. else
  545. self.SilentAimCircle.Radius = self.SilentAimCircle.Radius - CurrentSizeControlSpeed
  546. end
  547. end
  548. self.SilentAimCircleRange = self.SilentAimCircle.Radius
  549. end
  550. System.SilentAimCircleTransparencySave = 1
  551. function System:updateSilentAimCircleTransparency(CurrentSrollDirection)
  552. local CurrentTransparency, CurrentTransparencyControlSpeed = self.SilentAimCircle.Transparency, self.SACircleTransparencyControlSpeed
  553. if CurrentSrollDirection == 1 then
  554. if CurrentTransparency + CurrentTransparencyControlSpeed >= 1 then
  555. self.SilentAimCircle.Transparency = 1
  556. else
  557. self.SilentAimCircle.Transparency = self.SilentAimCircle.Transparency + CurrentTransparencyControlSpeed
  558. end
  559. else
  560. if CurrentTransparency + CurrentTransparencyControlSpeed <= 0 then
  561. self.SilentAimCircle.Transparency = 0
  562. else
  563. self.SilentAimCircle.Transparency = self.SilentAimCircle.Transparency - CurrentTransparencyControlSpeed
  564. end
  565. end
  566. self.SilentAimCircleTransparencySave = self.SilentAimCircle.Transparency
  567. end
  568. function System:updateSilentAimCircleFilled(CurrentSrollDirection)
  569. if CurrentSrollDirection == 1 then
  570. self.SilentAimCircle.Filled = true
  571. self.SilentAimCircle.Transparency = self.SilentAimCircleTransparencySave
  572. else
  573. self.SilentAimCircle.Filled = false
  574. self.SilentAimCircle.Transparency = 1
  575. end
  576. end
  577. function System.onLocalPlayerScroll(actionName, inputState, inputObj)
  578. local CurrentSrollDirection, ContextActionResult = inputObj.Position.Z, Enum.ContextActionResult.Pass
  579. if UserInputService:IsKeyDown(Enum.KeyCode.J) == true then
  580. System:updateSilentAimCircleRadius(CurrentSrollDirection)
  581. ContextActionResult = Enum.ContextActionResult.Sink
  582. end
  583. if UserInputService:IsKeyDown(Enum.KeyCode.K) == true then
  584. System:updateSilentAimCircleTransparency(CurrentSrollDirection)
  585. ContextActionResult = Enum.ContextActionResult.Sink
  586. end
  587. if UserInputService:IsKeyDown(Enum.KeyCode.L) == true then
  588. System:updateSilentAimCircleFilled(CurrentSrollDirection)
  589. ContextActionResult = Enum.ContextActionResult.Sink
  590. end
  591. return ContextActionResult
  592. end
  593. --------
  594. function System:AntiSmallBrainCamera()
  595. local CameraModifierModule, ShoulderCameraModule  = self.Modules.CameraModifier, self.Modules.ShoulderCamera
  596. local NiceFunctionBTW, CurrentTool = function()end, nil
  597. if self.LocalPlayer.Character ~= nil then CurrentTool = self.LocalPlayer.Character:FindFirstChildOfClass("Tool") end
  598. CameraModifierModule.EnableADS = NiceFunctionBTW
  599. CameraModifierModule.EnableOSC = NiceFunctionBTW
  600. if CurrentTool ~= nil then
  601. if CameraModifierModule:GetADSEnabled() == true then
  602. CameraModifierModule.DisableADS(nil, CurrentTool)
  603. end
  604. if CameraModifierModule:GetOSCEnabled() == true then
  605. CameraModifierModule.DisableOSC(nil, CurrentTool)
  606. end
  607. if ShoulderCameraModule.enabled == true then
  608. ShoulderCameraModule:setEnabled(false)
  609. end
  610. end
  611. CameraModifierModule.DisableADS = NiceFunctionBTW
  612. CameraModifierModule.DisableOSC = NiceFunctionBTW
  613. ShoulderCameraModule.setEnabled = NiceFunctionBTW
  614. CameraModifierModule.InitiateHolsterCountdown = NiceFunctionBTW
  615. CameraModifierModule:ToggleWeaponHolster(true)
  616. CameraModifierModule.ToggleWeaponHolster = NiceFunctionBTW
  617. CameraModifierModule.GunHolstered = false
  618. end
  619. --------
  620. System.RegisteredCharacterGuns = {}
  621. function System.onAutoReloadChildAdded(Child)
  622. if Child:IsA("Tool") == true then
  623. local CurrentGunDataTab = {}
  624. System.RegisteredCharacterGuns[Child] = CurrentGunDataTab
  625. local CurrentToolDataTab = System:registerItemType(Child.Name)
  626. if CurrentToolDataTab ~= false and CurrentToolDataTab.ReloadTime ~= nil then
  627. CurrentGunDataTab.ToolDataTab = CurrentToolDataTab
  628. CurrentGunDataTab.ReloadTick = 0
  629. CurrentGunDataTab.ReloadTime = CurrentToolDataTab.ReloadTime
  630. CurrentGunDataTab.GunInfoFolder = Child:WaitForChild("InfoFolder", 4)
  631. CurrentGunDataTab.GunHandle = Child:WaitForChild("Handle", 4)
  632. if CurrentGunDataTab.GunInfoFolder ~= nil and CurrentGunDataTab.GunHandle ~= nil then
  633. CurrentGunDataTab.MagHolder = CurrentGunDataTab.GunInfoFolder:WaitForChild("Mag", 4)
  634. CurrentGunDataTab.FakeAmmoHolder = CurrentGunDataTab.GunHandle:WaitForChild("ClientAmmo", 4)
  635. if CurrentGunDataTab.MagHolder ~= nil and CurrentGunDataTab.FakeAmmoHolder ~= nil then
  636. CurrentGunDataTab.OwnedAmmoHolder = System.LocalPlayerAmmoFolder[CurrentToolDataTab.AmmoType]
  637. CurrentGunDataTab.Registered = true
  638. end
  639. end
  640. else
  641. System.RegisteredCharacterGuns[Child] = nil
  642. end
  643. end
  644. end
  645. function System.onAutoReloadChildRemoved(Child)
  646. System.RegisteredCharacterGuns[Child] = nil
  647. end
  648. function System.onAutoReloadCharacterAdded(Character)
  649. table.clear(System.RegisteredCharacterGuns)
  650. Character.ChildAdded:Connect(System.onAutoReloadChildAdded)
  651. Character.ChildRemoved:Connect(System.onAutoReloadChildRemoved)
  652. for _, Object in next, Character:GetChildren() do
  653. if Object:IsA("Tool") == true then
  654. System.onAutoReloadChildAdded(Object)
  655. end
  656. end
  657. warn("----------------------------------------------------------------------------------")
  658. print("OP Gun Script:: Join Discord Server for support related to the script and to report bugs oh ofc i accept suggestions too")
  659. print("Discord Join Link: https://discord.gg/GdU7xkQpsp")
  660. warn("----------------------------------------------------------------------------------")
  661. end
  662. function System:checkIfGunMagHasEnoughBullets(GunTab)
  663. if GunTab.OwnedAmmoHolder.Value > 0 then
  664. if GunTab.ToolDataTab.AmmoType == "12 Gauge" then
  665. if GunTab.MagHolder.Value < GunTab.ToolDataTab.MaxAmmo and tick() - self.LastGunUsedTick >= self.LocalPlayerPing then
  666. return false
  667. else
  668. return true
  669. end
  670. else
  671. if GunTab.MagHolder.Value <= 1 or (tick() - self.LastGunUsedTick >= 4.5 + self.LocalPlayerPing and GunTab.MagHolder.Value < GunTab.ToolDataTab.MaxAmmo/2) then
  672. return false
  673. else
  674. return true
  675. end
  676. end
  677. end
  678. end
  679. function System:checkIfGunNeedsReload(GunTool, GunTab)
  680. if GunTab.Registered == true then
  681. GunTab.FakeAmmoHolder.Value = GunTab.MagHolder.Value
  682. if self:checkIfGunMagHasEnoughBullets(GunTab) == false and tick() - GunTab.ReloadTick > GunTab.ReloadTime + self.LocalPlayerPing then
  683. GunTab.ReloadTick = tick()
  684. self:customGunReloadFunction(GunTool)
  685. end
  686. end
  687. end
  688. function System:requestCheckRegisteredGunsForReload()
  689. for GunTool, GunTab in next, System.RegisteredCharacterGuns do
  690. self:checkIfGunNeedsReload(GunTool, GunTab)
  691. end
  692. end
  693. --------
  694. function System:initiateSystem()
  695. PlayersService.PlayerAdded:Connect(self.registerTargetPlayer)
  696. PlayersService.PlayerRemoving:Connect(self.unregisterTargetPlayer)
  697. self.registerTargetPlayer(self.LocalPlayer)
  698. for _, Player in next, PlayersService:GetPlayers() do
  699. if Player ~= self.LocalPlayer then
  700. task.spawn(self.registerTargetPlayer, Player)
  701. end
  702. end
  703. self:initiateVehicleRegistrationSystem()
  704. if Drawing ~= nil then
  705. self.SilentAimCircle = Drawing.new("Circle")
  706. self.SilentAimCircle.Radius = self.SilentAimCircleRange
  707. self.SilentAimCircle.Visible = true
  708. self.SilentAimCircle.Thickness = 2
  709. self.SilentAimCircle.Filled = false
  710. self.SilentAimCircle.Color = Color3.fromRGB(255, 0, 127)
  711. self.SilentAimCircle.Transparency = 1
  712. self.SilentAimCircleTransparencySave = 1
  713. self.Mouse.Move:Connect(self.updateSilentAimCirclePosition)
  714. ContextActionService:BindAction("SilentAimScrollEvent", self.onLocalPlayerScroll, false, Enum.UserInputType.MouseWheel)
  715. else
  716. self.SilentAimCircleRange = 9999
  717. end
  718. self:AntiSmallBrainCamera()
  719. self:initiateGunHandlerModification()
  720. self.LocalPlayer.CharacterAdded:Connect(self.onAutoReloadCharacterAdded)
  721. if self.LocalPlayer.Character ~= nil then
  722. self.onAutoReloadCharacterAdded(self.LocalPlayer.Character)
  723. end
  724. while task.wait(0) do
  725. --print("Players Count: ", #PlayersService:GetPlayers(), "SilentAimIgnoreList Count: ", #self.SilentAimIgnoreList - 2, #self.CustomIgnoreList)
  726. --[[local VehicleCount = 0
  727. for _, _ in next, self.VehiclesDataTab do
  728. VehicleCount = VehicleCount + 1
  729. end
  730. print("Registered Vehicle Count: ", VehicleCount, "GetChildren Vehicle Count: ", #self.PlayerVehiclesFolder:GetChildren())]]
  731. self:updateLocalPlayerPing()
  732. self:requestCheckRegisteredGunsForReload()
  733. --warn("Last LocalPlayer Ping ====== ", self.LocalPlayerPing)
  734. end
  735. end
  736. ---------------- [[ ;) ]]
  737. if _G.OPOPGunScript == nil then
  738. _G.OPOPGunScript = true
  739. System:initiateSystem()
  740. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement