Comments (1)
To do for now
Brainstorm
- The methods, property and design of:
- How environments and systems interconnect
- EnvironmentService
- getEnvironment -- if does not exist, warn
- getEnvironmentWhenLoaded -- returns promise which resolves when environment loaded all services
- bindEnvironmentType(environmentType, action)
- bind default ones:
- global
- privateServer
- reservedServer
- bind default ones:
- unbindEnvironmentType(environmentType)
- canBroadcastGlobally - default false, if remains false ignore changes
- Environment (object)
Mostly System / Environments
- Create ban and unban command
- See RoleService 'Role Order' and consolidate that: #102
- Create objects
- Have parent object called 'Record'
- A property settings which is the record
- Think how expirys will work, be hidden and eventually removed when the original player joins the server
- Simply have a
record:hasExpired(pathwayToTable)
method and then check for this within BanService and LongtermService - Have
record.changed
point torecord.settings.changed
-
record:update(settingsPathway, value)
which handles the abstraction recordChanged does - ensure createRecord and removeRecord work properly (e.g. account for environment, return object, destroy object, nil from dictionary)
- A method within services to associate properties (such as names, userids, environments, etc) to the object
- Make sure to remain environment specific!!
- System:getRecordsWithSettings(...)
- System:getRecordsWithSetting(pathway, environment) - if first time, sets up a records descendant changed signal and association table
- getRecordWithSetting - same as above but results[1]
- Make sure it functions like current TaskService setup
- Convert TaskService to this new method
- All service method APIs should have an end
environment
paramter. Ifnil
, this will default to the global environment object- Change environment key to environmentUID
- Setup an environment service and module
- Environment.getUIDFromType()
- bind and unbind methods which determines how UIDFromType works
- CONSIDER HOW NON-GLOBAL ENVIRONMENTTYPE ROLES WORK (e.g. PrivateService, ReservedServer, etc)
- We still want them to remain on the Global environment, but to create different environments when criteria is met
- It's also important that when a role has the global UID but a non-global Type then it gets disabled for that server. Consider an 'active' property for roles that when set to false then wipes it from the user role information records
- ensure change differences within studio/config then apply ingame for all environments
- completely setup config (see more details below)
- use getUIDFromType within config and have the environmentUID set before being added into the temp/perm records
- Introduce a method/signal where you can listen for environments loaded, then in framework, wait for Global environment to load before completing initialisation
- Introduce a
job.environment
which is passed down from CommandService verification
- Setup Record System objects:
- Ban
- Command
- Job
- Longterm
- Role
- Setting
- Warn
- For the following services...
- Update their events/signals
- Update all methods to include environments (and to remove isPerm/Global)
- Sevices:
- BanService
- CommandService
- JobService
- LongtermService
- RoleService
- SettingService
- WarnService
Additional
- Ensure methods like Args getSystemSetting/getPlayerSetting) are fully updated with environments
- Update state tables such as the following so that they work for multiple environment, instead of single initialisation
- CommandService 'lowerCaseNameAndAliasToCommandDictionary') -- IGNORE THIS, ITS ACTUALLY FINE
- SettingService (e.g. 'lowerCaseColorNames')
- Revamp all record:getTable and setTable
- TaskService everything
- THINK ABOUT THIS: Everything related to Framework.loaded needs to be revamped
- This method needs to entirely disappear
- Maybe an environmentLoaded alternative which can be listened for?
- What happens about framework:waitUntilLoaded? Should this wait be removed entirely, but then how do you ensure an environment is loaded when you wish to retrieve information about it? Maybe a wait until specific environment loaded event/method instead?
- For example, what happens about
BanService.playerLoadedMethod
if this is called before the environment loaded?
- Config
- Update all config (bans, roles, etc) with EnvironmentType
- When config is loaded in game, sort based upon its EnvironmentType
- Setup an 'Individual' EnvironmentType Enum (and replace with Other)
Test
- Expiry on different layers of records work (and state:add())
- Changing a records environmentType and environmentUID
- The creating and saving of records, such as bans, in non global environments like private servers
- The changing of default information within config/studio after already creating and changing things within a non global env
Networking
- User information which determines if they have the main menu open/closed
- User information to determine which pages/info they can access
- A remote event fired to server to initially retrieve information and inform server menu is open/closed
- The remote event listened on client to handle system/record data changes
- Make sure to filter out tables which have an expired expiryTime
- Have system/record deduce who needs updating and can access information, and fire off accordingly
Data Caps
- Explore DataStore limits. Do new datastores need to be created per system instead of keys?
- Consider creating an arg called 'recordString'. It behaves the same as a normal string but gets capped to around 200 characters
- A Cap on the total number of record types (bans, roles, etc)
from core.
Related Issues (20)
- Setup UI Plan
- Update internal data and user systems before continuing work
- REMOVE THE ICE CREAM VAN (KIDNAP COMMAND) IMPORTANT!! HOT 5
- Nanocoins (N$) (or Nanobux or Nanobucks)
- Update GitHub Publish Action to use the new Open Cloud instead of a standalone dedicated account
- Setup CONTRIBUTING HOT 1
- HD Admin Not Working - Infinite Yield Possible on ReplicatedStorage:WaitForChild("HDAdminSetup") HOT 8
- Messages: an enhanced form of communication
- Finalise Users/Profiles, Globals and Central Server Overhaul
- SystemService and Commands Overhaul
- Update Docs
- Localization
- Setup a Bounty program
- Design Official Logo
- Option to automatically make test players in studio X rank HOT 1
- Produce tutorials
- Convert codebase to typed luau
- Make server and local script command (PLUS EXTRAS)
- HD Admin [STOPPED WORKING RANDOMLY] Infinite Yield Possible on 'ReplicatedStorage:WaitForChild("HDAdminClient")'
- [HD Admin] Type confusion + numerical values in `Contributors` command field results in error HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from core.