Ejemplo n.º 1
0
        public static void teleport2owneditem(Arg arg)
        {
            BasePlayer basePlayer      = ArgEx.Player(arg);
            BasePlayer playerOrSleeper = ArgEx.GetPlayerOrSleeper(arg, 0);
            ulong      result;

            if (playerOrSleeper != null)
            {
                result = playerOrSleeper.userID;
            }
            else if (!ulong.TryParse(arg.GetString(0), out result))
            {
                arg.ReplyWith("No player with that id found");
                return;
            }
            string @string = arg.GetString(1);

            BaseEntity[] array = BaseEntity.Util.FindTargetsOwnedBy(result, @string);
            if (array.Length == 0)
            {
                arg.ReplyWith("No targets found");
                return;
            }
            int num = UnityEngine.Random.Range(0, array.Length);

            arg.ReplyWith($"Teleporting to {array[num].ShortPrefabName} at {array[num].transform.position}");
            basePlayer.Teleport(array[num].transform.position);
        }
Ejemplo n.º 2
0
        public static void gesture_radius(Arg arg)
        {
            BasePlayer basePlayer = ArgEx.Player(arg);

            if (basePlayer == null || !basePlayer.IsAdmin)
            {
                return;
            }
            float         @float = arg.GetFloat(0);
            List <string> list   = Facepunch.Pool.GetList <string>();

            for (int i = 0; i < 5; i++)
            {
                if (!string.IsNullOrEmpty(arg.GetString(i + 1)))
                {
                    list.Add(arg.GetString(i + 1));
                }
            }
            if (list.Count == 0)
            {
                arg.ReplyWith("No gestures provided. eg. player.gesture_radius 10f cabbagepatch raiseroof");
                return;
            }
            List <BasePlayer> obj = Facepunch.Pool.GetList <BasePlayer>();

            global::Vis.Entities(basePlayer.transform.position, @float, obj, 131072);
            foreach (BasePlayer item in obj)
            {
                GestureConfig toPlay = basePlayer.gestureList.StringToGesture(list[Random.Range(0, list.Count)]);
                item.Server_StartGesture(toPlay);
            }
            Facepunch.Pool.FreeList(ref obj);
        }
Ejemplo n.º 3
0
        public static void giveto(Arg arg)
        {
            string text = "SERVER";

            if (ArgEx.Player(arg) != null)
            {
                text = ArgEx.Player(arg).displayName;
            }
            BasePlayer basePlayer = BasePlayer.Find(arg.GetString(0));

            if (basePlayer == null)
            {
                arg.ReplyWith("Couldn't find player!");
                return;
            }
            Item item = ItemManager.CreateByPartialName(arg.GetString(1), 1, arg.GetULong(3, 0uL));

            if (item == null)
            {
                arg.ReplyWith("Invalid Item!");
                return;
            }
            item.amount = arg.GetInt(2, 1);
            item.OnVirginSpawn();
            if (!basePlayer.inventory.GiveItem(item))
            {
                item.Remove();
                arg.ReplyWith("Couldn't give item (inventory full?)");
                return;
            }
            basePlayer.Command("note.inv", item.info.itemid, item.amount);
            Debug.Log(" [ServerVar] giving " + basePlayer.displayName + " " + item.amount + " x " + item.info.displayName.english);
            Chat.Broadcast(text + " gave " + basePlayer.displayName + " " + item.amount + " x " + item.info.displayName.english, "SERVER", "#eee", 0uL);
        }
Ejemplo n.º 4
0
        public static void setinfo(Arg args)
        {
            BasePlayer basePlayer = ArgEx.Player(args);

            if ((bool)basePlayer)
            {
                string @string = args.GetString(0, null);
                string string2 = args.GetString(1, null);
                if (@string != null && string2 != null)
                {
                    basePlayer.SetInfo(@string, string2);
                }
            }
        }
Ejemplo n.º 5
0
        public static void kick(Arg arg)
        {
            BasePlayer player = ArgEx.GetPlayer(arg, 0);

            if (!player || player.net == null || player.net.connection == null)
            {
                arg.ReplyWith("Player not found");
                return;
            }
            string @string = arg.GetString(1, "no reason given");

            arg.ReplyWith("Kicked: " + player.displayName);
            Chat.Broadcast("Kicking " + player.displayName + " (" + @string + ")", "SERVER", "#eee", 0uL);
            player.Kick("Kicked: " + arg.GetString(1, "No Reason Given"));
        }
Ejemplo n.º 6
0
        public static void print_prefabs(Arg arg)
        {
            PrefabPoolCollection pool = GameManager.server.pool;

            if (pool.storage.Count == 0)
            {
                arg.ReplyWith("Prefab pool is empty.");
                return;
            }
            string    @string   = arg.GetString(0, string.Empty);
            TextTable textTable = new TextTable();

            textTable.AddColumn("id");
            textTable.AddColumn("name");
            textTable.AddColumn("count");
            foreach (KeyValuePair <uint, PrefabPool> item in pool.storage)
            {
                string text  = item.Key.ToString();
                string text2 = StringPool.Get(item.Key);
                string text3 = item.Value.Count.ToString();
                if (string.IsNullOrEmpty(@string) || text2.Contains(@string, CompareOptions.IgnoreCase))
                {
                    textTable.AddRow(text, Path.GetFileNameWithoutExtension(text2), text3);
                }
            }
            arg.ReplyWith(textTable.ToString());
        }
Ejemplo n.º 7
0
        public static void cinematic_play(Arg arg)
        {
            if (!arg.HasArgs() || !arg.IsServerside)
            {
                return;
            }
            BasePlayer basePlayer = ArgEx.Player(arg);

            if (!(basePlayer == null))
            {
                string strCommand = string.Empty;
                if (basePlayer.IsAdmin || basePlayer.IsDeveloper)
                {
                    strCommand = arg.cmd.FullName + " " + arg.FullString + " " + basePlayer.UserIDString;
                }
                else if (Server.cinematic)
                {
                    strCommand = arg.cmd.FullName + " " + arg.GetString(0) + " " + basePlayer.UserIDString;
                }
                if (Server.cinematic)
                {
                    ConsoleNetwork.BroadcastToAllClients(strCommand);
                }
                else if (basePlayer.IsAdmin || basePlayer.IsDeveloper)
                {
                    ConsoleNetwork.SendClientCommand(arg.Connection, strCommand);
                }
            }
        }
