Exemplo n.º 1
0
        private void GodCommand(IPlayer iPlayer, string command, string[] args)
        {
            if ((args.Length > 0 && !iPlayer.HasPermission(permAdmin)) || !iPlayer.HasPermission(permToggle))
            {
                Print(iPlayer, Lang("NotAllowed", iPlayer.Id, command));
                return;
            }
            if (args.Length == 0 && iPlayer.Id == "server_console")
            {
                Print(iPlayer, $"The server console cannot use {command}");
                return;
            }
            var target = args.Length > 0 ? RustCore.FindPlayer(args[0]) : iPlayer.Object as BasePlayer;

            if (args.Length > 0 && target == null)
            {
                Print(iPlayer, Lang("PlayerNotFound", iPlayer.Id, args[0]));
                return;
            }
            object obj = ToggleGodmode(target, iPlayer.Object as BasePlayer);

            if (iPlayer.Id == "server_console" && args.Length > 0 && obj is bool)
            {
                if ((bool)obj)
                {
                    Print(iPlayer, $"'{target.displayName}' have enabled godmode");
                }
                else
                {
                    Print(iPlayer, $"'{target.displayName}' have disabled godmode");
                }
            }
        }
Exemplo n.º 2
0
 string GetName(string id)
 {
     if (id == "0")
     {
         return("[SERVERSPAWN]");
     }
     return(RustCore.FindPlayer(id) ? RustCore.FindPlayer(id).displayName : covalence.Players.FindPlayer(id)?.Name);
 }
Exemplo n.º 3
0
 public BasePlayer FindPlayer(string nameOrIdOrIp) => RustCore.FindPlayer(nameOrIdOrIp);
Exemplo n.º 4
0
        private void cmdFriend(BasePlayer player, string command, string[] args)
        {
            if (args == null || args.Length <= 0 || args.Length == 1 && !args[0].Equals("list", StringComparison.OrdinalIgnoreCase))
            {
                PrintMessage(player, "Syntax");
                return;
            }
            switch (args[0].ToLower())
            {
            case "list":
                var friendList = GetFriendList(player.userID);
                if (friendList.Length > 0)
                {
                    PrintMessage(player, "List", $"{friendList.Length}/{configData.MaxFriends}", string.Join(", ", friendList));
                }
                else
                {
                    PrintMessage(player, "NoFriends");
                }
                return;

            case "add":
            case "+":
                var friendPlayer = RustCore.FindPlayer(args[1]);
                if (friendPlayer == null)
                {
                    PrintMessage(player, "PlayerNotFound", args[1]);
                    return;
                }
                if (player == friendPlayer)
                {
                    PrintMessage(player, "CantAddSelf");
                    return;
                }
                var playerData = GetPlayerData(player.userID);
                if (playerData.Friends.Count >= configData.MaxFriends)
                {
                    PrintMessage(player, "FriendlistFull");
                    return;
                }
                if (playerData.Friends.Contains(friendPlayer.userID))
                {
                    PrintMessage(player, "AlreadyOnList", friendPlayer.displayName);
                    return;
                }
                AddFriend(player.userID, friendPlayer.userID);
                PrintMessage(player, "FriendAdded", friendPlayer.displayName);
                return;

            case "remove":
            case "-":
                var friend = FindFriend(args[1]);
                if (friend <= 0)
                {
                    PrintMessage(player, "NotOnFriendlist", args[1]);
                    return;
                }
                var removed = RemoveFriend(player.userID, friend);
                PrintMessage(player, removed ? "FriendRemoved" : "NotOnFriendlist", args[1]);
                return;
            }
        }
