[Addons Application] Gak's Addon Application

Kowaru

Well-known Member
Aug 5, 2024
23
3
41
In-game name:
'Seele' [SC-EN]

Steam ID:
STEAM_0:0:106102719

Age:
21

For how long have you played on our servers?:
About 5-6 months, 23 days in game play time.

What country are you from?:
United States

Time Zone:
EST

Do you have a mic?:
Yes

Is this your first application for Developer? If not, link previous ones:
Yes

Have you received any bans?:
No

How confident are you with GLua? (Rate yourself 1-10 using rating guide):
4.5 or 5

Do you have any experience with Git?:

Yes, mainly school based utilization though github desktop, and some parts of git.

Do you have previous experience as a Developer for GMod?:
I have minor experince with development in a garrys mod server, I used to be the only person to create custom classes for a popular dark rp server when I was younger, but I never fully developed for a server. I have only been writing things in single player, when ideas come to mind. Through working on my own I have created a banking system, a basic hud as my design skills are not the best, and a printer system that allows for upgrades through faster printing times and more printing money per print. I have linked my github that I uploaded these projects to.

How many hours can you commit to developing per week?:

Around 20-25, I am a student at a university undergoing a computer science degree, so it may take away some time that I am able to contribute during finals and midterms and the like.

Why do you want to be a Developer? What can you help us with?:

I would like to be a developer to help out the server in creating new activities for players to experince, and to further myself and my programming skills, as being in an organized team that has a player base would help me personally become a better developer, as following project regulations and coding styles is still something I have to work on, and learning and doing more is something im always wanting to do. I believe that I can help the server with addons and helping implement new creations and testing to ensure that the new content works, as in the past I was in charge of testing new software at a job to ensure that no bugs got through to production. I believe that even though I do not have the most experince with GLua, I am dedicated and will be able to help out the team.
 

Lion

Senior Developer
Senior Developer
Programming Team
Aug 26, 2023
75
15
61
United States
www.github.com

Neutral, leaning -support


At this current point in time there are considerable issues with your code that would need to be addressed before being accepted on the team. I understand that most of these scripts were made for learning, but considering you're showing them off as stuff you've done I'm using them to represent your skills in glua. Here's some of the issues I noticed:
  • It's a bit annoying to look through your repo because it's not in the format of a normal gmod addon
    • It's easier for us to test things if you put each addon into a separate repo
  • You can't name folder with uppercase names, they won't work on linux
    • Entities/gUpgradeTime
    • Entities/gPrinter
  • There's debug prints all over the place, which is fine for non-production addons but they should at least be a little descriptive
  • You have an empty cl_init file in gUpgradeAmmount, which isn't included anywhere either
    • Same with gUpgradeTime
    • These two upgrades should probobly be based off a single base entity, like `gprinter_upgrade_base`
  • You're dropping the data before re-creating it? https://github.com/Gaklioo/GLuaProjects/blob/main/Scripts/gBank/sv_gBank.lua#L11-L16
    • Why is balance a varchar???
  • (banking) This is very vulnerable to SQL injections, no validation on passed inputs from players being directly concatenated into SQL
    • Use sql.Escape on the strings at the least
  • (banking) There's no reason for making a network message to send the player list to clients, clients have player.GetAll()
    • You should use player.Iterator() anyway
  • (hud) You're sending a network message that triggers SQL in a HUDPaint Hook
    • Image 128 players doing that at once, the server would grind to a hault
  • (hud) Empty sv_init file
  • (*) You've redefined the net.Recieve() for gBankRecievePlayerBalance in almost every script you have, this is bad
    • Create a function inside gBank to get the balance, and cache it on the client and server
    • Even better, only network balance to player when they join and re-send it from the server when it's updated
      • There's no need to consistently re-fetch the data over and over
  • (scoreboard) you should add a scrollpanel and dock the panels instead of manually setting the y position
  • (laser gun) Creating material in Draw hook, which is bad for performance
  • (laser gun) This would be better if it was on a NetworkVar on the weapon itself so it works with MP
  • (laser gun) You shouldn't use self.Owner (deprecated), use self:GetOwner() instead

If you address these it would increase your chances. Good luck with the rest of your application.
 

Kowaru

Well-known Member
Aug 5, 2024
23
3
41

Neutral, leaning -support


At this current point in time there are considerable issues with your code that would need to be addressed before being accepted on the team. I understand that most of these scripts were made for learning, but considering you're showing them off as stuff you've done I'm using them to represent your skills in glua. Here's some of the issues I noticed:
  • It's a bit annoying to look through your repo because it's not in the format of a normal gmod addon
    • It's easier for us to test things if you put each addon into a separate repo
  • You can't name folder with uppercase names, they won't work on linux
    • Entities/gUpgradeTime
    • Entities/gPrinter
  • There's debug prints all over the place, which is fine for non-production addons but they should at least be a little descriptive
  • You have an empty cl_init file in gUpgradeAmmount, which isn't included anywhere either
    • Same with gUpgradeTime
    • These two upgrades should probobly be based off a single base entity, like `gprinter_upgrade_base`
  • You're dropping the data before re-creating it? https://github.com/Gaklioo/GLuaProjects/blob/main/Scripts/gBank/sv_gBank.lua#L11-L16
    • Why is balance a varchar???
  • (banking) This is very vulnerable to SQL injections, no validation on passed inputs from players being directly concatenated into SQL
    • Use sql.Escape on the strings at the least
  • (banking) There's no reason for making a network message to send the player list to clients, clients have player.GetAll()
    • You should use player.Iterator() anyway
  • (hud) You're sending a network message that triggers SQL in a HUDPaint Hook
    • Image 128 players doing that at once, the server would grind to a hault
  • (hud) Empty sv_init file
  • (*) You've redefined the net.Recieve() for gBankRecievePlayerBalance in almost every script you have, this is bad
    • Create a function inside gBank to get the balance, and cache it on the client and server
    • Even better, only network balance to player when they join and re-send it from the server when it's updated
      • There's no need to consistently re-fetch the data over and over
  • (scoreboard) you should add a scrollpanel and dock the panels instead of manually setting the y position
  • (laser gun) Creating material in Draw hook, which is bad for performance
  • (laser gun) This would be better if it was on a NetworkVar on the weapon itself so it works with MP
  • (laser gun) You shouldn't use self.Owner (deprecated), use self:GetOwner() instead

If you address these it would increase your chances. Good luck with the rest of your application.
Thank you for your response! I have addressed a lot of the issues mentioned, except the entity stuff which I am working, and database security. I apologize about the database creation method of dropping and adding, just finished a database classes at uni where every test was forced to drop before creating, so just did it out of habbit. Cannot tell why it was saved as a varchar, that was odd. Ill be working on the rest of your recommendations and I appreciate you taking your time to review and let me know how to improve.