Exemplo n.º 1
0
        public bool SendPromotionInfoToClient()
        {
            if (GuildId == 0)
            {
                return(false);
            }

            var guild = GuildManager.GetGuild(GuildId);

            if (guild == null)
            {
                return(false);
            }

            var msg = GuildPackets.Create(GuildAction.PromoteInfo, 0, 0);

            msg.Strings.AddString(guild.GetRankString(GuildRank.GuildLeader));
            msg.Strings.AddString(guild.GetRankString(GuildRank.DeputyLeader));
            //msg.Strings.AddString("980 0 1 0 650");
            //msg.Strings.AddString("880 0 1 0 320");
            //msg.Strings.AddString("840 0 1 0 270");
            //msg.Strings.AddString("680 0 1 0 100");
            //msg.Strings.AddString("602 0 0 0 0");
            _client.Send(msg);

            return(true);
        }
Exemplo n.º 2
0
        public bool RemoveAlly(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(false);
            }

            var guildId = GuildId;

            if (guildId == 0)
            {
                return(false);
            }

            var guild = GuildManager.GetGuild(guildId);

            if (guild == null)
            {
                return(false);
            }

            if (Rank != GuildRank.GuildLeader)
            {
                return(false);
            }

            var targetGuild = GuildManager.GetGuildByName(name);

            if (targetGuild == null)
            {
                return(false);
            }
            targetGuild = targetGuild.MasterGuild;

            for (var i = 0; i < 5; i++)
            {
                var targetId = guild.GetAlly(i);
                if (targetId == targetGuild.Id)
                {
                    guild.SetAlly(i, 0);
                    guild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.ClearAlly, targetId, 0));

                    foreach (var member in guild.Members())
                    {
                    }
                    guild.BroadcastMessage(string.Format("Guild Leader {0} has removed Guild {1} from the allied list!", guild.LeaderName, targetGuild.Name));
                    targetGuild.BroadcastMessage(string.Format("Guild {1}`s Guild Leader {0} has removed our Guild from the allied list!", guild.LeaderName, guild.Name));
                }

                var targetguildId = targetGuild.GetAlly(i);
                if (targetguildId == guild.Id)
                {
                    targetGuild.SetAlly(i, 0);
                    targetGuild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.ClearAlly, guild.Id, 0));
                }
            }

            return(true);
        }
Exemplo n.º 3
0
        public bool DemoteMember(string name, GuildRank rank = GuildRank.Member)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(false);
            }

            var guildId = _client.GuildId;

            if (guildId == 0)
            {
                return(false);
            }

            var guild = GuildManager.GetGuild(guildId);

            if (guild == null)
            {
                return(false);
            }

            if (_client.GuildRank != GuildRank.GuildLeader)
            {
                return(false);
            }

            var target = PlayerManager.GetUser(name);

            if (target == null)
            {
                _client.SendSysMessage("The player is offline!");
                return(false);
            }

            if (_client.UID == target.UID)
            {
                return(false);
            }

            var targetGuildId = target.GuildId;

            if (targetGuildId == 0 || targetGuildId != guildId)
            {
                return(false);
            }

            if (!target.GuildAttribute.SetRank(GuildRank.Member))
            {
                return(false);
            }

            guild.BroadcastMessage(string.Format("{0} was discharged from the Deputy Leader position.", name, GuildRank.DeputyLeader));
            guild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.Unknown41, 990, 0));

            return(true);
        }
        public void SendInfoToClient(Player client)
        {
            if (client == null)
            {
                return;
            }

            SendEnemyList(client);
            SendAllyList(client);

            var guildId = Id;

            client.Send(GuildPackets.Create(GuildAction.SetSyndicate, guildId, FealtyGuild));

            // TODO?
        }
