Exemplo n.º 1
0
        public void OnCommand(GameClient client, string[] args)
        {
            if (client.Player.Group != null && client.Player.Group.Leader != client.Player)
            {
                client.Out.SendMessage("You are not the leader of your group.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }

            if (IsSpammingCommand(client.Player, "invite"))
            {
                return;
            }

            string     targetName = string.Join(" ", args, 1, args.Length - 1);
            GamePlayer target;

            if (args.Length < 2)
            {             // Inviting by target
                if (client.Player.TargetObject == null || client.Player.TargetObject == client.Player)
                {
                    client.Out.SendMessage("You have not selected a valid player as your target.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (!(client.Player.TargetObject is GamePlayer))
                {
                    client.Out.SendMessage("You have not selected a valid player as your target.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                    return;
                }
                target = (GamePlayer)client.Player.TargetObject;
                if (!GameServer.ServerRules.IsAllowedToGroup(client.Player, target, false))
                {
                    return;
                }
            }
            else
            {             // Inviting by name
                GameClient targetClient = WorldMgr.GetClientByPlayerNameAndRealm(targetName, 0, true);
                if (targetClient == null)
                {
                    target = null;
                }
                else
                {
                    target = targetClient.Player;
                }
                if (target == null || !GameServer.ServerRules.IsAllowedToGroup(client.Player, target, true))
                {                 // Invalid target or realm restriction
                    client.Out.SendMessage("No players online with that name.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                    return;
                }
                if (target == client.Player)
                {
                    client.Out.SendMessage("You can't invite yourself.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                    return;
                }
            }

            if (target.Group != null)
            {
                client.Out.SendMessage("The player is still in a group.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }

            if (GameServer.Instance.Configuration.ServerType == eGameServerType.GST_PvP &&
                target.IsStealthed)
            {
                client.Out.SendMessage("You can't find the player around here.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }

            if (client.Account.PrivLevel > target.Client.Account.PrivLevel)
            {
                // you have no choice!

                if (client.Player.Group == null)
                {
                    Group group = new Group(client.Player);
                    GroupMgr.AddGroup(group, group);
                    group.AddMember(client.Player);
                    group.AddMember(target);
                }
                else
                {
                    client.Player.Group.AddMember(target);
                }

                client.Out.SendMessage("(GM) You have added " + target.Name + " to your group.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                target.Out.SendMessage("GM " + client.Player.Name + " has added you to " + client.Player.GetPronoun(1, false) + " group.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
            }
            else
            {
                client.Out.SendMessage("You have invited " + target.Name + " to join your group.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                target.Out.SendGroupInviteCommand(client.Player, client.Player.Name + " has invited you to join\n" + client.Player.GetPronoun(1, false) + " group. Do you wish to join?");
                target.Out.SendMessage(client.Player.Name + " has invited you to join " + client.Player.GetPronoun(1, false) + " group.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
            }
        }
Exemplo n.º 2
0
        public void OnCommand(GameClient client, string[] args)
        {
            if (args.Length == 1)
            {
                DisplaySyntax(client);
                return;
            }

            if (!client.Player.InHouse)
            {
                client.Out.SendMessage("You need to be in your House to use this command", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }

            switch (args[1])
            {
            case "player":
            {
                if (args.Length == 2)
                {
                    return;
                }

                if (client.Player.Name == args[2])
                {
                    return;
                }

                GameClient targetClient = WorldMgr.GetClientByPlayerNameAndRealm(args[2], 0, true);
                if (targetClient == null)
                {
                    client.Out.SendMessage("No players online with that name.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (client.Player.CurrentHouse.AddPermission(targetClient.Player, PermissionType.Player, HousingConstants.MinPermissionLevel))
                {
                    client.Out.SendMessage("You added " + targetClient.Player.Name + ".", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                }

                break;
            }

            case "account":
            {
                if (args.Length == 2)
                {
                    return;
                }

                if (client.Player.Name == args[2])
                {
                    return;
                }

                GameClient targetClient = WorldMgr.GetClientByPlayerNameAndRealm(args[2], 0, true);
                if (targetClient == null)
                {
                    client.Out.SendMessage("No players online with that name.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (client.Player.CurrentHouse.AddPermission(targetClient.Player, PermissionType.Account, HousingConstants.MinPermissionLevel))
                {
                    client.Out.SendMessage("You added " + targetClient.Player.Name + "'s account.", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                }

                break;
            }

            case "guild":
            {
                if (args.Length == 2)
                {
                    return;
                }

                Guild targetGuild = GuildMgr.GetGuildByName(args[2]);
                if (targetGuild == null)
                {
                    client.Out.SendMessage("A guild with that name was not found. Don't forget to put longer names in quotes eg: \"My Guild\".", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                    return;
                }

                if (client.Player.CurrentHouse.AddPermission(targetGuild.Name, PermissionType.Guild, HousingConstants.MinPermissionLevel))
                {
                    client.Out.SendMessage("You added " + targetGuild.Name + ".", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                }

                break;
            }

            case "all":
            {
                if (client.Player.CurrentHouse.AddPermission("All", PermissionType.All, HousingConstants.MinPermissionLevel))
                {
                    client.Out.SendMessage("You added everybody!", eChatType.CT_System, eChatLoc.CL_SystemWindow);
                }

                break;
            }

            default:
                DisplaySyntax(client);
                break;
            }
        }