Ejemplo n.º 8
0
        public static void spawnlootfrom(Arg args)
        {
            BasePlayer basePlayer = ArgEx.Player(args);
            string     @string    = args.GetString(0, string.Empty);
            int        @int       = args.GetInt(1, 1);
            Vector3    vector     = args.GetVector3(1, basePlayer ? basePlayer.CenterPoint() : Vector3.zero);

            if (string.IsNullOrEmpty(@string))
            {
                return;
            }
            BaseEntity baseEntity = GameManager.server.CreateEntity(@string, vector);

            if (baseEntity == null)
            {
                return;
            }
            baseEntity.Spawn();
            basePlayer.ChatMessage("Contents of " + @string + " spawned " + @int + " times");
            LootContainer component = baseEntity.GetComponent <LootContainer>();

            if (component != null)
            {
                for (int i = 0; i < @int * component.maxDefinitionsToSpawn; i++)
                {
                    component.lootDefinition.SpawnIntoContainer(basePlayer.inventory.containerMain);
                }
            }
            baseEntity.Kill();
        }
Ejemplo n.º 9
0
        public static void find_entity(Arg args)
        {
            string    filter      = args.GetString(0);
            TextTable entityTable = GetEntityTable((EntityInfo info) => string.IsNullOrEmpty(filter) || info.entity.PrefabName.Contains(filter));

            args.ReplyWith(entityTable.ToString());
        }
Ejemplo n.º 10
0
        public static void deployLoadoutInRange(Arg arg)
        {
            BasePlayer basePlayer = ArgEx.Player(arg);

            if ((!basePlayer.IsAdmin && !basePlayer.IsDeveloper && !Server.cinematic) || basePlayer == null)
            {
                return;
            }
            string       @string = arg.GetString(0);
            SavedLoadout so;

            if (!LoadLoadout(@string, out so))
            {
                arg.ReplyWith("Can't find loadout: " + @string);
                return;
            }
            float             @float = arg.GetFloat(1);
            List <BasePlayer> obj    = Facepunch.Pool.GetList <BasePlayer>();

            global::Vis.Entities(basePlayer.transform.position, @float, obj, 131072);
            int num = 0;

            foreach (BasePlayer item in obj)
            {
                if (!(item == basePlayer) && !item.isClient)
                {
                    so.LoadItemsOnTo(item);
                    num++;
                }
            }
            arg.ReplyWith($"Applied loadout {@string} to {num} players");
            Facepunch.Pool.FreeList(ref obj);
        }
Ejemplo n.º 11
0
    public static void add(Arg args)
    {
        string  @string = args.GetString(0);
        float   @float  = args.GetFloat(1, 0.1f);
        Command command = Find(@string);
        float   result;

        if (command == null)
        {
            args.ReplyWith("Convar not found: " + (@string ?? "<null>"));
        }
        else if (args.IsClientside && command.Replicated)
        {
            args.ReplyWith("Cannot set replicated convars from the client (use sv to do this)");
        }
        else if (args.IsServerside && command.ServerAdmin && !args.IsAdmin)
        {
            args.ReplyWith("Permission denied");
        }
        else if (!float.TryParse(command.String, out result))
        {
            args.ReplyWith("Convar value cannot be parsed as a number");
        }
        else
        {
            command.Set(result + @float);
        }
    }
Ejemplo n.º 12
0
        public static void giveall(Arg arg)
        {
            Item   item = null;
            string text = "SERVER";

            if (ArgEx.Player(arg) != null)
            {
                text = ArgEx.Player(arg).displayName;
            }
            foreach (BasePlayer activePlayer in BasePlayer.activePlayerList)
            {
                item = ItemManager.CreateByPartialName(arg.GetString(0), 1, 0uL);
                if (item == null)
                {
                    arg.ReplyWith("Invalid Item!");
                    return;
                }
                item.amount = arg.GetInt(1, 1);
                item.OnVirginSpawn();
                if (!activePlayer.inventory.GiveItem(item))
                {
                    item.Remove();
                    arg.ReplyWith("Couldn't give item (inventory full?)");
                    continue;
                }
                activePlayer.Command("note.inv", item.info.itemid, item.amount);
                Debug.Log(" [ServerVar] giving " + activePlayer.displayName + " " + item.amount + " x " + item.info.displayName.english);
            }
            if (item != null)
            {
                Chat.Broadcast(text + " gave everyone " + item.amount + " x " + item.info.displayName.english, "SERVER", "#eee", 0uL);
            }
        }
Ejemplo n.º 13
0
        public static void ban(Arg arg)
        {
            BasePlayer player = ArgEx.GetPlayer(arg, 0);

            if (!player || player.net == null || player.net.connection == null)
            {
                arg.ReplyWith("Player not found");
                return;
            }
            ServerUsers.User user = ServerUsers.Get(player.userID);
            if (user != null && user.group == ServerUsers.UserGroup.Banned)
            {
                arg.ReplyWith($"User {player.userID} is already banned");
                return;
            }
            string @string = arg.GetString(1, "No Reason Given");
            long   expiry;
            string durationSuffix;

            if (TryGetBanExpiry(arg, 2, out expiry, out durationSuffix))
            {
                ServerUsers.Set(player.userID, ServerUsers.UserGroup.Banned, player.displayName, @string, expiry);
                string text = "";
                if (player.IsConnected && player.net.connection.ownerid != 0L && player.net.connection.ownerid != player.net.connection.userid)
                {
                    text += $" and also banned ownerid {player.net.connection.ownerid}";
                    ServerUsers.Set(player.net.connection.ownerid, ServerUsers.UserGroup.Banned, player.displayName, arg.GetString(1, $"Family share owner of {player.net.connection.userid}"), -1L);
                }
                ServerUsers.Save();
                arg.ReplyWith($"Kickbanned User{durationSuffix}: {player.userID} - {player.displayName}{text}");
                Chat.Broadcast("Kickbanning " + player.displayName + durationSuffix + " (" + @string + ")", "SERVER", "#eee", 0uL);
                Network.Net.sv.Kick(player.net.connection, "Banned" + durationSuffix + ": " + @string);
            }
        }