Exemplo n.º 5
0
        public static void UpdateNews(MartialClient c, InPacket p)
        {
            if (c.getAccount().activeCharacter == null)
            {
                Logger.LogCheat(Logger.HackTypes.NullActive, c, "Hooked guild.Refresh with null of activeCharacter");
                c.Close();
                return;
            }

            Character chr = c.getAccount().activeCharacter;

            if (chr.getGuild() == null)
            {
                Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild news with char that ain't in guild");
                c.Close();
                return;
            }

            Guild guild = chr.getGuild();

            if (chr.getGuild() == null)
            {
                Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild news with char that ain't in guild");
                c.Close();
                return;
            }

            GuildMember gMember = guild.findGuildMember(chr.getuID());

            if (gMember.getGuildRank() < 4)            // aint master?
            {
                Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guildManagement with char that ain't a guild master");
                c.Close();
                return;
            }

            string news = MiscFunctions.obscureString(p.ReadString(195));

            guild.guildNews = news;

            guild.sendToGuildMembers(GuildPackets.getRefreshNewsGuildPacket(news));
        }
        public void SetEnemy(int index, uint targetId, bool update = true)
        {
            _enemies[index] = targetId;

            if (update)
            {
                Enemy0 = _enemies[0];
                Enemy1 = _enemies[1];
                Enemy2 = _enemies[2];
                Enemy3 = _enemies[3];
                Enemy4 = _enemies[4];
                SaveInfo();
            }

            SynchroInfo();

            if (targetId != 0)
            {
                BroadcastGuildMsg(GuildPackets.Create(GuildAction.SetEnemy, targetId, 0));
            }
        }
        public void SetAlly(int index, uint targetId, bool update = true)
        {
            _allies[index] = targetId;

            if (update)
            {
                Ally0 = _allies[0];
                Ally1 = _allies[1];
                Ally2 = _allies[2];
                Ally3 = _allies[3];
                Ally4 = _allies[4];
                SaveInfo();
            }

            SynchroInfo();

            if (targetId != 0)
            {
                BroadcastGuildMsg(GuildPackets.Create(GuildAction.SetAlly, targetId, 0));
            }
        }
Exemplo n.º 8
0
        public static void CreateGuild(MartialClient c, InPacket p)
        {
            if (c.getAccount().activeCharacter == null)
            {
                Logger.LogCheat(Logger.HackTypes.NullActive, c, "Hooked guild.Refresh with null of activeCharacter");
                c.Close();
                return;
            }

            Character chr = c.getAccount().activeCharacter;

            Guild guild = chr.getGuild();

            byte   managementType = p.ReadByte();           // 0 - disband; 1 - create; 2 - donate; 3 - hat
            byte   managementArg  = p.ReadByte();           // 1 - bang, 2 - mun, 3 - pa, 4 - nohing, 5 - dan, 6 - gak, 7 - gyo, 8 - gung
            string managementName = MiscFunctions.obscureString(p.ReadString(18));

            switch (managementType)
            {
            case 0:
            {
                if (guild == null)
                {
                    Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild disband with char that ain't in guild");
                    c.Close();
                    return;
                }

                guild.Delete();
                WMap.Instance.removeGuild(guild);
                foreach (GuildMember i in guild.guildMembers)
                {
                    Character tmp = i.getOnlineCharacter();
                    tmp.getAccount().mClient.WriteRawPacket(GuildPackets.quitGuildForInternal(tmp));
                    WMap.Instance.getGrid(tmp.getMap()).sendTo3x3Area(tmp, tmp.getArea(), GuildPackets.quitGuildForExternals(tmp));
                    tmp.setGuild(null);
                    i.setOnlineCharacter(null);
                }
                return;
            }

            case 1:
            {
                if (guild != null)
                {
                    Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild create with char that is in guild");
                    c.Close();
                    return;
                }

                Guild newGuild = new Guild(managementArg, managementName);
                c.WriteRawPacket(GuildPackets.createGuildResponse(chr, managementType, managementArg, managementName));
                WMap.Instance.getGrid(chr.getMap()).sendTo3x3Area(chr, chr.getArea(), GuildPackets.extCharGuild(chr));
                return;
            }

            case 2:
            {
                if (guild == null)
                {
                    Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild donate with char that ain't in guild");
                    c.Close();
                    return;
                }


                return;
            }

            case 3:
            {
                if (guild == null)
                {
                    Logger.LogCheat(Logger.HackTypes.Guild, c, "Hooked guild hat change with char that ain't in guild");
                    c.Close();
                    return;
                }

                guild.guildHat = managementArg;
                WMap.Instance.getGrid(chr.getMap()).sendTo3x3Area(chr, chr.getArea(), GuildPackets.extCharGuild(chr));
                c.WriteRawPacket(GuildPackets.refreshGuild(chr));
                return;
            }
            }
            return;
        }