Exemplo n.º 5
0
        private void BgConsoleCommand(ConsoleSystem.Arg arg)
        {
            string userIdString = arg.Connection?.userid.ToString();

            if (arg.Connection != null)
            {
                if (!arg.IsAdmin && !IsAdmin(arg.Connection.userid.ToString()))
                {
                    SendReply(arg, Lang("NoPermission", userIdString));
                    return;
                }
            }

            if (arg.Args == null || arg.Args.Length == 0)
            {
                SendReply(arg, Lang("InvalidArgsConsole", userIdString));
                return;
            }

            if (arg.Args.Length >= 0)
            {
                switch (arg.Args[0].ToLower())
                {
                case "unlocked":
                    if (arg.Args.Length == 2)
                    {
                        BasePlayer target = RustCore.FindPlayer(arg.Args[1]);
                        if (target == null || target.blueprints == null)
                        {
                            SendReply(arg, Lang("NoPlayerFoundWith", userIdString, arg.Args[1]));
                            return;
                        }

                        String replyString = Lang("BlueprintsUnlocked", userIdString, target.displayName);
                        foreach (String a in GetPlayerBlueprints(target))
                        {
                            replyString += a + ", ";
                        }

                        SendReply(arg, replyString);
                    }
                    return;

                case "save":
                    if (arg.Args.Length == 2)
                    {
                        BasePlayer target = RustCore.FindPlayer(arg.Args[1]);
                        if (target == null)
                        {
                            SendReply(arg, Lang("NoPlayerFoundWith", userIdString, arg.Args[1]));
                            return;
                        }
                        if (_targetNeedsPermission && !IsAdmin(target) && !IsUser(target.UserIDString))
                        {
                            SendReply(arg, Lang("NoPermTarget", userIdString, target.displayName));
                            return;
                        }
                        SaveBlueprints(target);
                        SendReply(arg, Lang("BlueprintsSavedTarget", userIdString, target.displayName));
                    }
                    return;

                case "restore":
                    if (!_isActivated)
                    {
                        SendReply(arg, Lang("PluginNotActivated", userIdString));
                        return;
                    }
                    if (arg.Args.Length == 2)
                    {
                        BasePlayer target = RustCore.FindPlayer(arg.Args[1]);
                        if (target == null)
                        {
                            SendReply(arg, Lang("NoPlayerFoundWith", userIdString, arg.Args[1]));
                            return;
                        }

                        if (_targetNeedsPermission && !IsAdmin(target) && !IsUser(target.UserIDString))
                        {
                            SendReply(arg, Lang("NoPermTarget", userIdString, target.displayName));
                            return;
                        }

                        if (!_cachedPlayerInfo.ContainsKey(target.userID))
                        {
                            SendReply(arg, Lang("NoSavedDataFound", userIdString, target.displayName));
                            return;
                        }

                        if (arg.Connection != null)
                        {
                            SendReply(arg, RestoreBlueprints(target));
                        }
                    }
                    return;

                case "unlock":
                    if (arg.Args.Length == 3)
                    {
                        BasePlayer target = RustCore.FindPlayer(arg.Args[1]);
                        if (target == null)
                        {
                            SendReply(arg, Lang("NoPlayerFoundWith", userIdString, arg.Args[1]));
                            return;
                        }

                        ItemDefinition itemDefinition = ItemManager.FindItemDefinition(arg.Args[2]);

                        if (itemDefinition == null)
                        {
                            SendReply(arg, Lang("NoItemFound", userIdString));
                            return;
                        }

                        if (!_configData.DisableAllLogging)
                        {
                            Puts($"{arg.Connection?.username ?? "Server Console"} unlocked blueprint {itemDefinition.displayName} for [{target.displayName}/{target.userID}]");
                        }
                        target.blueprints?.Unlock(itemDefinition);
                    }

                    return;

                case "unlockall":
                    if (arg.Args.Length == 2)
                    {
                        BasePlayer target = RustCore.FindPlayer(arg.Args[1]);
                        if (target == null)
                        {
                            SendReply(arg, Lang("NoPlayerFoundWith", userIdString, arg.Args[1]));
                            return;
                        }

                        if (_targetNeedsPermission && !IsAdmin(target) && !IsUser(target.UserIDString))
                        {
                            SendReply(arg, Lang("NoPermTarget", userIdString, target.displayName));
                            return;
                        }

                        var blueprints = target.blueprints;
                        if (blueprints == null)
                        {
                            return;
                        }

                        blueprints.UnlockAll();
                        SendReply(arg, Lang("AllBlueprintsUnlocked", userIdString, target.displayName));
                        if (!_configData.DisableAllLogging)
                        {
                            Puts(Lang("AllBlueprintsUnlocked", userIdString, target.displayName));
                        }
                    }
                    return;

                case "reset":
                    if (arg.Args.Length == 3)
                    {
                        BasePlayer target = RustCore.FindPlayer(arg.Args[1]);
                        if (target == null)
                        {
                            SendReply(arg, Lang("NoPlayerFoundWith", userIdString, arg.Args[1]));
                            return;
                        }

                        if (arg.Args[2].ToLower() == "confirm")
                        {
                            if (_targetNeedsPermission && !IsAdmin(target) && !IsUser(target.UserIDString))
                            {
                                SendReply(arg, Lang("NoPermTarget", userIdString, target.displayName));
                                return;
                            }

                            var blueprints = target.blueprints;
                            if (blueprints == null)
                            {
                                return;
                            }

                            //Use buildin Rust function to reset blueprints
                            blueprints.Reset();

                            //Check if blueprints are present in data and if so clear it
                            PlayerInfo playerInfo;
                            if (_cachedPlayerInfo.TryGetValue(target.userID, out playerInfo))
                            {
                                playerInfo.UnlockedBlueprints.Clear();
                            }

                            if (!_configData.DisableAllLogging)
                            {
                                Puts(Lang("BlueprintsReset", null, target.displayName));
                            }
                            if (arg.Connection != null)
                            {
                                SendReply(arg, Lang("BlueprintsReset", userIdString, target.displayName));
                            }
                        }
                        else
                        {
                            SendReply(arg, Lang("ConfirmReset", userIdString, target.displayName, arg.Args[2]));
                        }
                    }
                    else if (arg.Args.Length == 2)
                    {
                        BasePlayer target = RustCore.FindPlayer(arg.Args[1]);
                        if (target == null)
                        {
                            SendReply(arg, Lang("NoPlayerFoundWith", userIdString, arg.Args[1]));
                            return;
                        }

                        SendReply(arg, Lang("ConfirmReset", userIdString, target.displayName, arg.Args[1]));
                    }
                    else
                    {
                        SendReply(arg, Lang("InvalidArgsConsole", userIdString));
                    }
                    return;

                case "toggle":
                    _isActivated = !_isActivated;
                    SaveConfigData();
                    SendReply(arg, _isActivated ? Lang("Activated", userIdString) : Lang("Deactivated", userIdString));
                    return;

                case "autorestore":
                    _autoRestore = !_autoRestore;
                    SaveConfigData();
                    SendReply(arg, _isActivated ? Lang("AutoRestoreActivated", userIdString) : Lang("AutoRestoreDeactivated", userIdString));
                    return;

                case "testautorestore":
                    _isNewSave = true;
                    SendReply(arg, $"isNewSave: {_isNewSave}");
                    CheckProtocol();
                    return;

                case "delsaved":
                    if (arg.Args.Length == 2)
                    {
                        BasePlayer target = RustCore.FindPlayer(arg.Args[1]);
                        if (target == null)
                        {
                            SendReply(arg, Lang("NoPlayerFoundWith", userIdString, arg.Args[1]));
                            return;
                        }

                        if (!RemoveSavedBlueprints(target))
                        {
                            SendReply(arg, Lang("NoSavedDataFound", userIdString, target.displayName));
                        }
                        return;
                    }
                    else
                    {
                        SendReply(arg, Lang("InvalidArgs", userIdString));
                    }
                    return;

                case "listsaved":
                    if (arg.Args.Length == 1)
                    {
                        StringBuilder sb = new StringBuilder(Lang("SavedDataPlayerList", userIdString));
                        foreach (ulong userId in _cachedPlayerInfo.Keys)
                        {
                            BasePlayer target = RustCore.FindPlayerById(userId);
                            sb.Append($"{userId} : {target?.displayName} \n");
                        }

                        SendReply(arg, sb.ToString());
                    }
                    if (arg.Args.Length == 2)
                    {
                        BasePlayer target = RustCore.FindPlayer(arg.Args[1]);
                        if (target == null)
                        {
                            SendReply(arg, Lang("NoPlayerFoundWith", userIdString, arg.Args[1]));
                            return;
                        }

                        if (!_cachedPlayerInfo.ContainsKey(target.userID))
                        {
                            SendReply(arg, Lang("NoSavedDataFor", userIdString, target.displayName));
                            return;
                        }

                        HashSet <String> blueprints = _cachedPlayerInfo[target.userID].UnlockedBlueprints;
                        if (blueprints == null)
                        {
                            return;
                        }
                        SendReply(arg, Lang("BlueprintsSaved", userIdString, target.displayName) + String.Join(", ", blueprints));
                    }

                    return;

                case "default":
                case "help":
                    StringBuilder _sb = new StringBuilder(Lang("AvailableCommands", userIdString));
                    _sb.Append(Lang("HelpConsoleSave", userIdString));
                    _sb.Append(Lang("HelpConsoleRestore", userIdString));
                    _sb.Append(Lang("HelpConsoleDelSaved", userIdString));
                    _sb.Append(Lang("HelpConsoleUnlocked", userIdString));
                    _sb.Append(Lang("HelpConsoleUnlockAll", userIdString));
                    _sb.Append(Lang("HelpConsoleReset", userIdString));
                    _sb.Append(Lang("HelpConsoleList", userIdString));
                    _sb.Append(Lang("HelpListPlayerSaved", userIdString));
                    _sb.Append(Lang("HelpConsoleToggle", userIdString));

                    SendReply(arg,
                              arg.Connection == null ? Regex.Replace(_sb.ToString(), "<[^>]*>", "") : _sb.ToString());
                    return;
                }
            }
        }