[Addons Dev] 'Cubic' application

Status
Not open for further replies.
In-game name: Johnson 'Cubic' Huggman
Steam ID: STEAM_0:1:226820368
Age: 16
For how long have you played on our servers?: I've been on the SCP-RP UK server for almost 2 years now, regularly active throughout this time.
What country are you from?: Romania
Time Zone: EEST/EET (UTC+3/UTC+2, whatever, I hate daylight saving)
Do you have a mic?: Yes
Is this your first application for Developer? If not, link previous ones: It's the first one
Have you received any bans?: A few expired bans 1+ year ago (failRP/Toxicity/MRDM), I was a huge minge back then.
How confident are you with GLua? (Rate yourself 1-10 using rating guide): Precisely, I'd place myself at a 6.5.
Do you have any experience with Git?: Yes.
Do you have previous experience as a Developer for GMod?: In the past, I've only minorly touched GLua, however to both be able to properly learn GLua, but also to demonstrate my skills, I've created 2 addons.
The first one is a very simple "holographic assistant" that uses just a few hooks to give situational advice (Github Link), take it more as a warmup for the second addon.
The second one, I've just worked 2 FULL days on it now, and it is a dynamic quest system (Github Link, check the repo's readme.md btw). This is relatively a big-ish addon that I've worked on. As it seems, even though this is my first time properly touching GLua, my past programming experience (with other languages such as C#, Java, Python, and C++) are easily transferrable to GLua.

For the dynamic quest system, I've touched multiple areas that exist in GLua (sents, sweps, tool menu, surface, navmesh, net, nw2, vgui, json, sql, etc.)

This is a showcase video of the dynamic quest system: Youtube Link


How many hours can you commit to developing per week?:
To be honest, I'm not sure. It's very dynamic. Besides real life, the other big task that I gotta do is be active on a senior CL-4 on SCP RP. Either way, I can definitely spend at least 4-7 hours on development.

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

