nanoblox / core Goto Github PK
View Code? Open in Web Editor NEWHome Page: https://nanoblox.github.io/core/
License: Mozilla Public License 2.0
Home Page: https://nanoblox.github.io/core/
License: Mozilla Public License 2.0
test
I have made an example of how I would want it to work here: https://www.roblox.com/games/5238935539/HD-Admin-Logger
Would be cool to see something similar make its way into V3!
is this the new HD Admin?
Topbar: About section (docs) + playground + devforum
Zone: About section (docs) + playground + devforum
zone:initClientLoop()
instead of zone:initLoop()
)I was playing a game that had HD Admin in it on an Xbox One console, when I noticed that ROBLOX's rounded UI icons on the new top-bar are not present, yet the HD Admin logo is. (Again, I'm not sure exactly how detecting a player's platform would be possible, as ROBLOX only provides input-type detection APIs.)
This is a clever idea, credit to Outlaster by Peak Precison Studios:
https://www.roblox.com/games/5343994291/NEW-Outlaster
Captions, where a fixed block of dynamically sized text appears below the icon. This will function similar to :setTip().
How the theming is set needs to be considered in more detail. Possibly consider creating two new objects, caption
and captionLabel
, or maybe have it match the buttons BackgroundColor and labels TextColor. Also consider corners.
This would have to work on PC and Xbox, while being disabled on mobile
Also hide when selected (like tips)
have the raycast fire from the hrp centre (instead of feet) for improved accuracy on upwards slanting shapes dipping into the ground
explore rotated wedge bug. this may be solved by the points above
random generation appears to fail below other parts
Repo file: https://devforum.roblox.com/uploads/short-url/pn1v2zXgk3e5QxwU62m2QjnocD4.rbxl
cluster infinite recursion https://devforum.roblox.com/t/zone-errors/864654/5
My issue is that when I call IconController:setTopbarEnabled(false)
, the topbar doesn't disappear.
Topbar+ is in StarterGui
, but while my game is loading, the character doesn't spawn, so to remedy this, I clone the Topbar+ GUI into PlayerGui
, then I require the module, create my buttons and load everything else. When it finishes, I have my loading script invoke the server to spawn the character, however, when I call setTopbarEnabled
, it doesn't work. The first thing I did is to check my script for any errors. Then your module's code, I found a WaitForChild
call in the IconController
module (function getTopbarPlusGui
, so I jumped to the conclusion to check my PlayerGui
and I found that the Topbar+ GUI was duplicated. [The icons were created in one GUI, but WaitForChild
is returning the other one])
As an improvement and a fix for this issue is to have IconController
grab the GUI from Icon
instead of using a WaitForChild
call,
TLDR / I don't understand: If the GUI is duplicated then there is a chance that PlayerGui:WaitForChild("Topbar+")
doesn't return the correct one, making setTopbarEnabled
disable the improper one.
Right click would be pretty good, like if you right clicked a button you could have options that do different stuff. Would be really useful!
(Topbar+)
Edit: PR: #21
With this System can maybe simplified a lot?
We should be able to disable VIP commands, rather than setting every single VIP command to Mod+.
I've been trying to get them to work and they just won't. They used to work but I believe some update broke them or something.
:setTip()
creates a tip for both PC and console, while this method :setControllerTip
will override any other tips specifically for users with a controller plugged in (can dynamically include PCs when a controller is plugged in/out).
This will be useful in scenarios where you wish to have different instructions for PC and console, e.g:
A ‘press overlay’ for when icons are pressed/hovered to more accurately mimic topbar icons
Re-enable tips and captions for mobile and instead have them offset ~50 pixels below the normal position so they're viewable below the thumb/hovering-finger
Explained here: https://devforum.roblox.com/t/topbar-add-additional-functionality-and-themes-to-your-topbar/573313/149
To fix consider:
Directory.move
to realcore.server.commandsOn PC it doesn't capture focus, and on Console it doesnt drop down at all
Requirements:
Resources:
Additional
I would like to request the ability to disable the API in HD Admin. Having the API enabled could be potentially dangerous if an unauthorised person has access to the server-side through a backdoor or other methods and they can then rank themselves to admin without the creator's knowledge.
moved to #71 to decide later when cloud scripts are released
Having inbuilt support to create tool tips for Icons would be useful for new users looking at the icons who may not completely understand what they do.
These tooltips would support the theme implemented for that icon.
I am unsure if this is something the setHoverFunction
is expected to cover, however this would make it easier to create tool tips, especially those which match the themes implemented
Make sure to also test the fakeChat icon created through createFakeChat
modules.Icon
modules.Zone
modules.User
modules.PlayerStore
modules.SystemStore
modules.State
modules.Serializer
Directory.merge
works correctly
modules.System/UserStore
to modules.DataStores.System/UserStore
Remotes
main.services.RemoteService:createRemote
and main.services.RemoteController:getRemote
to main.modules.Remote.new()
Zone+'s original intention is to gather a collection of players, on the server. To do this, it performs a Region3 check, to gather an array of players within a 'rough' location, then it performs a raycast check to determine precisely where this rough-group of players are. There is one use-case on the client where Zone+ can be used: when a local player wishes to gather information of a collection of people within a zone. Recently however, lots of developers have been using Zone+ on the client to detect if the single local player is within a zone. This is inefficient and incorrect, as the Region3 check does not have to be performed at all (a simple downward raycast from the local clients humanoidrootpart is all that is needed).
Solution, either:
Hello! Is there any reason why the ;face command does not let you use roblox decals anymore? And if it does, it only seems to work for the owner of the game.
Would like this so it can just enable/disable ScreenGuis.
https://developer.roblox.com/en-us/api-reference/class/LayerCollector
https://developer.roblox.com/en-us/api-reference/class/ScreenGui
Yooooooo @1ForeverHD
I am now looking and searching for a long Time for something so I want to do that if ur Admin you only can use commands at 1 Person, How can I do that? Where are the Settings that allows me to change that? So Admins only can use like Mods commands at only 1 Person (so they are not able to do ;(command) all anymore? Would be nice to know!
Tasks can be split up into three core components
task:execute()
for each operation. if no modifiers, simply call execute once. after running all modifiers, call task:end
thread:disconnect()
after the given function has executed (instead of before)taskParent
to self, then call :begin() on themtask.kill
make sure to cleanup the client (if client present and has not ended) on endmain.services.CommandService.Client.new
invokeNearbyClients
replace with the nearby enum value.new
, have a param to inherit descendant tables and set to off by defaulttask:invokeFutureClients()
task:tween
method which abstracts task:give(TweenService:Create)
command.cooldown
so it prevents the caller from executing that command again for another 120 seconds. the cooldown begins as soon as the task finishes executing (or maybe as soon as called)? make sure the cooldown saves in case player swaps servers. also consider introducing a role setting which bypasses command cooldowncallerCooldown
serverCooldown
which prevents anyone from executing that command again until cooldown expired.Additional Role Stuff
RoleService.verifyCanUseModifiers(user, commandName, modifiersDict)
for role setting roleModifiersToOnlyRoleCommands
verifySettings
returning the role where the value is present, then if setting above is true, check against all returned roles and their commands, else if not some true, then just easy check.For those who stumble across this card and are wondering what an 'Environment' is: imagine a game where players have their own personal section of land. Within this local area, they can configure their own admin roles, settings, bans, etc which saves. Everything which takes place within this area though remains within this area. An area can be anything from a plot of land in a server, to a private server. This in essence is an 'environment'. The goal with Nanoblox is to allow the easy creation of these environments, while ensuring restrictions are in place to prevent abuse. By default, there is the 'Game/Global' environment, where changes impact every server (i.e. the default behaviour you'd expect of admin commands).
RoleService.createRole(isGlobal, properties)
should just become RoleService.createRole(properties)
, where 'isGlobal' and 'environment' now become properties. Consider renaming 'isGlobal' to 'permanent'. These properties default to false
and Game/Global
."Game"
instead of main.enum.environment.Game
SettingService.createPrivateEnvironmentIfA
bans["82347291"]
it would be bans["82347291-IF9jL5UoJZ"]
with a record property 'userId' that points to that usersettings["Player"]
and settings["System"]
it should be settings["Player-AbUkL5UoJZ"]
with a record that contains the keys 'player' and 'system':update()
, which is the equivalent of doing .record:set()
, and a a signal changed
which mirrors .record.changedRoleService.recordAdded:Connect(function(roleUID, record)
should become RoleService.roleAdded:Connect(function(role)
and the same for roleRemoved
, while roleChanged
should be completely eliminated as the role object itself now has its own signal. Repeat for all other servicesSystemService.getObject(UID)
should always be the same, while services can have alternative getters such as RoleService.getRoleByName(name, environment)
, BanService.getBanByUserId(userId, environment)
, etcCurrently Nanoblox has a 'global' environment where data can be saved (such as bans, roles, settings, etc).
Now consider how a similar environment can be setup for private servers and servers created through the SavePlaceAPI:
https://developer.roblox.com/en-us/api-reference/class/AssetService
Also consider how zone-based environments can be created. For example, a game where everyone has an assigned piece of land, and only admin commands can be used in that zone on players in that zone. The environment can be associated to a player, but can also persist after this player leaves.
This will enable private server owners for example to permanently ban people and create saveable roles within their own private place whilst no spilling out into the rest of the game universe.
user.temp.descendantChanged
"RoleSJDSFKLSDF.limitModifiers.global"
), and then call ServiceName.objectChanged
with the pathwayTable instead of settingName. Utilise createDesendantChanged (maybe) for this.
record[key] = nil
, do record:set(nil)
SettingService.loaded()
game.PrivateServerId
value, while CreatePlaceAsync Servers have a unique game.PlaceId
value. Consider a way then to initialise a 'private' environment with just a normal PlaceId.SystemService
with single method .createEnvironment(key)
game.PrivateServerId
if...
privateServer
is true
and game.PrivateServerId
and game.PrivateServerOwnerId > 0
reservedServer
is true
and game.PrivateServerId
and game.PrivateServerOwnerId == 0
normalServer
is true
and game.PrivateServerId == nil
ConfigService
ZonePlus.getAllZones()
and ZonePlus.new()
ZonePlus
instead of Zone
).:colonMethod()
for objects where self needs to be injected. Replace everything else with .method()
:getAllRecords
to :getRecords
Notes:
To do:
agent:buff("Health"):increment(50)
agent:buff("Health"):increment(15)
agent:buff("WalkSpeed", 5):set(0)
agent:buff("WalkSpeed", 1):set(40)
agent:buff("BodyTransparency"):set(1)
agent:buff("BodyGroupTransparency", "LeftArm"):set(0.5, TweenInfo.new())
agent:buff("BodyGroupTransparency", 5, "LeftArm"):increment(0.5, TweenInfo.new())
task:buff(...)
method which abstracts user agent and creates a buff based upon the task.callerUserId
task:buff("Health"):set(50)
task.maid:give()
to task:give()
Client stuff
I'm trying to use HD admin in a building game that involves saving creations. Essentially, I've created a place using Create Place API for people to build in, which is then saved using Save Place API. When the place is first created, the Admin functions as normal. However, when the place is saved, then re-entered, the script completely breaks, and everything I've tried to hotfix it has been to no avail.
I'm not entirely sure if this sort of application is anything HD Admin was built for, but I just ask that this be looked into, and have Created Places be supported officially.
If an icon contains a tip and is tapped or longpressed on mobile, a tip will appear. Instead, tips should not appear at all on mobile.
I have sometimes made modules that I feel like for someone who doesn't know how to program it is maybe a little hard to insert it if you have to like insert the main module, edit the parser and then add the module under it. A way to just add it in a folder without having to insert the main module would be nice. For example just add a folder under custom features.
Then to add a module simply put it in there and the main module will require it.
Also if you need to change like some core parts of the system, allowing the user to override some modules like the parser would be awesome.
You could for example just add a string value or something in that custom module named like "Override" and then the value could be "Parser" the main module would then look in the custom modules folder before requireing the core parser.
This would make it really easy for users in all ages and skill levels to add some custom functionaliy.
Thanks, Lucke.
The chat icon created through :createFakeChat apparently disappears randomly (maybe 1/10 sessions) and for all games with HD Admin V2
Unless @ (or player identifier setting) is specified and check for their real name instead
It would be useful if there were the ability to add Icons on the right hand side of the Topbar (Next to the ... button)
Implement features such as 'tags', 'types', etc , similar to evaera's Promise API (https://eryn.io/roblox-lua-promise/lib/) (https://raw.githubusercontent.com/evaera/roblox-lua-promise/061c3a8659d97360df0a001a7143506cf907e21d/lib/README.md), when writing documentation with mkdocs and material (https://squidfunk.github.io/mkdocs-material/),
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.