Kyzent's Developer - Addons Application II

Status
Not open for further replies.
In-game name: Kyzent.
Steam ID: STEAM_0:0:562121180.
Age: 18.
For how long have you played on our servers?: since October 2020.
What country are you from?: IRAN.
Time Zone: 3:30+ GMT / 2:30+ BST.
Do you have a mic?: Of course.

Is this your first application for Developer? If not, link previous ones: This is my second application.

Have you received any bans?: I've only received 1 ban and 3 warnings from MRP back in 2020.

How confident are you with GLua? (Rate yourself 1-10 using rating guide): I'd say 5.

Do you have any experience with Git?: I've had a little experience using Git but not as much

Do you have previous experience as a Developer for GMod?: No but I've been working on a few projects on my own to build up my developing skills and knowledge.

How many hours can you commit to developing per week?: I can do 4 hours a week regularly.

Why do you want to be a Developer? What can you help us with?: As I've been in the community for almost 3 years now, I want to try a new hobby to maintain my activity within the community and help out a server I primarily play in (MRP), Kvarkar is the only MRP developer and he has done a lot for the MRP player base. I want to be able to make a few changes that can be done by any Community Supervisors or developers that may have access, with my current knowledge I can understand simple/semi-complex functions and tables depending on what file I'm editing. Not only that but, Kvarkar is burned out and I can understand why he wants to take a break from developing, with that being said I always wanted to become a GLua Developer and fairly I believe this can be a start for me to begin programming in general. I know I may not sound like a promising developer but I wanted to give it a shot and look forward to making improvements to whatever the executive team might find weird.


Kyzent's Division System - I've made this addon to get around the idea of making a specialized regiment to have unique equipment such as helicopters, juggernauts, and custom jobs. Here are the features: KList lists every regiment and is accessible if you're part of that regiment unless you hold Superadmin or admin rank on the server. KCharacter is used to view your current character stats such as what regiment you're part of, Switch between weapon classes, you can also change people's weapon or rank by typing /characters. KRanks works just like how it is on vwar, you click someone from the KList and promote them to a rank that allows you to do so (Captain can promote up to SGT / Lieutenant can promote up to PFC) or if you hold an admin rank you can promote them from the List or /characters. KLoadouts is like the regimental kit but applied to the character rather than the job, you can switch kits whenever you wish. KAnnouncements is what I really enjoyed making, by typing /officerpanel you would be able to make an announcement to your fellow division. KPoints is like the Combat Score, you kill people and you'll be given 100 points and by typing /points you'd be introduced to a shop with items you can purchase (Heavy Armor, Adrenaline and Helicopter). KClothes is where you can choose your own model when assigned to a division. DEFCON System can be accessed by typing /officerpanel and set the DEFCON to any number given in the panel. KJobs wasn't my best since I lost interest in updating this addon but regardless I made it. https://steamcommunity.com/sharedfiles/filedetails/?id=2970080175

Kyzent's Admin System - Some people have seen my old KAdmin system but this is completely reworked with ranks and panels, there are 3 hard codded ranks within this addon (Superadmin, Admin, Moderator), if the game mode is Sandbox and the player is a superadmin he'll be given the rank of Owner. You can set command perms by typing /super if your above the superadmin category and set people's usergroup through /super panel or tab menu, this addon is not completely finished but I will make sure to leave a message whenever I finished this addon. https://steamcommunity.com/sharedfiles/filedetails/?id=2964417173

Kyzent's HUD System - Basic HUD creation, this is a very old addon but I might look into remaking this one day :D https://steamcommunity.com/sharedfiles/filedetails/?id=2970394776

Now under this section is pretty much how I started developing in general, these may not be interesting or appealing as the given addons above but thought I put this since It gives people the insensitive to always work hard.
Magic Donut -
- My intentions were if you ate the donut it gives you a boost and it'll return to its original speed (I was going to add a custom hud where it flashes yellow meaning ur fast but I decided to do a very basic version of it)

Basic HUD -
- This was based on a sandbox game mode which doesn't have a lot but It's something if a player wants a hud that's not just numbers

