Skip to content

Instantly share code, notes, and snippets.

@bjurd
bjurd / faster_trails.lua
Last active April 12, 2026 23:45
Make trails a bit less troublesome
MakeTrail = MakeTrail or util.SpriteTrail
local sbox_maxtrails_global = CreateConVar("sbox_maxtrails_global", "32", { FCVAR_ARCHIVE, FCVAR_NOTIFY }, "Limits the global amount of trails (This is NOT a per-player limit)", 0)
local sbox_maxtrails = CreateConVar("sbox_maxtrails", "8", { FCVAR_ARCHIVE, FCVAR_NOTIFY }, "Limits the per-play amount of trails", 0)
local sbox_maxtrail_resolution = CreateConVar("sbox_maxtrail_resolution", tostring(1 / 128), { FCVAR_ARCHIVE, FCVAR_NOTIFY }, "Limits the resolution (segments) of trails", 0, 1)
local sbox_maxtrail_lifetime = CreateConVar("sbox_maxtrail_lifetime", "3", { FCVAR_ARCHIVE, FCVAR_NOTIFY }, "Limits the lifetime of trails (in seconds)", 0, 10) -- The slider in the spawnmenu goes up to 10 seconds
--- @class _G
--- @field TotalTrails number
TotalTrails = TotalTrails or 0
@bjurd
bjurd / squash.lua
Created March 18, 2026 00:53
Propkill Damage Indicators
--- @class DeathText
--- @field Text string
--- @field Origin Vector
--- @field Damage number
--- @field StartTime number
--- @field Squash boolean|nil
--- @type table<Player, DeathText[]>
local Texts = {}
@bjurd
bjurd / better_dlights.lua
Last active March 14, 2026 11:02
Optimized Dynamic Lights
--- @class dlight_t
--- @field brightness number
--- @field decay number
--- @field dietime number
--- @field dir Vector
--- @field innerangle number
--- @field outerangle number
--- @field key number
--- @field minlight number
--- @field noworld boolean
@bjurd
bjurd / gmod_lamp.lua
Last active March 14, 2026 11:03
Optimized gmod_lamp
AddCSLuaFile()
DEFINE_BASECLASS( "base_gmodentity" )
ENT.PrintName = "Lamp"
ENT.Editable = true
AccessorFunc( ENT, "Texture", "FlashlightTexture" )
-- Set up our data table
@bjurd
bjurd / rav.lua
Created September 26, 2025 19:23
Read only Vectors for Garry's Mod
local VECTOR = FindMetaTable("Vector")
-- This doesn't cover things like Add, Sub, Mul, Div etc
-- Just poc
local ReadOnly = {}
VECTOR.o__newindex = VECTOR.o__newindex or VECTOR.__newindex
VECTOR.o__gc = VECTOR.o__gc or VECTOR.__gc -- Doesn't exist by default
@bjurd
bjurd / more__tostring.lua
Last active July 6, 2025 14:36
Show more information in __tostring
local ENTITY = FindMetaTable("Entity")
local CSENTITY = FindMetaTable("CSEnt")
local PLAYER = FindMetaTable("Player")
local WEAPON = FindMetaTable("Weapon")
function ENTITY:__tostring()
if not IsValid(self) then
return "Entity [Invalid]"
end
@bjurd
bjurd / text.h
Created April 25, 2025 22:52
"Universal" text class
#pragma once
#include <string>
#include <xstring>
#include <codecvt>
#include <locale>
#define FOREIGN_OPERATOR(TA, TB) \
TA& operator += (TB B) \
{ \
@bjurd
bjurd / errorvar.lua
Last active May 19, 2025 21:20
Show Variables in Lua Errors
ErrorVar = ErrorVar or {}
require("debug") -- https://github.com/bjurd/gm_debug
local _R = debug.getregistry()
ErrorVar.OriginalErrorHandler = ErrorVar.OriginalErrorHandler or _R[1]
function ErrorVar.ErrorHandler(...)
local Level = 1