Files
wnsrc/lua/stormfox2/functions/sh_concommands.lua
lifestorm 6a58f406b1 Upload
2024-08-04 23:54:45 +03:00

189 lines
5.8 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
-- All concommands for stormfox 2
local function SendMsg( ply, message )
message = "[SF2]: " .. message
if not ply then print( message ) return end
ply:PrintMessage(HUD_PRINTTALK, message)
end
-- Menu commands
if CLIENT then
-- Server menu
concommand.Add('stormfox2_svmenu', StormFox2.Menu.OpenSV, nil, "Opens SF serverside menu")
-- Client menu
concommand.Add('stormfox2_menu', StormFox2.Menu.Open, nil, "Opens SF clientside menu")
-- Controller
concommand.Add('stormfox2_controller', StormFox2.Menu.OpenController, nil, "Opens SF controller menu")
else -- Console only
concommand.Add("stormfox2_settings_reset", function( ply, cmd, args, argStr )
if ply and IsValid(ply) and not ply:IsListenServerHost() then return end -- Nope, console only
StormFox2.Setting.Reset()
end)
end
-- Weather
concommand.Add("stormfox2_setweather", function(ply, _, arg, _)
if CLIENT then return end
-- Check if valid weather
if #arg < 1 then
SendMsg(ply, "Weather can't be nil")
return
end
local s = string.upper(string.sub(arg[1],0,1)) .. string.lower(string.sub(arg[1], 2))
if not StormFox2.Weather.Get(s) then
SendMsg(ply, "Invalid weather [" .. s .. "]")
return
end
StormFox2.Permission.EditAccess(ply,"StormFox WeatherEdit", function()
StormFox2.Weather.Set( s, tonumber( arg[2] or "1" ) or 1)
end)
end)
concommand.Add("stormfox2_setthunder", function(ply, _, _, argS)
if CLIENT then return end
StormFox2.Permission.EditAccess(ply,"StormFox WeatherEdit", function()
local n = tonumber(argS) or (StormFox2.Thunder.IsThundering() and 6 or 0)
StormFox2.Thunder.SetEnabled( n > 0, n )
end)
end)
-- Time and Date
concommand.Add("stormfox2_settime", function(ply, _, _, argS)
if CLIENT then return end
-- Check if valid
if not argS or string.len(argS) < 1 then
SendMsg(ply, "You need to type an input! Use formats like 'stormfox2_settime 19:00' or 'stormfox2_settime 7:00 PM'")
return
end
local tN = StormFox2.Time.StringToTime(argS)
if not tN then
SendMsg(ply, "Invalid input! Use formats like '19:00' or '7:00 PM'")
return
end
StormFox2.Permission.EditAccess(ply,"StormFox WeatherEdit", function()
StormFox2.Time.Set( argS )
end)
end)
concommand.Add("stormfox2_setyearday", function(ply, _, _, argStr)
if CLIENT then return end
StormFox2.Permission.EditAccess(ply,"StormFox WeatherEdit", function()
StormFox2.Date.SetYearDay( tonumber(argStr) or 0 )
end)
end)
concommand.Add("stormfox2_setwind", function(ply, _, _, argStr)
if CLIENT then return end
StormFox2.Permission.EditAccess(ply,"StormFox WeatherEdit", function()
StormFox2.Wind.SetForce( tonumber(argStr) or 0 )
end)
end)
concommand.Add("stormfox2_setwindangle", function(ply, _, _, argStr)
if CLIENT then return end
StormFox2.Permission.EditAccess(ply,"StormFox WeatherEdit", function()
StormFox2.Wind.SetYaw( tonumber(argStr) or 0 )
end)
end)
concommand.Add("stormfox2_settemperature", function(ply, _, _, argStr)
if CLIENT then return end
local temp = tonumber( string.match(argStr, "-?[%d]+") or "0" ) or 0
if string.match(argStr, "[fF]") then
temp = StormFox2.Temperature.Convert("fahrenheit","celsius",temp) or temp
end
StormFox2.Permission.EditAccess(ply,"StormFox WeatherEdit", function()
StormFox2.Temperature.Set( temp )
end)
end)
local function SetSetting( arg, arg2, ply )
if not arg or arg == "" then
SendMsg( ply, "You need to indecate a setting: stormfox2_setting [Setting] [Value]")
return
end
local obj = StormFox2.Setting.GetObject(arg)
if not obj then
SendMsg( ply, "Invalid setting: \"" .. tostring( arg ) .. "\"!")
return
end
if not arg2 then
SendMsg( ply, "You need a value for the setting!")
return
end
obj:SetValue( arg2 )
SendMsg( ply, tostring( arg ) .. " = " .. tostring( arg2 ))
end
local function AutoComplete(cmd, args)
args = string.TrimLeft(args)
local a = string.Explode(" ", args or "")
if #a < 2 then
local options = {}
for _, sName in pairs( StormFox2.Setting.GetAllServer() ) do
if string.find(string.lower(sName),string.lower(a[1]), nil, true) then
table.insert(options, "stormfox2_setting " .. sName)
end
end
if #options < 1 then
return {"stormfox2_setting [No Setting Found!]"}
elseif #options < 2 and "stormfox2_setting " .. args == options[1] then
local obj = StormFox2.Setting.GetObject(a[1])
if not obj then
return {"stormfox2_setting [Invalid Setting!]"}
end
return {"stormfox2_setting " .. a[1] .. " [" .. obj.type .. "]"}
end
return options
elseif not a[1] or string.TrimLeft(a[1]) == "" then
return {"stormfox2_setting [Setting] [Value]"}
else
local obj = StormFox2.Setting.GetObject(a[1])
if not obj then
return {"stormfox2_setting [Invalid Setting!]"}
else
return {"stormfox2_setting " .. a[1] .. " [" .. obj.type .. "]"}
end
end
end
concommand.Add("stormfox2_setting", function(ply, _, _, argStr)
if CLIENT then return end
StormFox2.Permission.EditAccess(ply,"StormFox Settings", function()
local a = string.Explode(" ", argStr, false)
SetSetting(a[1],a[2])
end)
end, AutoComplete)
-- Forces the settings to save.
concommand.Add("stormfox2_settings_save", function(ply, _, _, _)
if CLIENT then return end
StormFox2.Permission.EditAccess(ply,"StormFox Settings", function()
SendMsg( ply, "Force saved settings to data/" .. StormFox2.Setting.GetSaveFile())
StormFox2.Setting.ForceSave()
end)
end)
-- Debug commands
if true then return end
concommand.Add("stormfox2_debug_spawnice", function(ply)
if ply and not ply:IsListenServerHost() then return end
SpawnIce()
end, nil, nil)
concommand.Add("stormfox2_debug_removeice", function(ply)
if ply and not ply:IsListenServerHost() then return end
RemoveIce()
end, nil, nil)