Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 34 additions & 33 deletions resource/sv_logger.lua
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ local loggerBuffer = {}
---@param type string the action type
---@param data table|nil the event data
local function logger(src, type, data)
loggerBuffer[#loggerBuffer+1] = {
loggerBuffer[#loggerBuffer + 1] = {
src = src,
type = type,
data = data or false
Expand All @@ -36,7 +36,7 @@ CreateThread(function()
local ts = ostime() * 1000
for i = 1, #loggerBuffer do
if i <= 999 then
loggerBuffer[i].ts = ts + i-1
loggerBuffer[i].ts = ts + i - 1
else
loggerBuffer[i].ts = ts + 999
end
Expand All @@ -62,9 +62,9 @@ CreateThread(function()
if GetResourceState(resName) == 'started' then
local resVersion = GetResourceMetadata(resName, 'version')
if type(resVersion) == 'string' and #resVersion > 0 then
resList[#resList+1] = resName..'/'..resVersion
resList[#resList + 1] = resName .. '/' .. resVersion
else
resList[#resList+1] = resName
resList[#resList + 1] = resName
end
end
end
Expand All @@ -84,11 +84,29 @@ local function isInvalid(property, invalidType)
return (property == nil or property == invalidType)
end

local explosionTypes = {'GRENADE', 'GRENADELAUNCHER', 'STICKYBOMB', 'MOLOTOV', 'ROCKET', 'TANKSHELL', 'HI_OCTANE', 'CAR', 'PLANE', 'PETROL_PUMP', 'BIKE', 'DIR_STEAM', 'DIR_FLAME', 'DIR_WATER_HYDRANT', 'DIR_GAS_CANISTER', 'BOAT', 'SHIP_DESTROY', 'TRUCK', 'BULLET', 'SMOKEGRENADELAUNCHER', 'SMOKEGRENADE', 'BZGAS', 'FLARE', 'GAS_CANISTER', 'EXTINGUISHER', 'PROGRAMMABLEAR', 'TRAIN', 'BARREL', 'PROPANE', 'BLIMP', 'DIR_FLAME_EXPLODE', 'TANKER', 'PLANE_ROCKET', 'VEHICLE_BULLET', 'GAS_TANK', 'BIRD_CRAP', 'RAILGUN', 'BLIMP2', 'FIREWORK', 'SNOWBALL', 'PROXMINE', 'VALKYRIE_CANNON', 'AIR_DEFENCE', 'PIPEBOMB', 'VEHICLEMINE', 'EXPLOSIVEAMMO', 'APCSHELL', 'BOMB_CLUSTER', 'BOMB_GAS', 'BOMB_INCENDIARY', 'BOMB_STANDARD', 'TORPEDO', 'TORPEDO_UNDERWATER', 'BOMBUSHKA_CANNON', 'BOMB_CLUSTER_SECONDARY', 'HUNTER_BARRAGE', 'HUNTER_CANNON', 'ROGUE_CANNON', 'MINE_UNDERWATER', 'ORBITAL_CANNON', 'BOMB_STANDARD_WIDE', 'EXPLOSIVEAMMO_SHOTGUN', 'OPPRESSOR2_CANNON', 'MORTAR_KINETIC', 'VEHICLEMINE_KINETIC', 'VEHICLEMINE_EMP', 'VEHICLEMINE_SPIKE', 'VEHICLEMINE_SLICK', 'VEHICLEMINE_TAR', 'SCRIPT_DRONE', 'RAYGUN', 'BURIEDMINE', 'SCRIPT_MISSIL'}

local explosionTypes = { 'GRENADE', 'GRENADELAUNCHER', 'STICKYBOMB', 'MOLOTOV', 'ROCKET', 'TANKSHELL', 'HI_OCTANE', 'CAR',
'PLANE', 'PETROL_PUMP', 'BIKE', 'DIR_STEAM', 'DIR_FLAME', 'DIR_WATER_HYDRANT', 'DIR_GAS_CANISTER', 'BOAT',
'SHIP_DESTROY', 'TRUCK', 'BULLET', 'SMOKEGRENADELAUNCHER', 'SMOKEGRENADE', 'BZGAS', 'FLARE', 'GAS_CANISTER',
'EXTINGUISHER', 'PROGRAMMABLEAR', 'TRAIN', 'BARREL', 'PROPANE', 'BLIMP', 'DIR_FLAME_EXPLODE', 'TANKER',
'PLANE_ROCKET', 'VEHICLE_BULLET', 'GAS_TANK', 'BIRD_CRAP', 'RAILGUN', 'BLIMP2', 'FIREWORK', 'SNOWBALL', 'PROXMINE',
'VALKYRIE_CANNON', 'AIR_DEFENCE', 'PIPEBOMB', 'VEHICLEMINE', 'EXPLOSIVEAMMO', 'APCSHELL', 'BOMB_CLUSTER', 'BOMB_GAS',
'BOMB_INCENDIARY', 'BOMB_STANDARD', 'TORPEDO', 'TORPEDO_UNDERWATER', 'BOMBUSHKA_CANNON', 'BOMB_CLUSTER_SECONDARY',
'HUNTER_BARRAGE', 'HUNTER_CANNON', 'ROGUE_CANNON', 'MINE_UNDERWATER', 'ORBITAL_CANNON', 'BOMB_STANDARD_WIDE',
'EXPLOSIVEAMMO_SHOTGUN', 'OPPRESSOR2_CANNON', 'MORTAR_KINETIC', 'VEHICLEMINE_KINETIC', 'VEHICLEMINE_EMP',
'VEHICLEMINE_SPIKE', 'VEHICLEMINE_SLICK', 'VEHICLEMINE_TAR', 'SCRIPT_DRONE', 'RAYGUN', 'BURIEDMINE', 'SCRIPT_MISSIL' }


if IS_REDM then
explosionTypes = { "GRENADE", "STICKYBOMB", "MOLOTOV", "MOLOTOV_VOLATILE", "HI_OCTANE", "CAR", "PLANE", "PETROL_PUMP",
"DIR_STEAM", "DIR_FLAME", "DIR_WATER_HYDRANT", "BOAT", "BULLET", "SMOKEGRENADE", "BZGAS", "GAS_CANISTER",
"EXTINGUISHER", "TRAIN", "DIR_FLAME_EXPLODE", "VEHICLE_BULLET", "BIRD_CRAP", "FIREWORK", "TORPEDO",
"TORPEDO_UNDERWATER", "LANTERN", "DYNAMITE", "DYNAMITE_STACK", "DYNAMITE_VOLATILE", "RIVER_BLAST",
"PLACED_DYNAMITE", "FIRE_ARROW", "DYNAMITE_ARROW", "PHOSPHOROUS_BULLET", "LIGHTNING_STRIKE", "TRACKING_ARROW",
"POISON_BOTTLE" }
end
AddEventHandler('explosionEvent', function(source, ev)
if (isInvalid(ev.damageScale, 0) or isInvalid(ev.cameraShake, 0) or isInvalid(ev.isInvisible, true) or
isInvalid(ev.isAudible, false)) then
isInvalid(ev.isAudible, false)) then
return
end

Expand All @@ -104,11 +122,11 @@ end)

-- An internal server handler, this is NOT exposed to the client
local function getLogPlayerName(src)
if type(src) == 'number' then
if type(src) == 'number' then
local name = sub(GetPlayerName(src) or "unknown", 1, 75)
return '[#'..src..'] '..name
return '[#' .. src .. '] ' .. name
else
return '[??] '.. (src or "unknown")
return '[??] ' .. (src or "unknown")
end
end

Expand All @@ -129,75 +147,58 @@ AddEventHandler('txsv:logger:menuEvent', function(source, action, allowed, data)
else
message = "changed playermode to unknown"
end

elseif action == 'teleportWaypoint' then
message = "teleported to a waypoint"

elseif action == 'teleportCoords' then
if type(data) ~= 'table' then return end
local x = data.x
local y = data.y
local z = data.z
message = ("teleported to coordinates (x=%.3f, y=%0.3f, z=%0.3f)"):format(x or 0.0, y or 0.0, z or 0.0)

elseif action == 'spawnVehicle' then
if type(data) ~= 'string' then return end
message = "spawned a vehicle (model: " .. data .. ")"

elseif action == 'deleteVehicle' then
message = "deleted a vehicle"

elseif action == 'vehicleRepair' then
message = "repaired their vehicle"

elseif action == 'vehicleBoost' then
message = "boosted their vehicle"

elseif action == 'healSelf' then
message = "healed themself"

elseif action == 'healAll' then
message = "healed all players!"

elseif action == 'announcement' then
if type(data) ~= 'string' then return end
message = "made a server-wide announcement: " .. data

elseif action == 'clearArea' then
if type(data) ~= 'number' then return end
message = "cleared an area with ".. data .."m radius"
message = "cleared an area with " .. data .. "m radius"

--INTERACTION modal options
--INTERACTION modal options
elseif action == 'spectatePlayer' then
message = 'started spectating player ' .. getLogPlayerName(data)

elseif action == 'freezePlayer' then
message = 'toggled freeze on player ' .. getLogPlayerName(data)

elseif action == 'teleportPlayer' then
if type(data) ~= 'table' then return end
local playerName = getLogPlayerName(data.target)
local x = data.x or 0.0
local y = data.y or 0.0
local z = data.z or 0.0
message = ("teleported to player %s (x=%.3f, y=%.3f, z=%.3f)"):format(playerName, x, y, z)

elseif action == 'healPlayer' then
message = "healed player " .. getLogPlayerName(data)

elseif action == 'summonPlayer' then
message = "summoned player " .. getLogPlayerName(data)

--TROLL modal options
--TROLL modal options
elseif action == 'drunkEffect' then
message = "triggered drunk effect on " .. getLogPlayerName(data)

elseif action == 'setOnFire' then
message = "set ".. getLogPlayerName(data) .." on fire"

message = "set " .. getLogPlayerName(data) .. " on fire"
elseif action == 'wildAttack' then
message = "triggered wild attack on " .. getLogPlayerName(data)

elseif action == 'showPlayerIDs' then
if type(data) ~= 'boolean' then return end
if data then
Expand All @@ -206,9 +207,9 @@ AddEventHandler('txsv:logger:menuEvent', function(source, action, allowed, data)
message = "turned show player IDs off"
end

--In case of unknown event
--In case of unknown event
else
logger(source, 'DebugMessage', "unknown menu event "..action)
logger(source, 'DebugMessage', "unknown menu event " .. action)
return
end

Expand Down