Civil Networks SCP RP (which is also what I'd like to work on) is on the top list of favourite things. Even though I may have been a huge minge for half the time spent on the server, this other half I've got huge achievements like becoming an IA ambassador (twice), Nu-7 CSG, and now an ISD Commissioner. It is now my opportunity to assist on back side of things.

While my experience with Gmod Lua is not extensive (as already mentioned), I still think I can contribute a good part on my side. Albeit not worth saying, I'm also a fast learner and can easily realise when making mistakes, and along that, I've got previous experience in coding, which is why I've placed myself at 6.5.

However, one thing in GLua that I think I will never be able to properly improve on is anything related to UI.
 

Lion

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

Your code is definitely better than what most people apply with, but there still some things that can be improved to increase your chances:
  1. Use `--` instead of `//` (tbf, some of our developers also don't follow this)
  2. This ply is scoped to every entity spawned. Use a NWVar if you need it on the server and client, or just set self.Player (or a similarly named variable) to the player if you only need it on the server.
  3. If this code shouldn't be executed anyway, it shouldn't be in the codebase.
  4. This should just check if either ent1 is the ent and set a temp var to represent the entity and the player respectively.
  5. It does, make sure you AddCSLuaFile() it.
  6. The bug that required this was fixed a while ago, it's not needed anymore. Entities can't die anymore.
  7. Your files should be in a separate folder. Autorun files should only exist to include those files and setup some globals.
    1. P.S. Also remove the same table declaration at the top of every file after that.
    2. See this for an example.
  8. You can / should use a global enum for this to increase clarity.
  9. Comments like this are unnecessary.
  10. Use CreateConVar along with FCVAR_ARCHIVE to save them between sessions, this is unnecessary.
  11. Your other comment states that NW is better than NW2, why are you using NW2 vars here?
  12. Use enums for this, or make this properly modular.
  13. Use guard clauses instead of making a mini code egyption pyramid.
  14. You should put a space after "if"
    if (condition) then > if(condition)then
  15. Store the index that it was inserted at and remove it using that index OnRemove, you're looping with pairs() already so it should be fine.
    P.S 2: Why not just store holoAssistants by the player anyway?

Overall, you definitely show potential, but I'd prefer to rate you around a 5 / 10 on our scale, mainly due to not following best practices (even ignoring the purely code style related problems).

Good luck on the rest of your application, feel free to reach out either on discord or via a forums message if you have any questions regarding my feedback.
 
Hello.

Your code is definitely better than what most people apply with, but there still some things that can be improved to increase your chances:
  1. Use `--` instead of `//` (tbf, some of our developers also don't follow this)
  2. This ply is scoped to every entity spawned. Use a NWVar if you need it on the server and client, or just set self.Player (or a similarly named variable) to the player if you only need it on the server.
  3. If this code shouldn't be executed anyway, it shouldn't be in the codebase.
  4. This should just check if either ent1 is the ent and set a temp var to represent the entity and the player respectively.
  5. It does, make sure you AddCSLuaFile() it.
  6. The bug that required this was fixed a while ago, it's not needed anymore. Entities can't die anymore.
  7. Your files should be in a separate folder. Autorun files should only exist to include those files and setup some globals.
    1. P.S. Also remove the same table declaration at the top of every file after that.
    2. See this for an example.
  8. You can / should use a global enum for this to increase clarity.
  9. Comments like this are unnecessary.
  10. Use CreateConVar along with FCVAR_ARCHIVE to save them between sessions, this is unnecessary.
  11. Your other comment states that NW is better than NW2, why are you using NW2 vars here?
  12. Use enums for this, or make this properly modular.
  13. Use guard clauses instead of making a mini code egyption pyramid.
  14. You should put a space after "if"
    if (condition) then > if(condition)then
  15. Store the index that it was inserted at and remove it using that index OnRemove, you're looping with pairs() already so it should be fine.
    P.S 2: Why not just store holoAssistants by the player anyway?

Overall, you definitely show potential, but I'd prefer to rate you around a 5 / 10 on our scale, mainly due to not following best practices (even ignoring the purely code style related problems).

Good luck on the rest of your application, feel free to reach out either on discord or via a forums message if you have any questions regarding my feedback.
Hi there. I've fixed most of the issues you've mentioned. Some of the issues that I've not fixed:

5. it just refuses to run even with AddCSLuaFile().
6. they still die, I still have to set their hp.
10. the wiki only mentioned it saves clientside, it never said that it saves serverside if it's on the server. Most likely a wiki issue but I'm going to mention it.
11. When writing the other comment I was referring to NW2 (which I'm also aware that it's the less limited version of NW). Either way I've removed that unnecessary comment.
 
Last edited:

Lion

Senior Developer
Senior Developer
Programming Team
Aug 26, 2023
75
15
61
United States
www.github.com
Hi there. I've fixed most of the issues you've mentioned. Some of the issues that I've not fixed:

5. it just refuses to run even with AddCSLuaFile().
6. they still die, I still have to set their hp.
10. the wiki only mentioned it saves clientside, it never said that it saves serverside if it's on the server. Most likely a wiki issue but I'm going to mention it.
11. When writing the other comment I was referring to NW2 (which I'm also aware that it's the less limited version of NW). Either way I've removed that unnecessary comment.
Thanks for the reply.

We have many entities that use cl_init.lua, as long as you're restarting your server after AddCSLuaFile()ing the file, it should work fine.
I didn't realize you were using NextBots for the entities, that's why you need to set the HP. I'm guessing this is something to due with the navmesh usage? You can make an entity not using nextbot and this won't be needed, if you want.
The convar will save on the server, use {FCVAR_ARCHIVE, FCAR_REPLICATED} as flags to have it as a shared archived convar (make sure to make it in a shared file!!!). The convar will be controlled by the server and shouldn't be editable by clients.
 
Thanks for the reply.

We have many entities that use cl_init.lua, as long as you're restarting your server after AddCSLuaFile()ing the file, it should work fine.
I didn't realize you were using NextBots for the entities, that's why you need to set the HP. I'm guessing this is something to due with the navmesh usage? You can make an entity not using nextbot and this won't be needed, if you want.
The convar will save on the server, use {FCVAR_ARCHIVE, FCAR_REPLICATED} as flags to have it as a shared archived convar (make sure to make it in a shared file!!!). The convar will be controlled by the server and shouldn't be editable by clients.
- the cl_inits just don't want to run when starting a new game using the in-game "x players" option (be it local or p2p).
I've even added this:
code_language.lua:
AddCSLuaFile()
print("CL_INIT SENT_DQS_TRIGGERBUBBLE AAA")
And it just doesn't print it for me. The only ones that cl_init runs for is the NPC Snitcher swep and the HoloAssistant sent. Perhaps a nextbot issue? I don't know. (it's not a nextbot issue, the bubble thing is also an entity and its cl_init doesn't run)

- Yes, Nextbots are required for the navmesh.
- I've fixed the convar issue. The wiki should have clarified it.
 
Last edited:

Lion

Senior Developer
Senior Developer
Programming Team
Aug 26, 2023
75
15
61
United States
www.github.com
- the cl_inits just don't want to run when starting a new game using the in-game "x players" option (be it local or p2p).
I've even added this:
code_language.lua:
AddCSLuaFile()
print("CL_INIT SENT_DQS_TRIGGERBUBBLE AAA")
And it just doesn't print it for me. The only ones that cl_init runs for is the NPC Snitcher swep and the HoloAssistant sent. Perhaps a nextbot issue? I don't know. (it's not a nextbot issue, the bubble thing is also an entity and its cl_init doesn't run)

- Yes, Nextbots are required for the navmesh.
- I've fixed the convar issue. The wiki should have clarified it.
Thanks for clarifying about the nextbot and the convars.

cl_init does work properly, if you AddCSLuaFile it properly.

See this wiki page. (mainly the diagram at the bottom):
8dc519b90c767b5.webp


The file needs to be sent to the client for the client to use it. This works in peer-to-peer because the client is able to see the file because it technically runs on the same filesystem as the server. You need to have the SERVER call AddCSLuaFile("cl_init.lua") somewhere to ensure the file is added to the client. You called AddCSLuaFile() in a client only file, which means it will never be executed by the server and therefore never be added to the files that are sent to clients.
 
Thanks for clarifying about the nextbot and the convars.

cl_init does work properly, if you AddCSLuaFile it properly.

See this wiki page. (mainly the diagram at the bottom):
8dc519b90c767b5.webp


The file needs to be sent to the client for the client to use it. This works in peer-to-peer because the client is able to see the file because it technically runs on the same filesystem as the server. You need to have the SERVER call AddCSLuaFile("cl_init.lua") somewhere to ensure the file is added to the client. You called AddCSLuaFile() in a client only file, which means it will never be executed by the server and therefore never be added to the files that are sent to clients.
Right. I've taken note of the diagram. I've also fixed it.
 
Dec 19, 2020
190
54
111
Application Denied


Hi @J. 'Cubic' H.

Thanks for taking the time to make a programmer application.

We have chosen to deny your application. Although you have demonstrated a basic level of proficiency in GLua, we have heard numerous concerns from within the team and outside regarding your conduct. This has ultimately led us to conclude that, presently, you would not fill a role within the Programming team in a capacity we deem suitable. We hold every member of our team to a high standard to ensure there is an amicable environment between members of our team. I recommend taking some time before re-applying so we can re-evaluate our decision based on additional evidence.

You may re-apply in a month.​
 
Status
Not open for further replies.