[Addons Application] Dennid's Developer Application

Dennid

Senior Administrator
Senior Administrator
SCP-RP Staff
Platform Team
Group Moderator
Jul 30, 2023
1,165
297
61

In-game name:

Dennid

Steam ID:

STEAM_0:0:202852072​

Age:

21

For how long have you played on our servers?:

A little over 2 years

What country are you from?:

Ireland

Time Zone:

BST/GMT

Do you have a mic?:

Si

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

Yes it is

Have you received any bans?:

I did recieve one over 2 years ago

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

I would say a 5

Do you have any experience with Git?:

I do yes, I have experience with Git from university projects as well as when I worked as a front end developer for a year which is where most of my experience with Git comes from as we used Bitbucket.

Do you have previous experience as a Developer for GMod?:

I have experience with working on personal projects and addons most of which have been based on the SCP-RP Dev tracker.

The first of which is based off of this ticket here which is to give the user the ability to change your scope sensitivity in the c menu. I dont have access to vguns so instead I made this addon for this weapons addon. How it works is the user can access it by going to the q menu -> options -> Sensitivity where they can then change the sensitivity there or through the c menu once selected.

Here is a clip of how the addon works: Medal Clip.
Here is a link to the github page, I did not include the entire addon due to its size I only uploaded the files I edited along with a readme detailing what lines of code are mine. Github Link.

I have made another addon based off of this ticket from the tracker. I created my own inversion swep and implemented the temporary depleting health pool. The inversion I created works similiarly to the on under the reality bending in swep in game although I added the health decay which means whenever inversion isn't active the extra health (any health above 100) decays by 5 HP every second.

Here is a clip of me using inversion against NPC's: Medal Clip

Github Link

I made another addon based off of the deployable shield currently in game and this ticket here which is to make the deployable shield breakable, I have set the shield to pretty low health for demonstration purposes instead of the proposed 2k in the ticket. When the player has the shield equipped it blocks all damage taken from the front and when deployed it blocks all damage that hits it. When the shield is deployed and the health hits 0 it breaks into small metal pieces I just used generic metal shard props as I don't have a model to use.

Clip of the deployable shield against an NPC: Medal Clip
Clip of the shield breaking: Medal Clip
Github Link

The fourth addon I made is based off another ticket in the dev tracker which is currently dev triaged, it is this ticket which is to change health points showing above peoples heads to health status which is determined by the percentage of health they have. I am aware that it has some delay which I may work on at a later date and update here. The first clip shows the percentage as well to give a better idea but that has been removed from the code after the video was taken and it works currently like the second clip.

Clip with percentages showing: Medal Clip
Clip without the health percentage showing: Medal Clip
Github Link

Ok now onto my fifth addon which is the biggest addon I have attempted, it is a keycard system inspired by vkeycards currently implemented in site 65, it does use the same model for the keypad entity but with different everything else. The keycard/keypad system has level 0 - 5 with 0 not needing a keycard to work and the others needing the correct clearance or higher to work, it is configurable via the tool qun where admins can spawn keypads, link them to doors, select the clearance level and also add passwords. A level 1 keypad can be spawned via the entities menu and used but anything else needs to be spawned using the toolgun and all keycards are found in the weapons menu.

Clip showing configuration and use: Medal Clip
Github Link
Photo of Keypads:
1753296524119.jpeg
This addon still needs more polish and I also need to comment a lot more of the code so it will most likely be updated over the next few days as well

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

4 - 6 hours
Why do you want to be a Developer? What can you help us with?:

I want to become a developer mainly so that I can assist with getting through the backlog of tickets on the devtracker for S65. I also want to gain more knowledge and learn better coding practises with GLua, optimisation techniques etc. My experience as a developer is mainly front end development using java/type script, css and html so I think this is a good opportunity to broaden my knowledge with something I am passionate about.

Any feedback would be greatly appreciated I haven't been using GLua for long :)
 

Kowaru

Well-known Member
Programming Team
Junior Developer
Aug 5, 2024
77
15
41
Neutral leaning on +support, the addons are not bad and they keycards look nice, there is some feedback though that I have after a quick check through the repos. Most of the repos are quite hard to read through, since a lot of the file names or structure is odd. Using the structure that has been shown in your dKeycards is the correct way to do it, follow that format.
Feel free to contact me on discord: gak0992 if you have any questions regarding my response

Inversion -
Using // instead of --, matter of coding practice, but -- is far more preferred as it is lua specific
Create one big Config instead of using the _G table

init.lua:
InversionHealthDecay = InversionHealthDecay or {}
InversionHealthDecay.InversionSystem = InversionHealthDecay.InversionSystem or {}
Something along these lines
No reason to use _G in this situation, or in most situations, using the global table is not that recommended. Making your own table for the config is fine

shared.lua:
While having if CLIENT then works fine, it will always be better for readability and debugging to have your client and server side functions and workings in their respective own files (cl_, sh_, sv_), as it can get hard to read and debug over time if you keep adding under these conditions instead of just their own file.

Shield -
ent_deployed_shield.lua should be in its own entity folder with cl, sh and sv files as stated above,

sh_myaddon.lua - Odd name (why myaddon?), no reason to register the weapon manually when you can put it into a lua/weapons subfolder

Health-Status:
line 75 can be removed (local player = player.GetAll()), and then the for loop should be:
for _, ply in pairs(players) do
DrawHealthStatus(ply)
end

->
for _, ply in player.Iterator() do
DrawHealthStatus(ply)
end
player.Iterator will always be faster than player.GetAll()

KeyCard:
Good file format, better than rest
file names being sh_myaddon.lua, etc is plainly not good, each file name should be unique onto which script they are for, eg sh_keycard.lua, sh_keycard_config.lua, etc.

sv_myaddon.lua - Redundent if not server call, loading it on the server will always put it into the server space, no need to check.

gmod_tool/stools, line 55, never use ~=, always use !=, also found in init in dkeycard_keypad, gmod is full of it but its better to use != instead of ~=.