Ejemplo n.º 14
0
        public static void print_assets(Arg arg)
        {
            if (AssetPool.storage.Count == 0)
            {
                arg.ReplyWith("Asset pool is empty.");
                return;
            }
            string    @string   = arg.GetString(0, string.Empty);
            TextTable textTable = new TextTable();

            textTable.AddColumn("type");
            textTable.AddColumn("allocated");
            textTable.AddColumn("available");
            foreach (KeyValuePair <Type, AssetPool.Pool> item in AssetPool.storage)
            {
                string text  = item.Key.ToString();
                string text2 = item.Value.allocated.ToString();
                string text3 = item.Value.available.ToString();
                if (string.IsNullOrEmpty(@string) || text.Contains(@string, CompareOptions.IgnoreCase))
                {
                    textTable.AddRow(text, text2, text3);
                }
            }
            arg.ReplyWith(textTable.ToString());
        }
Ejemplo n.º 15
0
        public static void load(Arg args)
        {
            if (!SingletonComponent <Climate> .Instance)
            {
                return;
            }
            string name = args.GetString(0);

            if (string.IsNullOrEmpty(name))
            {
                args.ReplyWith("Weather preset name invalid.");
                return;
            }
            WeatherPreset weatherPreset = Array.Find(SingletonComponent <Climate> .Instance.WeatherPresets, (WeatherPreset x) => x.name.Contains(name, CompareOptions.IgnoreCase));

            if (weatherPreset == null)
            {
                args.ReplyWith("Weather preset not found: " + name);
                return;
            }
            SingletonComponent <Climate> .Instance.WeatherOverrides.Set(weatherPreset);

            if (args.IsServerside)
            {
                ServerMgr.SendReplicatedVars("weather.");
            }
        }
Ejemplo n.º 16
0
        public static void status(Arg arg)
        {
            string @string = arg.GetString(0);
            string text    = string.Empty;

            if (@string.Length == 0)
            {
                text  = text + "hostname: " + Server.hostname + "\n";
                text  = text + "version : " + 2306 + " secure (secure mode enabled, connected to Steam3)\n";
                text  = text + "map     : " + Server.level + "\n";
                text += $"players : {BasePlayer.activePlayerList.Count()} ({Server.maxplayers} max) ({SingletonComponent<ServerMgr>.Instance.connectionQueue.Queued} queued) ({SingletonComponent<ServerMgr>.Instance.connectionQueue.Joining} joining)\n\n";
            }
            TextTable textTable = new TextTable();

            textTable.AddColumn("id");
            textTable.AddColumn("name");
            textTable.AddColumn("ping");
            textTable.AddColumn("connected");
            textTable.AddColumn("addr");
            textTable.AddColumn("owner");
            textTable.AddColumn("violation");
            textTable.AddColumn("kicks");
            foreach (BasePlayer activePlayer in BasePlayer.activePlayerList)
            {
                try
                {
                    if (!BaseEntityEx.IsValid(activePlayer))
                    {
                        continue;
                    }
                    string userIDString = activePlayer.UserIDString;
                    if (activePlayer.net.connection == null)
                    {
                        textTable.AddRow(userIDString, "NO CONNECTION");
                        continue;
                    }
                    string text2 = activePlayer.net.connection.ownerid.ToString();
                    string text3 = activePlayer.displayName.QuoteSafe();
                    string text4 = Network.Net.sv.GetAveragePing(activePlayer.net.connection).ToString();
                    string text5 = activePlayer.net.connection.ipaddress;
                    string text6 = activePlayer.violationLevel.ToString("0.0");
                    string text7 = activePlayer.GetAntiHackKicks().ToString();
                    if (!arg.IsAdmin && !arg.IsRcon)
                    {
                        text5 = "xx.xxx.xx.xxx";
                    }
                    string text8 = activePlayer.net.connection.GetSecondsConnected() + "s";
                    if (@string.Length <= 0 || text3.Contains(@string, CompareOptions.IgnoreCase) || userIDString.Contains(@string) || text2.Contains(@string) || text5.Contains(@string))
                    {
                        textTable.AddRow(userIDString, text3, text4, text8, text5, (text2 == userIDString) ? string.Empty : text2, text6, text7);
                    }
                }
                catch (Exception ex)
                {
                    textTable.AddRow(activePlayer.UserIDString, ex.Message.QuoteSafe());
                }
            }
            arg.ReplyWith(text + textTable.ToString());
        }
Ejemplo n.º 17
0
        public static void set(Arg arg)
        {
            string @string = arg.GetString(0);

            if (string.IsNullOrEmpty(@string))
            {
                Debug.Log("Invalid gamemode");
            }
            BaseGameMode     baseGameMode     = null;
            GameObjectRef    gameObjectRef    = null;
            GameModeManifest gameModeManifest = GameModeManifest.Get();

            Debug.Log("total gamemodes : " + gameModeManifest.gameModePrefabs.Count);
            foreach (GameObjectRef gameModePrefab in gameModeManifest.gameModePrefabs)
            {
                BaseGameMode component = gameModePrefab.Get().GetComponent <BaseGameMode>();
                if (component.shortname == @string)
                {
                    baseGameMode  = component;
                    gameObjectRef = gameModePrefab;
                    Debug.Log("Found :" + component.shortname + " prefab name is :" + component.PrefabName + ": rpath is " + gameModePrefab.resourcePath + ":");
                    break;
                }
                Debug.Log("search name " + @string + "searched against : " + component.shortname);
            }
            if (baseGameMode == null)
            {
                Debug.Log("Unknown gamemode : " + @string);
                return;
            }
            BaseGameMode activeGameMode = BaseGameMode.GetActiveGameMode(true);

            if ((bool)activeGameMode)
            {
                if (baseGameMode.shortname == activeGameMode.shortname)
                {
                    Debug.Log("Same gamemode, resetting");
                }
                if (activeGameMode.permanent)
                {
                    Debug.LogError("This game mode is permanent, you must reset the server to switch game modes.");
                    return;
                }
                activeGameMode.ShutdownGame();
                activeGameMode.Kill();
                BaseGameMode.SetActiveGameMode(null, true);
            }
            BaseEntity baseEntity = GameManager.server.CreateEntity(gameObjectRef.resourcePath, Vector3.zero, Quaternion.identity);

            if ((bool)baseEntity)
            {
                Debug.Log("Spawning new game mode : " + baseGameMode.shortname);
                baseEntity.Spawn();
            }
            else
            {
                Debug.Log("Failed to create new game mode :" + baseGameMode.PrefabName);
            }
        }
