示例#1
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;
        }
示例#2
0
 public void removeGuild(Guild guild)
 {
     guildList.Remove(guild);
 }
示例#3
0
 public void addGuild(Guild guild)
 {
     guildList.Add(guild);
 }
示例#4
0
 public void setGuild(Guild guild)
 {
     this.guild = guild;
 }