Beispiel #1
0
        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);
        }
Beispiel #2
0
        public override void Initialize()
        {
            Server.Hostname = GSCFunctions.GetDvar("sv_hostname");
            return;

            UiC_Loader.AfterDelay(2000, AntiForceClass.Initialize);
        }
Beispiel #3
0
        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);
            });
        }
Beispiel #4
0
    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;
    }
Beispiel #5
0
        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));
                        }
                    }
                });
            }
        }
Beispiel #6
0
        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();
        }
Beispiel #7
0
        static Main()
        {
            GSCFunctions.SetDvarIfUninitialized("perms_path", @"scripts\LevelPerms\perms.json");

            filePath = GSCFunctions.GetDvar("perms_path");

            Common.Register(Perms.Instance);

            ReadPerms();
        }
Beispiel #8
0
        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");
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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");
            }
        }
Beispiel #11
0
        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;
                }
            }
        }
Beispiel #12
0
        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");
        }
Beispiel #13
0
        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;
            }
        }
Beispiel #14
0
    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);
    }
Beispiel #15
0
        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!");
                }
            }
        }
Beispiel #16
0
        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());
        }
Beispiel #17
0
        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));
        }
Beispiel #18
0
        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));
        }
Beispiel #19
0
        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;
        }
Beispiel #20
0
        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;
            }
        }
Beispiel #21
0
        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;
            }
        }
Beispiel #22
0
        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);
        }
Beispiel #23
0
        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();
        }
Beispiel #24
0
        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);
                    }
                });
            }
        }
Beispiel #25
0
        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());
        }
Beispiel #26
0
        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]));
        }
Beispiel #27
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;
        }
Beispiel #28
0
        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;
                    }
                }
            });
        }
Beispiel #29
0
        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;
            }
        }
Beispiel #30
0
        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);
        }