private List <BasePlayer> GetClanMembers(ulong playerUID)
        {
            var membersList = new List <BasePlayer>();

            var clanName = Clans?.Call <string>("GetClanOf", playerUID);

            if (!string.IsNullOrEmpty(clanName))
            {
                var clan = Clans?.Call <JObject>("GetClan", clanName);

                if (clan != null && clan is JObject)
                {
                    var members = (clan as JObject).GetValue("members");

                    if (members != null && members is JArray)
                    {
                        foreach (var member in (JArray)members)
                        {
                            ulong clanMemberUID;

                            if (!ulong.TryParse(member.ToString(), out clanMemberUID))
                            {
                                continue;
                            }

                            var clanMember = RustCore.FindPlayerById(clanMemberUID);

                            membersList.Add(clanMember);
                        }
                    }
                }
            }
            return(membersList);
        }
Exemplo n.º 2
0
        static bool CanAuthorize(BuildingPrivlidge cupboard)
        {
            var owner       = cupboard.authorizedPlayers[0];
            var ownerPlayer = RustCore.FindPlayerById(owner.userid);

            return(ownerPlayer?.isConnected ?? true);
        }
Exemplo n.º 3
0
        private bool DisableGodmode(string playerID)
        {
            if (string.IsNullOrEmpty(playerID))
            {
                return(false);
            }
            var player = RustCore.FindPlayerById(ulong.Parse(playerID));

            if (player == null)
            {
                return(false);
            }
            if (IsGod(player.UserIDString))
            {
                storedData.godPlayers.Remove(player.UserIDString);
            }
            if (configData.showNamePrefix)
            {
                Rename(player, false);
            }

            ModifyMetabolism(player, false);
            CheckOnlineGods();
            return(true);
        }
        private bool InTeam(ulong playerUID)
        {
            var player = RustCore.FindPlayerById(playerUID);

            var playersCurrentTeam = RelationshipManager.Instance.FindTeam(player.currentTeam);

            return(playersCurrentTeam != null);
        }
Exemplo n.º 5
0
        private List <BasePlayer> GetFriends(ulong userID)
        {
            var result = Friends?.Call("GetFriends", userID);

            if (result == null)
            {
                return(null);
            }

            return((result as ulong[]).Select(x => RustCore.FindPlayerById(x)).ToList());
        }
        private List <BasePlayer> GetFriends(ulong playerUID)
        {
            var friendsList = new List <BasePlayer>();

            var friends = Friends.Call <ulong[]>("GetFriends", playerUID);

            foreach (var friendUID in friends)
            {
                var friend = RustCore.FindPlayerById(friendUID);

                friendsList.Add(friend);
            }

            return(friendsList);
        }
Exemplo n.º 7
0
        private PlayerData GetPlayerData(ulong playerId)
        {
            var        player = RustCore.FindPlayerById(playerId);
            PlayerData playerData;

            if (!FriendsData.TryGetValue(playerId, out playerData))
            {
                FriendsData[playerId] = playerData = new PlayerData();
            }
            if (player != null)
            {
                playerData.Name = player.displayName;
            }
            return(playerData);
        }
Exemplo n.º 8
0
        void OnEntityEnter(TriggerBase trigger, BaseEntity entity)
        {
            var player   = entity as BasePlayer;
            var cupboard = trigger as BuildPrivilegeTrigger;

            if (player == null || cupboard == null)
            {
                return;
            }

            var owner       = cupboard.privlidgeEntity.authorizedPlayers[0];
            var ownerPlayer = RustCore.FindPlayerById(owner.userid);

            if (ownerPlayer != null && ownerPlayer.isConnected)
            {
                timer.Once(0.1f, () => player.SetPlayerFlag(BasePlayer.PlayerFlags.HasBuildingPrivilege, true));
            }
        }
        private List <BasePlayer> GetTeamMembers(ulong playerUID)
        {
            var membersList = new List <BasePlayer>();

            var player = RustCore.FindPlayerById(playerUID);

            var playersCurrentTeam = RelationshipManager.Instance.FindTeam(player.currentTeam);

            var teamMembers = playersCurrentTeam.members;

            foreach (var teamMemberUID in teamMembers)
            {
                var teamMember = RustCore.FindPlayerById(teamMemberUID);

                membersList.Add(teamMember);
            }

            return(membersList);
        }
Exemplo n.º 10
0
 public BasePlayer FindPlayerById(ulong id) => RustCore.FindPlayerById(id);
Exemplo n.º 11
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;
                }
            }
        }