Ejemplo n.º 18
0
 public static void kickall(Arg arg)
 {
     BasePlayer[] array = BasePlayer.activePlayerList.ToArray();
     for (int i = 0; i < array.Length; i++)
     {
         array[i].Kick("Kicked: " + arg.GetString(1, "No Reason Given"));
     }
 }
Ejemplo n.º 19
0
        public static void teleportany(Arg args)
        {
            BasePlayer basePlayer = ArgEx.Player(args);

            if ((bool)basePlayer && basePlayer.IsAlive())
            {
                basePlayer.Teleport(args.GetString(0), false);
            }
        }
Ejemplo n.º 20
0
    public static void if_false(Arg args)
    {
        string @string = args.GetString(0);
        bool   @bool   = args.GetBool(1, true);

        if (!@bool)
        {
            ConsoleSystem.Run(Option.Client, @string, @bool);
        }
    }
Ejemplo n.º 21
0
        public static IEnumerable <ChatEntry> search(Arg arg)
        {
            string search = arg.GetString(0, null);

            if (search == null)
            {
                return(Enumerable.Empty <ChatEntry>());
            }
            return(History.Where((ChatEntry x) => x.Message.Length < 4096 && x.Message.Contains(search, CompareOptions.IgnoreCase)));
        }
Ejemplo n.º 22
0
        public static void export(Arg args)
        {
            string @string = args.GetString(0, "none");
            string text    = Path.Combine(Application.persistentDataPath, @string + ".raw");

            switch (@string)
            {
            case "splatmap":
                if ((bool)TerrainMeta.SplatMap)
                {
                    RawWriter.Write(TerrainMeta.SplatMap.ToEnumerable(), text);
                }
                break;

            case "heightmap":
                if ((bool)TerrainMeta.HeightMap)
                {
                    RawWriter.Write(TerrainMeta.HeightMap.ToEnumerable(), text);
                }
                break;

            case "biomemap":
                if ((bool)TerrainMeta.BiomeMap)
                {
                    RawWriter.Write(TerrainMeta.BiomeMap.ToEnumerable(), text);
                }
                break;

            case "topologymap":
                if ((bool)TerrainMeta.TopologyMap)
                {
                    RawWriter.Write(TerrainMeta.TopologyMap.ToEnumerable(), text);
                }
                break;

            case "alphamap":
                if ((bool)TerrainMeta.AlphaMap)
                {
                    RawWriter.Write(TerrainMeta.AlphaMap.ToEnumerable(), text);
                }
                break;

            case "watermap":
                if ((bool)TerrainMeta.WaterMap)
                {
                    RawWriter.Write(TerrainMeta.WaterMap.ToEnumerable(), text);
                }
                break;

            default:
                args.ReplyWith("Unknown export source: " + @string);
                return;
            }
            args.ReplyWith("Export written to " + text);
        }
Ejemplo n.º 23
0
        public static void CMD(Arg arg)
        {
            string playerName = arg.argUser.user.Displayname;
            string message = arg.GetString(0, "text").Trim();
            uLink.NetworkPlayer player = arg.argUser.networkPlayer;
            PlayerClient playerClient = Array.Find(Vars.AllPlayerClients.ToArray(), (PlayerClient pc) => pc.netPlayer == player);
            Character playerChar;
            Character.FindByUser(playerClient.userID, out playerChar);

            executeCMD(playerName, message, player, playerClient, playerChar);
        }
Ejemplo n.º 24
0
 public static void stop(Arg arg)
 {
     if (!Network.Net.sv.IsConnected())
     {
         arg.ReplyWith("There isn't a server running!");
     }
     else
     {
         Network.Net.sv.Stop(arg.GetString(0, "Stopping Server"));
     }
 }
Ejemplo n.º 25
0
        public static void ownerid(Arg arg)
        {
            ulong  uInt    = arg.GetUInt64(0, 0uL);
            string @string = arg.GetString(1, "unnamed");
            string string2 = arg.GetString(2, "no reason");

            if (uInt < 70000000000000000L)
            {
                arg.ReplyWith("This doesn't appear to be a 64bit steamid: " + uInt);
                return;
            }
            ServerUsers.User user = ServerUsers.Get(uInt);
            if (user != null && user.group == ServerUsers.UserGroup.Owner)
            {
                arg.ReplyWith("User " + uInt + " is already an Owner");
                return;
            }
            ServerUsers.Set(uInt, ServerUsers.UserGroup.Owner, @string, string2, -1L);
            arg.ReplyWith("Added owner " + @string + ", steamid " + uInt);
        }