Exemplo n.º 9
0
        public bool PromoteMember(string name, GuildRank rank)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(false);
            }

            var guildId = GuildId;

            if (guildId == 0)
            {
                return(false);
            }

            var guild = GuildManager.GetGuild(guildId);

            if (guild == null)
            {
                return(false);
            }

            if (_client.GuildRank != GuildRank.GuildLeader)
            {
                return(false);
            }

            if (guild.DeputyLeaders >= 5)
            {
                _client.SendSysMessage("All the posts have been occupied!");
                return(false);
            }

            var target = PlayerManager.GetUser(name);

            if (target == null)
            {
                _client.SendSysMessage("The player is offline!");
                return(false);
            }

            if (_client.UID == target.UID)
            {
                return(false);
            }

            var targetGuildId = target.GuildId;

            if (targetGuildId == 0 || targetGuildId != guildId)
            {
                return(false);
            }

            if (!target.GuildAttribute.SetRank(rank))
            {
                return(false);
            }

            guild.BroadcastMessage(string.Format("{0} has appointed {1} as Deputy Leader.", _client.Name, name, rank));
            guild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.Unknown39, (ushort)rank, 0));

            return(true);
        }
Exemplo n.º 10
0
        public bool AddAlly(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(false);
            }

            var guildId = GuildId;

            if (guildId == 0)
            {
                return(false);
            }

            var guild = GuildManager.GetGuild(guildId);

            if (guild == null)
            {
                return(false);
            }

            if (Rank != GuildRank.GuildLeader)
            {
                return(false);
            }

            var targetGuild = GuildManager.GetGuildByName(name);

            if (targetGuild == null || targetGuild.Id == guildId)
            {
                return(false);
            }
            targetGuild = targetGuild.MasterGuild;

            if (guild.IsEnemied(targetGuild.Id))
            {
                _client.SendSysMessage("You must make peace with Guild " + name + " before you ally.");
                return(false);
            }

            var targetLeader = PlayerManager.GetUser(targetGuild.LeaderId);

            if (targetLeader == null)
            {
                _client.SendSysMessage("Target guild`s leader is offline!");
                return(false);
            }

            if (!targetLeader.FetchApply(ApplyType.AllyGuild, _client.UID))
            {
                _client.SetApply(ApplyType.AllyGuild, targetLeader.UID);
                var msgApply = GuildPackets.Create(GuildAction.Unknown16, guildId, 0);
                msgApply.Strings.AddString(guild.Name);
                targetLeader.Send(msgApply);
                return(true);
            }

            var index1 = -1;

            for (var i = 0; i < 5; i++)
            {
                var targetId = guild.GetAlly(i);
                if (targetId == 0 || GuildManager.GetGuild(targetId) == null || targetId == targetGuild.Id)
                {
                    index1 = i;
                }
            }

            if (index1 == -1)
            {
                _client.SendSysMessage("Allies List is full!");
                return(false);
            }

            var index2 = -1;

            for (var i = 0; i < 5; i++)
            {
                var targetId = targetGuild.GetAlly(i);
                if (targetId == 0 || GuildManager.GetGuild(targetId) == null || targetId == guild.Id)
                {
                    index2 = i;
                }
            }

            if (index2 == -1)
            {
                _client.SendSysMessage("The target's Ally List is full!");
                return(false);
            }

            guild.SetAlly(index1, targetGuild.Id);
            targetGuild.SetAlly(index2, guild.Id);

            guild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.SetAlly, targetGuild.Id, 0));
            targetGuild.BroadcastGuildMsg(GuildPackets.Create(GuildAction.SetAlly, guild.Id, 0));

            // update allies page
            //guild.SynchroInfo();
            //targetGuild.SynchroInfo();

            // broadcast guild message
            guild.BroadcastMessage(string.Format("Guild Leader {0} has added Guild {1} to the allies list!", guild.LeaderName, targetGuild.Name));
            targetGuild.BroadcastMessage(string.Format("Guild Leader {0} has added Guild {1} to the allies list!", targetGuild.LeaderName, guild.Name));

            return(true);
        }
