diff --git a/resource/sv_logger.lua b/resource/sv_logger.lua index 81646cec6..9728c4ce8 100644 --- a/resource/sv_logger.lua +++ b/resource/sv_logger.lua @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -129,51 +147,39 @@ 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) @@ -181,23 +187,18 @@ AddEventHandler('txsv:logger:menuEvent', function(source, action, allowed, data) 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 @@ -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