Open ccuser44 opened 1 year ago
the whole module thing is overkill for adonis tbh, but my general goal and idea was to move all of the commands to HumanoidDescriptions. in general this is exactly what HumanoidDescriptions are for.
HumanoidDescriptions will either override all other changes or will refuse to work if something has been changed.
this is also not true. Humanoid:ApplyDescription
doesn't do this, only Humanoid:ApplyDescriptionReset
does this. adonis doesn't use that anywhere though.
HumanoidDescriptions will either override all other changes or will refuse to work if something has been changed.
this is also not true.
Humanoid:ApplyDescription
doesn't do this, onlyHumanoid:ApplyDescriptionReset
does this. adonis doesn't use that anywhere though.
Do :s for _,v in ipairs(game:GetService("Players").YOURPLAYERNAME.Character:GetChildren()) do if v:IsA("BasePart") then v.Color = Color3.fromRGB(math.random(1, 255), math.random(1, 255), math.random(1, 255)) end end
And then do :removehats
the whole module thing is overkill for adonis tbh, but my general goal and idea was to move all of the commands to HumanoidDescriptions. in general this is exactly what HumanoidDescriptions are for.
Is it though? It can be as simple as Functions.UpdateAppearence(humanoid: Humanoid, data: {[string]: any})
Also as I said HumanoidDescriptions aren't exactly reliable as we don't know what Roblox may do in the future and they don't work with everything (most importantly raw images and meshes)
Also without a system we need to use Admin.RunCommand
for things like clearing hats, spawning new ones and a lot more if we don't want boilerplate code.
HumanoidDescriptions will either override all other changes or will refuse to work if something has been changed.
this is also not true.
Humanoid:ApplyDescription
doesn't do this, onlyHumanoid:ApplyDescriptionReset
does this. adonis doesn't use that anywhere though.Do
:s for _,v in ipairs(game:GetService("Players").YOURPLAYERNAME.Character:GetChildren()) do if v:IsA("BasePart") then v.Color = Color3.fromRGB(math.random(1, 255), math.random(1, 255), math.random(1, 255)) end end
And then do:removehats
you didn't really say body colors, I was talking more about accessories (which doesn't change if any were attached outside of the description). realistically that's an easy fix too though, if someone really cared they could just make sure the body color was in the same in the description beforehand.
i don't see anything "unreliable" about Roblox's humanoid description (it is a vast improvement from what we had before), and newer avatareditorservice APIs have only made that better. the only unreliable thing here I can find is the old Adonis codebase not handling them correctly.
not really sure what the spawning hats with runcommand comes from either, afaik there's only commands that literally just give you another hat (donor commands, fun commands, etc.). I don't see why that needs an OOP module with all these things listed, it's extremely overkill and will likely have no real use.
i don't see anything "unreliable" about Roblox's humanoid description (it is a vast improvement from what we had before), and newer avatareditorservice APIs have only made that better. the only unreliable thing here I can find is the old Adonis codebase not handling them correctly.
By unreliable I meant un-future proof. It it probable if not certain that Roblox will introduce some breaking change, like for example the aforementioned rate limit thing or very likely some change breaking R6.
Also that isn't even the main issue. The biggest is that the current system makes customassetids impossible. Also having a system would make the code a lot cleaner. Nearly all character related ugly and buggy boilerplate code would cease to exist and the numerous booleanvalues that Adonis inserts to characters would no longer have to exist. It would also easily open up a lot of possibilities like an undo function for character appearence (which in my opinion would be very useful) I really don't think that's overkill. The system doesn't have to be very complex at all, having it as a single system can be used to reduce complexity (in some areas).
What part of Adonis is this related to?
Command
What are you suggesting?
Adonis needs a proper character appearance system
Why?
Currently in Adonis we either use HumanoidDescriptions for changing the character appearance or we change it directly by changing properties or interacting with instances.
Both of these have their downsides but the biggest issue is that the two approaches are mutually exclusive. HumanoidDescriptions will either override all other changes or will refuse to work if something has been changed. Settings things without HumanoidDescriptions on the other hand is very clumsy and requires a lot of boilerplate code which is very prone to breaking, hard to maintain and riddled with bugs. It also is a very future-incompatible way of doing things.
Another thing is that things dealing with character appearences are fundamentally un-future proof as be seen from recent examples. When Roblox changes something which creates some incompatibility with our systems we have to update every affected command as opposed to just updating the main function. Tomorrow Roblox may decide to totally deprecate R6, they may decide to totally remove things like InsertService, they may decide to rename Instances, Enums, IDs etc. A lot of conversion pain would be avoided by just having such a system.
Having such a system would also make a lot of things that are otherwise very hard or impossible to implement without having lots of flag instances and sane code complexity, like an undo system or adding layered clothing support for R6.
Also one big issue either approach, even best case HumanoidDescription usage, is that still quite some boilerplate is required to implement it. You also have to handle R6 and R15 (and potential new character systems) and dealing with things like
character:FindFirstChild("Left Leg") or character:FindFirstChild("LeftUpperLeg")
isn't exactly ideal (for example why does R6 limbs have a space but R15 do not?).Certainly some other solution besides HumanoidDescriptions and raw changing needs to exist.
What should be the solution
I stress first and foremost that it should be simple and elegant and get the job done in a good way. It shouldn't just be hastily made. And it doesn't necessarily need any OOP or or complex libraries, it can certainly do without, if it's as simple as one function then that's OK as long as it gets the job done and meets the requirements.
Necessary requirements:
It should also be:
Non-essential but good:
_G
API to other game scripts:poison
:creeper
in which the system can easily adjust for character shapes and sizes.Alternatives
2.0 will probably take a lot of time to release and the issue still exists in 1.0. Also there really isn't much reason not to do this in 1.0, the system doesn't have to be complex.