public static void promote(ConsoleSystem.Arg arg)
    {
        BasePlayer basePlayer = arg.Player();

        if (basePlayer.currentTeam == 0)
        {
            return;
        }
        BasePlayer lookingAtPlayer = RelationshipManager.GetLookingAtPlayer(basePlayer);

        if (lookingAtPlayer == null)
        {
            return;
        }
        if (lookingAtPlayer.IsDead())
        {
            return;
        }
        if (lookingAtPlayer == basePlayer)
        {
            return;
        }
        if (lookingAtPlayer.currentTeam == basePlayer.currentTeam)
        {
            RelationshipManager.PlayerTeam item = RelationshipManager.Instance.playerTeams[basePlayer.currentTeam];
            if (item != null && item.teamLeader == basePlayer.userID)
            {
                if (Interface.CallHook("OnTeamPromote", item, lookingAtPlayer) != null)
                {
                    return;
                }
                item.SetTeamLeader(lookingAtPlayer.userID);
            }
        }
    }
Exemplo n.º 2
0
 public override void Execute()
 {
     RelationshipManager.PlayerTeam playerTeam = RelationshipManager.ServerInstance.FindPlayersTeam(base.UserId);
     if (playerTeam == null)
     {
         SendError("no_team");
         return;
     }
     if (playerTeam.teamLeader != base.UserId)
     {
         SendError("access_denied");
         return;
     }
     if (playerTeam.teamLeader == base.Proto.steamId)
     {
         SendSuccess();
         return;
     }
     if (!playerTeam.members.Contains(base.Proto.steamId))
     {
         SendError("not_found");
         return;
     }
     playerTeam.SetTeamLeader(base.Proto.steamId);
     SendSuccess();
 }
Exemplo n.º 3
0
        private void GenerateClanTeam(List <ulong> memberIds)
        {
            if (clans.ContainsKey(ClanTag(memberIds[0])))
            {
                clans.Remove(ClanTag(memberIds[0]));
            }

            clans[ClanTag(memberIds[0])] = new List <ulong>();
            RelationshipManager.PlayerTeam team = RelationshipManager.Instance.CreateTeam();

            foreach (ulong memberId in memberIds)
            {
                BasePlayer player = BasePlayer.FindByID(memberId);
                if (player != null)
                {
                    if (player.currentTeam != 0UL)
                    {
                        RelationshipManager.PlayerTeam current = RelationshipManager.Instance.FindTeam(player.currentTeam);
                        current.RemovePlayer(player.userID);
                    }
                    team.AddPlayer(player);

                    clans[ClanTag(memberId)].Add(player.userID);

                    if (IsAnOwner(player))
                    {
                        team.SetTeamLeader(player.userID);
                    }
                }
            }
        }
    public static void promote(ConsoleSystem.Arg arg)
    {
        BasePlayer source = arg.Player();

        if (source.currentTeam == 0UL)
        {
            return;
        }
        BasePlayer lookingAtPlayer = RelationshipManager.GetLookingAtPlayer(source);

        if (Object.op_Equality((Object)lookingAtPlayer, (Object)null) || lookingAtPlayer.IsDead() || (Object.op_Equality((Object)lookingAtPlayer, (Object)source) || (long)lookingAtPlayer.currentTeam != (long)source.currentTeam))
        {
            return;
        }
        RelationshipManager.PlayerTeam playerTeam = RelationshipManager.Instance.playerTeams[source.currentTeam];
        if (playerTeam == null || (long)playerTeam.teamLeader != (long)source.userID || Interface.CallHook("OnTeamPromote", (object)playerTeam, (object)lookingAtPlayer) != null)
        {
            return;
        }
        playerTeam.SetTeamLeader(lookingAtPlayer.userID);
    }
Exemplo n.º 5
0
        void Promote(BasePlayer player, string targetPlayer)
        {
            string msgPlayerNotFound = lang.GetMessage("PlayerNotFound", this, player.UserIDString); // Used more than once

            // Check if player is in team
            if (player.currentTeam == 0UL)
            {
                player.ChatMessage(lang.GetMessage("NotInTeam", this, player.UserIDString));
                return;
            }

            RelationshipManager.PlayerTeam aTeam = RelationshipManager.Instance.playerTeams[player.currentTeam];

            var aTarget = FindPlayersOnline(targetPlayer);

            // Check if player exists
            if (aTarget.Count <= 0)
            {
                player.ChatMessage(msgPlayerNotFound);
                return;
            }
            // Found multiple players
            if (aTarget.Count > 1)
            {
                player.ChatMessage(string.Format("{0}: {1}",
                                                 lang.GetMessage("MultiplePlayersFound", this, player.UserIDString),
                                                 string.Join(", ", aTarget.ConvertAll(p => p.displayName).ToArray())));
                return;
            }

            var theTarget = aTarget[0];

            // Null Check
            if (theTarget == null)
            {
                player.ChatMessage(msgPlayerNotFound);
                return;
            }
            // Check if target is player
            if (theTarget == player)
            {
                player.ChatMessage(lang.GetMessage("CannotPromoteYourself", this, player.UserIDString));
                return;
            }
            // Check if team leader
            if (aTeam.teamLeader != player.userID)
            {
                player.ChatMessage(lang.GetMessage("NotTeamLeader", this, player.UserIDString));
                return;
            }
            // Check if target is in player's team
            if (aTeam.teamID != theTarget.currentTeam)
            {
                player.ChatMessage(string.Format("{0} {1}",
                                                 aTarget[0].displayName,
                                                 lang.GetMessage("NotInYourTeam", this, player.UserIDString)));
                return;
            }
            // Promote target if all checks pass
            aTeam.SetTeamLeader(theTarget.userID);
            player.ChatMessage(string.Format("{0}: {1}",
                                             lang.GetMessage("Promoted", this, player.UserIDString),
                                             theTarget.displayName));
        }