public bool CanAddMarriageGoodWill(GameClient client) { //功能未开启 if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { return(false); } //看看是不是情侣 if (client.ClientData.MyMarriageData.byMarrytype == -1) { return(false); } sbyte tmpGoodwilllv = client.ClientData.MyMarriageData.byGoodwilllevel; sbyte tmpGoodwillstar = client.ClientData.MyMarriageData.byGoodwillstar; //加值前先检查当前阶级是否已达上限 到达上限不加 if (tmpGoodwilllv == byMaxGoodwillLv && tmpGoodwillstar == byMaxGoodwillStar) { return(false); } return(true); }
public void UpdateRingAttr(GameClient client, bool bNeedUpdateSpouse = false, bool bIsLogin = false) { if (MarryLogic.IsVersionSystemOpenOfMarriage()) { if (-1 != client.ClientData.MyMarriageData.nRingID) { if (-1 != client.ClientData.MyMarriageData.byMarrytype && -1 != client.ClientData.MyMarriageData.nSpouseID) { GameClient Spouseclient = GameManager.ClientMgr.FindClient(client.ClientData.MyMarriageData.nSpouseID); MarriageData SpouseMarriageData; if (null != Spouseclient) { SpouseMarriageData = Spouseclient.ClientData.MyMarriageData; } else { string tcpstring = string.Format("{0}", client.ClientData.MyMarriageData.nSpouseID); SpouseMarriageData = Global.sendToDB <MarriageData, string>(10186, tcpstring, client.ServerId); } if (SpouseMarriageData != null && -1 != SpouseMarriageData.nRingID) { EquipPropItem myringitem = GameManager.EquipPropsMgr.FindEquipPropItem(client.ClientData.MyMarriageData.nRingID); EquipPropItem tmpmyringitem = new EquipPropItem(); EquipPropItem spouseringitem = GameManager.EquipPropsMgr.FindEquipPropItem(SpouseMarriageData.nRingID); EquipPropItem tmpspouseringitem = new EquipPropItem(); for (int i = 0; i < tmpmyringitem.ExtProps.Length; i++) { tmpmyringitem.ExtProps[i] = this.RingAttrJiSuan(client.ClientData.MyMarriageData.byGoodwilllevel, client.ClientData.MyMarriageData.byGoodwillstar, myringitem.ExtProps[i]); tmpspouseringitem.ExtProps[i] = this.RingAttrJiSuan(SpouseMarriageData.byGoodwilllevel, SpouseMarriageData.byGoodwillstar, spouseringitem.ExtProps[i]); tmpmyringitem.ExtProps[i] += tmpspouseringitem.ExtProps[i] * this.dOtherRingmodulus; } client.ClientData.PropsCacheManager.SetExtProps(new object[] { PropsSystemTypes.MarriageRing, tmpmyringitem.ExtProps }); if (!bIsLogin) { GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); GameManager.ClientMgr.NotifyOthersLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, true, false, 7); } if (bNeedUpdateSpouse) { if (null != Spouseclient) { this.UpdateRingAttr(Spouseclient, false, false); } } } } } } }
public MarryPartyResult MarryPartyCancel(GameClient client) { if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { return(MarryPartyResult.NotOpen); } MarryPartyData partyData = m_MarryPartyDataCache.GetParty(client.ClientData.MyMarriageData.nSpouseID); if (partyData != null) { return(MarryPartyResult.NotOriginator); } return(MarryPartyRemove(client.ClientData.RoleID, false, client)); }
public bool CanAddMarriageGoodWill(GameClient client) { bool result; if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { result = false; } else if (client.ClientData.MyMarriageData.byMarrytype == -1) { result = false; } else { sbyte tmpGoodwilllv = client.ClientData.MyMarriageData.byGoodwilllevel; sbyte tmpGoodwillstar = client.ClientData.MyMarriageData.byGoodwillstar; result = (tmpGoodwilllv != this.byMaxGoodwillLv || tmpGoodwillstar != this.byMaxGoodwillStar); } return(result); }
public MarryPartyResult MarryPartyCancel(GameClient client) { MarryPartyResult result; if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { result = MarryPartyResult.NotOpen; } else { MarryPartyData partyData = this.m_MarryPartyDataCache.GetParty(client.ClientData.MyMarriageData.nSpouseID); if (partyData != null) { result = MarryPartyResult.NotOriginator; } else { result = this.MarryPartyRemove(client.ClientData.RoleID, false, client); } } return(result); }
/// <summary> /// 更新婚戒属性 /// bNeedUpdateSpouse 更新配偶戒指属性 /// </summary> public void UpdateRingAttr(GameClient client, bool bNeedUpdateSpouse = false, bool bIsLogin = false) { //功能未开启不增加婚戒属性 if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { return; } //看看是否有婚戒 if (-1 == client.ClientData.MyMarriageData.nRingID) { return; } //看看是不是结婚了 没结婚不会增加婚戒属性 if (-1 == client.ClientData.MyMarriageData.byMarrytype || -1 == client.ClientData.MyMarriageData.nSpouseID) { return; } //[bing] 如果发现配偶在线直接取数据 MarriageData SpouseMarriageData = null; GameClient Spouseclient = GameManager.ClientMgr.FindClient(client.ClientData.MyMarriageData.nSpouseID); if (null != Spouseclient) { SpouseMarriageData = Spouseclient.ClientData.MyMarriageData; } else { //取一下情侣的数据 需要情侣婚戒数据 string tcpstring = string.Format("{0}", client.ClientData.MyMarriageData.nSpouseID); SpouseMarriageData = Global.sendToDB <MarriageData, String>((int)TCPGameServerCmds.CMD_DB_GET_MARRY_DATA, tcpstring, client.ServerId); } //没有数据? 或者出错? if (null == SpouseMarriageData || -1 == SpouseMarriageData.nRingID) { return; } //结婚后,夫妻双方享受自己婚戒的BUFF最终属性,和对方婚戒的30%的最终属性 //先找到自己婚戒的最终属性 EquipPropItem myringitem = GameManager.EquipPropsMgr.FindEquipPropItem(client.ClientData.MyMarriageData.nRingID); EquipPropItem tmpmyringitem = new EquipPropItem(); //找到自己伴侣婚戒的最终属性 EquipPropItem spouseringitem = GameManager.EquipPropsMgr.FindEquipPropItem(SpouseMarriageData.nRingID); EquipPropItem tmpspouseringitem = new EquipPropItem(); //计算婚戒最终属性 for (int i = 0; i < tmpmyringitem.ExtProps.Length; ++i) { tmpmyringitem.ExtProps[i] = RingAttrJiSuan(client.ClientData.MyMarriageData.byGoodwilllevel, client.ClientData.MyMarriageData.byGoodwillstar, myringitem.ExtProps[i]); tmpspouseringitem.ExtProps[i] = RingAttrJiSuan(SpouseMarriageData.byGoodwilllevel, SpouseMarriageData.byGoodwillstar, spouseringitem.ExtProps[i]); tmpmyringitem.ExtProps[i] += tmpspouseringitem.ExtProps[i] * dOtherRingmodulus; } //更新属性 [bing] 因为现在只有一个婚戒 所以不要记ID了 mark client.ClientData.PropsCacheManager.SetExtProps(PropsSystemTypes.MarriageRing, /*client.ClientData.MyMarriageData.nRingID,*/ tmpmyringitem.ExtProps); if (false == bIsLogin) { // 通知客户端属性变化 GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); // 总生命值和魔法值变化通知(同一个地图才需要通知) GameManager.ClientMgr.NotifyOthersLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client); } //如果情侣在线可能需要更新情侣的婚戒属性 //取出情侣 if (true == bNeedUpdateSpouse) { if (null != Spouseclient) { UpdateRingAttr(Spouseclient, false); } } }
public MarryPartyResult MarryPartyCreate(GameClient client, int partyType, long startTime) { if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { return(MarryPartyResult.NotOpen); } MarryPartyConfigData configData = GetMarryPartyConfigData(partyType); if (null == configData) { return(MarryPartyResult.InvalidParam); } MarriageData marryData = client.ClientData.MyMarriageData; if (marryData.nSpouseID < 0 || marryData.byMarrytype < 0) { return(MarryPartyResult.NotMarry); } int husbandRoleID = 0; int wifeRoleID = 0; string husbandName = ""; string wifeName = ""; if (1 == marryData.byMarrytype) { husbandRoleID = client.ClientData.RoleID; husbandName = client.ClientData.RoleName; wifeRoleID = marryData.nSpouseID; wifeName = MarryLogic.GetRoleName(marryData.nSpouseID); } else { husbandRoleID = marryData.nSpouseID; husbandName = MarryLogic.GetRoleName(marryData.nSpouseID); wifeRoleID = client.ClientData.RoleID; wifeName = client.ClientData.RoleName; } // 必须先添加,以防夫妻重复举行婚宴。。。想不通为什么找我 MarryPartyData partyData = m_MarryPartyDataCache.AddParty(client.ClientData.RoleID, partyType, startTime, husbandRoleID, wifeRoleID, husbandName, wifeName); if (partyData == null) { return(MarryPartyResult.AlreadyRequest); } MarryPartyResult result = MarryPartyResult.Success; byte[] byteData = null; TCPProcessCmdResults dbResult = Global.RequestToDBServer3(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, (int)TCPGameServerCmds.CMD_DB_MARRY_PARTY_ADD, string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", client.ClientData.RoleID, partyType, startTime, husbandRoleID, wifeRoleID, husbandName, wifeName), out byteData, client.ServerId ); if (TCPProcessCmdResults.RESULT_FAILED == dbResult || null == byteData || byteData.Length <= 6) { result = MarryPartyResult.AlreadyRequest; } if (result == MarryPartyResult.Success) { // 检查举办所需金币是否足够 if (configData.PartyCost > Global.GetTotalBindTongQianAndTongQianVal(client)) { result = MarryPartyResult.NotEnoughMoney; } if (configData.PartyCost > 0) { // 扣除举办所需金币 if (Global.SubBindTongQianAndTongQian(client, configData.PartyCost, "举办婚宴") == false) { result = MarryPartyResult.NotEnoughMoney; } } } if (result != MarryPartyResult.Success) { if (dbResult != TCPProcessCmdResults.RESULT_FAILED) { try { Global.SendAndRecvData((int)TCPGameServerCmds.CMD_DB_MARRY_PARTY_REMOVE, string.Format("{0}", client.ClientData.RoleID), client.ServerId ); } catch (Exception) { } } m_MarryPartyDataCache.RemoveParty(client.ClientData.RoleID); return(result); } Int32 length = BitConverter.ToInt32(byteData, 0); MarryPartyData dbPartyData = DataHelper.BytesToObject <MarryPartyData>(byteData, 6, length - 2); m_MarryPartyDataCache.SetPartyTime(partyData, dbPartyData.StartTime); SendMarryPartyList(client, partyData); //lock (MarryPartyNPCShowMutex) //{ // if (MarryPartyNPCShow == false) // { // // TODO: add npc // MarryPartyNPCShow = true; // } //} return(result); }
public bool processCmdEx(GameClient client, int nID, byte[] bytes, string[] cmdParams) { if (nID == 870) { int nSelect = 0; try { nSelect = Global.SafeConvertToInt32(cmdParams[0]); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessMarryFuben", false, false); } int[] iRet = null; if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { iRet = new int[] { 6 }; client.sendCmd <int[]>(nID, iRet, false); } else { if (1 == nSelect) { iRet = new int[] { (int)this.GetMarriageInstanceState(client, null) }; } else if (2 == nSelect) { iRet = new int[] { (int)this.ClientEnterRoom(client) }; } else if (3 == nSelect) { iRet = new int[] { (int)this.ClientExitRoom(client) }; } else if (4 == nSelect) { iRet = new int[] { (int)this.ClientReady(client, Global.SafeConvertToInt32(cmdParams[1])) }; } else if (5 == nSelect) { iRet = new int[] { (int)this.ClientExitReady(client) }; } client.sendCmd <int[]>(nID, iRet, false); } } return(true); }
public MarryPartyResult MarryPartyJoin(GameClient client, int roleID) { MarryPartyResult result; if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { result = MarryPartyResult.NotOpen; } else { MarryPartyData partyData = this.m_MarryPartyDataCache.GetParty(roleID); if (partyData == null) { result = MarryPartyResult.PartyNotFound; } else if (partyData.StartTime > TimeUtil.NOW()) { result = MarryPartyResult.NotStart; } else { MarryPartyConfigData configData = this.GetMarryPartyConfigData(partyData.PartyType); if (null == configData) { result = MarryPartyResult.PartyNotFound; } else if (configData.JoinCost > Global.GetTotalBindTongQianAndTongQianVal(client)) { result = MarryPartyResult.NotEnoughMoney; } else { Dictionary <int, int> joinList = client.ClientData.MyMarryPartyJoinList; int targetPartyJoinCount = 0; int allPartyJoinCount = 0; bool remove = false; lock (joinList) { joinList.TryGetValue(roleID, out targetPartyJoinCount); foreach (KeyValuePair <int, int> kv in client.ClientData.MyMarryPartyJoinList) { allPartyJoinCount += kv.Value; } if (allPartyJoinCount >= this.MarryPartyPlayerMaxJoinCount) { return(MarryPartyResult.ZeroPlayerJoinCount); } if (targetPartyJoinCount >= configData.PlayerMaxJoinCount) { return(MarryPartyResult.ZeroPlayerJoinCount); } if (!this.m_MarryPartyDataCache.IncPartyJoin(roleID, configData.PartyMaxJoinCount, out remove)) { return(MarryPartyResult.ZeroPartyJoinCount); } targetPartyJoinCount++; byte[] byteData = null; TCPProcessCmdResults dbResult = Global.RequestToDBServer3(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, 10190, string.Format("{0}:{1}:{2}", roleID, client.ClientData.RoleID, targetPartyJoinCount), out byteData, client.ServerId); if (TCPProcessCmdResults.RESULT_FAILED == dbResult || byteData == null || byteData.Length <= 6) { this.m_MarryPartyDataCache.IncPartyJoinCancel(roleID); return(MarryPartyResult.ZeroPartyJoinCount); } joinList[roleID] = targetPartyJoinCount; } if (configData.JoinCost > 0) { if (!Global.SubBindTongQianAndTongQian(client, configData.JoinCost, "參予婚宴")) { return(MarryPartyResult.NotEnoughMoney); } } if (configData.RewardExp > 0) { GameManager.ClientMgr.ProcessRoleExperience(client, (long)configData.RewardExp, false, true, false, "none"); } if (configData.RewardShengWang > 0) { GameManager.ClientMgr.ModifyShengWangValue(client, configData.RewardShengWang, "婚宴奖励", false, true); } if (configData.RewardXingHun > 0) { GameManager.ClientMgr.ModifyStarSoulValue(client, configData.RewardXingHun, "婚宴奖励", false, true); } if (remove) { this.MarryPartyRemoveInternal(roleID, true, client, null); GoodsData goodData = Global.GetNewGoodsData(configData.RewardItem.GoodsID, configData.RewardItem.Binding); goodData.GCount = configData.JoinCost * configData.PartyMaxJoinCount / configData.GoodWillRatio / 2; List <GoodsData> goodList = new List <GoodsData>(); goodList.Add(goodData); string sMsg = GLang.GetLang(493, new object[0]); Global.UseMailGivePlayerAward3(roleID, goodList, GLang.GetLang(494, new object[0]), sMsg, 0, 0, 0); int spouseID = (roleID == partyData.HusbandRoleID) ? partyData.WifeRoleID : partyData.HusbandRoleID; Global.UseMailGivePlayerAward3(spouseID, goodList, GLang.GetLang(494, new object[0]), sMsg, 0, 0, 0); } this.SendMarryPartyJoinList(client); this.SendMarryPartyList(client, partyData, -1); result = MarryPartyResult.Success; } } } return(result); }
public MarryPartyResult MarryPartyCreate(GameClient client, int partyType, long startTime) { MarryPartyResult result2; if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { result2 = MarryPartyResult.NotOpen; } else { MarryPartyConfigData configData = this.GetMarryPartyConfigData(partyType); if (null == configData) { result2 = MarryPartyResult.InvalidParam; } else { MarriageData marryData = client.ClientData.MyMarriageData; if (marryData.nSpouseID < 0 || marryData.byMarrytype < 0) { result2 = MarryPartyResult.NotMarry; } else { int husbandRoleID; string husbandName; int wifeRoleID; string wifeName; if (1 == marryData.byMarrytype) { husbandRoleID = client.ClientData.RoleID; husbandName = client.ClientData.RoleName; wifeRoleID = marryData.nSpouseID; wifeName = MarryLogic.GetRoleName(marryData.nSpouseID); } else { husbandRoleID = marryData.nSpouseID; husbandName = MarryLogic.GetRoleName(marryData.nSpouseID); wifeRoleID = client.ClientData.RoleID; wifeName = client.ClientData.RoleName; } MarryPartyData partyData = this.m_MarryPartyDataCache.AddParty(client.ClientData.RoleID, partyType, startTime, husbandRoleID, wifeRoleID, husbandName, wifeName); if (partyData == null) { result2 = MarryPartyResult.AlreadyRequest; } else { MarryPartyResult result = MarryPartyResult.Success; byte[] byteData = null; TCPProcessCmdResults dbResult = Global.RequestToDBServer3(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, 10188, string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}", new object[] { client.ClientData.RoleID, partyType, startTime, husbandRoleID, wifeRoleID, husbandName, wifeName }), out byteData, client.ServerId); if (TCPProcessCmdResults.RESULT_FAILED == dbResult || byteData == null || byteData.Length <= 6) { result = MarryPartyResult.AlreadyRequest; } if (result == MarryPartyResult.Success) { if (configData.PartyCost > Global.GetTotalBindTongQianAndTongQianVal(client)) { result = MarryPartyResult.NotEnoughMoney; } if (configData.PartyCost > 0) { if (!Global.SubBindTongQianAndTongQian(client, configData.PartyCost, "举办婚宴")) { result = MarryPartyResult.NotEnoughMoney; } } } if (result != MarryPartyResult.Success) { if (dbResult != TCPProcessCmdResults.RESULT_FAILED) { try { Global.SendAndRecvData <string>(10189, string.Format("{0}", client.ClientData.RoleID), client.ServerId, 0); } catch (Exception) { } } this.m_MarryPartyDataCache.RemoveParty(client.ClientData.RoleID); result2 = result; } else { int length = BitConverter.ToInt32(byteData, 0); MarryPartyData dbPartyData = DataHelper.BytesToObject <MarryPartyData>(byteData, 6, length - 2); this.m_MarryPartyDataCache.SetPartyTime(partyData, dbPartyData.StartTime); this.SendMarryPartyList(client, partyData, -1); result2 = result; } } } } } return(result2); }
/// <summary> /// 对方回复求婚 /// </summary> public static MarryResult MarryReply(GameClient client, int sourceID, int accept) { if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { return(MarryResult.NotOpen); } if (client.ClientData.MyMarriageData.byMarrytype > 0) { return(MarryResult.SelfMarried); } GameClient sourceClient = GameManager.ClientMgr.FindClient(sourceID); if (sourceClient == null) { return(MarryResult.ApplyTimeout); } if (sourceClient.ClientData.MyMarriageData.byMarrytype > 0) { return(MarryResult.TargetMarried); } if (RemoveMarryApply(sourceID, MarryApplyType.ApplyInit) == false) { return(MarryResult.ApplyTimeout); } if (accept == 0 || client.ClientData.MyMarriageData.byAutoReject == 1) { // 拒绝返钱 string notifyData = string.Format("{0}:{1}:{2}", (int)MarryNotifyType.NotifyRejectInit, client.ClientData.RoleID, client.ClientData.RoleName); sourceClient.sendCmd((int)TCPGameServerCmds.CMD_SPR_MARRY_NOTIFY, notifyData); GameManager.ClientMgr.AddUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, sourceClient, MarryCost, "求婚被拒绝返还钻石"); } else { // 同意 RemoveMarryApply(sourceID); // 如果自己在申请狀态,需取消返钱 MarryLogic.ApplyLogoutClear(client); RemoveMarryApply(client.ClientData.RoleID); // 初始婚戒 int initRingID = 0; if (null != MarriageOtherLogic.getInstance().WeddingRingDic.SystemXmlItemDict) { initRingID = MarriageOtherLogic.getInstance().WeddingRingDic.SystemXmlItemDict.Keys.First(); } if (sourceClient.ClientData.MyMarriageData.nRingID <= 0) { sourceClient.ClientData.MyMarriageData.nRingID = initRingID; } if (client.ClientData.MyMarriageData.nRingID <= 0) { client.ClientData.MyMarriageData.nRingID = initRingID; } // 更新婚姻狀态 // marry type 1:丈夫 2:妻子 sbyte sourceType = (sourceClient.ClientData.RoleSex != 1 || client.ClientData.RoleSex == sourceClient.ClientData.RoleSex)? (sbyte)1 : (sbyte)2; sourceClient.ClientData.MyMarriageData.byMarrytype = sourceType; client.ClientData.MyMarriageData.byMarrytype = (sourceType == 1)? (sbyte)2 : (sbyte)1; // 更新伴侶role id sourceClient.ClientData.MyMarriageData.nSpouseID = client.ClientData.RoleID; client.ClientData.MyMarriageData.nSpouseID = sourceID; // 初始化0星1阶 [bing] 因为再结婚还会走这个函数就会被初始化为1阶 应该不初始化它 是个bug 这里FIX下 if (sourceClient.ClientData.MyMarriageData.byGoodwilllevel == 0) { //[bing] 更新时间 sourceClient.ClientData.MyMarriageData.ChangTime = TimeUtil.NowDateTime().ToString("yyyy-MM-dd HH:mm:ss"); sourceClient.ClientData.MyMarriageData.byGoodwilllevel = 1; } if (client.ClientData.MyMarriageData.byGoodwilllevel == 0) { client.ClientData.MyMarriageData.ChangTime = TimeUtil.NowDateTime().ToString("yyyy-MM-dd HH:mm:ss"); client.ClientData.MyMarriageData.byGoodwilllevel = 1; } MarryFuBenMgr.UpdateMarriageData2DB(sourceClient); MarryFuBenMgr.UpdateMarriageData2DB(client); MarriageOtherLogic.getInstance().SendMarriageDataToClient(sourceClient); MarriageOtherLogic.getInstance().SendMarriageDataToClient(client); //更新婚戒属性 MarriageOtherLogic.getInstance().UpdateRingAttr(sourceClient, true); //[bing] 刷新客户端活动叹号 if (client._IconStateMgr.CheckJieRiFanLi(client, ActivityTypes.JieriMarriage) == true) { client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.JieRiActivity, client._IconStateMgr.IsAnyJieRiTipActived()); client._IconStateMgr.SendIconStateToClient(client); } //[bing] 刷新客户端活动叹号 if (sourceClient._IconStateMgr.CheckJieRiFanLi(sourceClient, ActivityTypes.JieriMarriage) == true) { sourceClient._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.JieRiActivity, sourceClient._IconStateMgr.IsAnyJieRiTipActived()); sourceClient._IconStateMgr.SendIconStateToClient(sourceClient); } // 好友逻辑 FriendData friendData = Global.FindFriendData(client, sourceID); if (friendData != null && friendData.FriendType != 0) { GameManager.ClientMgr.RemoveFriend(Global._TCPManager, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, friendData.DbID); friendData = null; } if (friendData == null) { GameManager.ClientMgr.AddFriend(Global._TCPManager, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, -1, sourceID, Global.FormatRoleName(sourceClient, sourceClient.ClientData.RoleName), 0); } friendData = Global.FindFriendData(sourceClient, client.ClientData.RoleID); if (friendData != null && friendData.FriendType != 0) { GameManager.ClientMgr.RemoveFriend(Global._TCPManager, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, sourceClient, friendData.DbID); friendData = null; } if (friendData == null) { GameManager.ClientMgr.AddFriend(Global._TCPManager, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, sourceClient, -1, client.ClientData.RoleID, Global.FormatRoleName(client, client.ClientData.RoleName), 0); } //扩播消息 string broadCastMsg = string.Format(Global.GetLang("恭喜 {0} 和 {1} 喜结连理!"), sourceClient.ClientData.RoleName, client.ClientData.RoleName); Global.BroadcastRoleActionMsg(client, RoleActionsMsgTypes.Bulletin, broadCastMsg, true, GameInfoTypeIndexes.Hot, ShowGameInfoTypes.OnlySysHint); CoupleArenaManager.Instance().OnMarry(sourceClient, client); } return(MarryResult.Success); }
public static MarryResult MarryReply(GameClient client, int sourceID, int accept) { MarryResult result; if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { result = MarryResult.NotOpen; } else if (client.ClientData.MyMarriageData.byMarrytype > 0) { result = MarryResult.SelfMarried; } else { GameClient sourceClient = GameManager.ClientMgr.FindClient(sourceID); if (sourceClient == null) { result = MarryResult.ApplyTimeout; } else if (sourceClient.ClientData.MyMarriageData.byMarrytype > 0) { result = MarryResult.TargetMarried; } else if (!MarryLogic.RemoveMarryApply(sourceID, MarryApplyType.ApplyInit)) { result = MarryResult.ApplyTimeout; } else { if (!client.ClientData.IsMainOccupation || !sourceClient.ClientData.IsMainOccupation) { accept = 0; } if (accept == 0 || client.ClientData.MyMarriageData.byAutoReject == 1) { string notifyData = string.Format("{0}:{1}:{2}", 1, client.ClientData.RoleID, client.ClientData.RoleName); sourceClient.sendCmd(894, notifyData, false); GameManager.ClientMgr.AddUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, sourceClient, MarryLogic.MarryCost, "求婚被拒绝返还钻石", ActivityTypes.None, ""); } else { MarryLogic.RemoveMarryApply(sourceID, MarryApplyType.ApplyNull); MarryLogic.ApplyLogoutClear(client); MarryLogic.RemoveMarryApply(client.ClientData.RoleID, MarryApplyType.ApplyNull); int initRingID = 0; if (null != MarriageOtherLogic.getInstance().WeddingRingDic.SystemXmlItemDict) { initRingID = MarriageOtherLogic.getInstance().WeddingRingDic.SystemXmlItemDict.Keys.First <int>(); } if (sourceClient.ClientData.MyMarriageData.nRingID <= 0) { sourceClient.ClientData.MyMarriageData.nRingID = initRingID; } if (client.ClientData.MyMarriageData.nRingID <= 0) { client.ClientData.MyMarriageData.nRingID = initRingID; } sbyte sourceType = (sbyte)(sourceClient.ClientData.RoleSex != 1 || client.ClientData.RoleSex == sourceClient.ClientData.RoleSex ? 1 : 2); sourceClient.ClientData.MyMarriageData.byMarrytype = sourceType; client.ClientData.MyMarriageData.byMarrytype = (sbyte)(sourceType == 1 ? 2 : 1); sourceClient.ClientData.MyMarriageData.nSpouseID = client.ClientData.RoleID; client.ClientData.MyMarriageData.nSpouseID = sourceID; if (sourceClient.ClientData.MyMarriageData.byGoodwilllevel == 0) { sourceClient.ClientData.MyMarriageData.ChangTime = TimeUtil.NowDateTime().ToString("yyyy-MM-dd HH:mm:ss"); sourceClient.ClientData.MyMarriageData.byGoodwilllevel = 1; } if (client.ClientData.MyMarriageData.byGoodwilllevel == 0) { client.ClientData.MyMarriageData.ChangTime = TimeUtil.NowDateTime().ToString("yyyy-MM-dd HH:mm:ss"); client.ClientData.MyMarriageData.byGoodwilllevel = 1; } EventLogManager.AddRingBuyEvent(sourceClient, 0, initRingID, 0, 0, 0, 1, ""); EventLogManager.AddRingBuyEvent(client, 0, initRingID, 0, 0, 0, 1, ""); MarryFuBenMgr.UpdateMarriageData2DB(sourceClient); MarryFuBenMgr.UpdateMarriageData2DB(client); MarriageOtherLogic.getInstance().SendMarriageDataToClient(sourceClient, true); MarriageOtherLogic.getInstance().SendMarriageDataToClient(client, true); MarriageOtherLogic.getInstance().UpdateRingAttr(sourceClient, true, false); if (client._IconStateMgr.CheckJieRiFanLi(client, ActivityTypes.JieriMarriage)) { client._IconStateMgr.AddFlushIconState(14000, client._IconStateMgr.IsAnyJieRiTipActived()); client._IconStateMgr.SendIconStateToClient(client); } if (sourceClient._IconStateMgr.CheckJieRiFanLi(sourceClient, ActivityTypes.JieriMarriage)) { sourceClient._IconStateMgr.AddFlushIconState(14000, sourceClient._IconStateMgr.IsAnyJieRiTipActived()); sourceClient._IconStateMgr.SendIconStateToClient(sourceClient); } FriendData friendData = Global.FindFriendData(client, sourceID); if (friendData != null && friendData.FriendType != 0) { GameManager.ClientMgr.RemoveFriend(Global._TCPManager, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, friendData.DbID); friendData = null; } if (friendData == null) { GameManager.ClientMgr.AddFriend(Global._TCPManager, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, -1, sourceID, Global.FormatRoleName(sourceClient, sourceClient.ClientData.RoleName), 0); } friendData = Global.FindFriendData(sourceClient, client.ClientData.RoleID); if (friendData != null && friendData.FriendType != 0) { GameManager.ClientMgr.RemoveFriend(Global._TCPManager, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, sourceClient, friendData.DbID); friendData = null; } if (friendData == null) { GameManager.ClientMgr.AddFriend(Global._TCPManager, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, sourceClient, -1, client.ClientData.RoleID, Global.FormatRoleName(client, client.ClientData.RoleName), 0); } string broadCastMsg = string.Format(GLang.GetLang(485, new object[0]), sourceClient.ClientData.RoleName, client.ClientData.RoleName); Global.BroadcastRoleActionMsg(client, RoleActionsMsgTypes.Bulletin, broadCastMsg, true, GameInfoTypeIndexes.Hot, ShowGameInfoTypes.OnlySysHint, 0, 0, 100, 100); SingletonTemplate <CoupleArenaManager> .Instance().OnMarry(sourceClient, client); } result = MarryResult.Success; } } return(result); }
public MarryPartyResult MarryPartyJoin(GameClient client, int roleID) { if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { return(MarryPartyResult.NotOpen); } MarryPartyData partyData = m_MarryPartyDataCache.GetParty(roleID); if (partyData == null) { return(MarryPartyResult.PartyNotFound); } if (partyData.StartTime > TimeUtil.NOW()) { return(MarryPartyResult.NotStart); } MarryPartyConfigData configData = GetMarryPartyConfigData(partyData.PartyType); if (null == configData) { return(MarryPartyResult.PartyNotFound); } // 检查參予所需金币是否足够 if (configData.JoinCost > Global.GetTotalBindTongQianAndTongQianVal(client)) { return(MarryPartyResult.NotEnoughMoney); } // 检查參予次数 Dictionary <int, int> joinList = client.ClientData.MyMarryPartyJoinList; int targetPartyJoinCount = 0; int allPartyJoinCount = 0; bool remove = false; lock (joinList) { joinList.TryGetValue(roleID, out targetPartyJoinCount); foreach (KeyValuePair <int, int> kv in client.ClientData.MyMarryPartyJoinList) { allPartyJoinCount += kv.Value; } if (allPartyJoinCount >= MarryPartyPlayerMaxJoinCount) { return(MarryPartyResult.ZeroPlayerJoinCount); } if (targetPartyJoinCount >= configData.PlayerMaxJoinCount) { return(MarryPartyResult.ZeroPlayerJoinCount); } // 增加參予次数 if (m_MarryPartyDataCache.IncPartyJoin(roleID, configData.PartyMaxJoinCount, out remove) == false) { return(MarryPartyResult.ZeroPartyJoinCount); } ++targetPartyJoinCount; byte[] byteData = null; TCPProcessCmdResults dbResult = Global.RequestToDBServer3(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, (int)TCPGameServerCmds.CMD_DB_MARRY_PARTY_JOIN_INC, string.Format("{0}:{1}:{2}", roleID, client.ClientData.RoleID, targetPartyJoinCount), out byteData, client.ServerId ); if (TCPProcessCmdResults.RESULT_FAILED == dbResult || null == byteData || byteData.Length <= 6) { m_MarryPartyDataCache.IncPartyJoinCancel(roleID); return(MarryPartyResult.ZeroPartyJoinCount); } joinList[roleID] = targetPartyJoinCount; } if (configData.JoinCost > 0) { // 扣除參予所需金币 if (Global.SubBindTongQianAndTongQian(client, configData.JoinCost, "參予婚宴") == false) { // TODO: 沒处理參予次数已更新数据库的问题 return(MarryPartyResult.NotEnoughMoney); } } if (configData.RewardExp > 0) { GameManager.ClientMgr.ProcessRoleExperience(client, configData.RewardExp, false); } if (configData.RewardShengWang > 0) { GameManager.ClientMgr.ModifyShengWangValue(client, configData.RewardShengWang, "婚宴奖励", false); } if (configData.RewardXingHun > 0) { GameManager.ClientMgr.ModifyStarSoulValue(client, configData.RewardXingHun, "婚宴奖励", false); } if (remove == true) { MarryPartyRemoveInternal(roleID, true, client); // 婚宴结算, 换成友善度物品, 个数双方平分 GoodsData goodData = Global.GetNewGoodsData(configData.RewardItem.GoodsID, configData.RewardItem.Binding); goodData.GCount = configData.JoinCost * configData.PartyMaxJoinCount / configData.GoodWillRatio / 2; List <GoodsData> goodList = new List <GoodsData>(); goodList.Add(goodData); string sMsg = Global.GetLang("恭喜您成功举办了一场盛大的婚宴,宾客们馈赠的礼物已随这封邮件发送到您手上,请查收附件。"); Global.UseMailGivePlayerAward3(roleID, goodList, Global.GetLang("婚宴"), sMsg, 0); int spouseID = (roleID == partyData.HusbandRoleID)? partyData.WifeRoleID : partyData.HusbandRoleID; Global.UseMailGivePlayerAward3(spouseID, goodList, Global.GetLang("婚宴"), sMsg, 0); } SendMarryPartyJoinList(client); SendMarryPartyList(client, partyData); //if (m_MarryPartyDataCache.GetPartyCount() <= 0) //{ // lock (MarryPartyNPCShowMutex) // { // if (MarryPartyNPCShow == true) // { // // TODO: add npc // MarryPartyNPCShow = false; // } // } //} return(MarryPartyResult.Success); }
public bool processCmdEx(GameClient client, int nID, byte[] bytes, string[] cmdParams) { switch (nID) { //送玫瑰 case (int)TCPGameServerCmds.CMD_SPR_MARRY_ROSE: { if (cmdParams == null || cmdParams.Length != 1) { return(false); } if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { client.sendCmd(nID, (int)MarryOtherResult.NotOpen); break; } try { int nGoodsDBId = Global.SafeConvertToInt32(cmdParams[0]); int iRet = (int)GiveRose(client, nGoodsDBId); client.sendCmd(nID, iRet); } catch (Exception ex) //解析错误 { DataHelper.WriteFormatExceptionLog(ex, "CMD_SPR_MARRY_ROSE", false); } } break; //更换婚戒 case (int)TCPGameServerCmds.CMD_SPR_MARRY_RING: { if (cmdParams == null || cmdParams.Length != 1) { return(false); } if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { client.sendCmd(nID, (int)MarryOtherResult.NotOpen); break; } try { int nRingId = Global.SafeConvertToInt32(cmdParams[0]); int iRet = (int)ChangeRing(client, nRingId); client.sendCmd(nID, iRet); } catch (Exception ex) //解析错误 { DataHelper.WriteFormatExceptionLog(ex, "CMD_SPR_MARRY_RING", false); } } break; //爱情宣言 case (int)TCPGameServerCmds.CMD_SPR_MARRY_MESSAGE: { if (cmdParams == null || cmdParams.Length != 1) { return(false); } if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { client.sendCmd(nID, (int)MarryOtherResult.NotOpen); break; } try { int iRet = (int)ChangeMarriageMessage(client, cmdParams[0]); client.sendCmd(nID, iRet); } catch (Exception ex) //解析错误 { DataHelper.WriteFormatExceptionLog(ex, "CMD_SPR_MARRY_MESSAGE", false); } } break; } return(true); }
public void UpdateMarriageGoodWill(GameClient client, int addGoodwillValue) { if (MarryLogic.IsVersionSystemOpenOfMarriage()) { if (client.ClientData.MyMarriageData.byMarrytype != -1) { if (addGoodwillValue != 0) { sbyte tmpGoodwilllv = client.ClientData.MyMarriageData.byGoodwilllevel; sbyte tmpGoodwillstar = client.ClientData.MyMarriageData.byGoodwillstar; if (tmpGoodwilllv != this.byMaxGoodwillLv || tmpGoodwillstar != this.byMaxGoodwillStar) { int oldLevel = (int)client.ClientData.MyMarriageData.byGoodwilllevel; int oldStart = (int)client.ClientData.MyMarriageData.byGoodwillstar; client.ClientData.MyMarriageData.nGoodwillexp += addGoodwillValue; int nNowLvAddExp = this.GoodwillAllExpList[(int)((tmpGoodwilllv - 1) * this.byMaxGoodwillStar + tmpGoodwillstar)]; client.ClientData.MyMarriageData.nGoodwillexp += nNowLvAddExp; bool bUpdateLv = false; bool bUpdateStar = false; for (int i = 1; i < this.GoodwillAllExpList.Count; i++) { if (i == this.GoodwillAllExpList.Count - 1 && client.ClientData.MyMarriageData.nGoodwillexp >= this.GoodwillAllExpList[i]) { client.ClientData.MyMarriageData.byGoodwilllevel = this.byMaxGoodwillLv; client.ClientData.MyMarriageData.byGoodwillstar = this.byMaxGoodwillStar; bUpdateStar = true; client.ClientData.MyMarriageData.nGoodwillexp = this.GoodwillAllExpList[i] - this.GoodwillAllExpList[i - 1]; } else if (client.ClientData.MyMarriageData.nGoodwillexp < this.GoodwillAllExpList[i]) { int nLv; int nStar; if (i <= (int)(this.byMaxGoodwillStar + 1)) { nLv = 1; nStar = i - 1; } else { nLv = (i - 2) / (int)this.byMaxGoodwillStar + 1; nStar = (i - 1) % (int)this.byMaxGoodwillStar; if (nStar == 0) { nStar = 10; } } if (nLv != (int)tmpGoodwilllv) { bUpdateLv = true; } if (nStar != (int)tmpGoodwillstar) { bUpdateStar = true; } client.ClientData.MyMarriageData.byGoodwilllevel = (sbyte)nLv; client.ClientData.MyMarriageData.byGoodwillstar = (sbyte)nStar; client.ClientData.MyMarriageData.nGoodwillexp -= this.GoodwillAllExpList[i - 1]; break; } } if (bUpdateLv || bUpdateStar) { client.ClientData.MyMarriageData.ChangTime = TimeUtil.NowDateTime().ToString("yyyy-MM-dd HH:mm:ss"); } MarryFuBenMgr.UpdateMarriageData2DB(client); if (bUpdateLv || bUpdateStar) { this.UpdateRingAttr(client, true, false); } this.SendMarriageDataToClient(client, bUpdateLv || bUpdateStar); if (bUpdateLv) { if (client._IconStateMgr.CheckJieRiFanLi(client, ActivityTypes.JieriMarriage) || client._IconStateMgr.CheckSpecialActivity(client) || client._IconStateMgr.CheckEverydayActivity(client)) { client._IconStateMgr.AddFlushIconState(14000, client._IconStateMgr.IsAnyJieRiTipActived()); client._IconStateMgr.SendIconStateToClient(client); } } if (addGoodwillValue > 0) { string strHint = StringUtil.substitute(GLang.GetLang(490, new object[0]), new object[] { addGoodwillValue }); GameManager.ClientMgr.NotifyImportantMsg(client, strHint, GameInfoTypeIndexes.Normal, ShowGameInfoTypes.PiaoFuZi, 0); } EventLogManager.AddRingStarSuitEvent(client, client.ClientData.MyMarriageData.nRingID, oldLevel, (int)client.ClientData.MyMarriageData.byGoodwilllevel, oldStart, (int)client.ClientData.MyMarriageData.byGoodwillstar, ""); } } } } }
/// <summary> /// 离婚 /// </summary> public static MarryResult MarryDivorce(GameClient client, MarryDivorceType divorceType) { if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { return(MarryResult.NotOpen); } if (0 >= client.ClientData.MyMarriageData.byMarrytype) { return(MarryResult.NotMarried); } if (!CoupleArenaManager.Instance().IsNowCanDivorce(TimeUtil.NowDateTime())) { return(MarryResult.DeniedByCoupleAreanTime); } int spouseID = client.ClientData.MyMarriageData.nSpouseID; GameClient spouseClient = GameManager.ClientMgr.FindClient(spouseID); if (divorceType == MarryDivorceType.DivorceForce || divorceType == MarryDivorceType.DivorceFree || divorceType == MarryDivorceType.DivorceFreeAccept) { if (client.ClientData.ExchangeID > 0 || true == client.ClientSocket.IsKuaFuLogin || client.ClientData.CopyMapID > 0) { return(MarryResult.SelfBusy); } if (-1 != client.ClientData.FuBenID && MapTypes.MarriageCopy == Global.GetMapType(client.ClientData.MapCode)) { return(MarryResult.SelfBusy); } if (null != spouseClient) { if (-1 != spouseClient.ClientData.FuBenID && MapTypes.MarriageCopy == Global.GetMapType(spouseClient.ClientData.MapCode)) { return(MarryResult.TargetBusy); } } if (divorceType == MarryDivorceType.DivorceForce || divorceType == MarryDivorceType.DivorceFree) { if (true == ApplyExist(client.ClientData.RoleID)) { return(MarryResult.SelfBusy); } } } int _man = client.ClientData.RoleID, _wife = spouseID; if (client.ClientData.MyMarriageData.byMarrytype == 2) { DataHelper2.Swap(ref _man, ref _wife);; } if (divorceType == MarryDivorceType.DivorceForce) { if (client.ClientData.UserMoney < DivorceForceCost) { return(MarryResult.MoneyNotEnough); } // 情侣竞技和情侣祝福都需要离婚清除数据,所以,可能会导致部分清除失败,由于竞技更要求数据的准确性,所以先清除情侣祝福,再清楚情侣竞技 // 情侣祝福排行版通知清除排行数据 // 必须保证先清除成功,才能强制离婚离婚 if (!CoupleWishManager.Instance().PreClearDivorceData(_man, _wife)) { return(MarryResult.NotOpen); } // 情侣竞技通知中心竞技、排行数据,dbserver清除战报数据 // 必须保证先清除成功,才能强制离婚离婚 if (!CoupleArenaManager.Instance().PreClearDivorceData(_man, _wife)) { return(MarryResult.NotOpen); } //强制离婚 if (false == GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, DivorceForceCost, "强制离婚", false)) { // return MarryResult.MoneyNotEnough; } client.ClientData.MyMarriageData.byMarrytype = -1; client.ClientData.MyMarriageData.nSpouseID = -1; MarryFuBenMgr.UpdateMarriageData2DB(client); MarriageOtherLogic.getInstance().ResetRingAttr(client); if (null != spouseClient) { spouseClient.ClientData.MyMarriageData.nSpouseID = -1; spouseClient.ClientData.MyMarriageData.byMarrytype = -1; MarryFuBenMgr.UpdateMarriageData2DB(spouseClient); MarriageOtherLogic.getInstance().ResetRingAttr(spouseClient); //[bing] 给配偶发送CMD_SPR_MARRY_UPDATE MarriageOtherLogic.getInstance().SendMarriageDataToClient(spouseClient); //[bing] 刷新客户端活动叹号 if (spouseClient._IconStateMgr.CheckJieRiFanLi(spouseClient, ActivityTypes.JieriMarriage) == true) { spouseClient._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.JieRiActivity, spouseClient._IconStateMgr.IsAnyJieRiTipActived()); spouseClient._IconStateMgr.SendIconStateToClient(spouseClient); } } else { string tcpstring = string.Format("{0}", spouseID); MarriageData spouseMarriageData = Global.sendToDB <MarriageData, string>((int)TCPGameServerCmds.CMD_DB_GET_MARRY_DATA, tcpstring, client.ServerId); if (null != spouseMarriageData && 0 < spouseMarriageData.byMarrytype) { spouseMarriageData.byMarrytype = -1; spouseMarriageData.nSpouseID = -1; MarryFuBenMgr.UpdateMarriageData2DB(spouseID, spouseMarriageData, client); } } // 取消婚宴 MarryPartyLogic.getInstance().MarryPartyRemove(client.ClientData.RoleID, true, client); MarryPartyLogic.getInstance().MarryPartyRemove(spouseID, true, client); //[bing] 给自己发送CMD_SPR_MARRY_UPDATE MarriageOtherLogic.getInstance().SendMarriageDataToClient(client); //[bing] 刷新客户端活动叹号 if (client._IconStateMgr.CheckJieRiFanLi(client, ActivityTypes.JieriMarriage) == true) { client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.JieRiActivity, client._IconStateMgr.IsAnyJieRiTipActived()); client._IconStateMgr.SendIconStateToClient(client); } // send mail string msg = string.Format(Global.GetLang("在您收到这封邮件的时候,您的伴侣{0}已经申请与您强制离婚,现在您已经恢复单身。您的定情信物将被封存,所有属性暂时失效,直至下次结婚时生效。最后,预祝您再次觅得真心人,相伴共度美好的游戏时光。感谢您阅读这封邮件。"), client.ClientData.RoleName); SendDivorceMail(spouseID, Global.GetLang("离婚"), msg, spouseClient, client.ServerId); CoupleArenaManager.Instance().OnDivorce(client.ClientData.RoleID, spouseID); } else if (divorceType == MarryDivorceType.DivorceFree) { //申请离婚 if (null == spouseClient) { return(MarryResult.TargetOffline); } if (spouseClient.ClientData.ExchangeID > 0 || true == spouseClient.ClientSocket.IsKuaFuLogin || spouseClient.ClientData.CopyMapID > 0) { return(MarryResult.TargetBusy); } if (Global.GetTotalBindTongQianAndTongQianVal(client) < DivorceCost) { return(MarryResult.MoneyNotEnough); } if (Global.SubBindTongQianAndTongQian(client, DivorceCost, "申请离婚") == false) { return(MarryResult.MoneyNotEnough); } AddMarryApply(client.ClientData.RoleID, MarryApplyType.ApplyDivorce, spouseID); //发送离婚申请 string notifyData = string.Format("{0}:{1}", client.ClientData.RoleID, (int)MarryDivorceType.DivorceFree); spouseClient.sendCmd((int)TCPGameServerCmds.CMD_SPR_MARRY_DIVORCE, notifyData); CoupleArenaManager.Instance().OnSpouseRequestDivorce(spouseClient, client); } else { if (null == spouseClient) { return(MarryResult.TargetOffline); } if (RemoveMarryApply(spouseID, MarryApplyType.ApplyDivorce) == false) { return(MarryResult.ApplyTimeout); } RemoveMarryApply(spouseID); if (divorceType == MarryDivorceType.DivorceFreeAccept) { // 情侣竞技通知中心竞技、排行数据,dbserver清除战报数据 // 必须保证先清除成功,才能自由离婚 if (CoupleWishManager.Instance().PreClearDivorceData(_man, _wife) && CoupleArenaManager.Instance().PreClearDivorceData(_man, _wife)) { client.ClientData.MyMarriageData.byMarrytype = -1; client.ClientData.MyMarriageData.nSpouseID = -1; spouseClient.ClientData.MyMarriageData.byMarrytype = -1; spouseClient.ClientData.MyMarriageData.nSpouseID = -1; MarryFuBenMgr.UpdateMarriageData2DB(client); MarryFuBenMgr.UpdateMarriageData2DB(spouseClient); MarriageOtherLogic.getInstance().SendMarriageDataToClient(client); MarriageOtherLogic.getInstance().SendMarriageDataToClient(spouseClient); //更新婚戒属性 MarriageOtherLogic.getInstance().ResetRingAttr(client); MarriageOtherLogic.getInstance().ResetRingAttr(spouseClient); //取消婚宴 MarryPartyLogic.getInstance().MarryPartyRemove(client.ClientData.RoleID, true, client); MarryPartyLogic.getInstance().MarryPartyRemove(spouseID, true, client); //[bing] 刷新客户端活动叹号 if (client._IconStateMgr.CheckJieRiFanLi(client, ActivityTypes.JieriMarriage) == true) { client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.JieRiActivity, client._IconStateMgr.IsAnyJieRiTipActived()); client._IconStateMgr.SendIconStateToClient(client); } //[bing] 刷新客户端活动叹号 if (spouseClient._IconStateMgr.CheckJieRiFanLi(spouseClient, ActivityTypes.JieriMarriage) == true) { spouseClient._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.JieRiActivity, spouseClient._IconStateMgr.IsAnyJieRiTipActived()); spouseClient._IconStateMgr.SendIconStateToClient(spouseClient); } CoupleArenaManager.Instance().OnDivorce(client.ClientData.RoleID, spouseID); } else { GameManager.ClientMgr.AddMoney1(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, spouseClient, DivorceCost, "自由离婚拒绝返还绑金", false); //GameManager.ClientMgr.AddUserYinLiang(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, spouseClient, DivorceCost, "自由离婚拒绝返还绑金"); Global.BroadcastRoleActionMsg(client, RoleActionsMsgTypes.HintMsg, "自由离婚操作失败", true, GameInfoTypeIndexes.Hot, ShowGameInfoTypes.OnlySysHint); Global.BroadcastRoleActionMsg(spouseClient, RoleActionsMsgTypes.HintMsg, "自由离婚操作失败", true, GameInfoTypeIndexes.Hot, ShowGameInfoTypes.OnlySysHint); } } else if (divorceType == MarryDivorceType.DivorceFreeReject) { GameManager.ClientMgr.AddMoney1(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, spouseClient, DivorceCost, "自由离婚拒绝返还绑金", false); //GameManager.ClientMgr.AddUserYinLiang(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, spouseClient, DivorceCost, "自由离婚拒绝返还绑金"); //发送离婚拒绝讯息 string notifyData = string.Format("{0}:{1}", client.ClientData.RoleID, (int)MarryDivorceType.DivorceFreeReject); spouseClient.sendCmd((int)TCPGameServerCmds.CMD_SPR_MARRY_DIVORCE, notifyData); } } return(MarryResult.Success); }
public bool processCmdEx(GameClient client, int nID, byte[] bytes, string[] cmdParams) { switch (nID) { case 871: if (cmdParams == null || cmdParams.Length != 1) { return(false); } if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { client.sendCmd <int>(nID, 11, false); } else { try { int nGoodsDBId = Global.SafeConvertToInt32(cmdParams[0]); int iRet = (int)this.GiveRose(client, nGoodsDBId); client.sendCmd <int>(nID, iRet, false); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "CMD_SPR_MARRY_ROSE", false, false); } } break; case 872: if (cmdParams == null || cmdParams.Length != 1) { return(false); } if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { client.sendCmd <int>(nID, 11, false); } else { try { int nRingId = Global.SafeConvertToInt32(cmdParams[0]); int iRet = (int)this.ChangeRing(client, nRingId); client.sendCmd <int>(nID, iRet, false); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "CMD_SPR_MARRY_RING", false, false); } } break; case 873: if (cmdParams == null || cmdParams.Length != 1) { return(false); } if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { client.sendCmd <int>(nID, 11, false); } else { try { int iRet = (int)this.ChangeMarriageMessage(client, cmdParams[0]); client.sendCmd <int>(nID, iRet, false); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "CMD_SPR_MARRY_MESSAGE", false, false); } } break; } return(true); }
public static MarryResult MarryInit(GameClient client, int spouseID) { MarryResult result; if (!client.ClientData.IsMainOccupation) { result = MarryResult.Error_Denied_For_Minor_Occupation; } else if (!GlobalNew.IsGongNengOpened(client, GongNengIDs.Marriage, true) || !MarryLogic.IsVersionSystemOpenOfMarriage()) { result = MarryResult.NotOpen; } else if (client.ClientData.MyMarriageData.byMarrytype > 0) { result = MarryResult.SelfMarried; } else if (client.ClientData.ChangeLifeCount < 3) { result = MarryResult.SelfLevelNotEnough; } else if (client.ClientData.ExchangeID > 0 || client.ClientSocket.IsKuaFuLogin || client.ClientData.CopyMapID > 0) { result = MarryResult.SelfBusy; } else { GameClient spouseClient = GameManager.ClientMgr.FindClient(spouseID); if (spouseClient == null) { result = MarryResult.TargetOffline; } else if (!spouseClient.ClientData.IsMainOccupation) { result = MarryResult.Error_Denied_For_Minor_Occupation; } else if (!GlobalNew.IsGongNengOpened(spouseClient, GongNengIDs.Marriage, false)) { result = MarryResult.TargetNotOpen; } else { if (!MarryLogic.SameSexMarry(false)) { if (client.ClientData.RoleSex == spouseClient.ClientData.RoleSex) { return(MarryResult.InvalidSex); } } if (spouseClient.ClientData.MyMarriageData.byMarrytype > 0) { result = MarryResult.TargetMarried; } else if (spouseClient.ClientData.ChangeLifeCount < 3) { result = MarryResult.TargetLevelNotEnough; } else if (spouseClient.ClientData.ExchangeID > 0 || spouseClient.ClientSocket.IsKuaFuLogin || spouseClient.ClientData.CopyMapID > 0) { result = MarryResult.TargetBusy; } else if (MarryLogic.ApplyExist(spouseID)) { result = MarryResult.TargetBusy; } else if (spouseClient.ClientData.MyMarriageData.byAutoReject == 1) { result = MarryResult.AutoReject; } else if (MarryLogic.AddMarryApply(client.ClientData.RoleID, MarryApplyType.ApplyInit, spouseID) == null) { result = MarryResult.ApplyCD; } else if (!GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, MarryLogic.MarryCost, "结婚", false, true, false, DaiBiSySType.None)) { MarryLogic.RemoveMarryApply(client.ClientData.RoleID, MarryApplyType.ApplyNull); result = MarryResult.MoneyNotEnough; } else { string notifyData = string.Format("{0}:{1}:{2}", 0, client.ClientData.RoleID, client.ClientData.RoleName); spouseClient.sendCmd(894, notifyData, false); result = MarryResult.Success; } } } return(result); }
/// <summary> /// 提升奉献值 /// </summary> public void UpdateMarriageGoodWill(GameClient client, int addGoodwillValue) { //功能未开启 if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { return; } //看看是不是情侣 if (client.ClientData.MyMarriageData.byMarrytype == -1) { return; } //不加也不减直接无视吧 if (addGoodwillValue == 0) { return; } sbyte tmpGoodwilllv = client.ClientData.MyMarriageData.byGoodwilllevel; sbyte tmpGoodwillstar = client.ClientData.MyMarriageData.byGoodwillstar; //加值前先检查当前阶级是否已达上限 到达上限不加 if (tmpGoodwilllv == byMaxGoodwillLv && tmpGoodwillstar == byMaxGoodwillStar) { return; } //加值 client.ClientData.MyMarriageData.nGoodwillexp += addGoodwillValue; //用当前经验值增加上该阶级和星级应该有的经验 int nNowLvAddExp = GoodwillAllExpList[(tmpGoodwilllv - 1) * byMaxGoodwillStar + tmpGoodwillstar]; client.ClientData.MyMarriageData.nGoodwillexp += nNowLvAddExp; bool bUpdateLv = false; bool bUpdateStar = false; //看看当前经验达到哪一级 直接设上去 for (int i = 1; i < GoodwillAllExpList.Count; ++i) { //超过最后一项表示满级满星了 if (i == GoodwillAllExpList.Count - 1 && client.ClientData.MyMarriageData.nGoodwillexp >= GoodwillAllExpList[i]) { client.ClientData.MyMarriageData.byGoodwilllevel = byMaxGoodwillLv; client.ClientData.MyMarriageData.byGoodwillstar = byMaxGoodwillStar; bUpdateStar = true; //设定到最大经验 client.ClientData.MyMarriageData.nGoodwillexp = GoodwillAllExpList[i] - GoodwillAllExpList[i - 1]; } else if (client.ClientData.MyMarriageData.nGoodwillexp < GoodwillAllExpList[i]) { int nLv = 0; int nStar = 0; //1阶情况 if (i <= byMaxGoodwillStar + 1) { nLv = 1; nStar = i - 1; } else { nLv = (i - 2) / byMaxGoodwillStar + 1; nStar = (i - 1) % byMaxGoodwillStar; if (nStar == 0) { nStar = 10; } } if (nLv != tmpGoodwilllv) { bUpdateLv = true; } if (nStar != tmpGoodwillstar) { bUpdateStar = true; } client.ClientData.MyMarriageData.byGoodwilllevel = (sbyte)nLv; client.ClientData.MyMarriageData.byGoodwillstar = (sbyte)nStar; //发送客户端和记录数据库时清掉多余的经验部分 例如66点经验 - 当前阶级总共60点经验后剩 6 记录数据 client.ClientData.MyMarriageData.nGoodwillexp -= GoodwillAllExpList[i - 1]; break; } } //[bing] 更新时间 if (true == bUpdateLv || true == bUpdateStar) { client.ClientData.MyMarriageData.ChangTime = TimeUtil.NowDateTime().ToString("yyyy-MM-dd HH:mm:ss"); } //发送给DB update数据 MarryFuBenMgr.UpdateMarriageData2DB(client); //更新婚戒属性 if (true == bUpdateLv || true == bUpdateStar) { UpdateRingAttr(client, true); } //发送给客户端更新数据 SendMarriageDataToClient(client, (true == bUpdateLv || true == bUpdateStar)); if (true == bUpdateLv) { //[bing] 刷新客户端活动叹号 if (client._IconStateMgr.CheckJieRiFanLi(client, ActivityTypes.JieriMarriage) == true || client._IconStateMgr.CheckSpecialActivity(client)) { client._IconStateMgr.AddFlushIconState((ushort)ActivityTipTypes.JieRiActivity, client._IconStateMgr.IsAnyJieRiTipActived()); client._IconStateMgr.SendIconStateToClient(client); } } if (addGoodwillValue > 0) { string strHint = StringUtil.substitute(Global.GetLang("你获得了:{0}点奉献度"), addGoodwillValue); GameManager.ClientMgr.NotifyImportantMsg(client, strHint, GameInfoTypeIndexes.Normal, ShowGameInfoTypes.PiaoFuZi); } }
public static MarryResult MarryDivorce(GameClient client, MarryDivorceType divorceType) { MarryResult result; if (!MarryLogic.IsVersionSystemOpenOfMarriage()) { result = MarryResult.NotOpen; } else if (0 >= client.ClientData.MyMarriageData.byMarrytype) { result = MarryResult.NotMarried; } else if (!SingletonTemplate <CoupleArenaManager> .Instance().IsNowCanDivorce(TimeUtil.NowDateTime())) { result = MarryResult.DeniedByCoupleAreanTime; } else { int spouseID = client.ClientData.MyMarriageData.nSpouseID; GameClient spouseClient = GameManager.ClientMgr.FindClient(spouseID); if (divorceType == MarryDivorceType.DivorceForce || divorceType == MarryDivorceType.DivorceFree || divorceType == MarryDivorceType.DivorceFreeAccept) { if (client.ClientData.ExchangeID > 0 || client.ClientSocket.IsKuaFuLogin || client.ClientData.CopyMapID > 0) { return(MarryResult.SelfBusy); } if (-1 != client.ClientData.FuBenID && MapTypes.MarriageCopy == Global.GetMapType(client.ClientData.MapCode)) { return(MarryResult.SelfBusy); } if (null != spouseClient) { if (-1 != spouseClient.ClientData.FuBenID && MapTypes.MarriageCopy == Global.GetMapType(spouseClient.ClientData.MapCode)) { return(MarryResult.TargetBusy); } } if (divorceType == MarryDivorceType.DivorceForce || divorceType == MarryDivorceType.DivorceFree) { if (MarryLogic.ApplyExist(client.ClientData.RoleID)) { return(MarryResult.SelfBusy); } } } int _man = client.ClientData.RoleID; int _wife = spouseID; if (client.ClientData.MyMarriageData.byMarrytype == 2) { DataHelper2.Swap <int>(ref _man, ref _wife); } if (divorceType == MarryDivorceType.DivorceForce) { if (client.ClientData.UserMoney < MarryLogic.DivorceForceCost) { return(MarryResult.MoneyNotEnough); } if (!SingletonTemplate <CoupleWishManager> .Instance().PreClearDivorceData(_man, _wife)) { return(MarryResult.NotOpen); } if (!SingletonTemplate <CoupleArenaManager> .Instance().PreClearDivorceData(_man, _wife)) { return(MarryResult.NotOpen); } if (!GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, MarryLogic.DivorceForceCost, "强制离婚", false, true, false, DaiBiSySType.None)) { } client.ClientData.MyMarriageData.byMarrytype = -1; client.ClientData.MyMarriageData.nSpouseID = -1; MarryFuBenMgr.UpdateMarriageData2DB(client); MarriageOtherLogic.getInstance().ResetRingAttr(client); if (null != spouseClient) { spouseClient.ClientData.MyMarriageData.nSpouseID = -1; spouseClient.ClientData.MyMarriageData.byMarrytype = -1; MarryFuBenMgr.UpdateMarriageData2DB(spouseClient); MarriageOtherLogic.getInstance().ResetRingAttr(spouseClient); MarriageOtherLogic.getInstance().SendMarriageDataToClient(spouseClient, true); if (spouseClient._IconStateMgr.CheckJieRiFanLi(spouseClient, ActivityTypes.JieriMarriage)) { spouseClient._IconStateMgr.AddFlushIconState(14000, spouseClient._IconStateMgr.IsAnyJieRiTipActived()); spouseClient._IconStateMgr.SendIconStateToClient(spouseClient); } } else { string tcpstring = string.Format("{0}", spouseID); MarriageData spouseMarriageData = Global.sendToDB <MarriageData, string>(10186, tcpstring, client.ServerId); if (spouseMarriageData != null && 0 < spouseMarriageData.byMarrytype) { spouseMarriageData.byMarrytype = -1; spouseMarriageData.nSpouseID = -1; MarryFuBenMgr.UpdateMarriageData2DB(spouseID, spouseMarriageData, client); } } MarryPartyLogic.getInstance().MarryPartyRemove(client.ClientData.RoleID, true, client); MarryPartyLogic.getInstance().MarryPartyRemove(spouseID, true, client); MarriageOtherLogic.getInstance().SendMarriageDataToClient(client, true); if (client._IconStateMgr.CheckJieRiFanLi(client, ActivityTypes.JieriMarriage)) { client._IconStateMgr.AddFlushIconState(14000, client._IconStateMgr.IsAnyJieRiTipActived()); client._IconStateMgr.SendIconStateToClient(client); } string msg = string.Format(GLang.GetLang(486, new object[0]), client.ClientData.RoleName); MarryLogic.SendDivorceMail(spouseID, GLang.GetLang(487, new object[0]), msg, spouseClient, client.ServerId); SingletonTemplate <CoupleArenaManager> .Instance().OnDivorce(client.ClientData.RoleID, spouseID); } else if (divorceType == MarryDivorceType.DivorceFree) { if (null == spouseClient) { return(MarryResult.TargetOffline); } if (spouseClient.ClientData.ExchangeID > 0 || spouseClient.ClientSocket.IsKuaFuLogin || spouseClient.ClientData.CopyMapID > 0) { return(MarryResult.TargetBusy); } if (Global.GetTotalBindTongQianAndTongQianVal(client) < MarryLogic.DivorceCost) { return(MarryResult.MoneyNotEnough); } if (!Global.SubBindTongQianAndTongQian(client, MarryLogic.DivorceCost, "申请离婚")) { return(MarryResult.MoneyNotEnough); } MarryLogic.AddMarryApply(client.ClientData.RoleID, MarryApplyType.ApplyDivorce, spouseID); string notifyData = string.Format("{0}:{1}", client.ClientData.RoleID, 1); spouseClient.sendCmd(892, notifyData, false); SingletonTemplate <CoupleArenaManager> .Instance().OnSpouseRequestDivorce(spouseClient, client); } else { if (null == spouseClient) { return(MarryResult.TargetOffline); } if (!MarryLogic.RemoveMarryApply(spouseID, MarryApplyType.ApplyDivorce)) { return(MarryResult.ApplyTimeout); } MarryLogic.RemoveMarryApply(spouseID, MarryApplyType.ApplyNull); if (divorceType == MarryDivorceType.DivorceFreeAccept) { if (SingletonTemplate <CoupleWishManager> .Instance().PreClearDivorceData(_man, _wife) && SingletonTemplate <CoupleArenaManager> .Instance().PreClearDivorceData(_man, _wife)) { client.ClientData.MyMarriageData.byMarrytype = -1; client.ClientData.MyMarriageData.nSpouseID = -1; spouseClient.ClientData.MyMarriageData.byMarrytype = -1; spouseClient.ClientData.MyMarriageData.nSpouseID = -1; MarryFuBenMgr.UpdateMarriageData2DB(client); MarryFuBenMgr.UpdateMarriageData2DB(spouseClient); MarriageOtherLogic.getInstance().SendMarriageDataToClient(client, true); MarriageOtherLogic.getInstance().SendMarriageDataToClient(spouseClient, true); MarriageOtherLogic.getInstance().ResetRingAttr(client); MarriageOtherLogic.getInstance().ResetRingAttr(spouseClient); MarryPartyLogic.getInstance().MarryPartyRemove(client.ClientData.RoleID, true, client); MarryPartyLogic.getInstance().MarryPartyRemove(spouseID, true, client); if (client._IconStateMgr.CheckJieRiFanLi(client, ActivityTypes.JieriMarriage)) { client._IconStateMgr.AddFlushIconState(14000, client._IconStateMgr.IsAnyJieRiTipActived()); client._IconStateMgr.SendIconStateToClient(client); } if (spouseClient._IconStateMgr.CheckJieRiFanLi(spouseClient, ActivityTypes.JieriMarriage)) { spouseClient._IconStateMgr.AddFlushIconState(14000, spouseClient._IconStateMgr.IsAnyJieRiTipActived()); spouseClient._IconStateMgr.SendIconStateToClient(spouseClient); } SingletonTemplate <CoupleArenaManager> .Instance().OnDivorce(client.ClientData.RoleID, spouseID); } else { GameManager.ClientMgr.AddMoney1(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, spouseClient, MarryLogic.DivorceCost, "自由离婚拒绝返还绑金", false); GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, StringUtil.substitute(GLang.GetLang(488, new object[0]), new object[0]), GameInfoTypeIndexes.Error, ShowGameInfoTypes.ErrAndBox, 0); GameManager.ClientMgr.NotifyImportantMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, spouseClient, StringUtil.substitute(GLang.GetLang(488, new object[0]), new object[0]), GameInfoTypeIndexes.Error, ShowGameInfoTypes.ErrAndBox, 0); } } else if (divorceType == MarryDivorceType.DivorceFreeReject) { GameManager.ClientMgr.AddMoney1(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, spouseClient, MarryLogic.DivorceCost, "自由离婚拒绝返还绑金", false); string notifyData = string.Format("{0}:{1}", client.ClientData.RoleID, 3); spouseClient.sendCmd(892, notifyData, false); } } result = MarryResult.Success; } return(result); }
/// <summary> /// 求婚 /// </summary> public static MarryResult MarryInit(GameClient client, int spouseID) { if (GlobalNew.IsGongNengOpened(client, GongNengIDs.Marriage, true) == false || !MarryLogic.IsVersionSystemOpenOfMarriage()) { return(MarryResult.NotOpen); } if (client.ClientData.MyMarriageData.byMarrytype > 0) { return(MarryResult.SelfMarried); } if (client.ClientData.ChangeLifeCount < 3) { return(MarryResult.SelfLevelNotEnough); } if (client.ClientData.ExchangeID > 0 || true == client.ClientSocket.IsKuaFuLogin || client.ClientData.CopyMapID > 0) { return(MarryResult.SelfBusy); } GameClient spouseClient = GameManager.ClientMgr.FindClient(spouseID); if (spouseClient == null) { return(MarryResult.TargetOffline); } if (GlobalNew.IsGongNengOpened(spouseClient, GongNengIDs.Marriage) == false) { return(MarryResult.TargetNotOpen); } if (client.ClientData.RoleSex == spouseClient.ClientData.RoleSex) { return(MarryResult.InvalidSex); } if (spouseClient.ClientData.MyMarriageData.byMarrytype > 0) { return(MarryResult.TargetMarried); } if (spouseClient.ClientData.ChangeLifeCount < 3) { return(MarryResult.TargetLevelNotEnough); } if (spouseClient.ClientData.ExchangeID > 0 || true == spouseClient.ClientSocket.IsKuaFuLogin || spouseClient.ClientData.CopyMapID > 0) { return(MarryResult.TargetBusy); } if (ApplyExist(spouseID) == true) { return(MarryResult.TargetBusy); } //如果自动拒绝结婚 if (spouseClient.ClientData.MyMarriageData.byAutoReject == (sbyte)1) { return(MarryResult.AutoReject); } if (AddMarryApply(client.ClientData.RoleID, MarryApplyType.ApplyInit, spouseID) == null) { return(MarryResult.ApplyCD); } //能求婚才会扣除钻石 if (GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, MarryCost, "结婚", false) == false) { RemoveMarryApply(client.ClientData.RoleID); return(MarryResult.MoneyNotEnough); } string notifyData = string.Format("{0}:{1}:{2}", (int)MarryNotifyType.NotifyInit, client.ClientData.RoleID, client.ClientData.RoleName); spouseClient.sendCmd((int)TCPGameServerCmds.CMD_SPR_MARRY_NOTIFY, notifyData); return(MarryResult.Success); }