Message of the day - https://i.gyazo.com/e77e6be28e3bb7da2ca7d96fe4092bfb.png
- I made a basic MOTD, it has the logos and buttons you can click, this was a concept.

Doctor NPC - Unfortunately, I don't have any video of this but I made two NPCs that based on the game mode
- Doctor (sandbox) functions just like a normal doctor would, if have less than 100 hp it'll set ur hp to 100
- Doctor (darkrp) it's based on how much hp they lost, if the caller's hp is 50 then it'll cost him 1000 dollars to be treated, maximum is 2000$


These are the only ones I've created so far with my current knowledge but it's just the beginning. ( I'd like to thank everyone for taking the time to read this application and I'll make sure to update the post once I make more addons. )
 

Mr Scooby

Well-known Member
Apr 13, 2023
33
3
41
+Support

Good coder from what I seen. I have tested some of his code and it looked pretty good. I think he was what it takes to become a dev.
 
Hi Kyzent, I'm going to be leaving a -support on this application.
While I have no doubt in your qualities as a member of Senior SL and respect that from a behavior/professionalism/trustworthiness standpoint you would be perfectly fine, I do not believe your GLua abilities would be sufficient for a Developer position. I hope you can take my feedback and use it to improve your skills.

I've gone ahead and used SteamCMD to download some of your addons, and here's my constructive feedback on your code, from most to least important in order:
KAdmin
  1. The most significant finding I've made with KAdmin is that there is basically no security. While you check the player's access in some netmessages and in the PlayerSay hook, there is very little security otherwise. This is a list of possible exploits someone can do with a Lua injector or other cheat with no staff permissions required;
    1. Add an infinite amount of new staff ranks with the MakeNewRankConfig message; this isn't much except an annoyance from a surface level, however this also broadcasts to every client on the server to make a new rank. This very quickly leads to an exploiter being able to memory leak and crash both the server and possibly every client on it in a very short amount of time.
    2. Change the permissions of both commands and ranks with ChangeCommandValue and ChangeRankAccessInfo (if this netmsg wasn't mistakenly changing category, presumably due to a copy+paste that wasn't changed). Despite not allowing you to change your own rank, you can simply change the permission of a command or your own rank to allow you to execute it anyway.
    3. Give anyone other than yourself any rank with GiveAdminRank. You can just have a friend join, give them Owner, and they now can't be targeted by most of the commands. They can now ban the entire server or do other goofy stuff, including get people's IP addresses with one of the netmsgs.
    4. Ban/kick anyone without the Owner group with SendBanInfo, KickPlayer, SendKickInfo. You don't need a admin rank for this, you can just send the netmsg and ban/kick people.
    5. And a fair few more things that I can't bother spending enough time to write about; I think the point has been made.
  2. The code is very non-modular. Manual comparisons to "Owner" rank by name, manual comparisons to specific commands a bunch of times in PlayerSay. Every netmessage for every command is in one server and client file, along with menu functionality. The code readability and lines of code could be vastly improved by a modular code structure spanning multiple files for specific things.
  3. The formatting is very difficult to read; there is an excessive amount of newlines surrounding every piece of code. Most style guides and formatters would disagree with this, along with most programmers I know. This is more of a preference and good practice, though.
KDivision
  1. Same issue as first in list of KAdmin - the GiveRank netmessage can be used to give ranks while you have no permissions. SendStringDataToAnnouncement can be used to make any announcement to everyone in your team, with basically no way of knowing it was you with any contents with no permission checks.
  2. Most of these netmessages won't work correctly with more than 1 player? GetCharPlyInfo and globals (global variables are also bad practice) charply and charid are used, which will get overwritten once more than 1 player joins.
  3. Same issue as KAdmin 2.
  4. Same issue as KAdmin 3.
KHud
There's not much to talk about since the addon is very small. Overall, the code is a bit messy and non-modular, but forgivable since it's old and so short.