Ejemplo n.º 26
0
        public static void banid(Arg arg)
        {
            ulong  uInt    = arg.GetUInt64(0, 0uL);
            string text    = arg.GetString(1, "unnamed");
            string @string = arg.GetString(2, "no reason");

            if (uInt < 70000000000000000L)
            {
                arg.ReplyWith("This doesn't appear to be a 64bit steamid: " + uInt);
                return;
            }
            ServerUsers.User user = ServerUsers.Get(uInt);
            if (user != null && user.group == ServerUsers.UserGroup.Banned)
            {
                arg.ReplyWith("User " + uInt + " is already banned");
            }
            else
            {
                long   expiry;
                string durationSuffix;
                if (!TryGetBanExpiry(arg, 3, out expiry, out durationSuffix))
                {
                    return;
                }
                string     text2      = "";
                BasePlayer basePlayer = BasePlayer.FindByID(uInt);
                if (basePlayer != null && basePlayer.IsConnected)
                {
                    text = basePlayer.displayName;
                    if (basePlayer.IsConnected && basePlayer.net.connection.ownerid != 0L && basePlayer.net.connection.ownerid != basePlayer.net.connection.userid)
                    {
                        text2 += $" and also banned ownerid {basePlayer.net.connection.ownerid}";
                        ServerUsers.Set(basePlayer.net.connection.ownerid, ServerUsers.UserGroup.Banned, basePlayer.displayName, arg.GetString(1, $"Family share owner of {basePlayer.net.connection.userid}"), expiry);
                    }
                    Chat.Broadcast("Kickbanning " + basePlayer.displayName + durationSuffix + " (" + @string + ")", "SERVER", "#eee", 0uL);
                    Network.Net.sv.Kick(basePlayer.net.connection, "Banned" + durationSuffix + ": " + @string);
                }
                ServerUsers.Set(uInt, ServerUsers.UserGroup.Banned, text, @string, expiry);
                arg.ReplyWith($"Banned User{durationSuffix}: {uInt} - \"{text}\" for \"{@string}\"{text2}");
            }
        }
Ejemplo n.º 27
0
        public static void breakitem(Arg arg)
        {
            string @string = arg.GetString(0);

            foreach (Item item in ArgEx.Player(arg).inventory.containerMain.itemList)
            {
                if (item.info.shortname.Contains(@string, CompareOptions.IgnoreCase) && item.hasCondition)
                {
                    item.LoseCondition(item.condition * 2f);
                }
            }
        }
Ejemplo n.º 28
0
        public static void saveloadout(Arg arg)
        {
            BasePlayer basePlayer = ArgEx.Player(arg);

            if (!(basePlayer == null) && (basePlayer.IsAdmin || basePlayer.IsDeveloper || Server.cinematic))
            {
                string @string     = arg.GetString(0);
                string contents    = JsonConvert.SerializeObject(new SavedLoadout(basePlayer), Formatting.Indented);
                string loadoutPath = GetLoadoutPath(@string);
                File.WriteAllText(loadoutPath, contents);
                arg.ReplyWith("Saved loadout to " + loadoutPath);
            }
        }
Ejemplo n.º 29
0
        public static void CMD(Arg arg)
        {
            string playerName = arg.argUser.user.Displayname;
            string message    = arg.GetString(0, "text").Trim();

            uLink.NetworkPlayer player       = arg.argUser.networkPlayer;
            PlayerClient        playerClient = Array.Find(Vars.AllPlayerClients.ToArray(), (PlayerClient pc) => pc.netPlayer == player);
            Character           playerChar;

            Character.FindByUser(playerClient.userID, out playerChar);

            executeCMD(playerName, message, player, playerClient, playerChar);
        }
Ejemplo n.º 30
0
        public static void createskull(Arg arg)
        {
            string     text       = arg.GetString(0);
            BasePlayer basePlayer = ArgEx.Player(arg);

            if (string.IsNullOrEmpty(text))
            {
                text = RandomUsernames.Get(Random.Range(0, 1000));
            }
            Item item = ItemManager.Create(ItemManager.FindItemDefinition("skull.human"), 1, 0uL);

            item.name = HumanBodyResourceDispenser.CreateSkullName(text);
            basePlayer.inventory.GiveItem(item);
        }
Ejemplo n.º 31
0
        public static void cheatreport(Arg arg)
        {
            BasePlayer basePlayer = ArgEx.Player(arg);

            if (!(basePlayer == null))
            {
                ulong  uInt    = arg.GetUInt64(0, 0uL);
                string @string = arg.GetString(1);
                UnityEngine.Debug.LogWarning(string.Concat(basePlayer, " reported ", uInt, ": ", @string.ToPrintable(140)));
                if (EACServer.eacScout != null)
                {
                    EACServer.eacScout.SendPlayerReport(uInt.ToString(), basePlayer.net.connection.userid.ToString(), PlayerReportCategory.PlayerReportCheating, @string);
                }
            }
        }
