Post by Revan on Mar 23, 2009 16:29:39 GMT -5
Welcome to MOOCOW, the Manual Obedience Operations Control of Win!
NEWS HEADER:
3/10/09 - Initial post - plugin and group systems implemented.
3/11/09 - Display systems added, improved above systems, intensive debugging
3/12/09
- Configurable command string designation (/slay vs !slay vs holyhellslay) added
- Default display type selection added
- Added the ability to choose not only how a message is sent, but to whom it is send, with the flags:
all
server
caller
effected - I'm probably going to change the name of this to target
3/13/09
-Renamed to MOOCOW (Manual Obedience Operations Control Of Win)
-Teams fixed (they actually recognise now)
-The following plugins have been added
-ban - take a look at the section lower in this post for more details
-burn
-exec (doesn't work yet [this is a mix of cexec and rcon])
-giveArmor
-giveHealth
-kick
-setArmor
-setHealth
-slay
-speed
-sslay
3/14/09
-Commands added
-blind - More efficient then both ulx's and new admin's method of doing this!
-freeze - Feature of note, when frozen, your material and color change to represent ice. The material chosen is from a list, the list prioritizes the images in quality, starting with one in phx, then one in css, and if you have neither of those, a default one, thus it adjusts based on what you can use. You may also set a custom texture if you like.
-rocket
-slap - One unique aspect about this slap command versus other mod's slaps is that this one gives you some control over the direction the target flies. While they always go up, they also go in the direction you look. (By the way, this makes it really cool when you slap someone from up close)
-spectate - You can spectate players now. Key feature to this is that unlike most spectator mods, you retain your weapons when you leave spectate mode.
-mute - see lower on the page
3/15/09
-Commands added
-Help command added - lists all commands with descriptions. Developers note: Description and command name may not include a console command.
-Teleportation - Divided into several separate commands. Each is able to be configured seperately, for obvious reasons.
-teleport - causes you to teleport to where you're looking
-goto - causes you to teleport to a player you choose
-bring - causes the player you choose to teleport to you
-coords - encompasses 3 different commands
-savecoords - you specify a name and optionally x,y,z coordinates (if you don't it takes your current location) and it saves them
-loadcoords - you specify the name of the coordinates you saved earlier and you teleport there
-sendtocoords - you specify a player to send to the name of the coordinates you saved earlier
-ghost - Makes the player you specify invisable
-jump - Makes the player you specify jump really high
-rocket - Launches the player you specify into the air and makes them explode, complete with sounds and effects
-mute - shut the player you specify up (doesn't affect voice)
-god - Toggles god mode
-Updated ban - no longer removes entries when unbanned players join (untested fix - it's 1am, I'll test tomorrow)
-exec renamed to perform to avoid glitch with help command
3/16/09
-Not a big update today (I killed most of my time)
-Started on the MOOCOW scoreboard
-Shows name, team, health, and ping
-Resizes based on your resolution
-Much more on the way! (resizing took forever to get the right ratio)
3/18/09
-Command Ragdoll
-Prop Protection Systems
-Commands
-Propprotect_activate - Toggles prop protection
-Prop_friend - Toggles the player you specify as a prop friend - I also added systems for transfering data later when I add a GUI to this
-Prop_cleanup - Removes the props of the specified player
-PROPPROTECT_ADMIN - While it registers as a command, you'll never see it in the help menu, because it uses capital letters and all commands are checked with lowercase letters, it doesn't ever appear; in this way, it acts as a flag. Add it as a command to a team, and that team and all teams who inherit it will be considered 'admins' for prop protection, allowing them to move other people's props.
-Configurable in almost every way imaginable!
-Choose what to protect
-Props
-NPCs
-SENTs
-Vehicles
-Effects
-Ragdolls
-Choose when to protect
-Physgun
-Moving
-Freezing
-Allow/Disallow player physgunning (is always admin only)
-Gravity Gun
-Grabbing
-Punting
-Damage - Disallow people from shooting other people's props!
3/20/09
-Teleport setting added - Choose maximum distance (good for spacebuild and the like)
-Godmode - No longer uses the crappy built in garrysmod godmode feature, now prevents damage from even registering.
-Prop protection
-Added toolgun protect - Complete with an 'allow' list for tools you want to allow others to use on anyone's props (which one's, I dunno)
-Added world prop detection - Didnt test, didn't want to restart with people on my server...
-Misc improvements throughout the mod - gateway to setting restrictions on weapons/ents/sweps created
-Console commands explored - should be added tomorrow with any luck
Update: 3/22/09
-Commands:
setaccess - You can finally change access levels while in game (why I left this till now I dunno)
voicemute - Mute the voice chat of idiots
-Console command activated commands - You can now enter commands in both player and server consoles. On client side, autocomplete is featured.
-General fixes all around
-Wiki started: moocowadmin home
3/23/09
-Wiki almost complete (ready for nondevelopers)
-Various fixes
-Ensuring that the mod is bug free - fixing all possible errors as a result of bad syntax in input
-Preparing for release
Alright, so I've taken up yet another big project, but this one doesn't seem to be over my head and I'm actually motivated to complete it, so there's a good chance of that happening...
Purpose: The admin mods of today seem very flawed:
-ULX - While it used to be very good, it just hasn't stayed modern, and has been falling behind in the admin mod race. While I know that it has had SVN revisions recently, it just never seems to be gaining anything new...
-ASSMod - My favorite admin mod of today, but it's major issue being that the developers arn't working on it anymore...
-New Admin - A polished turd - Mythbusters proved you can do it, and here's some additional evidence, while it works, and it looks nice, some of the code is poorly written, and quite frankly, notifications are annoying!
So, I'm writing another admin mod... and I chose a key word for my last project (R-OS [the keyword being modular]) so this time I'm doing the same thing, the key word being configurable. Every single aspect of the mod will be easily configurable!
Features (more yet to come):
Plugins
Ok, yes, plugins arn't a very new idea, but I was reading the code to the E2's plugin like system and figured that with a few adaptions, it would actually work incredibly well for an admin mod - so thanks Syranide! With the adapted code, I'm using *far* less code than either assmod or ulx (and I don't know about new admin because I havn't looked at it) to implement plugins! The code is also far more readable, making it easier to change/build upon/etc.
Groups
The first major configurable aspect of the mod. Groups are going to be implemented by the owner of the server, not me. The groups are not set in stone like many of the other admin mods, *you* make the groups. There will be only one group that will always be present, "client", the default group. The group system is expandable so that it uses a system of inheritance, simply put, you can have one group inherit the commands and other attributes of another group.
Commands
As alluded to in the text above, commands are assigned on a group to group basis. The owner chooses what groups have access to what commands, and all commands in one group are inherited by it's superiors. This allows for extreme customization.
Display Messages - Code not written for this just yet
How information is displayed to users, the console, and even the logs, will be entirely up to the server owner. The server owner will be able to specify a default output method(s) from the following list:
to chat - messages printed in blue text in the chat box
console - messages echo in console
notification - a new notification popup for messages
logs - messages are written to the log file based on the pattern set up in the plugin file
The owner will then be able to override plugins of their choice if they think that some functions should/shouldn't be displayed in the mode(s) they chose/didn't choose above.
Clients will also be able to change how data reaches them. Clients will eventually have a GUI that allows them to select plugins and choose how the messages of that plugin appear to them (in addition to the same default option selection the owner will have). In all matters however, the server owner will get final say; the owner will be able to specify whether or not they want to allow clients to be able to override their verdict on the display method with a default option, and once again, the ability to override for specific functions.
Simply put - it means that whether you're the host or the client, data comes to you how you want it to.
Unique Banning System
The existing ban system for garrysmod is very poorly designed. It works, and it gets the job done, but it doesn't supply you with all the information you should have, it only prevents the ID of the users stored in there from joining for the duration of their ban. Mine, does more.
Upon observing the difficulty people have with removing bans, I decided that the standard information was just not enough anymore. I have a new system that stores the steam ID and name of the banned and the banner, as well as the time of the ban, the duration of the ban, and it's reason.
So what does that all mean? Well it means that you *dont* need to start your server and join it and then rummage through my mod just to remove a ban entry, you can go straight into the file and see the name of whomever it is (not just their ID [which you cannot tell apart from the other bans]). You can also see who banned people, allowing you to track down bad admins with efficiency.
The one other major feature that is implemented, is the ability to ban for time periods that are fractions if minutes, unlike the normal ban system.
Mass Commands
While not default in the design of plugins in general, in all plugins released with the mod that this can be done with, I am allowing you to specify more then one person to be affected by each command, thus things like
/speed Revan Syranide
would give Syranide and I speed, without needing to run the speed command once for each player.
With this same system, commands that are considered "friendly" (they help you, don't hurt you) also will have build in "act on self" activation, meaning that
/speed Revan
and
/speed
do the exact same thing. If you leave out the person to act upon, it assumes it's the caller of the command; again, this is for "friendly" commands only, all others will just ignore invalid input.
As always with admin mods, and I say this only because I used full names in my examples, you only need to specify a portion of the player's name you want as your target, "rev" and "revan" are just as good as long as there isn't another player who has the character sequence "rev" in their name.
Not Case Sensitive
I don't know why the guy did it, but the maker of New Admin made his mod case sensitive, which is just insane. Anyway, in short, anything you enter, whether it's uppercase, lowercase, or some of both, regardless of *where* it's entered (configuration file, console, chat,etc) it will do the same thing as any other combination of uppercase/lowercase letters.
Mute/Text modification
I have altered the way that chat works so that it is now a plugin. It now also has it's own register function that allows other plugins to modify outgoing text that isn't a command. This creates a good system to build on for things like mute.
Data Transfer System
While none of my plugins will use it in order to remain cohesive, there is a system in place that allows data transfer between plugins. (For developers)
The main reason I wanted to make this post so early in development is so that I can get community feedback and ideas to help make this mod the best it can possibly be, thus I will be taking suggestions from the members of this forum, so if you have any sort of feature you want in the admin mod, let me know, and if it's reasonable, it will be added. Keep in mind before asking, that just about every feature that's already implemented in other admin mods will be available in this one in addition to my new advancements.
Progress:
For those of you who can read lua, I will be placing my source code at least once a day on my server. My server is accessable through your browser (no it's not an SVN), and thus you may look at my code whenever you like.
The addons folder: Index of /garrysmod/addons/Admin - MOOCOW
The data folder: Index of /garrysmod/data/moocow
NEWS HEADER:
3/10/09 - Initial post - plugin and group systems implemented.
3/11/09 - Display systems added, improved above systems, intensive debugging
3/12/09
- Configurable command string designation (/slay vs !slay vs holyhellslay) added
- Default display type selection added
- Added the ability to choose not only how a message is sent, but to whom it is send, with the flags:
all
server
caller
effected - I'm probably going to change the name of this to target
3/13/09
-Renamed to MOOCOW (Manual Obedience Operations Control Of Win)
-Teams fixed (they actually recognise now)
-The following plugins have been added
-ban - take a look at the section lower in this post for more details
-burn
-exec (doesn't work yet [this is a mix of cexec and rcon])
-giveArmor
-giveHealth
-kick
-setArmor
-setHealth
-slay
-speed
-sslay
3/14/09
-Commands added
-blind - More efficient then both ulx's and new admin's method of doing this!
-freeze - Feature of note, when frozen, your material and color change to represent ice. The material chosen is from a list, the list prioritizes the images in quality, starting with one in phx, then one in css, and if you have neither of those, a default one, thus it adjusts based on what you can use. You may also set a custom texture if you like.
-rocket
-slap - One unique aspect about this slap command versus other mod's slaps is that this one gives you some control over the direction the target flies. While they always go up, they also go in the direction you look. (By the way, this makes it really cool when you slap someone from up close)
-spectate - You can spectate players now. Key feature to this is that unlike most spectator mods, you retain your weapons when you leave spectate mode.
-mute - see lower on the page
3/15/09
-Commands added
-Help command added - lists all commands with descriptions. Developers note: Description and command name may not include a console command.
-Teleportation - Divided into several separate commands. Each is able to be configured seperately, for obvious reasons.
-teleport - causes you to teleport to where you're looking
-goto - causes you to teleport to a player you choose
-bring - causes the player you choose to teleport to you
-coords - encompasses 3 different commands
-savecoords - you specify a name and optionally x,y,z coordinates (if you don't it takes your current location) and it saves them
-loadcoords - you specify the name of the coordinates you saved earlier and you teleport there
-sendtocoords - you specify a player to send to the name of the coordinates you saved earlier
-ghost - Makes the player you specify invisable
-jump - Makes the player you specify jump really high
-rocket - Launches the player you specify into the air and makes them explode, complete with sounds and effects
-mute - shut the player you specify up (doesn't affect voice)
-god - Toggles god mode
-Updated ban - no longer removes entries when unbanned players join (untested fix - it's 1am, I'll test tomorrow)
-exec renamed to perform to avoid glitch with help command
3/16/09
-Not a big update today (I killed most of my time)
-Started on the MOOCOW scoreboard
-Shows name, team, health, and ping
-Resizes based on your resolution
-Much more on the way! (resizing took forever to get the right ratio)
3/18/09
-Command Ragdoll
-Prop Protection Systems
-Commands
-Propprotect_activate - Toggles prop protection
-Prop_friend - Toggles the player you specify as a prop friend - I also added systems for transfering data later when I add a GUI to this
-Prop_cleanup - Removes the props of the specified player
-PROPPROTECT_ADMIN - While it registers as a command, you'll never see it in the help menu, because it uses capital letters and all commands are checked with lowercase letters, it doesn't ever appear; in this way, it acts as a flag. Add it as a command to a team, and that team and all teams who inherit it will be considered 'admins' for prop protection, allowing them to move other people's props.
-Configurable in almost every way imaginable!
-Choose what to protect
-Props
-NPCs
-SENTs
-Vehicles
-Effects
-Ragdolls
-Choose when to protect
-Physgun
-Moving
-Freezing
-Allow/Disallow player physgunning (is always admin only)
-Gravity Gun
-Grabbing
-Punting
-Damage - Disallow people from shooting other people's props!
3/20/09
-Teleport setting added - Choose maximum distance (good for spacebuild and the like)
-Godmode - No longer uses the crappy built in garrysmod godmode feature, now prevents damage from even registering.
-Prop protection
-Added toolgun protect - Complete with an 'allow' list for tools you want to allow others to use on anyone's props (which one's, I dunno)
-Added world prop detection - Didnt test, didn't want to restart with people on my server...
-Misc improvements throughout the mod - gateway to setting restrictions on weapons/ents/sweps created
-Console commands explored - should be added tomorrow with any luck
Update: 3/22/09
-Commands:
setaccess - You can finally change access levels while in game (why I left this till now I dunno)
voicemute - Mute the voice chat of idiots
-Console command activated commands - You can now enter commands in both player and server consoles. On client side, autocomplete is featured.
-General fixes all around
-Wiki started: moocowadmin home
3/23/09
-Wiki almost complete (ready for nondevelopers)
-Various fixes
-Ensuring that the mod is bug free - fixing all possible errors as a result of bad syntax in input
-Preparing for release
Alright, so I've taken up yet another big project, but this one doesn't seem to be over my head and I'm actually motivated to complete it, so there's a good chance of that happening...
Purpose: The admin mods of today seem very flawed:
-ULX - While it used to be very good, it just hasn't stayed modern, and has been falling behind in the admin mod race. While I know that it has had SVN revisions recently, it just never seems to be gaining anything new...
-ASSMod - My favorite admin mod of today, but it's major issue being that the developers arn't working on it anymore...
-New Admin - A polished turd - Mythbusters proved you can do it, and here's some additional evidence, while it works, and it looks nice, some of the code is poorly written, and quite frankly, notifications are annoying!
So, I'm writing another admin mod... and I chose a key word for my last project (R-OS [the keyword being modular]) so this time I'm doing the same thing, the key word being configurable. Every single aspect of the mod will be easily configurable!
Features (more yet to come):
Plugins
Ok, yes, plugins arn't a very new idea, but I was reading the code to the E2's plugin like system and figured that with a few adaptions, it would actually work incredibly well for an admin mod - so thanks Syranide! With the adapted code, I'm using *far* less code than either assmod or ulx (and I don't know about new admin because I havn't looked at it) to implement plugins! The code is also far more readable, making it easier to change/build upon/etc.
Groups
The first major configurable aspect of the mod. Groups are going to be implemented by the owner of the server, not me. The groups are not set in stone like many of the other admin mods, *you* make the groups. There will be only one group that will always be present, "client", the default group. The group system is expandable so that it uses a system of inheritance, simply put, you can have one group inherit the commands and other attributes of another group.
Commands
As alluded to in the text above, commands are assigned on a group to group basis. The owner chooses what groups have access to what commands, and all commands in one group are inherited by it's superiors. This allows for extreme customization.
Display Messages - Code not written for this just yet
How information is displayed to users, the console, and even the logs, will be entirely up to the server owner. The server owner will be able to specify a default output method(s) from the following list:
to chat - messages printed in blue text in the chat box
console - messages echo in console
notification - a new notification popup for messages
logs - messages are written to the log file based on the pattern set up in the plugin file
The owner will then be able to override plugins of their choice if they think that some functions should/shouldn't be displayed in the mode(s) they chose/didn't choose above.
Clients will also be able to change how data reaches them. Clients will eventually have a GUI that allows them to select plugins and choose how the messages of that plugin appear to them (in addition to the same default option selection the owner will have). In all matters however, the server owner will get final say; the owner will be able to specify whether or not they want to allow clients to be able to override their verdict on the display method with a default option, and once again, the ability to override for specific functions.
Simply put - it means that whether you're the host or the client, data comes to you how you want it to.
Unique Banning System
The existing ban system for garrysmod is very poorly designed. It works, and it gets the job done, but it doesn't supply you with all the information you should have, it only prevents the ID of the users stored in there from joining for the duration of their ban. Mine, does more.
Upon observing the difficulty people have with removing bans, I decided that the standard information was just not enough anymore. I have a new system that stores the steam ID and name of the banned and the banner, as well as the time of the ban, the duration of the ban, and it's reason.
So what does that all mean? Well it means that you *dont* need to start your server and join it and then rummage through my mod just to remove a ban entry, you can go straight into the file and see the name of whomever it is (not just their ID [which you cannot tell apart from the other bans]). You can also see who banned people, allowing you to track down bad admins with efficiency.
The one other major feature that is implemented, is the ability to ban for time periods that are fractions if minutes, unlike the normal ban system.
Mass Commands
While not default in the design of plugins in general, in all plugins released with the mod that this can be done with, I am allowing you to specify more then one person to be affected by each command, thus things like
/speed Revan Syranide
would give Syranide and I speed, without needing to run the speed command once for each player.
With this same system, commands that are considered "friendly" (they help you, don't hurt you) also will have build in "act on self" activation, meaning that
/speed Revan
and
/speed
do the exact same thing. If you leave out the person to act upon, it assumes it's the caller of the command; again, this is for "friendly" commands only, all others will just ignore invalid input.
As always with admin mods, and I say this only because I used full names in my examples, you only need to specify a portion of the player's name you want as your target, "rev" and "revan" are just as good as long as there isn't another player who has the character sequence "rev" in their name.
Not Case Sensitive
I don't know why the guy did it, but the maker of New Admin made his mod case sensitive, which is just insane. Anyway, in short, anything you enter, whether it's uppercase, lowercase, or some of both, regardless of *where* it's entered (configuration file, console, chat,etc) it will do the same thing as any other combination of uppercase/lowercase letters.
Mute/Text modification
I have altered the way that chat works so that it is now a plugin. It now also has it's own register function that allows other plugins to modify outgoing text that isn't a command. This creates a good system to build on for things like mute.
Data Transfer System
While none of my plugins will use it in order to remain cohesive, there is a system in place that allows data transfer between plugins. (For developers)
The main reason I wanted to make this post so early in development is so that I can get community feedback and ideas to help make this mod the best it can possibly be, thus I will be taking suggestions from the members of this forum, so if you have any sort of feature you want in the admin mod, let me know, and if it's reasonable, it will be added. Keep in mind before asking, that just about every feature that's already implemented in other admin mods will be available in this one in addition to my new advancements.
Progress:
For those of you who can read lua, I will be placing my source code at least once a day on my server. My server is accessable through your browser (no it's not an SVN), and thus you may look at my code whenever you like.
The addons folder: Index of /garrysmod/addons/Admin - MOOCOW
The data folder: Index of /garrysmod/data/moocow