Open Source Attack On Titan/AoT ODM/3DMG System

First Open Source!

Hello! So some backstory (if your not interested just skip past), I got hired to make this a while back, but when I finished, the commissioner blocked me. Honestly, it was a listen, so I’m not mad. But here it is! I’ve had a lot of people DMing me asking to buy this, so I thought I might as well open source this and steal some business from fellow scripters who are making money selling their ODM’s to owners!

Anyways, AoT Open Source - Roblox here is the game link, it should be open for copying! The system I use is Line Forces, and it should be relatively safe in terms of exploiting, as it uses server checking… Performance works fine in that game, but no the script was not written very well, and is by no means my best work. So yes, there are optimizations to be made! No need for credit, it was really just a joy to make, and I hope this comes to use in someones game! Enjoy!

P.S: I may have made a mistake in the formatting for the category! If so please just inform me!

Features

Double ODM uses a spreading raycast, that moves away from the center of the screen, until a limit is reached, or both raycasts return positive! Pretty cool if I may say so myself!
There are some camera works to simulate movement
Space has some strange functions in stopping velocity, to make it easier to hit targets!

42 Likes

Hi,
Nice effects in the game, have you done anything more to it and are the rope shooters supposed to grab the buildings

1 Like

Hello! Thank you for posting this resource, I will be using this to help me make grapple hooks using LineForce, thanks!

1 Like

Thank you! Although no, I haven’t made any updates after open-sourcing it! If there’s a feature you’d like feel free to suggest it though! Yes, the rope shooters grab on to the building, perhaps you’re not holding the key for long enough?

Very great resource!! Will definitely be helpful for me as I’m a big fan of the show and want to recreate the odm gear but have no idea where to start with this resource I’ll know what stuff and good methods to use thank you so much

2 Likes

Thanks! Happy it’s being used!

2 Likes

This is great for season four part 2…

1 Like

Yessir! AoT Hype! AoT Sunday!!!

2 Likes

This code is very insecure and shouldn’t be used, for example the person who made the code did these mistakes:

  • Raycasting on client
  • Bodygyros on client
  • Use’s repetitive code which is just cloned to another spot with a 1/2 things changed
  • Using Pcall in places that shouldn’t use pcall.
  • Binding to renderstep each time you press a button and NOT disconecting the event.
  • If you know how to code just the tiniest bit you can exploit this resource extreamly easily, so any game who uses this will 100% get exploiters no matter what.
  • The code is so bad made and needs an entire rework if you want to change some parts of it.
  • He parented every script and every object to StarterCharacterScripts, which is INSANELY bad.
  • Not using task.wait()
  • Using the deprecated mouse input.
  • Useless scripts in the experience that have absolutely nothing to do with the actual resource.
  • Has HD Admin in workspace for absolutely no reason in the slightest.
  • You can even exploit the system by spam jumping, in doing so you move exponentially faster.

There are more reasons but I won’t include them here.

3 Likes

i was literally able to design an exploit to auto farm wins

local BodyGyro = Instance.new("BodyGyro")
local AlignPosition = Instance.new("AlignPosition")
local Attachment = Instance.new("Attachment")
local Attachment2 = Instance.new("Attachment")
local AtpName = "Atp"..math.random(99,99999999)
local Atp2Name = "Atp2"..math.random(99,99999999)
local ApName = "Ap"..math.random(99,99999999)
local BgName = "Bg"..math.random(99,99999999)
Attachment.Name = AtpName
Attachment2.Name = Atp2Name
AlignPosition.Name = ApName
BodyGyro.Name = BgName
repeat task.wait() until game.Players.LocalPlayer.Character:FindFirstChild("HumanoidRootPart")