Ejemplo n.º 32
0
        public static void CMD(Arg arg)
        {
            string playerName = arg.argUser.user.Displayname;
            string message = arg.GetString(0, "text").Trim();
            uLink.NetworkPlayer player = arg.argUser.networkPlayer;
            PlayerClient playerClient = Array.Find(PlayerClient.All.ToArray(), (PlayerClient pc) => pc.netPlayer == player);
            Character playerChar;
            Character.FindByUser(playerClient.userID, out playerChar);

            string[] commandArgs = message.Split(' ');
            string command = commandArgs[0];

            string sendMSG = "";
            int curIndex = 0;
            foreach (string s in commandArgs)
            {
                if (curIndex > 1)
                {
                    sendMSG += s + " ";
                }
                curIndex++;
            }

            if (Vars.totalCommands.Contains(command))
            {
                if (Vars.enabledCommands[Vars.findRank(playerClient.userID.ToString())].Contains(command))
                {
                    if (commandArgs.Count() == 2 && commandArgs[0] + commandArgs[1] == "/whitelistcheck")
                        Vars.whitelistCheck(playerClient);
                    else
                    {
                        switch (command)
                        {
                            case "/remove":
                                Vars.removerTool(playerClient, commandArgs);
                                break;
                            case "/f":
                                Vars.handleFactions(playerClient, commandArgs);
                                break;
                            case "/r":
                                Broadcast.reply(playerClient, commandArgs);
                                break;
                            case "/rules":
                                Vars.showRules(playerClient);
                                break;
                            case "/players":
                                Vars.showPlayers(playerClient);
                                break;
                            case "/kits":
                                Vars.showKits(playerClient);
                                break;
                            case "/heal":
                                Vars.healPlayer(player, playerName, commandArgs);
                                break;
                            case "/access":
                                Vars.giveAccess(playerClient, commandArgs);
                                break;
                            case "/version":
                                Broadcast.broadcastTo(player, "The server is running Rust Essentials v" + Vars.currentVersion + " for Rust v" + Vars.rustCurrentVer + ".");
                                break;
                            case "/save":
                                Vars.save(playerClient);
                                break;
                            case "/saypop":
                                Vars.saypop(commandArgs);
                                break;
                            case "/tppos":
                                Vars.teleportPos(playerClient, commandArgs);
                                break;
                            case "/tpaccept":
                                Vars.teleportAccept(playerClient, commandArgs);
                                break;
                            case "/tpdeny":
                                Vars.teleportDeny(playerClient, commandArgs);
                                break;
                            case "/tpa":
                                Vars.teleportRequest(playerClient, commandArgs);
                                break;
                            case "/tp":
                                Vars.teleport(playerClient, commandArgs);
                                break;
                            case "/history":
                                Vars.showHistory(playerClient, commandArgs);
                                break;
                            case "/unmute":
                                Vars.mute(playerClient, commandArgs, false);
                                break;
                            case "/mute":
                                Vars.mute(playerClient, commandArgs, true);
                                break;
                            case "/stop":
                                Vars.stopServer();
                                break;
                            case "/say":
                                Vars.say(commandArgs);
                                break;
                            case "/chan":
                                Vars.channels(playerClient, commandArgs);
                                break;
                            case "/kickall":
                                Vars.kickAll(playerClient);
                                break;
                            case "/whitelist":
                                Vars.whitelistPlayer(player, commandArgs);
                                break;
                            case "/reload":
                                Vars.reloadFile(player, commandArgs);
                                break;
                            case "/unban":
                                Vars.unbanPlayer(playerClient, commandArgs);
                                break;
                            case "/ban":
                                Vars.banPlayer(playerClient, commandArgs);
                                break;
                            case "/kick":
                                Vars.kickPlayer(playerClient, commandArgs, false);
                                break;
                            case "/timescale":
                                Vars.setScale(playerClient, commandArgs);
                                break;
                            case "/time":
                                Vars.setTime(playerClient, commandArgs);
                                break;
                            case "/join":
                                Vars.fakeJoin(playerClient, commandArgs);
                                break;
                            case "/leave":
                                Vars.fakeLeave(playerClient, commandArgs);
                                break;
                            case "/pos":
                                Vars.getPlayerPos(playerClient);
                                break;
                            case "/i":
                                Vars.createItem(playerClient, playerClient, commandArgs, message, true);
                                break;
                            case "/give":
                                Vars.createItem(playerClient, commandArgs, message);
                                break;
                            case "/kit":
                                Vars.giveKit(playerClient, commandArgs, message);
                                break;
                            case "/airdrop":
                                Vars.airdrop(player, commandArgs);
                                break;
                            case "/share":
                                Share.shareWith(playerClient, commandArgs);
                                break;
                            case "/unshare":
                                Share.unshareWith(playerClient, commandArgs);
                                break;
                            case "/pm":
                                Broadcast.sendPM(playerName, commandArgs);
                                break;
                            case "/online":
                                Broadcast.sendPlayers(player);
                                break;
                            case "/uid":
                                Vars.grabUID(playerClient, commandArgs);
                                break;
                            case "/god":
                                Vars.godMode(player, playerName, commandArgs, true);
                                break;
                            case "/ungod":
                                Vars.godMode(player, playerName, commandArgs, false);
                                break;
                            case "/fall":
                                Vars.setFall(player, commandArgs);
                                break;
                            case "/kill":
                                Vars.killTarget(player, commandArgs);
                                break;
                            case "/help":
                                Broadcast.help(player, commandArgs);
                                break;
                        }
                    }
                }
                else
                {
                    Broadcast.noticeTo(player, ":(", "You do not have permission to do this.");
                }
            }
            else
            {
                if (Vars.unknownCommand)
                    Broadcast.broadcastTo(player, "Unknown command \"" + command + "\"!");
            }
        }
