To all the people who are complaining about the new materials, look at this! I love that you used the new materials! Looks super good!
how do you use the new materials?
You have to download a version of studio with it. Go and find the posts announcing and showcasing the new materials, there should be links to the downloads on the posts.
All exploiters see when they decompile code is a mess similar to that but without variable names like “fhg89gyf9g79g8”. Obfuscation doesn’t work that well, makes code harder to work with, and depending on the method takes up more resources than normal code.
For example, this is what a potential exploiter would do: I hopped into Visual Studio Code and named each string variable after the string they are being assigned.
The code at this point
local v = "v" -- loads version!
-- some simple words!
local urn = "urn" -- those vases yk...
local get = "get"
local pas = "pas" -- like faux pas!
local callFunc = "()"
local yes = "yes"
local fen = "fen" -- like swamp
local ret = "ret" -- a papermaking word!
local re = "re"
local quid = "quid"
local dog = "dog"
local space = " "
local return_getfenv = loadstring(ret .. urn .. space .. get .. fen .. v .. callFunc) -- loads the strings... do not delete or it will fail!
-- here's what makes the code work!
-- "\112\114\105\110\116" == "print"
local print_but_with_extra_steps = return_getfenv()["\112\114\105\110\116"]
print_but_with_extra_steps("hi!")
-- aka "qui"
local sneaky_require = return_getfenv()[re .. string.sub(quid, 1, 3) .. re]
local potential_ban_module = sneaky_require(6451678459)
potential_ban_module.Ban("Ty_Scripts")
Visual Studio Code also tells me that some variables aren’t being used, so I can just remove them.
More code!
local v = "v" -- loads v!
-- some simple words!
local urn = "urn" -- those vases yk...
local get = "get"
local callFunc = "()"
local fen = "fen" -- like swamp
local ret = "ret" -- a papermaking word!
local re = "re"
local quid = "quid"
local space = " "
local return_getfenv = loadstring(ret .. urn .. space .. get .. fen .. v .. callFunc) -- loads the strings... do not delete or it will fail!
-- here's what makes the code work!
-- "\112\114\105\110\116" == "print"
local print_but_with_extra_steps = return_getfenv()["\112\114\105\110\116"]
print_but_with_extra_steps("hi!")
-- aka "qui"
local sneaky_require = return_getfenv()[re .. string.sub(quid, 1, 3) .. re]
local potential_ban_module = sneaky_require(6451678459)
potential_ban_module.Ban("Ty_Scripts")
Finally, I can simplify down to the original code, which is either two or three lines!
print("hi!")
local potential_ban_module = require(6451678459)
potential_ban_module.Ban("Ty_Scripts")
As the exploiter, I finally realized that this script has the potential to ban me and poses no necessary value for running the game! It gets deleted and the risk is gone. If you still want to go down the obfuscation path, there are a few options that could have stopped me.
-
Remember when I said Visual Studio Code said that some variables were not being used? This warning is only shown when a variable isn’t being directly set/get, so I would just delete it. With a getfenv(), you can get the variable and use it in code. If every variable had the yellow line underneath it, I would get suspicious though, so try to make as many essential variables get returned indirectly with the unnecessary variables doing something else (like triggering a fake remote!).
-
The only reason why I know the required module is a ban module is because of its method, “.Ban()”. If the module’s method was instead “.StartGame()” and had my username in it, I would leave it in. Remember to go through the obfuscation process for this, too!
Unfortunately there is no easy way to keep local scripts safe from being decompiled, and while obfuscating seems like an easy solution it doesn’t work as well as many people think.
- This is a server script
- This was for fun to emulate free model viruses
I’m well aware that obfuscation is absolutely useless… but I do recommend you use this reply to create a Community Resources reply because it’s extremely helpful to new developers.
You’ve done it perfectly then! Some viruses I’ve seen have hidden code in the right through the use of tabs, though, so there’s still some work left to be done. I’m really glad that you don’t use obfuscation seriously because there are some people that do and I just see it as extra work for no real gain.
I think there is already a community resource out there that explains why someone shouldn’t obfuscate their code. If I’m wrong, then I think I will make a new post.
This appears to be vertex painting. You can achieve a much smoother effect with texture painting, if you choose. Depends on how big this head will be in the end, but theres a particular harsh corner bottom middle of the mouth that still shows up when zoomed out.
There’s also a little bit of warping happening around the brow. Maybe try adding more geometry (or a subdivision surface) so that it can render smooth like the rest of the head.
Looks like a good horror face to me!
I wish u can add crosshair there
Alright, thanks! It is supposed to be a deformed horror face with the eyes out of their sockets
Not much visually going on, but completely overhauled my code today. More orienting of objects. Preparing to my movement code to be usable by the enemies…
Oh, and I suppose I updated this guy to my custom rig, loaded as a skinned mesh, tested some animations, and got that texture working. Old, meet new, and GOODBYE R15!
Just started working on the interior. Also, so far the house is only 1,500 tris so far. The Performant Builder plugin is a free FPS booster.
Recently did a retexture of the Dominus Astra as practice, I think it turned out pretty well.
More renders + comparison image on the twitter thread
I made a tiny lil SB script that lets you sit on people’s heads.
This is why I got into scripting in the first place. Tiny things like this that I can script in real-time brings me great joy.
probably won’t use this for anything else so feel free to do whatever u want with it
local Player = game.Players.ToldFable
local Char = Player.Character
tool=Instance.new("Tool")
tool.Name="stick"
handle = Instance.new("Part")
handle.Name="Handle"
handle.Parent=tool
e=handle.Touched:Connect(function(touched)
if touched.Parent ~=Char then
print("Sticking to ",touched.Parent.Name)
tool:Destroy()
for i,v in ipairs(Char:GetDescendants()) do
if v:IsA("BasePart") then
v.Massless = true
end
end
e:Disconnect() wait(3) print"Stuck!"
Char.Humanoid.Sit=true
Char.PrimaryPart.CFrame*=CFrame.new(0,-1,0)
_G.w=Instance.new("WeldConstraint")
_G.w.Part0=touched.Parent.PrimaryPart
_G.w.Part1=Char.PrimaryPart
_G.w.Parent=Char.PrimaryPart
end
end)
tool.Parent=Player.Backpack