コード例 #1
0
        public void Leave(L2Player player)
        {
            if (player.ObjID == LeaderID)
            {
                player.sendSystemMessage(239);//A clan leader cannot withdraw from their own clan.
                return;
            }

            e_ClanType type = isSubLeader(player.ObjID, new e_ClanType[] { e_ClanType.CLAN_KNIGHT1, e_ClanType.CLAN_KNIGHT2, e_ClanType.CLAN_KNIGHT3, e_ClanType.CLAN_KNIGHT4, e_ClanType.CLAN_KNIGHT5, e_ClanType.CLAN_KNIGHT6 });

            if (type != e_ClanType.None)
            {
                if (getClanMemberCount(type, player.ObjID) > 0)
                {
                    player.sendMessage("You are leader of clan sub unit, and while there some members - you cant leave them.");
                    return;
                }
            }

            SystemMessage sm = new SystemMessage(223); //$s1 has withdrawn from the clan.

            sm.addPlayerName(player.Name);
            broadcastToOnline(sm);

            foreach (ClanMember cm in members)
            {
                if (cm.ObjID == player.ObjID)
                {
                    lock (members)
                        members.Remove(cm);

                    break;
                }
            }

            player.Clan      = null;
            player.ClanId    = 0;
            player.ClanPrivs = 0;
            player.ClanType  = 0;

            player.Title = "";
            player.sendSystemMessage(197);//You have withdrawn from the clan.
            player.sendPacket(new PledgeShowMemberListDeleteAll());
            player.broadcastUserInfo();

            player.setPenalty_ClanJoin(DateTime.Now.AddHours(24), false);
            player.sendSystemMessage(232); //+1day

            // player.updateDb();
        }
コード例 #2
0
        public e_ClanType isSubLeader(int ObjID, e_ClanType[] types)
        {
            e_ClanType ret = e_ClanType.None;

            foreach (e_ClanType ct in types)
            {
                switch (ct)
                {
                case e_ClanType.CLAN_KNIGHT1: if (Knights_1 != null && Knights_1.LeaderID == ObjID)
                    {
                        ret = ct;
                    }
                    break;

                case e_ClanType.CLAN_KNIGHT2: if (Knights_2 != null && Knights_2.LeaderID == ObjID)
                    {
                        ret = ct;
                    }
                    break;

                case e_ClanType.CLAN_KNIGHT3: if (Knights_1_Order1 != null && Knights_1_Order1.LeaderID == ObjID)
                    {
                        ret = ct;
                    }
                    break;

                case e_ClanType.CLAN_KNIGHT4: if (Knights_1_Order2 != null && Knights_1_Order2.LeaderID == ObjID)
                    {
                        ret = ct;
                    }
                    break;

                case e_ClanType.CLAN_KNIGHT5: if (Knights_2_Order1 != null && Knights_2_Order1.LeaderID == ObjID)
                    {
                        ret = ct;
                    }
                    break;

                case e_ClanType.CLAN_KNIGHT6: if (Knights_2_Order2 != null && Knights_2_Order2.LeaderID == ObjID)
                    {
                        ret = ct;
                    }
                    break;
                }
            }

            return(ret);
        }
コード例 #3
0
        public List <ClanMember> getClanMembers(e_ClanType type, int myself)
        {
            List <ClanMember> mems = new List <ClanMember>();

            foreach (ClanMember cm in members)
            {
                if (cm.ClanType == (short)type)
                {
                    if (myself != 0 && myself == cm.ObjID)
                    {
                        continue;
                    }

                    mems.Add(cm);
                }
            }

            return(mems);
        }
コード例 #4
0
        public byte getClanMemberCount(e_ClanType type, int myself)
        {
            byte cnt = 0;

            foreach (ClanMember cm in members)
            {
                if (cm.ClanType == (short)type)
                {
                    if (myself != 0 && myself == cm.ObjID)
                    {
                        continue;
                    }

                    cnt++;
                }
            }

            //  var x = from cm in members where cm.Type == type && cm.ObjID != myself let cnt2 = cnt+1 select cnt2;
            //  int cn = x.
            return(cnt);
        }
コード例 #5
0
        public byte MaxMembers(e_ClanType type)
        {
            byte val = 0;

            switch (type)
            {
            case e_ClanType.CLAN_ACADEMY:
            case e_ClanType.CLAN_KNIGHT1:
            case e_ClanType.CLAN_KNIGHT2:
                val = 20;
                break;

            case e_ClanType.CLAN_KNIGHT3:
            case e_ClanType.CLAN_KNIGHT4:
            case e_ClanType.CLAN_KNIGHT5:
            case e_ClanType.CLAN_KNIGHT6:
                val = 10;
                break;

            case e_ClanType.CLAN_MAIN:
                switch (Level)
                {
                case 0: val = 10; break;

                case 1: val = 15; break;

                case 2: val = 20; break;

                case 3: val = 30; break;

                default:
                    val = 40;
                    break;
                }
                break;
            }

            return(val);
        }
コード例 #6
0
 public PledgeShowMemberListAll(L2Clan clan, e_ClanType type)
 {
     this.clan = clan;
     this.type = type;
 }
コード例 #7
0
 public e_ClanSub(e_ClanType e_ClanType)
 {
     this.Type = e_ClanType;
     Enabled   = true;
 }