Ejemplo n.º 1
0
 public bool Create(DbUser dbUser, DbFamilyMember obj)
 {
     m_dbObj = obj;
     Name    = dbUser.Name;
     Level   = dbUser.Level;
     return(true);
 }
Ejemplo n.º 2
0
        public bool Create(Character pUser)
        {
            m_dbObj = new DbFamilyMember
            {
                FamilyIdentity = m_pFamily.Identity,
                Identity       = pUser.Identity,
                JoinDate       = (uint)UnixTimestamp.Timestamp(),
                Position       = (byte)FamilyRank.MEMBER
            };
            Save();

            Name  = pUser.Name;
            Level = pUser.Level;

            return(true);
        }
Ejemplo n.º 3
0
        public bool AppendMember(Character pLeader, Character pTarget)
        {
            if (pTarget.Family != null)
            {
                pLeader.Send(ServerString.STR_FAMILY_TARGET_ALREADY_HAVE_FAMILY);
                return(false);
            }

            if (pTarget.Level < 50)
            {
                pLeader.Send(ServerString.STR_FAMILY_JOIN_LOW_LEVEL);
                return(false);
            }

            if (MembersCount >= 6)
            {
                pLeader.Send(ServerString.STR_FAMILY_FULL);
                return(false);
            }

            FamilyRank pPos = FamilyRank.MEMBER;

            if (pTarget.Mate != "None")
            {
                DbUser pUser = Database.Characters.SearchByName(pTarget.Mate);
                if (pUser != null)
                {
                    DbFamilyMember dbSpouseMember = Database.FamilyMemberRepository.FetchByUser(pUser.Identity);
                    if (dbSpouseMember != null && // has a clan
                        dbSpouseMember.FamilyIdentity != Identity && // not this one
                        dbSpouseMember.Position != 11)    // is core member or leader
                    {
                        pLeader.Send(ServerString.STR_FAMILY_SPOUSE_CANTDO);
                        return(false);
                    }
                    if (dbSpouseMember != null && // has a clan
                        dbSpouseMember.FamilyIdentity == Identity && // is this clan
                        dbSpouseMember.Position != 11)    // is core member or leader
                    {
                        pPos = FamilyRank.SPOUSE;
                    }
                    else if (dbSpouseMember == null)
                    {
                        FamilyMember pSpouse = new FamilyMember(this);

                        if (!pSpouse.Create(pUser, new DbFamilyMember
                        {
                            FamilyIdentity = Identity,
                            Identity = pUser.Identity,
                            JoinDate = (uint)UnixTimestamp.Timestamp(),
                            Money = 0,
                            Position = (byte)FamilyRank.SPOUSE
                        }) || !Members.TryAdd(pSpouse.Identity, pSpouse))
                        {
                            return(false);
                        }

                        Client pClientSpouse;
                        if (pSpouse.IsOnline && ServerKernel.Players.TryGetValue(pSpouse.Identity, out pClientSpouse))
                        {
                            pClientSpouse.Character.Family         = this;
                            pClientSpouse.Character.FamilyMember   = pSpouse;
                            pClientSpouse.Character.FamilyIdentity = Identity;
                            pClientSpouse.Character.FamilyPosition = pSpouse.Position;
                            pClientSpouse.Character.FamilyName     = Name;
                            pClientSpouse.Character.SetNames();
                            SendFamily(pClientSpouse.Character);
                            SendRelation(pClientSpouse.Character);
                        }
                    }
                    else // ???
                    {
                        return(false);
                    }
                }
            }

            FamilyMember pMember = new FamilyMember(this);

            if (!pMember.Create(pTarget))
            {
                return(false);
            }
            pMember.Position = pPos;
            Members.TryAdd(pMember.Identity, pMember);

            pTarget.Family         = this;
            pTarget.FamilyMember   = pMember;
            pTarget.FamilyIdentity = Identity;
            pTarget.FamilyName     = Name;
            pTarget.FamilyPosition = pMember.Position;
            pTarget.SetNames();
            SendFamily(pTarget);
            SendRelation(pTarget);
            return(true);
        }