Beispiel #1
0
        public bool LeaveSyn(Player aPlayer, bool aKickout, bool aSynchro)
        {
            Syndicate syn = aPlayer.Syndicate;

            // TODO destroy syn if player is leader

            aPlayer.Syndicate = null;
            Database.LeaveSyn(aPlayer.Name);

            lock (mMembers) { mMembers.Remove(aPlayer.UniqId); }

            if (aSynchro)
            {
                SynchroInfo(aPlayer, true);
            }

            if (aKickout)
            {
                Msg msg = new MsgTalk(
                    "SYSTEM", "ALLUSERS",
                    String.Format(StrRes.STR_KICKOUT, aPlayer.Name),
                    Channel.Syndicate, Color.White);
                World.BroadcastSynMsg(this, msg);
            }

            return(true);
        }
Beispiel #2
0
        public void Send(string szMsg, bool bSelf, ChatTone pTone = ChatTone.TOP_LEFT)
        {
            var pMsg = new MsgTalk(szMsg, pTone);

            if (bSelf)
            {
                m_pOwner.Send(pMsg);
            }
            foreach (var pRole in m_pPlayers.Values.Cast <Character>())
            {
                pRole.Send(pMsg);
            }
        }
        public void SetMsgInfo(UInt64 sGUID, string nickName, string msgInfo, MsgTalk talkState, int headID, bool islocal)
        {
            SGUID     = sGUID;
            NickName  = nickName;
            TalkState = talkState;
            HeadID    = headID;
            IChatInfo info = new IChatInfo();

            info.isLocalPlayer = islocal;
            info.msg           = msgInfo;
            info.head          = headID;
            info.SetNickName(nickName);
            info.TalkState = talkState;
            MsgInfo.Add(info);
        }
Beispiel #4
0
        public static void SynchroInfo(Player aPlayer, bool aAnnounce)
        {
            Msg msg = null;

            msg = new MsgSynAttrInfo(aPlayer.UniqId, aPlayer.Syndicate);
            aPlayer.Send(msg);

            msg = new MsgPlayer(aPlayer);
            World.BroadcastRoomMsg(aPlayer, msg, true);

            if (aAnnounce)
            {
                String words = "";
                if (aPlayer.Syndicate != null)
                {
                    var master = aPlayer.Syndicate.GetMasterSyn();
                    words = master.Announce;
                }

                msg = new MsgTalk("SYSTEM", "ALLUSERS", words, Channel.SynAnnounce, Color.White);
                aPlayer.Send(msg);
            }
        }
Beispiel #5
0
        /// <summary>
        /// Donate money to the syndicate.
        /// </summary>
        /// <param name="aPlayer">The member donating to the syndicate.</param>
        /// <param name="aMoney">The money to donate.</param>
        /// <returns>True on success, false otherwise.</returns>
        public Boolean Donate(Player aPlayer, UInt32 aMoney)
        {
            if (aMoney <= 0)
            {
                return(false);
            }

            if (aPlayer.Money < aMoney)
            {
                aPlayer.SendSysMsg(StrRes.STR_NOT_SO_MUCH_MONEY);
                return(false);
            }

            if (!IsMember(aPlayer.UniqId))
            {
                return(false);
            }

            Member member = GetMemberInfo(aPlayer.UniqId);

            aPlayer.Money  -= aMoney;
            Money          += aMoney;
            member.Proffer += aMoney;

            // TODO no longer manually update MsgUserAttrib
            aPlayer.Send(new MsgUserAttrib(aPlayer, aPlayer.Money, MsgUserAttrib.AttributeType.Money));

            Msg msg = new MsgTalk(
                "SYSTEM", "ALLUSERS",
                String.Format(StrRes.STR_DONATE, aPlayer.Name, aMoney),
                Channel.Syndicate, Color.White);

            World.BroadcastSynMsg(this, msg);

            SynchroInfo(aPlayer, false);
            return(true);
        }
 public void SetTalkState(MsgTalk talkState)
 {
     TalkState = talkState;
 }
Beispiel #7
0
        public bool Destroy()
        {
            lock (World.AllSyndicates)
            {
                if (World.AllSyndicates.ContainsKey(Id))
                {
                    Msg msg = null;

                    msg = new MsgTalk(
                        "SYSTEM", "ALLUSERS",
                        String.Format(StrRes.STR_SYN_DISBAND, Name),
                        Channel.GM, Color.White);
                    World.BroadcastMsg(msg);

                    msg = new MsgSyndicate((UInt16)Id, MsgSyndicate.Action.DestroySyn);
                    World.BroadcastMsg(msg);

                    Syndicate master = GetMasterSyn();
                    Player    player = null;

                    lock (mMembers)
                    {
                        List <Syndicate.Member> members = new List <Syndicate.Member>(mMembers.Values);
                        members.Add(mLeader);

                        foreach (Syndicate.Member member in members)
                        {
                            if (master == this)
                            {
                                if (World.AllPlayers.TryGetValue(member.Id, out player))
                                {
                                    LeaveSyn(player, false, true);
                                }
                                else
                                {
                                    Database.LeaveSyn(member.Name);
                                }
                            }
                            else
                            {
                                master.AddMember(player);
                            }
                        }
                    }

                    foreach (UInt16 allyId in Allies)
                    {
                        Syndicate ally = null;
                        if (World.AllSyndicates.TryGetValue(allyId, out ally))
                        {
                            if (ally.Allies.Contains(Id))
                            {
                                var allies = ally.Allies;
                                allies[allies.IndexOf(Id)] = 0;
                                ally.Allies = allies;

                                msg = new MsgSyndicate(Id, MsgSyndicate.Action.ClearAlly);
                                World.BroadcastSynMsg(ally, msg);
                            }
                        }
                    }

                    World.AllSyndicates.Remove(Id);
                    return(Database.Delete(this));
                }
            }

            return(false);
        }