while task.wait() do 
	local Players = game:GetService("Players")
	local Player = Players.LocalPlayer
	local Character = Player.Character or Player.CharacterAdded:Wait()
	Character:WaitForChild("HumanoidRootPart")
	--
	if not Character.HumanoidRootPart:FindFirstChild(BgName) then
		BgName = "Bg"..math.random(99,99999999)
		BodyGyro = BodyGyro:Clone()
		BodyGyro.Parent = Character.HumanoidRootPart
		BodyGyro.Name = BgName
		if not Character:FindFirstChild(BgName) then
			BodyGyro = Instance.new("BodyGyro")
			BodyGyro.Name = BgName
			BodyGyro.Parent = Character.HumanoidRootPart
		end
	end
	if not Character.HumanoidRootPart:FindFirstChild(ApName) then
		ApName = "Ap"..math.random(99,99999999)
		AlignPosition = AlignPosition:Clone()
		AlignPosition.Name = ApName
		AlignPosition.Parent = Character.HumanoidRootPart
		if not Character.HumanoidRootPart:FindFirstChild(ApName) then
			AlignPosition = Instance.new("AlignPosition")
			AlignPosition.Name = ApName
			AlignPosition.Parent = Character.HumanoidRootPart
		end
	end
	if not Character.HumanoidRootPart:FindFirstChild(AtpName) then
		AtpName = "Atp"..math.random(99,99999999)
		Attachment.Name = AtpName
		Attachment = Attachment:Clone()
		if not Character.HumanoidRootPart:FindFirstChild(AtpName) then
			Attachment = Instance.new("Attachment")
			Attachment.Name = AtpName
			Attachment.Parent = Character.HumanoidRootPart
		end
	end
	if not Character.HumanoidRootPart:FindFirstChild(Atp2Name) then
		Atp2Name = "Atp2"..math.random(99,99999999)
		Attachment2 = Attachment:Clone()
		Attachment2.Name = Atp2Name
		Attachment2.Parent = workspace.Win
		if not Character.HumanoidRootPart:FindFirstChild(Atp2Name) then
			Atp2Name = "Atp2"..math.random(99,99999999)
			Attachment2 = Instance.new("Attachment")
			Attachment2.Name = Atp2Name
			Attachment2.Parent = workspace.Win
		end
	end
	
	BodyGyro.CFrame = CFrame.lookAt(Character.HumanoidRootPart.Position, workspace.Win.Position) 
	BodyGyro.MaxTorque = Vector3.new(1e+3,1e+3,1e+3) 
	BodyGyro.P = 1e+3
	AlignPosition.Attachment0 = Attachment
	AlignPosition.Attachment1 = Attachment2
	AlignPosition.Position = workspace.Win.Position
	AlignPosition.MaxForce = 99999
	task.wait()
	Character:MoveTo(Character.HumanoidRootPart.Position+Vector3.new(0,-math.random(1,4)),0)
	Character.ODM.Script.ShootRemote:FireServer(workspace.Win.Position, Character.ODM.E, 1e+3, "Left", workspace.Win)
end
4 Likes

its open source youre supposed to look at the code and use it for learning purposes, not directly copy and paste it.

If the code is insecure, then it shouldn’t be used for learning purposes since its bad practice

I wasn’t speaking about it being open source or anything, I was talking about why you shouldn’t use it, hell you shouldn’t even learn it, since it invokes VERY bad practices.

A lot of your initial critiques are not relevant at all (ex: not using task.wait, unnecessary pcalls, HD admin is in the experience, repetitive code, deprecated mouse input, miscellaneous script clutter, etc… has zero relevance to the claim that the code is insecure and shouldn’t be used).

Furthermore, these (at least the one’s that I’ve just listed) are not “VERY bad practices”. Can we agree that using task.wait over wait is better - sure, no question. But the claims you’re making are exaggerated at best - seriously, the level of emphasis and drama makes it seem like this code is going to explode your computer.

For anyone trying to make a system similar to this, it helps to have a reference, even if it’s just to initially conceptualize the subject by looking at how another developer approached it. Resources don’t need to be perfect to be in this section. If you don’t like it, you don’t have to use it.

That being said, there’s always space for respectful critique and comments, but these criticisms seem pretty far past that. Everyone here is trying to learn and improve; the best are trying to help others do the same, too. Bluntly bashing someone else’s creations (and creating huge sweeping claims with a laundry list of points, many of which don’t relate to the claims themselves) only discourages others from trying new things themselves and making the harder choice to put their creations out there for others to benefit from.

3 Likes

You picked the literal weakest points I said, I mean come on why even defend the post telling you to “learn from it” when all it has are bad practices and some that have a 100% to crash/ruin your entire game if you use them. (cough renderstepped for each button press, very easily being able to exploit, raycasting/bodygyros on client for security reasons.)

literally the only reason im here is to use the physics system as a reference. Your claims are overdramaticized as @https_KingPie mentioned. Any capable developer can spot the errors in the code and make the needed adjustments!

1 Like

Your message doesn’t make any sense, you mention any capable developer, but this is used for developers to learn HOW to code, so no; people who use this open-source project can not spot the errors and make adjustments.

Yes. I have now learned HOW to code the physics for an ODM Gear! Now since i am a capable developer, i shall build my own system from scratch, using bits and pieces of code from this open source project! Like im supposed to!

Resources aren’t specifically for developers who know what they are doing, they are made to teach newer devs what to do, and this is a bad picture .

no thats what community tutorials are for lmao. This is not a tutorial.

1 Like