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); }
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); }
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); } }
/// <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; }
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); }