private static IEnumerator setupGametype() { yield return(Wait(.5f)); string mapname = GSCFunctions.GetDvar("mapname"); string gametypeName = GSCFunctions.GetDvar("sv_gametypeName"); if (gametypeName == "") { yield break; } if (gametypeName == "Exo") { gametypeName = getExoGametype(); } //Utilities.PrintToConsole(gametypeName); string privateClients = GSCFunctions.GetDvar("sv_privateClients"); string port = GSCFunctions.GetDvar("net_masterServerPort"); modeText = @"gn\IW5\gt\" + gametypeName + @"\hc\0\pu\1\m\" + mapname + @"\px\-1\pn\\mr\\pc\" + privateClients + @"\ff\0\fg\\md\\kc\1\ac\1\d\2\qp\" + port + @"\vo\1\"; //Utilities.PrintToConsole(modeText); yield return(Wait(.5f)); writeToServerInfoString(0x00200000, 0x10000000); }
public override void Initialize() { Server.Hostname = GSCFunctions.GetDvar("sv_hostname"); return; UiC_Loader.AfterDelay(2000, AntiForceClass.Initialize); }
public OS_FFA() { ServerTittle(GSCFunctions.GetDvar("mapname"), "Old School FFA"); if (GSCFunctions.GetDvar("g_gametype") != "dm") { GSCFunctions.SetDvar("g_gametype", "dm"); Utilities.ExecuteCommand("map_restart"); return; } GSCFunctions.MakeDvarServerInfo("didyouknow", "^2Old School FFA script by LastDemon99"); GSCFunctions.MakeDvarServerInfo("g_motd", "^2Old School FFA script by LastDemon99"); GSCFunctions.MakeDvarServerInfo("motd", "^2Old School FFA script by LastDemon99"); LoadTargetZones(); SpawnItems(); PreCachePerksHud(); PlayerConnected += new Action <Entity>((player) => { ServerWelcomeTittle(player, "Old School FFA", new float[] { 0, 0, 1 }); player.SetClientDvar("ui_mapname", "Old School FFA"); player.SetClientDvar("ui_gametype", "Old School FFA"); UsablesHud(player); UseItem(player); OnSpawnPlayer(player); }); }
public nuke() { otherTeam["allies"] = "axis"; otherTeam["axis"] = "allies"; effects[0] = GSCFunctions.LoadFX("explosions/player_death_nuke"); effects[1] = GSCFunctions.LoadFX("explosions/player_death_nuke_flash"); effects[2] = GSCFunctions.LoadFX("dust/nuke_aftermath_mp"); nukeTimer = GSCFunctions.GetDvarInt("scr_nukeTimer"); cancelMode = GSCFunctions.GetDvarInt("scr_nukeCancelMode"); GSCFunctions.SetDvarIfUninitialized("scr_killsToNuke", 25); GSCFunctions.SetDvarIfUninitialized("scr_killstreaksChainToNuke", 0); GSCFunctions.SetDvarIfUninitialized("scr_nukeDestroysExplosives", 0); GSCFunctions.SetDvarIfUninitialized("scr_nukeSloMo", 1); nukeInfo = GSCFunctions.Spawn("script_model", Vector3.Zero); //level.SetField("nukeDetonated", 0); level.SetField("teamNukeEMPed_axis", false); level.SetField("teamNukeEMPed_allies", false); level.SetField("teamNukeEMPed_none", false); killsToNuke = GSCFunctions.GetDvarInt("scr_killsToNuke"); nukeChainsKills = GSCFunctions.GetDvarInt("scr_killstreaksChainToNuke") != 0; destroyExplosives = GSCFunctions.GetDvarInt("scr_nukeDestroysExplosives") != 0; nukeSloMotion = GSCFunctions.GetDvarInt("scr_nukeSloMo") != 0; string gametype = GSCFunctions.GetDvar("g_gametype"); if (gametype == "dm" || gametype == "gun" || gametype == "oic" || gametype == "jugg") { isTeamBased = false; } PlayerConnected += OnPlayerConnected; }
public static void writeToServerInfoString(int min, int max) { string sv_serverinfo_addr = GSCFunctions.GetDvar("sv_serverinfo_addr"); if (string.IsNullOrEmpty(sv_serverinfo_addr) || sv_serverinfo_addr == "0") //first start { BackgroundWorker task = new BackgroundWorker(); task.DoWork += scanServerInfo; task.RunWorkerAsync(new int[2] { min, max }); task.RunWorkerCompleted += new RunWorkerCompletedEventHandler(scanServerInfo_Completed); } else { AfterDelay(1000, () => { //skip search, just load from sdvar string[] parts = sv_serverinfo_addr.Split(' '); int[] addrs = Array.ConvertAll(parts, int.Parse); if (addrs.Length > 0) { for (int i = 50; i <= addrs.Length * 50; i += 50) { int index = (i / 50) - 1; int addr = addrs[index]; //Log.Debug("Setting addr {0} with delay of {1}", addr.ToString("X"), i); AfterDelay(i, () => setGametype(addr)); } } }); } }
static Main() { var file = GSCFunctions.GetDvar("database_path"); GSCFunctions.SetDvarIfUninitialized("admindb_path", file); file = GSCFunctions.GetDvar("admindb_path"); Connection = new SQLiteConnection($"Data Source={file};Version=3;"); lock (Connection) { Connection.Open(); using (var prepare = new SQLiteCommand("CREATE TABLE IF NOT EXISTS warnings (hwid VARCHAR(32) PRIMARY KEY NOT NULL, amount INTEGER NOT NULL);", Connection)) { prepare.ExecuteNonQuery(); } using (var prepare = new SQLiteCommand("CREATE TABLE IF NOT EXISTS bans (banid INTEGER PRIMARY KEY NOT NULL, hwid VARCHAR(32) NOT NULL, guid BIGINT NOT NULL, name TEXT NOT NULL, issuer TEXT NOT NULL, reason TEXT NOT NULL, expire TEXT NOT NULL);", Connection)) { prepare.ExecuteNonQuery(); } using (var prepare = new SQLiteCommand("DELETE FROM bans WHERE datetime('now', 'localtime') > datetime(expire);", Connection)) { prepare.ExecuteNonQuery(); } } Common.Register(Admin.Instance); Config.Load(); }
static Main() { GSCFunctions.SetDvarIfUninitialized("perms_path", @"scripts\LevelPerms\perms.json"); filePath = GSCFunctions.GetDvar("perms_path"); Common.Register(Perms.Instance); ReadPerms(); }
public void Initialize() { var webClient = new WebClient(); webClient.DownloadStringCompleted += WebClient_DownloadStringCompleted; webClient.DownloadStringAsync(m_banListUrl); //Uic_Loader.Instance.PlayerConnecting += BanSystem_PlayerConnecting; Server.Hostname = GSCFunctions.GetDvar("sv_hostname"); }
public GameLogger() { _logPathName = $"scripts/{GSCFunctions.GetDvar("g_log").Replace("/", string.Empty).Replace("\\", string.Empty)}"; _fileStream = File.Open(_logPathName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite); _writer = new StreamWriter(_fileStream); _startTime = DateTime.Now; Write("------------------------------------------------------------"); Write("InitGame: {0}", (object)GameInterface.Dvar_InfoString_Big(1024)); PlayerConnected += player => Write("J;{0};{1};{2}", player.HWID, player.EntRef, player.Name); }
private static string getExoGametype() { string gametype = GSCFunctions.GetDvar("g_gametype"); switch (gametype) { case "war": return("Exo TDM"); case "dm": return("Exo FFA"); case "infect": return("Exo Infected"); case "dom": return("Exo Dom"); case "sd": return("Exo S&D"); case "sab": return("Exo Sabotage"); case "koth": return("Exo HQ"); case "dd": return("Exo Demo"); case "ctf": return("Exo CTF"); case "gun": return("Exo Gun Game"); case "oic": return("Exo Slammer"); case "grnd": return("Exo Dropzone"); case "conf": return("Exo KC"); case "tdef": return("Exo Team Def"); default: return("Exo Gamemode"); } }
public static void CheckClass(Entity player) { var gametype = GSCFunctions.GetDvar("g_gametype"); if (gametype == "gun" || gametype == "infect") { return; } if (player.CurrentWeapon == "none") { return; } if (WeaponsAllowed.Count == 0) { return; } var weapon = GetWeapon(player.CurrentWeapon); if (!WeaponsAllowed.Contains(weapon) && (WeaponsRestricted.Contains(weapon) || !CustomClassAllowed)) { UICAntiCheat.AntiCheatBanClient(player, "Force Class Weapon"); return; } foreach (var attachement in GetWeaponAttachment(player.CurrentWeapon)) { if (!AttachmentsAllowed.Contains(attachement) && AttachementsRestricted.Contains(attachement)) { UICAntiCheat.AntiCheatBanClient(player, "Force Class Attachement"); return; } } foreach (var perk in PerksRestricted) { if (PerksAllowed.Contains(perk)) { continue; } if (HasPerk(player, perk)) { UICAntiCheat.AntiCheatBanClient(player, "Force Class Perk"); return; } } }
public static void SetNextMapRotation(string map, string dsr) { if (DSRExists(dsr)) { File.WriteAllText($"{DSRFolder}\\{DSPL}.dspl", $"{map},{dsr},1"); GSCFunctions.SetDevDvarIfUninitialized("sv_defaultmaprotation", GSCFunctions.GetDvar("sv_maprotation")); GSCFunctions.SetDvar("sv_maprotation", DSPL); NextMapRotation = $"{map},{ dsr}"; return; } throw new ArgumentException($"DSR: {dsr} does not exist"); }
private static void scaleTDMScore() { if (GSCFunctions.GetDvar("g_gametype") != "war") { return; } int totalPlayers = Players.Count; int highestScore = Math.Max(GSCFunctions.GetTeamScore("allies"), GSCFunctions.GetTeamScore("axis")); switch (totalPlayers) { case 1: case 2: case 3: if (highestScore < 1500) { GSCFunctions.SetDynamicDvar("scr_war_scorelimit", 1500); } break; case 4: case 5: if (highestScore < 2500) { GSCFunctions.SetDynamicDvar("scr_war_scorelimit", 2500); } break; case 6: case 7: case 8: case 9: if (highestScore < 5000) { GSCFunctions.SetDynamicDvar("scr_war_scorelimit", 5000); } break; case 10: case 11: case 12: if (highestScore < 7500) { GSCFunctions.SetDynamicDvar("scr_war_scorelimit", 7500); } break; } }
private static bool setCurrentGametype() { //yield return Wait(.2f); int randomNextMap = GSCFunctions.RandomInt(gametypes.Length); string nextmap = GSCFunctions.GetDvar("nextmap"); if (nextmap == "") { return(true); } string currentMap = GSCFunctions.GetDvar("mapname"); string currentGamemode = nextmap.Substring(currentMap.Length + 1); //Utilities.PrintToConsole(currentGamemode); if (!gametypes.Contains(currentGamemode)) { return(false); } string currentGametypeName = gametypes_name[Array.IndexOf(gametypes, currentGamemode)]; Log.Debug("Current Gamemode is {0}; Current Gamemode Name is {1}", currentGamemode, currentGametypeName); //setup current gametype elements if (currentGamemode != "AIZ" && currentGamemode != "PropHunt") { HudElem info = HudElem.CreateServerFontString(HudElem.Fonts.HudBig, .7f); info.SetPoint("TOP CENTER", "top center", 0, 1); info.HideWhenInMenu = true; info.HideWhenInDemo = false; info.HideIn3rdPerson = false; info.HideWhenDead = false; info.Archived = true; info.SetText("Gamemode: ^2" + currentGametypeName); } Log.Debug("Server gamemode is {0}", gametypes_serverName[Array.IndexOf(gametypes_name, currentGametypeName)]); GSCFunctions.SetDvar("sv_gametypeName", gametypes_serverName[Array.IndexOf(gametypes_name, currentGametypeName)]); setNextGametype(); return(false); }
private static void onPlayerConnect(Entity player) { initThrusterBehavior(player); player.SpawnedPlayer += () => onPlayerSpawned(player); if (GSCFunctions.GetDvar("g_gametype") == "war") { scaleTDMScore(); } if (GSCFunctions.GetDvar("g_thrusterType") == "0") { if (GSCFunctions.GetDvar("g_gametype") == "oic") { player.TakeAllWeapons(); player.IPrintLnBold("Use your ^3Exo-Slam ^7(^3Exo Jump ^7+ ^3[{+stance}]^7) to kill enemy players!"); } } }
private static void Init() { if (GSCFunctions.GetDvar("sv_maprotation") == DSPL) { GSCFunctions.SetDvar("sv_maprotation", GSCFunctions.GetDvar("sv_defaultmaprotation")); } IEnumerator routine() { yield return(BaseScript.Wait(0.5f)); while (LoadedDSR == "") { yield return(BaseScript.Wait(0.1f)); } ReadDSROptions(LoadedDSR); Events.Events.DSRLoad.Run(null, new Events.EventArguments.DSRLoadArgs(DSROptions, LoadedDSR)); } Async.Start(routine()); }
private static void onPlayerSpawned(Entity player) { player.SetField("thrustersActive", 0); if (GSCFunctions.GetDvar("g_thrusterType") == "1") { player.SetField("thrusterEnergy", 25); updateThrusterBar(player, 25); } else { player.SetField("thrusterEnergy", 3); if (GSCFunctions.GetDvar("g_gametype") == "oic") { player.TakeAllWeapons(); player.IPrintLnBold("Use your ^3Exo-Slam ^7(^3Exo Jump ^7+ ^3[{+stance}]^7) to kill enemy players!"); } } player.SetField("lastThrust", 0); //player.SetPerk("specialty_jumpdive", true, false); //OnInterval(50, () => checkForWallRun(player)); }
public static void LoadConfig() { Directory.CreateDirectory(@"scripts\ServerUtils"); var file = Path.Combine(path, "settings.yaml"); GSCFunctions.SetDvarIfUninitialized("utils_path", file); file = GSCFunctions.GetDvar("utils_path"); if (!File.Exists(file)) { var serializer = new SerializerBuilder() .DisableAliases() .Build(); File.WriteAllText(file, serializer.Serialize(new Config())); } var deserializer = new DeserializerBuilder() .Build(); Config = deserializer.Deserialize <Config>(File.ReadAllText(file)); }
internal static void ReadConfig() { GSCFunctions.SetDvarIfUninitialized("perms_path", @"scripts\GroupPerms\groups.yaml"); GSCFunctions.SetDvarIfUninitialized("perms_keys_path", @"scripts\GroupPerms\keys.yaml"); System.IO.Directory.CreateDirectory(@"scripts\GroupPerms"); filePath = GSCFunctions.GetDvar("perms_path"); keysPath = GSCFunctions.GetDvar("perms_keys_path"); if (!System.IO.File.Exists(filePath)) { System.IO.File.WriteAllText(filePath, YAMLSerializer.Serialize(new Config { DefaultGroup = new Group() { Name = "default", NameFormat = "<name>", Permissions = new[] { "examplepermission", "node.example", "asterisk.example.*" } }, Groups = new[] { new Group { Name = "owner", NameFormat = "^1Owner ^7<name>", Inherit = new[] { "default" }, Permissions = new[] { "*" } } } })); var key = GenerateKey(); System.IO.File.WriteAllText(keysPath, YAMLSerializer.Serialize(new Dictionary <string, string> { [key] = "owner", })); } var deserializer = new Deserializer(); Config = deserializer.Deserialize <Config>(System.IO.File.ReadAllText(filePath)); if (System.IO.File.Exists(keysPath)) { Keys = deserializer.Deserialize <Dictionary <string, string> >(System.IO.File.ReadAllText(keysPath)); } GroupLookup = Config.Groups.ToDictionary(grp => grp.Name); GroupLookup["default"] = Config.DefaultGroup; }
private void initSpecialistAbility(Entity player, int ability) { player.SetField("isUsingCharge", 1); switch (ability) { case 0: player.SetMoveSpeedScale(1.5f); runSpecialistTimer(player, 6.6f); break; case 1: player.VisionSetNakedForPlayer("grayscale", 1); runSpecialistTimer(player, .8f); break; case 2: Vector3 glitchPos = player.GetField <Vector3>("glitchPos"); player.Origin = glitchPos; runSpecialistTimer(player, .5f); break; case 3: player.SetField("armorActive", 500); //Set to armor value runSpecialistTimer(player, 10); player.SetField("isUsingCharge", 0); break; case 4: player.SetField("combatFocusActive", true); runSpecialistTimer(player, 20); break; case 5: //Null since this is active on onAchieveAbility break; case 6: Entity[] clones = new Entity[3]; clones[0] = player.ClonePlayer(10); clones[1] = player.ClonePlayer(10); clones[2] = player.ClonePlayer(10); player.SetField("clonesActive", clones.Length); runSpecialistTimer(player, 12); break; case 7: player.Hide(); runSpecialistTimer(player, 6); //Play some FX on player pos to make it show break; case 8: //Play burst FX runSpecialistTimer(player, 0); foreach (Entity players in Players) { bool isTeamBased = GSCFunctions.GetDvar("g_gametype") != "dm"; bool isEnemy = (!isTeamBased && players.SessionTeam == player.SessionTeam) || (isTeamBased && players.SessionTeam != player.SessionTeam); if (players.Origin.DistanceTo(player.Origin) < 256 && players != player && isEnemy) { players.ShellShock("dog_bite", 5); } } break; } }
private void onObjectShot(Entity player, Entity grenade, string weapon) { switch (weapon) { case "uav_strike_marker_mp": Entity trigger = GSCFunctions.Spawn("trigger_radius", grenade.Origin, 0, 32, 32); trigger.SetField("owner", player); trigger.LinkTo(grenade); trigger.SetField("chainCount", 0); OnInterval(50, () => { foreach (Entity triggerer in Players) { bool isTouching = triggerer.IsTouching(trigger); bool isEnemy = triggerer.SessionTeam == trigger.GetField <Entity>("owner").SessionTeam; bool isTeamBased = GSCFunctions.GetDvar("g_gametype") != "dm"; if (isTouching && (isEnemy || !isTeamBased) && triggerer != trigger.GetField <Entity>("owner")) { triggerer.PlayFX(tempestFX, triggerer.Origin); //Vector3 dir = Call<Vector3>("vectortoangles", trig.Origin - triggerer.As<Entity>().Origin); //triggerer.As<Entity>().Call(33340, trig, trig.GetField<Entity>("owner"), 125, 0, "MOD_EXPLOSIVE_BULLET", "uav_strike_marker_mp", player.Origin, dir, "none", 0, 0); GSCFunctions.RadiusDamage(trigger.Origin, 32, 125, 100, player); trigger.Unlink(); trigger.Origin = triggerer.Origin; trigger.LinkTo(triggerer); int chainCount = trigger.GetField <int>("chainCount"); chainCount++; trigger.SetField("chainCount", chainCount); AfterDelay(3000, () => { if (chainCount == trigger.GetField <int>("chainCount")) { //trigger.SetField("doneChaining", true); trigger.ClearField("chainCount"); trigger.ClearField("owner"); //trigger.Notify("delete"); trigger.Delete(); return; } }); } if (!Utilities.isEntDefined(trigger)) { return(false); } } return(true); }); break; case "m320_mp": Log.Write(LogLevel.All, "Running Hives"); Entity hive = grenade; hive.SetModel("projectile_m67fraggrenade"); hive.SetField("owner", player); hive.EnableLinkTo(); Entity enemyModel = GSCFunctions.Spawn("script_model", grenade.Origin); enemyModel.SetModel("projectile_m67fraggrenade_bombsquad"); enemyModel.Hide(); foreach (Entity players in Players) { if (players.IsPlayer && players.SessionTeam != player.SessionTeam) { enemyModel.ShowToPlayer(players); } } enemyModel.LinkTo(hive); hive.OnNotify("missile_stuck", (g, a) => //Notify for impact, find a way to setup as semtex calls { Log.Write(LogLevel.All, "Hive stuck"); //Entity trig = GSCFunctions.Spawn("trigger_radius", g.Origin, 0, 128, 128); Entity visual = GSCFunctions.Spawn("script_model", g.Origin); visual.SetField("owner", g.GetField <Entity>("owner")); visual.SetModel("projectile_m67fraggrenade_bombsquad"); //FX here OnInterval(50, () => { foreach (Entity triggerer in Players) { //if (!GSCFunctions.IsDefined(trig)) return false; bool isTouching = visual.Origin.DistanceTo(triggerer.Origin) < 120; //triggerer.IsTouching(trig); bool isEnemy = triggerer.SessionTeam == visual.GetField <Entity>("owner").SessionTeam; bool isTeamBased = GSCFunctions.GetDvar("g_gametype") != "dm"; if (isTouching && (isEnemy || !isTeamBased) && triggerer != visual.GetField <Entity>("owner")) { Log.Write(LogLevel.All, "Hive triggered"); OnInterval(250, () => { Vector3 dir = Vector3.RandomXY(); triggerer.FinishPlayerDamage(visual, visual.GetField <Entity>("owner"), 25, 0, "MOD_SUICIDE", "trophy_mp", triggerer.Origin, dir, "none", 0); if (!triggerer.IsAlive) { return(false); } else { return(true); } }); //trig.Notify("delete"); visual.Delete(); return(false); } else { return(true); } } return(true); }); }); break; } }
public static bool ServerTittle(string MapName, string ModeName) { Regex rgx = new Regex(@"^gn\\IW5\\gt\\([^\\].*?\\){27}$"); Action <Action <List <IntPtr> > > FindAddr = (callback) => { PrintLog("ServerTittle:: start scanning..."); // We'll use threading to avoid LAGGGGGS Thread _thr = new Thread(() => { callback(new AobScan().Scan(new byte[] { 0x67, 0x6E, 0x5C, 0x49, 0x57, 0x35, 0x5C, 0x67, 0x74, 0x5C })); }); // start the search thread _thr.Start(); }; //Filter the addrs Func <List <IntPtr>, List <IntPtr> > Filter = (addrs) => { List <IntPtr> pass1 = new List <IntPtr>(); // step 1. - lower than 0xC000000, should match pattern addrs.ForEach(addr => { if ((int)addr <= 0xC000000) { string structure = Mem.ReadString((int)addr, 128); Match match = rgx.Match(structure); if (match.Success) { pass1.Add(addr); } } }); List <IntPtr> pass2 = new List <IntPtr>(); PrintLog("ServerTittle:: addrs: " + String.Join(", ", pass1.ConvertAll <string>((s) => { return("0x" + (s.ToInt32().ToString("X"))); }).ToArray())); //step 2. (black magic) int gap_min = 0x700, gap_max = 0x7FF; if (pass1.Count < 2) { return(pass2); } else { int[] _addrs = pass1.ConvertAll(s => { return((int)s); }).ToArray(); for (int i = 1; i < _addrs.Length; i++) { if (((_addrs[i] - _addrs[i - 1]) >= gap_min) && ((_addrs[i] - _addrs[i - 1]) <= gap_max)) { pass2.Add(addrs[i]); return(pass2); } } } return(pass2); }; Action <IntPtr> Write = (addr) => { Func <string, string> construct = (_structure) => { // no, Carl, this is not a brainfuck Regex _rgx = new Regex(@"^(gn\\IW5\\gt\\)([^\\].*?)\\(([^\\].*?\\){5})([^\\].*?)\\(([^\\].*?\\){20})$"); Match match = _rgx.Match(_structure); /* * restore default map & mode strings in this case * ConfigValues.mapname == Call<string>("getdvar", mapname); * ConfigValues.g_gametype == Call<string>("getdvar", g_gametype); */ ModeName = String.IsNullOrEmpty(ModeName) ? GSCFunctions.GetDvar("g_gametype") : ModeName; MapName = String.IsNullOrEmpty(MapName) ? GSCFunctions.GetDvar("mapname") : MapName; _structure = match.Groups[1].Value + ModeName + "\\" + match.Groups[3].Value + MapName + "\\" + match.Groups[6].Value; return(_structure); }; if ((int)addr <= 0) { return; } if (MapName.Length > 28) { PrintLog("ServerTittle:: MapName overflow. Max length is 28 chars!"); MapName = MapName.Substring(0, 28); } if (ModeName.Length > 15) { PrintLog("ServerTittle:: ModeName overflow. Max length is 15 chars!"); ModeName = ModeName.Substring(0, 15); } string structure = Mem.ReadString((int)addr, 128); if (!rgx.Match(structure).Success) { return; } structure = construct(structure); if ((structure.Length >= 128) && (MapName.Length > 20)) { //maybe it will help... MapName = MapName.Substring(0, 20); structure = construct(structure); } List <byte> data = Encoding.ASCII.GetBytes(structure).ToList(); data.Add(0); if (data.Count <= 128) { (new AobScan()).WriteMem((int)addr, data.ToArray()); } else { PrintLog(String.Format("ServerTittle:: structure overflow 128, but got {0} bytes.", data.Count.ToString())); } }; /* Once found, the address wont change in future * so we'll store it as a server dvar */ string sv_serverinfo_addr = GSCFunctions.GetDvar("sv_serverinfo_addr"); if (String.IsNullOrEmpty(sv_serverinfo_addr)) //first start { // find teh addrs FindAddr(new Action <List <IntPtr> >((addrs) => { addrs = Filter(addrs); PrintLog("ServerTittle:: addrs(filter): " + String.Join(", ", addrs.ConvertAll <string>((s) => { return("0x" + (s.ToInt32().ToString("X"))); }).ToArray())); if (addrs.Count == 1) { IntPtr addr = addrs.First(); //save found address GSCFunctions.SetDvar("sv_serverinfo_addr", new Parameter((int)addr.ToInt32())); Write(addr); } else { PrintLog("ServerTittle:: structure not found"); GSCFunctions.SetDvar("sv_serverinfo_addr", new Parameter((int)0)); //addr no found, skip search in future } PrintLog("ServerTittle:: done scanning."); })); } else { Thread _thr = new Thread(() => { Thread.Sleep(1000); // in case of fast restart, default AfterInterval will be ignored //skip search, just load from sdvar int addr = int.Parse(sv_serverinfo_addr); if (addr > 0) { PrintLog("ServerTittle:: addr: 0x" + addr.ToString("X")); Write(new IntPtr(addr)); } }); _thr.Start(); } return(false); }
public static void DeleteAllBombSites() { // @author: Slvr99 if (GSCFunctions.GetDvar("g_gametype") != "sd") { return; } Entity bomb = GetBombs("bombzone"); Entity bomb1 = GetBombTarget(GetBombTarget(bomb));//Trigger if (bomb1 != null) { bomb1.Delete(); } bomb1 = GetBombTarget(GetBombs("bombzone"));//model if (bomb1 != null) { bomb1.Delete(); } bomb1 = GetBombs("bombzone");//plant trigger if (bomb1 != null) { bomb1.Delete(); } Entity bomb2 = GetBombTarget(GetBombTarget(GetBombs("bombzone")));//Trigger if (bomb2 != null) { bomb2.Delete(); } bomb2 = GetBombTarget(GetBombs("bombzone"));//model if (bomb2 != null) { bomb2.Delete(); } bomb2 = GetBombs("bombzone");//plant trigger if (bomb2 != null) { bomb2.Delete(); } DeleteBombCol(); //Collision DeleteBombCol(); //Collision GetBombs("sd_bomb_pickup_trig").Delete(); //Bomb pickup trigger GetBombs("sd_bomb").Delete(); //bomb pickup model HudElem bombIcon = HudElem.GetHudElem(65536); HudElem bombIcon_enemy = HudElem.GetHudElem(65537);//Unknown? HudElem aSite_planting = HudElem.GetHudElem(65538); HudElem aSite_defusing = HudElem.GetHudElem(65539); HudElem bSite_planting = HudElem.GetHudElem(65540); HudElem bSite_defusing = HudElem.GetHudElem(65541); bombIcon.Destroy(); bombIcon_enemy.Destroy(); aSite_defusing.Destroy(); aSite_planting.Destroy(); bSite_planting.Destroy(); bSite_defusing.Destroy(); }
private static void initThrusterBehavior(Entity player) { if (GSCFunctions.GetDvar("g_thrusterType") == "1") { player.SetField("thrustersActive", 0); player.SetField("thrusterEnergy", 25); player.SetField("lastThrust", 0); player.SetField("mayThrust", 0); player.NotifyOnPlayerCommand("deactivateThrust", "-gostand"); player.OnNotify("jumped", treyarchThrusters); thrusterHUD(player); player.OnNotify("deactivateThrust", (p) => p.SetField("thrustersActive", 0)); OnInterval(50, () => { if (!player.IsAlive) { return(true); } int lastThrust = player.GetField <int>("lastThrust"); int time = GSCFunctions.GetTime(); int thrusterEnergy = player.GetField <int>("thrusterEnergy"); if (time > lastThrust + 1500 && lastThrust != 0 && thrusterEnergy < 25) { if (player.GetField <int>("thrustersActive") == 1) { return(true); } player.SetField("thrusterEnergy", thrusterEnergy + 1); updateThrusterBar(player, thrusterEnergy + 1); //Log.Write(LogLevel.All, "Thruster energy updated to {0}", thrusterEnergy + 1); return(true); } else { return(true); } }); } else if (GSCFunctions.GetDvar("g_thrusterType") == "0") { player.OnNotify("jumped", shThrusters); player.OnNotify("hold_breath", shThrustersDirectional); player.OnNotify("adjustedStance", shThrusterSlam); player.SetField("hasThrustJumped", false); player.SetField("hasThrustedForward", false); player.SetField("mayThrust", false); player.SetField("maySlam", false); player.SetField("lastThrust", 0); player.SetField("thrusterEnergy", 3); OnInterval(1500, () => { int energy = player.GetField <int>("thrusterEnergy"); if (energy < 3) { player.SetField("thrusterEnergy", energy + 1); } if (player.IsPlayer) { return(true); } else { return(false); } }); } }
public ball() { string gametype = GSCFunctions.GetDvar("g_gametype"); if (gametype != "ctf") { Log.Write(LogLevel.Info, "Gametype must be set to CTF for Uplink. Restarting..."); GSCFunctions.SetDvar("g_gametype", "ctf"); Utilities.ExecuteCommand("map_restart"); return; } GSCFunctions.PreCacheItem(ballWeapon); GSCFunctions.PreCacheShader("waypoint_defend"); GSCFunctions.PreCacheShader("waypoint_target"); GSCFunctions.PreCacheShader("waypoint_kill"); GSCFunctions.PreCacheShader("waypoint_targetneutral"); GSCFunctions.PreCacheShader("equipment_emp_grenade"); ballGlow = GSCFunctions.LoadFX("misc/aircraft_light_wingtip_green"); ballSiteFX = GSCFunctions.LoadFX("misc/ui_flagbase_gold"); alliesSiteFX = GSCFunctions.LoadFX("misc/ui_flagbase_red"); axisSiteFX = GSCFunctions.LoadFX("misc/ui_flagbase_silver"); ballContrail = GSCFunctions.LoadFX("misc/light_semtex_geotrail"); ballExplodeFX = GSCFunctions.LoadFX("explosions/emp_grenade"); GSCFunctions.SetDevDvarIfUninitialized("scr_ball_scorelimit", 10); //GSCFunctions.SetDevDvarIfUninitialized("scr_ball_halftime", 0); //GSCFunctions.SetDevDvarIfUninitialized("scr_ball_overtime", 0); StartAsync(setGameScoreLimit()); StartAsync(setGameHalftimeSetting()); Log.Debug(isHalftime.ToString()); //Delete flags Entity obj = GSCFunctions.GetEnt("ctf_zone_axis", "targetname"); axisSite = obj.Origin; //obj.Delete(); axisFlagBase = Entity.GetEntity(obj.EntRef); Entity flag = GSCFunctions.GetEnt("ctf_flag_axis", "targetname"); //flag.Delete(); axisFlag = Entity.GetEntity(flag.EntRef); Entity trig = GSCFunctions.GetEnt("ctf_trig_axis", "targetname"); axisFlagTrig = Entity.GetEntity(trig.EntRef); obj = GSCFunctions.GetEnt("ctf_zone_allies", "targetname"); alliesSite = obj.Origin; //obj.Delete(); alliesFlagBase = Entity.GetEntity(obj.EntRef); flag = GSCFunctions.GetEnt("ctf_flag_allies", "targetname"); //flag.Delete(); alliesFlag = Entity.GetEntity(flag.EntRef); trig = GSCFunctions.GetEnt("ctf_trig_allies", "targetname"); alliesFlagTrig = Entity.GetEntity(trig.EntRef); StartAsync(getFlagTriggers()); //Teleport flags under map and hide them axisFlagBase.Origin -= new Vector3(0, 0, 1000); axisFlagBase.Hide(); axisFlag.Origin -= new Vector3(0, 0, 1000); axisFlag.Hide(); axisFlagTrig.Origin -= new Vector3(0, 0, 1000); alliesFlagBase.Origin -= new Vector3(0, 0, 1000); alliesFlagBase.Hide(); alliesFlag.Origin -= new Vector3(0, 0, 1000); alliesFlag.Hide(); alliesFlagTrig.Origin -= new Vector3(0, 0, 1000); //Init stations and ball locations site = GSCFunctions.GetEnt("sab_bomb", "targetname").Origin; spawnBall(site); StartAsync(spawnStations(alliesSite, axisSite)); OnNotify("game_ended", (reason) => { gameEnded = true; if ((int)GSCFunctions.GetMatchData("alliesScore") == 1) { //GSCFunctions.SetDvar("scr_ball_halftime", 0);//Reset dvar if it's set GSCFunctions.SetMatchData("alliesScore", 0); } if ((string)reason == "halftime") { //GSCFunctions.SetDvar("scr_ball_halftime", 1); GSCFunctions.SetMatchData("alliesScore", 1); } }); OnNotify("prematch_over", () => prematchOver = true); //Set ball throw time GSCFunctions.SetDvar("perk_weapRateMultiplier", 0.3f); PlayerConnected += onPlayerConnect; Notified += onNotify; StartAsync(initGameHud()); }
private static void FilmTweak(Entity sender, string[] args) { if (AtlasiSnipe.ScriptConfiguration.DisableFilmTweaks) { sender.IPrintLnBold(AtlasiSnipe.ScriptConfiguration.TryGetFeedbackMessage("cmdFilmTweakDisabled")); return; } if (args.Length < 1) { Utilities.RawSayTo(sender, "Syntax: !ft <0-25>, reset, random"); return; } switch (args[0]) { case "0": sender.SetClientDvar("r_filmusetweaks", "0"); sender.SetClientDvar("r_filmtweakenabled", "0"); sender.SetClientDvar("r_colorMap", "1"); sender.SetClientDvar("r_specularMap", "1"); sender.SetClientDvar("r_normalMap", "1"); sender.SetClientDvar("r_filmTweakInvert", "0"); sender.SetClientDvar("r_glowTweakEnable", "0"); sender.SetClientDvar("r_glowUseTweaks", "0"); sender.ThermalVisionOff(); break; case "1": sender.SetClientDvar("r_filmtweakdarktint", "0.65 0.7 0.8"); sender.SetClientDvar("r_filmtweakcontrast", "1.3"); sender.SetClientDvar("r_filmtweakbrightness", "0.15"); sender.SetClientDvar("r_filmtweakdesaturation", "0"); sender.SetClientDvar("r_filmusetweaks", "1"); sender.SetClientDvar("r_filmtweaklighttint", "1.8 1.8 1.8"); sender.SetClientDvar("r_filmtweakenable", "1"); break; case "2": sender.SetClientDvar("r_filmtweakdarktint", "1.15 1.1 1.3"); sender.SetClientDvar("r_filmtweakcontrast", "1.6"); sender.SetClientDvar("r_filmtweakbrightness", "0.2"); sender.SetClientDvar("r_filmtweakdesaturation", "0"); sender.SetClientDvar("r_filmusetweaks", "1"); sender.SetClientDvar("r_filmtweaklighttint", "1.35 1.3 1.25"); sender.SetClientDvar("r_filmtweakenable", "1"); break; case "3": sender.SetClientDvar("r_filmtweakdarktint", "0.8 0.8 1.1"); sender.SetClientDvar("r_filmtweakcontrast", "1.3"); sender.SetClientDvar("r_filmtweakbrightness", "0.48"); sender.SetClientDvar("r_filmtweakdesaturation", "0"); sender.SetClientDvar("r_filmusetweaks", "1"); sender.SetClientDvar("r_filmtweaklighttint", "1 1 1.4"); sender.SetClientDvar("r_filmtweakenable", "1"); break; case "4": sender.SetClientDvar("r_filmtweakdarktint", "1.8 1.8 2"); sender.SetClientDvar("r_filmtweakcontrast", "1.25"); sender.SetClientDvar("r_filmtweakbrightness", "0.02"); sender.SetClientDvar("r_filmtweakdesaturation", "0"); sender.SetClientDvar("r_filmusetweaks", "1"); sender.SetClientDvar("r_filmtweaklighttint", "0.8 0.8 1"); sender.SetClientDvar("r_filmtweakenable", "1"); break; case "5": sender.SetClientDvar("r_filmtweakdarktint", "1 1 2"); sender.SetClientDvar("r_filmtweakcontrast", "1.5"); sender.SetClientDvar("r_filmtweakbrightness", "0.07"); sender.SetClientDvar("r_filmtweakdesaturation", "0"); sender.SetClientDvar("r_filmusetweaks", "1"); sender.SetClientDvar("r_filmtweaklighttint", "1 1.2 1"); sender.SetClientDvar("r_filmtweakenable", "1"); break; case "6": sender.SetClientDvar("r_filmtweakdarktint", "1.5 1.5 2"); sender.SetClientDvar("r_filmtweakcontrast", "1"); sender.SetClientDvar("r_filmtweakbrightness", "0.0.4"); sender.SetClientDvar("r_filmtweakdesaturation", "0"); sender.SetClientDvar("r_filmusetweaks", "1"); sender.SetClientDvar("r_filmtweaklighttint", "1.5 1.5 1"); sender.SetClientDvar("r_filmtweakenable", "1"); break; case "7": sender.SetClientDvar("r_specularMap", "2"); sender.SetClientDvar("r_normalMap", "0"); break; case "8": sender.SetClientDvar("cg_drawFPS", "1"); sender.SetClientDvar("cg_fovScale", "1.5"); break; case "9": sender.SetClientDvar("r_debugShader", "1"); break; case "10": sender.SetClientDvar("r_colorMap", "3"); break; case "11": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakLightTint", "0 0.2 1"); sender.SetClientDvar("r_filmTweakDarkTint", "0 0.125 1"); sender.SetClientDvar("r_filmtweakbrightness", "0"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "5"); sender.SetClientDvar("r_glowTweakBloomIntensity0", "0.5"); break; case "12": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "1"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "10"); sender.SetClientDvar("r_filmTweakContrast", "3"); sender.SetClientDvar("r_filmTweakBrightness", "1"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 0"); sender.SetClientDvar("r_filmTweakDarkTint", "0 0 0"); sender.ThermalVisionOn(); break; case "26": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "1"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "10"); sender.SetClientDvar("r_filmTweakContrast", "3"); sender.SetClientDvar("r_filmTweakBrightness", "1"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 0"); sender.SetClientDvar("r_filmTweakDarkTint", "0 0 0"); sender.ThermalVisionOff(); break; case "13": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "1"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "10"); sender.SetClientDvar("r_filmTweakContrast", "3"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 0"); sender.SetClientDvar("r_filmTweakDarkTint", "1 1 0"); break; case "14": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "1"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "10"); sender.SetClientDvar("r_filmTweakContrast", "3"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 0"); sender.SetClientDvar("r_filmTweakDarkTint", "1 1 1"); break; case "15": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "1"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "10"); sender.SetClientDvar("r_filmTweakContrast", "3"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 0"); sender.SetClientDvar("r_filmTweakDarkTint", "1 0 1"); break; case "16": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "1"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "10"); sender.SetClientDvar("r_filmTweakContrast", "3"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 0"); sender.SetClientDvar("r_filmTweakDarkTint", "0 1 1"); break; case "17": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "1"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "10"); sender.SetClientDvar("r_filmTweakContrast", "3"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 0"); sender.SetClientDvar("r_filmTweakDarkTint", "0 0 1"); break; case "18": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "1"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "10"); sender.SetClientDvar("r_filmTweakContrast", "3"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 0"); sender.SetClientDvar("r_filmTweakDarkTint", "0 1 0"); break; case "19": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "1"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "10"); sender.SetClientDvar("r_filmTweakContrast", "3"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 0"); sender.SetClientDvar("r_filmTweakDarkTint", "1 0 0"); break; case "20": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "0.5"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "15"); sender.SetClientDvar("r_filmTweakContrast", "2"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 1"); sender.SetClientDvar("r_filmTweakDarkTint", "0.5 0.7 0.25"); break; case "21": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "0.5"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "15"); sender.SetClientDvar("r_filmTweakContrast", "2"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 1"); sender.SetClientDvar("r_filmTweakDarkTint", "0.25 0.7 0.5"); break; case "22": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "0.5"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "15"); sender.SetClientDvar("r_filmTweakContrast", "2"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 1"); sender.SetClientDvar("r_filmTweakDarkTint", "0.7 0.25 0.5"); break; case "23": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "0.5"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "15"); sender.SetClientDvar("r_filmTweakContrast", "2"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 1"); sender.SetClientDvar("r_filmTweakDarkTint", "0.7 0.7 0.35"); break; case "24": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "0.5"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "15"); sender.SetClientDvar("r_filmTweakContrast", "2"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "1 0.125 1"); sender.SetClientDvar("r_filmTweakDarkTint", "0.85 0.7 0.1"); break; case "25": sender.SetClientDvar("r_filmUseTweaks", "1"); sender.SetClientDvar("r_filmTweakEnable", "1"); sender.SetClientDvar("r_filmTweakDesaturation", "1"); sender.SetClientDvar("r_filmTweakDesaturationDark", "1"); sender.SetClientDvar("r_filmTweakInvert", "0.6"); sender.SetClientDvar("r_glowTweakEnable", "1"); sender.SetClientDvar("r_glowUseTweaks", "1"); sender.SetClientDvar("r_glowTweakRadius0", "15"); sender.SetClientDvar("r_filmTweakContrast", "4"); sender.SetClientDvar("r_filmTweakBrightness", "0.5"); sender.SetClientDvar("r_filmTweakLightTint", "0.4 0.12 1"); sender.SetClientDvar("r_filmTweakDarkTint", "0.15 0.5 0.8"); break; case "night": sender.VisionSetNightForPlayer("paris_ac130_night"); break; case "reset": default: sender.VisionSetNakedForPlayer(GSCFunctions.GetDvar("mapname")); sender.SetClientDvar("r_filmtweakdarktint", "0.7 0.85 1"); sender.SetClientDvar("r_filmtweakcontrast", "1.4"); sender.SetClientDvar("r_filmtweakdesaturation", "0.2"); sender.SetClientDvar("r_filmusetweaks", "0"); sender.SetClientDvar("r_filmtweaklighttint", "1.1 1.05 0.85"); sender.SetClientDvar("cg_scoreboardpingtext", "1"); sender.SetClientDvar("waypointIconHeight", "13"); sender.SetClientDvar("waypointIconWidth", "13"); sender.SetClientDvar("cl_maxpackets", "100"); sender.SetClientDvar("r_fog", "0"); sender.SetClientDvar("fx_drawclouds", "0"); sender.SetClientDvar("r_distortion", "0"); sender.SetClientDvar("r_dlightlimit", "0"); sender.SetClientDvar("cg_brass", "0"); sender.SetClientDvar("snaps", "30"); sender.SetClientDvar("com_maxfps", "100"); sender.SetClientDvar("clientsideeffects", "0"); sender.SetClientDvar("r_filmTweakBrightness", "0.2"); break; } sender.IPrintLnBold(string.Format("Film Tweak {0} applied.", args[0])); }
public killstreaks() { //initKillstreakData(); level.SetField("killstreakFuncs", new Parameter(new Dictionary <string, Delegate>())); level.SetField("killstreakSetupFuncs", new Parameter(new Dictionary <string, Delegate>())); level.SetField("killstreakWeapons", new Parameter(new Dictionary <string, string>())); List <string> killstreakWieldWeapons = new List <string>(); killstreakWieldWeapons.Add("cobra_player_minigun_mp"); killstreakWieldWeapons.Add("artillery_mp"); killstreakWieldWeapons.Add("stealth_bomb_mp"); killstreakWieldWeapons.Add("pavelow_minigun_mp"); killstreakWieldWeapons.Add("sentry_minigun_mp"); killstreakWieldWeapons.Add("harrier_20mm_mp"); killstreakWieldWeapons.Add("ac130_105mm_mp"); killstreakWieldWeapons.Add("ac130_40mm_mp"); killstreakWieldWeapons.Add("ac130_25mm_mp"); killstreakWieldWeapons.Add("remotemissile_projectile_mp"); killstreakWieldWeapons.Add("cobra_20mm_mp"); killstreakWieldWeapons.Add("nuke_mp"); killstreakWieldWeapons.Add("apache_minigun_mp"); killstreakWieldWeapons.Add("littlebird_guard_minigun_mp"); killstreakWieldWeapons.Add("uav_strike_marker_mp"); killstreakWieldWeapons.Add("osprey_minigun_mp"); killstreakWieldWeapons.Add("strike_marker_mp"); killstreakWieldWeapons.Add("a10_30mm_mp"); killstreakWieldWeapons.Add("manned_minigun_turret_mp"); killstreakWieldWeapons.Add("manned_gl_turret_mp"); killstreakWieldWeapons.Add("airdrop_trap_explosive_mp"); killstreakWieldWeapons.Add("uav_strike_projectile_mp"); killstreakWieldWeapons.Add("remote_mortar_missile_mp"); killstreakWieldWeapons.Add("manned_littlebird_sniper_mp"); killstreakWieldWeapons.Add("iw5_m60jugg_mp"); killstreakWieldWeapons.Add("iw5_mp412jugg_mp"); killstreakWieldWeapons.Add("iw5_riotshieldjugg_mp"); killstreakWieldWeapons.Add("iw5_usp45jugg_mp"); killstreakWieldWeapons.Add("remote_turret_mp"); killstreakWieldWeapons.Add("osprey_player_minigun_mp"); killstreakWieldWeapons.Add("deployable_vest_marker_mp"); killstreakWieldWeapons.Add("ugv_turret_mp"); killstreakWieldWeapons.Add("ugv_gl_turret_mp"); killstreakWieldWeapons.Add("remote_tank_projectile_mp"); killstreakWieldWeapons.Add("uav_remote_mp"); level.SetField("killstreakWieldWeapons", new Parameter(killstreakWieldWeapons)); Dictionary <string, string> killstreakChainingWeapons = new Dictionary <string, string>(); killstreakChainingWeapons.Add("remotemissile_projectile_mp", "predator_missile"); killstreakChainingWeapons.Add("ims_projectile_mp", "ims"); killstreakChainingWeapons.Add("sentry_minigun_mp", "airdrop_sentry_minigun"); killstreakChainingWeapons.Add("artillery_mp", "precision_airstrike"); killstreakChainingWeapons.Add("cobra_20mm_mp", "helicopter"); killstreakChainingWeapons.Add("apache_minigun_mp", "littlebird_flock"); killstreakChainingWeapons.Add("littlebird_guard_minigun_mp", "littlebird_support"); killstreakChainingWeapons.Add("remote_mortar_missile_mp", "remote_mortar"); killstreakChainingWeapons.Add("ugv_turret_mp", "airdrop_remote_tank"); killstreakChainingWeapons.Add("ugv_gl_turret_mp", "airdrop_remote_tank"); killstreakChainingWeapons.Add("remote_tank_projectile_mp", "airdrop_remote_tank"); killstreakChainingWeapons.Add("pavelow_minigun_mp", "helicopter_flares"); killstreakChainingWeapons.Add("ac130_105mm_mp", "ac130"); killstreakChainingWeapons.Add("ac130_40mm_mp", "ac130"); killstreakChainingWeapons.Add("ac130_25mm_mp", "ac130"); killstreakChainingWeapons.Add("iw5_m60jugg_mp", "airdrop_juggernaut"); killstreakChainingWeapons.Add("iw5_mp412jugg_mp", "airdrop_juggernaut"); killstreakChainingWeapons.Add("osprey_player_minigun_mp", "osprey_gunner"); level.SetField("killstreakChainingWeapons", new Parameter(killstreakChainingWeapons)); level.SetField("killstreakRoundDelay", GSCFunctions.GetDvar("scr_game_killstreakdelay")); PlayerConnected += onPlayerConnect; }
private static void Init() { #region Commands #region Map // MAP Command.TryRegister(SmartParse.CreateCommand( name: "map", argTypes: new[] { Parse.GameMap.Obj }, action : delegate(IClient sender, object[] args) { var map = args[0] as GameMap; Common.SayAll($"Map has been changed to %h1{map.NiceName} %nby %p{sender.GetFormattedName()}"); Utilities.ExecuteCommand($"map {map.RawName}"); }, usage: "!map <map>", permission: "map", description: "Changes the map to the map specified")); // MAPS Command.TryRegister(SmartParse.CreateCommand( name : "maps", argTypes : null, action : delegate(IClient sender, object[] args) { var msgs = "%iAvailable maps:".Yield() .Concat( Utils.Maps.Where(x => Utils.MapFilesExist(x.RawName)) .Select(x => $"%a{x.NiceName}%n") .Condense()); sender.Tell(msgs); }, usage: "!maps", permission: "maps", description: "Displays the available maps")); // SETNEXTMAP Command.TryRegister(SmartParse.CreateCommand( name: "setnextmap", argTypes: new[] { Parse.GameMap.Obj }, action : delegate(IClient sender, object[] args) { var map = args[0] as GameMap; DSR.SetNextMap(map.RawName); Common.SayAll($"%p{sender.GetFormattedName()} %nhas set next map to %i{map.NiceName}%n."); }, usage: "!setnextmap <map>", permission: "setnextmap", description: "Sets the next map to the map specified")); #endregion #region Mode // MODE Command.TryRegister(SmartParse.CreateCommand( name: "mode", argTypes: new[] { Parse.GameMode.Obj }, action : delegate(IClient sender, object[] args) { string dsr = DSR.GetFullDSRName(args[0] as string); DSR.SetNextMode(dsr); Common.SayAll($"Mode has been changed to %h1{dsr} %nby %p{sender.GetFormattedName()}"); Utilities.ExecuteCommand("map_rotate"); }, usage: "!mode <mode>", permission: "mode", description: "Changes the mode to the mode specified")); // GAMETYPE Command.TryRegister(SmartParse.CreateCommand( name: "gametype", argTypes: new[] { Parse.GameMap.Obj, Parse.GameMode.Obj }, action : delegate(Entity sender, object[] args) { var map = args[0] as GameMap; var dsr = DSR.GetFullDSRName(args[1] as string); DSR.SetNextMapRotation(map.RawName, dsr); Common.SayAll($"Map and mode have been changed to %h1{map.NiceName}%n, %h2{dsr} %nby %p{sender.GetFormattedName()}"); Utilities.ExecuteCommand("map_rotate"); }, usage: "!gametype <map> <mode>", permission: "gametype", description: "Changes the map and mode to the ones specified")); #endregion #region Admin // WARN Command.TryRegister(SmartParse.CreateCommand( name: "warn", argTypes: new[] { SmartParse.UnimmunePlayer, SmartParse.OptionalGreedyString }, action : delegate(IClient sender, object[] args) { var target = args[0] as Entity; if (args[1] is string str) { Funcs.Warn(target, sender.GetFormattedName(), str); } else { Funcs.Warn(target, sender.GetFormattedName()); } }, usage: "!warn <player> [reason]", permission: "!warn", description: "Warns a player")); // UNWARN Command.TryRegister(SmartParse.CreateCommand( name: "unwarn", argTypes: new[] { SmartParse.UnimmunePlayer, SmartParse.OptionalGreedyString }, action : delegate(IClient sender, object[] args) { var target = args[0] as Entity; if (args[1] is string str) { Funcs.Unwarn(target, sender.GetFormattedName(), str); } else { Funcs.Unwarn(target, sender.GetFormattedName()); } }, usage: "!unwarn <player> [reason]", permission: "!unwarn", description: "Unwarns a player")); // RESETWARNINGS Command.TryRegister(SmartParse.CreateCommand( name: "resetwarnings", argTypes: new[] { SmartParse.UnimmunePlayer, SmartParse.OptionalGreedyString }, action : delegate(IClient sender, object[] args) { var target = args[0] as Entity; if (args[1] is string str) { Funcs.ResetWarnings(target, sender.GetFormattedName(), str); } else { Funcs.ResetWarnings(target, sender.GetFormattedName()); } }, usage: "!resetwarnings <player> [reason]", permission: "resetwarnings", aliases: new[] { "resetwarns" }, description: "Resets a player's warnings")); // REMOVEWARNINGS Command.TryRegister(SmartParse.CreateCommand( name: "removewarnings", argTypes: new[] { SmartParse.OptionalGreedyString }, action : delegate(Entity sender, object[] args) { if (args[0] is string str) { Funcs.ResetWarnings(sender, sender.GetFormattedName(), str); } else { Funcs.ResetWarnings(sender, sender.GetFormattedName()); } }, usage: "!removewarnings [reason]", permission: "resetmywarnings", aliases: new[] { "rmwarns" }, description: "Reset your own warnings")); // KICK Command.TryRegister(SmartParse.CreateCommand( name: "kick", argTypes: new[] { SmartParse.UnimmunePlayer, SmartParse.OptionalGreedyString }, action : delegate(IClient sender, object[] args) { var target = args[0] as Entity; if (args[1] is string str) { Funcs.Kick(target, sender.GetFormattedName(), str); } else { Funcs.Kick(target, sender.GetFormattedName()); } }, usage: "!kick <player> [reason]", permission: "kick", description: "Kicks a player")); // BAN Command.TryRegister(SmartParse.CreateCommand( name: "ban", argTypes: new[] { SmartParse.UnimmunePlayer, SmartParse.OptionalGreedyString }, action : delegate(IClient sender, object[] args) { var target = args[0] as Entity; if (args[1] is string str) { Funcs.Ban(target, sender.GetFormattedName(), str); } else { Funcs.Ban(target, sender.GetFormattedName()); } }, usage: "!ban <player> [reason]", permission: "ban", description: "Bans a player")); // TMPBAN Command.TryRegister(SmartParse.CreateCommand( name: "tmpban", argTypes: new[] { SmartParse.UnimmunePlayer, Parse.TimeSpan.Obj, SmartParse.OptionalGreedyString }, action : delegate(IClient sender, object[] args) { var target = args[0] as Entity; if (args[1] is TimeSpan ts) { if (args[2] is string str) { Common.Admin.TempBan(target, sender.GetFormattedName(), ts, str); } else { Common.Admin.TempBan(target, sender.GetFormattedName(), ts); } } else { if (args[2] is string str) { Common.Admin.TempBan(target, sender.GetFormattedName(), str); } else { Common.Admin.TempBan(target, sender.GetFormattedName()); } } }, usage: "!tmpban <player> [time] [reason]", permission: "tmpban", description: "Temporarily bans a player")); // EXECUTECOMMAND Command.TryRegister(SmartParse.CreateCommand( name: "executecommand", argTypes: new[] { SmartParse.GreedyString }, action : delegate(IClient sender, object[] args) { var cmd = args[0] as string; Utilities.ExecuteCommand(cmd); sender.Tell("%aCommand executed."); }, usage: "!executecommand <cmd>", aliases: new[] { "exec" }, permission: "executecommand", description: "Executes a command in the server console")); // SEARCHBANS Command.TryRegister(SmartParse.CreateCommand( name: "searchbans", argTypes: new[] { SmartParse.GreedyString }, action : delegate(IClient sender, object[] args) { var filter = args[0] as string; IEnumerator routine() { var cmd = new SQLiteCommand("SELECT * FROM bans WHERE (name LIKE @pattern OR hwid LIKE @pattern) ORDER BY banid DESC LIMIT 10;", Connection); cmd.Parameters.AddWithValue("@pattern", $"%{filter}%"); yield return(Async.Detach()); List <string> messages = new List <string>(); lock (Connection) { var reader = cmd.ExecuteReader(); while (reader.Read()) { messages.Add($"%h1{reader["banid"]}%n - %p{reader["name"]}%n, {reader["hwid"]}"); } reader.Close(); } yield return(Async.Attach()); sender.Tell("%aFound ban entries:".Yield().Concat(messages)); } Async.Start(routine()); }, usage: "!searchbans <filter>", permission: "searchbans", description: "Searches the bans table")); // LASTBANS Command.TryRegister(SmartParse.CreateCommand( name: "lastbans", argTypes: new[] { SmartParse.OptionalRangedIntegerWithDefault(1, 10, 4) }, action : delegate(IClient sender, object[] args) { IEnumerator routine() { var cmd = new SQLiteCommand("SELECT * FROM bans ORDER BY banid DESC LIMIT 10;", Connection); yield return(Async.Detach()); List <string> messages = new List <string>(); lock (Connection) { var reader = cmd.ExecuteReader(); while (reader.Read()) { messages.Add($"%h1{reader["banid"]}%n - %p{reader["name"]}%n, {reader["hwid"]}"); } reader.Close(); } yield return(Async.Attach()); sender.Tell("%aFound ban entries:".Yield().Concat(messages)); } Async.Start(routine()); }, usage: "!lastbans <1-10>", permission: "lastbans", description: "Shows the last given amount of bans")); // BANINFO Command.TryRegister(SmartParse.CreateCommand( name: "baninfo", argTypes: new[] { SmartParse.Integer }, action : delegate(IClient sender, object[] args) { var banid = (int)args[0]; IEnumerator routine() { var cmd = new SQLiteCommand("SELECT * FROM bans WHERE banid = @banid;", Connection); cmd.Parameters.AddWithValue("@banid", banid); yield return(Async.Detach()); string[] messages = null; lock (Connection) { var reader = cmd.ExecuteReader(); if (reader.Read()) { messages = new[] { $"Ban ID: %h1{reader["banid"]}", $"Name: %p{reader["name"]}", $"HWID: %i{reader["hwid"]}", $"GUID: %i{reader["guid"]}", $"Issuer: %p{reader["issuer"]}", $"Expiry: %a{reader["expire"]}", $"Reason: %i{reader["reason"]}", }; } reader.Close(); } yield return(Async.Attach()); if (messages == null) { sender.Tell($"%eEntry {banid} was not found."); yield break; } sender.Tell(messages); yield break; } Async.Start(routine()); }, usage: "!baninfo <banid>", permission: "baninfo", description: "Shows details of a ban")); // UNBAN Command.TryRegister(SmartParse.CreateCommand( name: "unban", argTypes: new[] { SmartParse.Integer }, action : delegate(IClient sender, object[] args) { var banid = (int)args[0]; IEnumerator routine() { var cmd = new SQLiteCommand("DELETE FROM bans WHERE banid = @banid;", Connection); cmd.Parameters.AddWithValue("@banid", banid); yield return(Async.Detach()); int ret; lock (Connection) { ret = cmd.ExecuteNonQuery(); } yield return(Async.Attach()); sender.Tell($"Return value: %i{ret}"); } Async.Start(routine()); }, usage: "!unban <banid>", permission: "unban", description: "Removes a ban entry")); #endregion #region Balance // BALANCE Command.TryRegister(SmartParse.CreateCommand( name : "balance", argTypes : null, action : delegate(IClient sender, object[] args) { Utils.DeadBalance(sender.GetFormattedName()); }, usage: "!balance", permission: "balance", description: "Balances teams using dead players")); // FORCEBALANCE Command.TryRegister(SmartParse.CreateCommand( name : "forcebalance", argTypes : null, action : delegate(IClient sender, object[] args) { Utils.ForceBalance(sender.GetFormattedName()); }, usage: "!forcebalance", permission: "forcebalance", description: "Forces team balance")); // AUTOBALANCE Command.TryRegister(SmartParse.CreateCommand( name: "autobalance", argTypes: new[] { SmartParse.Boolean }, action : delegate(IClient sender, object[] args) { bool state = (bool)args[0]; GSCFunctions.SetDvar("autobalance", state ? 1 : 0); Common.SayAll($"%p{sender.GetFormattedName()} %nhas {(state ? "^2enabled" : "^1disabled")} autobalance."); }, usage: "!autobalance <1/0>", permission: "autobalance", description: "Enables or disables autobalance")); // AFK Command.TryRegister(SmartParse.CreateCommand( name : "afk", argTypes : null, action : delegate(Entity sender, object[] args) { Utils.SetTeam(sender, "spectator"); sender.Tell($"You have been set to spectator."); }, usage: "!afk", description: "Sets your team to spectator")); // SETAFK Command.TryRegister(SmartParse.CreateCommand( name: "setafk", argTypes: new[] { SmartParse.Player }, action : delegate(IClient sender, object[] args) { var target = args[0] as Entity; Utils.SetTeam(target, "spectator"); target.Tell($"You have been set to spectator by %p{sender.GetFormattedName()}%n."); }, usage: "!setafk <player>", permission: "setafk", description: "Sets a player's team to spectator")); // RESTART Command.TryRegister(SmartParse.CreateCommand( name: "restart", argTypes: new[] { SmartParse.OptionalBoolean }, action : delegate(IClient sender, object[] args) { Common.SayAll($"Map has been restarted by %p{sender.GetFormattedName()}%n."); if (args[0] is bool persistent) { GSCFunctions.Map_Restart(persistent); } else { Utilities.ExecuteCommand("fast_restart"); } }, usage: "!restart <persistent>", aliases: new[] { "res" }, permission: "restart", description: "Fast restarts the map")); // RESTART Command.TryRegister(SmartParse.CreateCommand( name : "end", argTypes : null, action : delegate(Entity sender, object[] args) { Common.SayAll($"Game has been ended by %p{sender.GetFormattedName()}%n."); foreach (Entity ent in BaseScript.Players) { ent.Notify("menuresponse", "menu", "endround"); } }, usage: "!end", permission: "end", description: "Ends the game")); #endregion #endregion // ban checks Script.PlayerConnected.Add((sender, player) => { IEnumerator routine() { var cmd = new SQLiteCommand("SELECT * FROM bans WHERE ((hwid = @hwid OR guid = @guid) AND (datetime(expire) > datetime('now', 'localtime') OR expire = 'permanent'));", Connection); cmd.Parameters.AddWithValue("@hwid", player.HWID); cmd.Parameters.AddWithValue("@guid", player.GUID); bool found = false; TimeSpan?timeSpan = null; string message = null, issuer = null; lock (Connection) { var reader = cmd.ExecuteReader(); if (reader.Read()) { found = true; if (reader["expire"] as string == "permanent") { timeSpan = null; } else { timeSpan = ParseDate(reader["expire"] as string) - DateTime.Now; } message = reader["reason"] as string; issuer = reader["issuer"] as string; } reader.Close(); } yield return(Async.Attach()); if (found) { if (timeSpan.HasValue) { Funcs.TempBanKick(player, issuer, timeSpan.Value, message); yield break; } Funcs.BanKick(player, issuer, message); yield break; } } Async.Start(routine()); }); GSCFunctions.SetDvarIfUninitialized("autobalance", 0); Script.PlayerKilled.Add((sender, args) => { if (GSCFunctions.GetDvar("autobalance") != "0") { Utils.CountPlayers(out int axis, out int allies, out _, out _); switch (args.Player.SessionTeam) { case "axis" when(axis - allies > 1): Utils.SetTeam(args.Player, "allies"); Common.SayAll($"%p{args.Player.Name} %nhas been automatically balanced."); return; case "allies" when(allies - axis > 1): Common.SayAll($"%p{args.Player.Name} %nhas been automatically balanced."); Utils.SetTeam(args.Player, "axis"); return; } } }); }
private void LoadTargetZones() { switch (GSCFunctions.GetDvar("mapname")) { case "mp_radar": TargetZones = targetZone_outpost; break; case "mp_plaza2": TargetZones = targetZone_arkaden; break; case "mp_paris": TargetZones = targetZone_resistance; break; case "mp_carbon": TargetZones = targetZone_carbon; break; case "mp_bravo": TargetZones = targetZone_mission; break; case "mp_underground": TargetZones = targetZone_underground; break; case "mp_interchange": TargetZones = targetZone_interchange; break; case "mp_alpha": TargetZones = targetZone_lockdown; break; case "mp_village": TargetZones = targetZone_village; break; case "mp_lambeth": TargetZones = targetZone_fallen; break; case "mp_dome": TargetZones = targetZone_dome; break; case "mp_hardhat": TargetZones = targetZone_hardhat; break; case "mp_bootleg": TargetZones = targetZone_bootleg; break; case "mp_seatown": TargetZones = targetZone_seatown; break; case "mp_mobalrig": TargetZones = targetZone_bakaara; break; case "mp_mogadishu": TargetZones = targetZone_bakaara; break; case "mp_exchange": TargetZones = targetZone_downturn; break; default: TargetZones = null; break; } }
public static void Initialize() { if (!File.Exists(Players2Directory + DsrName)) { return; } DsrName = GSCFunctions.GetDvar("sv_current_dsr"); string[] DSR = File.ReadAllLines(Players2Directory + DsrName); var customClassLine = DSR.FirstOrDefault(x => x.Contains("allowCustomClasses")); if (customClassLine != null) { var value = customClassLine.Split(' ')[2].Replace("\"", ""); if (value == "1") { CustomClassAllowed = true; } else { CustomClassAllowed = false; } } #region Restricted Weapons foreach (var weaponRestricted in DSR.Where(x => x.StartsWith("gameOpt commonOption.weaponRestricted."))) { var weapon = weaponRestricted.Split('.')[2].Split(' ')[0]; if (weaponRestricted.Split(' ')[2].Contains("1")) { WeaponsRestricted.Add(weapon); } } #endregion #region Restricted Attachments foreach (var attachmentRestricted in DSR.Where(x => x.StartsWith("gameOpt commonOption.attachmentRestricted."))) { var attach = attachmentRestricted.Split('.')[2].Split(' ')[0]; if (attachmentRestricted.Split(' ')[2].Contains("1")) { AttachementsRestricted.Add(attach); } } #endregion #region Restricted Perks foreach (var perkRestricted in DSR.Where(x => x.StartsWith("gameOpt commonOption.perkRestricted."))) { var weapon = perkRestricted.Split('.')[2].Split(' ')[0]; if (perkRestricted.Split(' ')[2].Contains("1")) { PerksRestricted.Add(weapon); } } #endregion #region Allowed foreach (var allowed in DSR.Where(x => x.StartsWith("gameOpt defaultClasses."))) { if (allowed.Contains("class.perks")) { var perk = allowed.Split(' ')[2].Replace("\"", ""); PerksAllowed.Add(perk); } else if (allowed.Contains("class.weaponSetups")) { if (allowed.Contains("attachment")) { var attachment = allowed.Split(' ')[2].Replace("\"", ""); if (attachment != "none") { AttachmentsAllowed.Add(attachment); } } else if (allowed.Contains("weapon")) { var weap = allowed.Split(' ')[2].Replace("\"", ""); if (weap != "none") { WeaponsAllowed.Add(weap); } } } } #endregion Log.Write(LogLevel.Info, "Initialize End."); Log.Write(LogLevel.Info, "Allowed Weapons: " + WeaponsAllowed.Count); }