Ejemplo n.º 33
0
    public static void say(Arg arg)
    {
        if (!enabled)
            return;

        string playerName = arg.argUser.user.Displayname;
        string UID = arg.argUser.user.Userid.ToString();
        string message = arg.GetString(0, "text");

        if (playerName != null && message.Length > 0)
        {
            if (message.StartsWith("/"))
            {
                Vars.conLog.Chat("<CMD> " + playerName + ": " + message);
                //Thread t = new Thread(() => Commands.CMD(arg));
                //t.Start();
                Commands.CMD(arg);
            }
            else
            {
                playerName = Vars.filterNames(playerName, UID);
                message = message.Replace("\"", "\\\"").Replace("[PM]", "").Replace("[PM to]", "").Replace("[PM from]", "").Replace("[PM From]", "").Replace("[PM To]", "").Replace("[F]", "");
                if (!Vars.inDirect.Contains(UID) && !Vars.inGlobal.Contains(UID))
                {
                    Vars.inGlobal.Add(UID);
                }
                if (!Vars.inDirectV.Contains(UID) && !Vars.inGlobalV.Contains(UID))
                {
                    Vars.inDirectV.Add(UID);
                }
                if (Vars.inDirect.Contains(UID))
                {
                    if (Vars.directChat)
                    {
                        Thread t = new Thread(() => Vars.sendToSurrounding(arg.argUser.playerClient, message));
                        t.Start();
                        Vars.conLog.Chat("<D> " + playerName + ": " + message);
                    }
                    else
                    {
                        if (!Vars.mutedUsers.Contains(UID))
                        {
                            Vars.inDirect.Remove(UID);
                            Vars.inGlobal.Add(UID);
                            Broadcast.broadcastTo(arg.argUser.networkPlayer, "Direct chat has been disabled! You are now talking in global chat.");
                            ConsoleNetworker.Broadcast("chat.add \"" + (Vars.removeTag ? "" : "<G> ") + playerName + "\" \"" + message + "\"");
                            Vars.conLog.Chat("<G> " + playerName + ": " + message);
                            if (Vars.historyGlobal.Count > 50)
                                Vars.historyGlobal.RemoveAt(0);
                            Vars.historyGlobal.Add("* " + (Vars.removeTag ? "" : "<G> ") + playerName + "$:|:$" + message);
                        }
                        else
                        {
                            if (Vars.muteTimes.ContainsKey(UID))
                            {
                                string secondsLeft = "You have been muted for " + Math.Round(Vars.muteTimes[UID].TimeLeft / 1000).ToString() + " seconds on global chat.";
                                Broadcast.broadcastTo(arg.argUser.networkPlayer, secondsLeft);
                            }
                            else
                                Broadcast.broadcastTo(arg.argUser.networkPlayer, "You have been muted on global chat.");
                        }
                    }
                }
                else if (Vars.inGlobal.Contains(UID))
                {
                    if (Vars.globalChat)
                    {
                        if (!Vars.mutedUsers.Contains(UID))
                        {
                            ConsoleNetworker.Broadcast("chat.add \"" + (Vars.removeTag ? "" : "<G> ") + playerName + "\" \"" + message + "\"");
                            Vars.conLog.Chat("<G> " + playerName + ": " + message);
                            if (Vars.historyGlobal.Count > 50)
                                Vars.historyGlobal.RemoveAt(0);
                            Vars.historyGlobal.Add("* " + (Vars.removeTag ? "" : "<G> ") + playerName + "$:|:$" + message);
                        }
                        else
                        {
                            if (Vars.muteTimes.ContainsKey(UID))
                            {
                                string secondsLeft = "You have been muted for " + Math.Round(Vars.muteTimes[UID].TimeLeft / 1000).ToString() + " seconds on global chat.";
                                Broadcast.broadcastTo(arg.argUser.networkPlayer, secondsLeft);
                            }
                            else
                                Broadcast.broadcastTo(arg.argUser.networkPlayer, "You have been muted on global chat.");
                        }
                    }
                    else
                    {
                        Vars.inGlobal.Remove(UID);
                        Vars.inDirect.Add(UID);
                        Broadcast.broadcastTo(arg.argUser.networkPlayer, "Global chat has been disabled! You are now talking in direct chat.");

                        Thread t = new Thread(() => Vars.sendToSurrounding(arg.argUser.playerClient, message));
                        t.Start();
                        Vars.conLog.Chat("<D> " + playerName + ": " + message);
                    }
                }
            }
        }
    }
