Files
jailbreakplusplus/gamemode/sh_init.lua

198 lines
7.4 KiB
Lua
Raw Normal View History

2026-01-04 18:21:33 -06:00
-- ####################################################################################
-- ## ##
-- ## ##
-- ## CASUAL BANANAS CONFIDENTIAL ##
-- ## ##
-- ## __________________________ ##
-- ## ##
-- ## ##
-- ## Copyright 2014 (c) Casual Bananas ##
-- ## All Rights Reserved. ##
-- ## ##
-- ## NOTICE: All information contained herein is, and remains ##
-- ## the property of Casual Bananas. The intellectual and technical ##
-- ## concepts contained herein are proprietary to Casual Bananas and may be ##
-- ## covered by U.S. and Foreign Patents, patents in process, and are ##
-- ## protected by trade secret or copyright law. ##
-- ## Dissemination of this information or reproduction of this material ##
-- ## is strictly forbidden unless prior written permission is obtained ##
-- ## from Casual Bananas ##
-- ## ##
-- ## _________________________ ##
-- ## ##
-- ## ##
-- ## Casual Bananas is registered with the "Kamer van Koophandel" (Dutch ##
-- ## chamber of commerce) in The Netherlands. ##
-- ## ##
-- ## Company (KVK) number : 59449837 ##
-- ## Email : info@casualbananas.com ##
-- ## ##
-- ## ##
-- ####################################################################################
local config = {};
local function makeConfig(name,default)
if SERVER then
CreateConVar(name,default,{ FCVAR_ARCHIVE, FCVAR_SERVER_CAN_EXECUTE, FCVAR_DONTRECORD });
end
return {name=name,default=default};
end
config.debug = makeConfig("jb_config_debug","0")
config.font = makeConfig("jb_config_font","Roboto")
config.website = makeConfig("jb_config_website","example.com");
config.maxWardenItems = makeConfig("jb_config_max_warden_items","20");
config.maxWardenRounds = makeConfig("jb_config_max_warden_rounds","3");
config.joinTime = makeConfig("jb_config_jointime","20");
config.setupTime = makeConfig("jb_config_setuptime","60");
config.guardsAllowed = makeConfig("jb_config_guards_allowed","30");
config.rebelSensitivity = makeConfig("jb_config_rebel_sensitivity","2");
config.guardPlaytime = makeConfig("jb_config_guards_playtime","120");
config.prisonerNameChange = makeConfig("jb_config_prisoners_namechange","0");
config.wardenControl = makeConfig("jb_config_warden_control_enabled","1");
config.prisonerSpecialChance = makeConfig("jb_config_prisoner_special_chance","10");
config.knivesAreConcealed = makeConfig("jb_config_knives_are_concealed","1");
config.roundsPerMap = makeConfig("jb_config_rounds_per_map","9999");
config.notifyLG = makeConfig("jb_config_notify_lastguard",1);
-- meta stuff
JB = {}
JB._IndexCallback = {}; -- {get = function() end, set = function() end};
setmetatable(JB,{
__index = function(tbl,key)
if key == "Gamemode" then
return GM or GAMEMODE or {};
end
if JB._IndexCallback[key] and JB._IndexCallback[key].get then
return JB._IndexCallback[key].get();
end
return nil;
end,
__newindex = function(t,key,value)
if JB._IndexCallback[key] and JB._IndexCallback[key].set then
JB._IndexCallback[key].set(value);
return nil;
end
rawset(t,key,value);
return nil;
end
})
JB.Config = {};
setmetatable(JB.Config,{
__index = function(tbl,key)
if config[key] then
if SERVER then
local val = GetConVarString(config[key].name);
return val and val ~= "" and val or config[key] and config[key].default or "0";
elseif CLIENT then
return config[key].v or config[key].default;
end
end
return nil;
end
})
-- debug
function JB:DebugPrint(...)
if self.Config.debug and self.Config.debug == "1" then
MsgC(Color(220,2420,220),"[JB DEBUG] [")
MsgC(SERVER and Color(90,150,255) or Color(255,255,90),SERVER and "SERVER" or "CLIENT");
MsgC(Color(220,220,220),"] ["..os.date().."]\t\t");
MsgC(Color(255,255,255),...);
Msg("\n");
end
end
-- some networking
if CLIENT then
net.Receive("JB.FetchConfig",function(len)
for k,v in pairs(net.ReadTable() or {})do
if not config[k] then return end
config[k].v = v;
end
JB:DebugPrint("Config received!");
end);
hook.Add("InitPostEntity","JB.FetchConfig.Load",function()
net.Start("JB.FetchConfig");
net.SendToServer();
hook.Remove("Initialize","JB.FetchConfig.Load");
JB:DebugPrint("Requesting config...");
end);
elseif SERVER then
util.AddNetworkString("JB.FetchConfig");
net.Receive("JB.FetchConfig",function(len,ply)
JB:DebugPrint("Received config request by: "..ply:Nick());
net.Start("JB.FetchConfig");
local tab = {};
for k,v in pairs(config)do
tab[k]=JB.Config[k];
end
net.WriteTable(tab);
net.Send(ply);
end);
end
-- dumb stuff I'm forced into adding
JB.Gamemode.TeamBased = true;
JB.Gamemode.Name = "Jail Break";
-- utility functions
2026-01-04 18:26:23 -06:00
local function getGamemodeFolder()
local gm = GM or GAMEMODE
if gm and gm.FolderName and gm.FolderName ~= "" then
return gm.FolderName
end
if engine and engine.ActiveGamemode then
local active = engine.ActiveGamemode()
if active and active ~= "" then
return active
end
end
return "jailbreak"
end
2026-01-04 18:21:33 -06:00
local loadFolder = function(folder,shared)
2026-01-04 18:26:23 -06:00
local path = getGamemodeFolder().."/gamemode/"..folder.."/";
2026-01-04 18:21:33 -06:00
for _,name in pairs(file.Find(path.."*.lua","LUA")) do
local runtype = shared or "sh";
if not shared then
runtype = string.Left(name, 2);
end
if not runtype or ( runtype ~= "sv" and runtype ~= "sh" and runtype ~= "cl" ) then return false end
if SERVER then
if runtype == "sv" then
JB:DebugPrint("Loading file: "..name);
include(folder.."/"..name);
elseif runtype == "sh" then
JB:DebugPrint("Loading file: "..name);
include(folder.."/"..name);
AddCSLuaFile(folder.."/"..name);
elseif runtype == "cl" then
AddCSLuaFile(folder.."/"..name);
end
elseif CLIENT then
if (runtype == "sh" or runtype == "cl") then
JB:DebugPrint("Loading file: "..name);
include(folder.."/"..name);
end
end
end
return true
end
JB.Util = {};
2026-01-04 18:26:23 -06:00
assert(loadFolder("util") and loadFolder("core") and loadFolder("classes","sh") and loadFolder("lastrequests","sh") and loadFolder("vgui","cl"),"Failed to load Jail Break 7! Contact a developer!")