Overall, I don't personally believe your skills are sufficient enough in GLua to act as a developer, and need a fair amount of work.
I would greatly suggest looking into secure server-client architecture, and also using formatters/linters like StyLua/Selene to help improve your code.
I would also suggest looking into object-oriented programming in Lua. Even with functional (non object-oriented) programming, you could still split your code into several Lua files that can be imported/required instead of having all the code for a project in 1 or 2 files.
 
Hi Kyzent, I'm going to be leaving a -support on this application.
While I have no doubt in your qualities as a member of Senior SL and respect that from a behavior/professionalism/trustworthiness standpoint you would be perfectly fine, I do not believe your GLua abilities would be sufficient for a Developer position. I hope you can take my feedback and use it to improve your skills.

I've gone ahead and used SteamCMD to download some of your addons, and here's my constructive feedback on your code, from most to least important in order:
KAdmin
  1. The most significant finding I've made with KAdmin is that there is basically no security. While you check the player's access in some netmessages and in the PlayerSay hook, there is very little security otherwise. This is a list of possible exploits someone can do with a Lua injector or other cheat with no staff permissions required;
    1. Add an infinite amount of new staff ranks with the MakeNewRankConfig message; this isn't much except an annoyance from a surface level, however this also broadcasts to every client on the server to make a new rank. This very quickly leads to an exploiter being able to memory leak and crash both the server and possibly every client on it in a very short amount of time.
    2. Change the permissions of both commands and ranks with ChangeCommandValue and ChangeRankAccessInfo (if this netmsg wasn't mistakenly changing category, presumably due to a copy+paste that wasn't changed). Despite not allowing you to change your own rank, you can simply change the permission of a command or your own rank to allow you to execute it anyway.
    3. Give anyone other than yourself any rank with GiveAdminRank. You can just have a friend join, give them Owner, and they now can't be targeted by most of the commands. They can now ban the entire server or do other goofy stuff, including get people's IP addresses with one of the netmsgs.
    4. Ban/kick anyone without the Owner group with SendBanInfo, KickPlayer, SendKickInfo. You don't need a admin rank for this, you can just send the netmsg and ban/kick people.
    5. And a fair few more things that I can't bother spending enough time to write about; I think the point has been made.
  2. The code is very non-modular. Manual comparisons to "Owner" rank by name, manual comparisons to specific commands a bunch of times in PlayerSay. Every netmessage for every command is in one server and client file, along with menu functionality. The code readability and lines of code could be vastly improved by a modular code structure spanning multiple files for specific things.
  3. The formatting is very difficult to read; there is an excessive amount of newlines surrounding every piece of code. Most style guides and formatters would disagree with this, along with most programmers I know. This is more of a preference and good practice, though.
KDivision
  1. Same issue as first in list of KAdmin - the GiveRank netmessage can be used to give ranks while you have no permissions. SendStringDataToAnnouncement can be used to make any announcement to everyone in your team, with basically no way of knowing it was you with any contents with no permission checks.
  2. Most of these netmessages won't work correctly with more than 1 player? GetCharPlyInfo and globals (global variables are also bad practice) charply and charid are used, which will get overwritten once more than 1 player joins.
  3. Same issue as KAdmin 2.
  4. Same issue as KAdmin 3.
KHud
There's not much to talk about since the addon is very small. Overall, the code is a bit messy and non-modular, but forgivable since it's old and so short.

Overall, I don't personally believe your skills are sufficient enough in GLua to act as a developer, and need a fair amount of work.
I would greatly suggest looking into secure server-client architecture, and also using formatters/linters like StyLua/Selene to help improve your code.
I would also suggest looking into object-oriented programming in Lua. Even with functional (non object-oriented) programming, you could still split your code into several Lua files that can be imported/required instead of having all the code for a project in 1 or 2 files.
Hello @checkraisefold, I appreciate the feedback and I'll look into them and I'll let you know once I make changes
 
KAdmin Updates

So I went through most of the bugs and I can assure you they work properly now unless I missed any, despite this I also implemented a reporting system and a staff record, I do appreciate you going through my addons and giving me a list of problems that my addon have, I'd like to only have 1 file per realm so. with that being said, I'll update the addon either this afternoon or tomorrow morning depending on how busy I am today.
 
Status
Not open for further replies.