Ejemplo n.º 34
0
    public static void say(Arg arg)
    {
        if (!enabled)
            return;

        string playerName = arg.argUser.user.Displayname;
        string clientName = arg.argUser.playerClient.userName;
        string UID = arg.argUser.user.Userid.ToString();
        string message = arg.GetString(0, "text");

        if (playerName != null && message.Length > 0)
        {
            if (message.StartsWith("/"))
            {
                Vars.conLog.Chat("<CMD> " + playerName + ": " + message);
                if (serverlog)
                {
                    Debug.Log("[CHAT] <CMD> " + playerName + ": " + message);
                }
                //Thread t = new Thread(() => Commands.CMD(arg));
                //t.Start();
                Commands.CMD(arg);
            }
            else
            {
                playerName = Vars.filterNames(playerName, UID);
                message = message.Replace("\"", "\\\"").Replace("[PM]", "").Replace("[PM to]", "").Replace("[PM from]", "").Replace("[PM From]", "").Replace("[PM To]", "").Replace("[F]", "");
                if (Vars.censorship)
                {
                    List<string> splitMessage = new List<string>(message.Split(' '));
                    foreach (string s in splitMessage)
                    {
                        if (Vars.illegalWords.Contains(s.ToLower().Replace(".", "").Replace("!", "").Replace(",", "").Replace("?", "").Replace(";", "")))
                        {
                            string curseWord = Array.Find(Vars.illegalWords.ToArray(), (string str) => str.Equals(s.ToLower().Replace(".", "").Replace("!", "").Replace(",", "").Replace("?", "").Replace(";", "")));
                            string asterisks = "";
                            for (int i = 0; i < s.Replace(".", "").Replace("!", "").Replace(",", "").Replace("?", "").Replace(";", "").Length; i++)
                            {
                                asterisks += "*";
                            }
                            string theRest = s.Replace(curseWord, "");
                            string fullString = (s.StartsWith(theRest) ? theRest + asterisks : asterisks + theRest);
                            splitMessage[splitMessage.IndexOf(s)] = fullString;
                        }
                    }
                    message = string.Join(" ", splitMessage.ToArray());
                }

                if (!Vars.inDirect.Contains(UID) && !Vars.inGlobal.Contains(UID) && !Vars.inFaction.Contains(UID))
                {
                    Vars.inGlobal.Add(UID);
                }
                if (!Vars.inDirectV.Contains(UID) && !Vars.inGlobalV.Contains(UID))
                {
                    Vars.inDirectV.Add(UID);
                }
                if (clientName.Length == 0)
                {
                    Broadcast.broadcastTo(arg.argUser.networkPlayer, "You cannot chat while vanished!");
                    return;
                }
                if (Vars.inDirect.Contains(UID))
                {
                    if (Vars.directChat)
                    {
                        Thread t = new Thread(() => Vars.sendToSurrounding(arg.argUser.playerClient, message));
                        t.Start();
                        Vars.conLog.Chat("<D> " + playerName + ": " + message);
                        if (serverlog)
                        {
                            Debug.Log("[CHAT] <D> " + playerName + ": " + message);
                        }
                        return;
                    }
                    else
                    {
                        Vars.inGlobal.Add(UID);
                        Vars.inDirect.Remove(UID);

                        if (!Vars.mutedUsers.Contains(UID))
                        {
                            Broadcast.broadcastTo(arg.argUser.networkPlayer, "Direct chat has been disabled! You are now talking in global chat.");
                            ConsoleNetworker.Broadcast("chat.add \"" + (Vars.removeTag ? "" : "<G> ") + playerName + "\" \"" + message + "\"");
                            Vars.conLog.Chat("<G> " + playerName + ": " + message);
                            if (serverlog)
                            {
                                Debug.Log("[CHAT] <G> " + playerName + ": " + message);
                            }
                            if (Vars.historyGlobal.Count > 50)
                                Vars.historyGlobal.RemoveAt(0);
                            Vars.historyGlobal.Add("* " + (Vars.removeTag ? "" : "<G> ") + playerName + "$:|:$" + message);
                            return;
                        }
                        else
                        {
                            if (Vars.muteTimes.ContainsKey(UID))
                            {
                                string secondsLeft = "You have been muted for " + Math.Round(Vars.muteTimes[UID].TimeLeft / 1000).ToString() + " seconds on global chat.";
                                Broadcast.broadcastTo(arg.argUser.networkPlayer, secondsLeft);
                            }
                            else
                                Broadcast.broadcastTo(arg.argUser.networkPlayer, "You have been muted on global chat.");
                            return;
                        }
                    }
                }
                if (Vars.inGlobal.Contains(UID))
                {
                    if (Vars.globalChat)
                    {
                        if (!Vars.mutedUsers.Contains(UID))
                        {
                            ConsoleNetworker.Broadcast("chat.add \"" + (Vars.removeTag ? "" : "<G> ") + playerName + "\" \"" + message + "\"");
                            Vars.conLog.Chat("<G> " + playerName + ": " + message);
                            if (serverlog)
                            {
                                Debug.Log("[CHAT] <G> " + playerName + ": " + message);
                            }
                            if (Vars.historyGlobal.Count > 50)
                                Vars.historyGlobal.RemoveAt(0);
                            Vars.historyGlobal.Add("* " + (Vars.removeTag ? "" : "<G> ") + playerName + "$:|:$" + message);
                            return;
                        }
                        else
                        {
                            if (Vars.muteTimes.ContainsKey(UID))
                            {
                                string secondsLeft = "You have been muted for " + Math.Round(Vars.muteTimes[UID].TimeLeft / 1000).ToString() + " seconds on global chat.";
                                Broadcast.broadcastTo(arg.argUser.networkPlayer, secondsLeft);
                            }
                            else
                                Broadcast.broadcastTo(arg.argUser.networkPlayer, "You have been muted on global chat.");
                            return;
                        }
                    }
                    else
                    {
                        Vars.inDirect.Add(UID);
                        Vars.inGlobal.Remove(UID);

                        Broadcast.broadcastTo(arg.argUser.networkPlayer, "Global chat has been disabled! You are now talking in direct chat.");

                        Thread t = new Thread(() => Vars.sendToSurrounding(arg.argUser.playerClient, message));
                        t.Start();
                        Vars.conLog.Chat("<D> " + playerName + ": " + message);
                        if (serverlog)
                        {
                            Debug.Log("[CHAT] <D> " + playerName + ": " + message);
                        }
                        return;
                    }
                }
                if (Vars.inFaction.Contains(UID))
                {
                    KeyValuePair<string, Dictionary<string, string>>[] possibleFactions = Array.FindAll(Vars.factions.ToArray(), (KeyValuePair<string, Dictionary<string, string>> kv) => kv.Value.ContainsKey(arg.argUser.userID.ToString()));

                    if (possibleFactions.Length > 0)
                    {
                        Vars.sendToFaction(arg.argUser.playerClient, message);
                        Vars.conLog.Chat("<F [" + possibleFactions[0].Key + "]> " + playerName + ": " + message);
                        if (serverlog)
                        {
                            Debug.Log("[CHAT] <F [" + possibleFactions[0].Key + "]> " + playerName + ": " + message);
                        }
                        if (Vars.historyFaction.Count > 50)
                            Vars.historyFaction.RemoveAt(0);
                        if (!Vars.historyFaction.Contains(possibleFactions[0].Key))
                            Vars.historyFaction.Add(possibleFactions[0].Key, new List<string>() { { "* <F> " + playerName + "$:|:$" + message } });
                        else
                            ((List<string>)Vars.historyFaction[possibleFactions[0].Key]).Add("* <F> " + playerName + "$:|:$" + message);
                        return;
                    }
                    else
                    {
                        if (Vars.globalChat)
                            Vars.inGlobal.Add(UID);
                        else
                            Vars.inDirect.Add(UID);

                        Vars.inFaction.Remove(UID);

                        Broadcast.broadcastTo(arg.argUser.networkPlayer, "You are not in a faction! You are now talking in global chat.");
                        if (!Vars.mutedUsers.Contains(UID))
                        {
                            ConsoleNetworker.Broadcast("chat.add \"" + (Vars.removeTag ? "" : "<G> ") + playerName + "\" \"" + message + "\"");
                            Vars.conLog.Chat("<G> " + playerName + ": " + message);
                            if (serverlog)
                            {
                                Debug.Log("[CHAT] <G> " + playerName + ": " + message);
                            }
                            if (Vars.historyGlobal.Count > 50)
                                Vars.historyGlobal.RemoveAt(0);
                            Vars.historyGlobal.Add("* " + (Vars.removeTag ? "" : "<G> ") + playerName + "$:|:$" + message);
                        }
                        else
                        {
                            if (Vars.muteTimes.ContainsKey(UID))
                            {
                                string secondsLeft = "You have been muted for " + Math.Round(Vars.muteTimes[UID].TimeLeft / 1000).ToString() + " seconds on global chat.";
                                Broadcast.broadcastTo(arg.argUser.networkPlayer, secondsLeft);
                            }
                            else
                                Broadcast.broadcastTo(arg.argUser.networkPlayer, "You have been muted on global chat.");
                        }
                        return;
                    }
                }
            }
        }
    }