Exemplo n.º 11
0
        public override void Run(Game_Server.Player _client, ushort _linkback)
        {
            Responses = new List <NpcDialogPacket>();
            AddAvatar();
            switch (_linkback)
            {
            case 0:
                if (_client.GuildId == 0)
                {
                    AddText("Greetings! I am the guild director, in charge of administrating and managing");
                    AddText(" guilds. What business do you have with me?");
                    AddOption("Create a guild", 1);
                    AddOption("Inquire about a guild.", 3);
                }
                else if (_client.GuildRank == Enum.GuildRank.GuildLeader)
                {
                    AddText("Greetings! I am the guild director, in charge of administrating and managing");
                    AddText(" guilds. What business do you have with me?");
                    AddOption("Add Enemy", 14);
                    AddOption("Add Ally", 15);
                    AddOption("Remove Enemy", 16);
                    AddOption("Remove Ally", 17);
                    AddOption("Promote Member", 18);
                    AddOption("Demote Member", 19);
                    AddOption("Disband Guild", 20);
                    AddOption("More Options", 21);
                    // AddOption("Inquire about a guild.", 3);
                }
                else
                {
                    AddText("Greetings! I am the guild director, in charge of administrating and managing");
                    AddText(" guilds. What business do you have with me?");
                    AddOption("Inquire about a guild.", 3);
                }
                break;

            case 1:
                if (_client.Level >= 90)
                {
                    AddText("Please enter the name for your guild");
                    AddInput("Name", 6);
                }
                else
                {
                    AddText("Sorry, you cannot create a guild before you reach level 90. Please train");
                    AddText(" harder.");
                    AddOption("I see.", 255);
                }
                break;

            case 2:
            {
                AddText("Disbanding your guild is a decision not to be taken lightly. When armies fall");
                AddText(" apart, a period of chaos ensues?");
                AddOption("I decide to disband.", 4);
                AddOption("I changed my mind.", 255);
            }
            break;

            case 3:

                AddText("Which guild would you like to inquire about?");
                AddOption("Let me think it over", 255);
                break;

            case 4:

                _client.GuildAttribute.DisbandGuild();
                break;

            case 6:

                if (_client.Money < 1000000)
                {
                    AddText("I'm sorry, players must have at least 1 million gold to create a guild");
                    AddOption("I'll come back", 255);
                }

                else
                {
                    bool GuildCheck = true;
                    var  GuildList  = Database.ServerDatabase.Context.Guilds.GetAll();
                    foreach (var guild in GuildList)
                    {
                        if (guild.Name.ToLower() == _client.NpcInputBox.ToLower())
                        {
                            GuildCheck = false; break;
                        }
                    }

                    if (GuildCheck == true)
                    {
                        if (_client.GuildAttribute.CreateGuild(_client.NpcInputBox, 90, 1000000, 500000))
                        {
                            AddText("I have set up your guild successfully!");
                            AddOption("Thanks!", 255);
                        }
                    }
                    else
                    {
                        AddText("There was an error setting up your guild. The name may be taken or you may not pass the requirements");
                        AddOption("I'll try again", 255);
                    }
                }
                break;

            case 14:    //Add Enemy
                AddText("Please enter the name for the guild you wish to enemy");
                AddInput("Enemy Name", 7);

                break;

            case 7:    //Confirm Enemy
                String guildname = _client.NpcInputBox;

                var targetguild = GuildManager.GetGuildByName(guildname);
                if (targetguild == null)
                {
                    AddText("This guild name does not exist.");
                    AddOption("Thanks.", 255);
                    break;
                }

                _client.GuildAttribute.AddEnemy(guildname);

                AddText("And the war begins...");
                AddOption("We will win!", 255);
                break;

            case 15:    //Add Ally
                AddText("Please enter the name for the guild you wish to ally");
                AddInput("Ally Name", 9);
                break;

            case 9:    //Confirm Ally
                String allyguild = _client.NpcInputBox;

                var guildtorequest = GuildManager.GetGuildByName(allyguild);
                if (guildtorequest == null)
                {
                    AddText("This guild name does not exist.");
                    AddOption("Thanks.", 255);
                    break;
                }

                _client.GuildAttribute.AddAlly(allyguild);


                break;

            case 16:    //Remove Enemy

                AddText("Choose the enemy you wish to make peace with...");
                AddInput("Make peace with...", 8);
                break;

            case 8:    //Confirm remove enemy
                var enemyguild = GuildManager.GetGuildByName(_client.NpcInputBox);

                var success = _client.GuildAttribute.RemoveEnemy(_client.NpcInputBox);
                if (success)
                {
                    foreach (var member in _client.Guild.Members())
                    {
                        member.Send(GuildPackets.Create(Enum.GuildAction.ClearEnemy, enemyguild.Id, enemyguild.MasterGuildId));
                        member.Guild.SendInfoToClient(member);
                    }
                    AddText("And the land knows peace once again.");
                    AddOption("Thank you.", 255);
                }
                else
                {
                    AddText("You are not enemied with this guild.");
                    AddOption("My mistake.", 255);
                }
                break;

            case 17:    //Remove Ally
                AddText("Choose the Ally you wish to remove from your Allies");
                AddInput("Remove...", 10);
                break;

            case 10:    //Confirm Remove Ally
                String allyname = _client.NpcInputBox;

                var alliedguild = GuildManager.GetGuildByName(allyname);
                if (alliedguild == null)
                {
                    AddText("This guild name does not exist.");
                    AddOption("Thanks.", 255);
                    break;
                }

                _client.GuildAttribute.RemoveAlly(allyname);

                AddText("And so it is...");
                AddOption("Thanks.", 255);
                break;

            case 18:    //Promote
                AddText("What is the name of the player you wish to promote?");
                AddInput("Their name is...", 11);
                break;

            case 11:    //Confirm Promote
                String name = _client.NpcInputBox;

                if (_client.GuildRank != Enum.GuildRank.GuildLeader)
                {
                    AddText("You are not the Guild Leader.");
                    AddOption("Thanks.", 255);
                    break;
                }

                if (_client.GuildAttribute.PromoteMember(name, Enum.GuildRank.DeputyLeader) == true)
                {
                    AddText("They have been promoted.");
                    AddOption("Thank you.", 255);
                }
                else
                {
                    AddText("They could not be promoted...");
                    AddOption("Thanks anyway", 255);
                }

                break;

            case 19:    //Demote
                AddText("What is the name of the player you wish to demote?");
                AddInput("Their name is...", 12);
                break;

            case 12:    //Confirm Demote
                string demotename = _client.NpcInputBox;

                if (_client.GuildRank != Enum.GuildRank.GuildLeader)
                {
                    AddText("You are not the Guild Leader.");
                    AddOption("Thanks.", 255);
                    break;
                }

                if (_client.GuildAttribute.DemoteMember(demotename, Enum.GuildRank.Member) == true)
                {
                    AddText("They have been demoted.");
                    AddOption("Thank you.", 255);
                }
                else
                {
                    AddText("They could not be demoted...");
                    AddOption("Thanks anyway", 255);
                }
                break;

            case 20:    //Disband
                AddText("Are you sure you wish to disband?");
                AddOption("I am sure.", 13);
                break;

            case 13:    //Confirm Disband
                if (_client.GuildRank != Enum.GuildRank.GuildLeader)
                {
                    AddText("You are not the Guild Leader");
                    AddOption("Oops.", 13);
                }
                else
                {
                    _client.GuildAttribute.DisbandGuild();
                }
                break;

            case 21:    //More Options
                //TODO    AddOption("Create branch", 22);
                //TODO    AddOption("Destroy branch", 23);

                AddOption("Back...", 0);


                break;
            }
            AddFinish();
            Send();
        }