// TODO: client should send spouse id // 发送婚宴信息 public void SendMarryPartyList(GameClient client, MarryPartyData partyData, int roleID = -1) { Dictionary <int, MarryPartyData> marryPartyList; if (partyData != null || roleID > 0) { if (partyData == null) { // 获取指定角色婚宴数据 partyData = m_MarryPartyDataCache.GetParty(roleID); if (partyData == null) { int SpouseID = MarryLogic.GetSpouseID(roleID); partyData = m_MarryPartyDataCache.GetParty(SpouseID); if (partyData == null) { // 返回空代表通知客戶端自己沒有婚宴 partyData = new MarryPartyData(); } } } marryPartyList = new Dictionary <int, MarryPartyData>(); marryPartyList.Add(roleID, partyData); client.sendCmd <Dictionary <int, MarryPartyData> >((int)TCPGameServerCmds.CMD_SPR_MARRY_PARTY_QUERY, marryPartyList); } else { // 获取全部婚宴列表 client.sendCmd(m_MarryPartyDataCache.GetPartyList(TCPOutPacketPool.getInstance(), (int)TCPGameServerCmds.CMD_SPR_MARRY_PARTY_QUERY)); } }
public MarryPartyData AddParty(int roleID, int partyType, long startTime, int husbandRoleID, int wifeRoleID, string husbandName, string wifeName) { MarryPartyData data = null; lock (MarryPartyList) { if (MarryPartyList.ContainsKey(husbandRoleID) == false && MarryPartyList.ContainsKey(wifeRoleID) == false) { data = new MarryPartyData() { RoleID = roleID, PartyType = partyType, JoinCount = 0, StartTime = startTime, HusbandRoleID = husbandRoleID, WifeRoleID = wifeRoleID, HusbandName = husbandName, WifeName = wifeName, }; MarryPartyList.Add(roleID, data); } } return(data); }
public void SendMarryPartyList(GameClient client, MarryPartyData partyData, int roleID = -1) { if (partyData != null || roleID > 0) { if (partyData == null) { partyData = this.m_MarryPartyDataCache.GetParty(roleID); if (partyData == null) { int SpouseID = MarryLogic.GetSpouseID(roleID); partyData = this.m_MarryPartyDataCache.GetParty(SpouseID); if (partyData == null) { partyData = new MarryPartyData(); } } } client.sendCmd <Dictionary <int, MarryPartyData> >(880, new Dictionary <int, MarryPartyData> { { roleID, partyData } }, false); } else { client.sendCmd(this.m_MarryPartyDataCache.GetPartyList(TCPOutPacketPool.getInstance(), 880), true); } }
public bool IncPartyJoin(int roleid, int maxJoin, out bool remove) { remove = false; MarryPartyData data = null; lock (MarryPartyList) { bool ret = MarryPartyList.TryGetValue(roleid, out data); if (ret == true) { if (data.JoinCount < maxJoin) { ++data.JoinCount; if (data.JoinCount == maxJoin) { remove = true; } } else { ret = false; } } return(ret); } }
public void SetPartyTime(MarryPartyData data, long startTime) { lock (this.MarryPartyList) { data.StartTime = startTime; } }
public bool IncPartyJoin(int roleid, int maxJoin, out bool remove) { remove = false; MarryPartyData data = null; bool result; lock (this.MarryPartyList) { bool ret = this.MarryPartyList.TryGetValue(roleid, out data); if (ret) { if (data.JoinCount < maxJoin) { data.JoinCount++; if (data.JoinCount == maxJoin) { remove = true; } } else { ret = false; } } result = ret; } return(result); }
public MarryPartyData GetParty(int roleid) { MarryPartyData data = null; lock (MarryPartyList) { MarryPartyList.TryGetValue(roleid, out data); return(data); } }
public void IncPartyJoinCancel(int roleid) { MarryPartyData data = null; lock (this.MarryPartyList) { if (this.MarryPartyList.TryGetValue(roleid, out data)) { data.JoinCount--; } } }
public MarryPartyData GetParty(int roleid) { MarryPartyData data = null; MarryPartyData result; lock (this.MarryPartyList) { this.MarryPartyList.TryGetValue(roleid, out data); result = data; } return(result); }
public void IncPartyJoinCancel(int roleid) { MarryPartyData data = null; lock (MarryPartyList) { if (MarryPartyList.TryGetValue(roleid, out data) == true) { --data.JoinCount; } } }
public void OnChangeName(int roleId, string oldName, string newName) { if (string.IsNullOrEmpty(oldName) || string.IsNullOrEmpty(newName)) { return; } // 未婚,应该没有婚宴数据,如果申请了婚宴,然后离婚,需要确认是否删除婚宴数据 SafeClientData clientData = Global.GetSafeClientDataFromLocalOrDB(roleId); if (clientData == null || clientData.MyMarriageData == null || clientData.MyMarriageData.nSpouseID == -1) { return; } // 修改我或者我的配偶举办的婚宴 lock (MarryPartyList) { MarryPartyData data = null; // 我举办的婚宴 MarryPartyList.TryGetValue(clientData.RoleID, out data); if (data != null) { if (!string.IsNullOrEmpty(data.HusbandName) && data.HusbandName == oldName) { data.HusbandName = newName; } else if (!string.IsNullOrEmpty(data.WifeName) && data.WifeName == oldName) { data.WifeName = newName; } } // 我的配偶举办的婚宴 data = null; MarryPartyList.TryGetValue(clientData.MyMarriageData.nSpouseID, out data); if (data != null) { if (!string.IsNullOrEmpty(data.HusbandName) && data.HusbandName == oldName) { data.HusbandName = newName; } else if (!string.IsNullOrEmpty(data.WifeName) && data.WifeName == oldName) { data.WifeName = newName; } } } }
public void RemovePartyCancel(MarryPartyData partyData) { lock (this.MarryPartyList) { try { this.MarryPartyList.Add(partyData.RoleID, partyData); } catch { } } }
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 IncPartyJoin(int roleid) { MarryPartyData data = null; bool result; lock (this.MarryPartyList) { bool ret = this.MarryPartyList.TryGetValue(roleid, out data); if (ret) { data.JoinCount++; } result = ret; } return(result); }
public MarryPartyResult MarryPartyRemove(int roleID, bool forceRemove, GameClient client) { MarryPartyData partyData = this.m_MarryPartyDataCache.GetParty(roleID); MarryPartyResult result; if (partyData == null) { result = MarryPartyResult.PartyNotFound; } else if (!forceRemove && partyData.StartTime <= TimeUtil.NOW()) { result = MarryPartyResult.AlreadyStart; } else { MarryPartyConfigData configData = this.GetMarryPartyConfigData(partyData.PartyType); if (null == configData) { result = MarryPartyResult.InvalidParam; } else if (!this.MarryPartyRemoveInternal(roleID, forceRemove, client, partyData)) { result = MarryPartyResult.PartyNotFound; } else { if (!forceRemove) { GameManager.ClientMgr.AddMoney1(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, configData.PartyCost, "婚宴退款", false); this.SendMarryPartyList(client, new MarryPartyData(), -1); } else if (partyData.StartTime > TimeUtil.NOW()) { GoodsData goodData = Global.GetNewGoodsData(50014, 1); goodData.GCount = configData.PartyCost / 10000; Global.UseMailGivePlayerAward3(roleID, new List <GoodsData> { goodData }, GLang.GetLang(491, new object[0]), GLang.GetLang(492, new object[0]), 0, 0, 0); } result = MarryPartyResult.Success; } } 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); }
public void OnChangeName(int roleId, string oldName, string newName) { if (!string.IsNullOrEmpty(oldName) && !string.IsNullOrEmpty(newName)) { SafeClientData clientData = Global.GetSafeClientDataFromLocalOrDB(roleId); if (clientData != null && clientData.MyMarriageData != null && clientData.MyMarriageData.nSpouseID != -1) { lock (this.MarryPartyList) { MarryPartyData data = null; this.MarryPartyList.TryGetValue(clientData.RoleID, out data); if (data != null) { if (!string.IsNullOrEmpty(data.HusbandName) && data.HusbandName == oldName) { data.HusbandName = newName; } else if (!string.IsNullOrEmpty(data.WifeName) && data.WifeName == oldName) { data.WifeName = newName; } } data = null; this.MarryPartyList.TryGetValue(clientData.MyMarriageData.nSpouseID, out data); if (data != null) { if (!string.IsNullOrEmpty(data.HusbandName) && data.HusbandName == oldName) { data.HusbandName = newName; } else if (!string.IsNullOrEmpty(data.WifeName) && data.WifeName == oldName) { data.WifeName = newName; } } } } } }
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); }
private bool MarryPartyRemoveInternal(int roleID, bool forceRemove, GameClient self, MarryPartyData partyData = null) { bool result; if (!this.m_MarryPartyDataCache.RemoveParty(roleID)) { result = false; } else { byte[] byteData = null; TCPProcessCmdResults dbResult = Global.RequestToDBServer3(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, 10189, string.Format("{0}", roleID), out byteData, self.ServerId); if (dbResult == TCPProcessCmdResults.RESULT_FAILED) { if (!forceRemove) { this.m_MarryPartyDataCache.RemovePartyCancel(partyData); return(false); } } result = true; } return(result); }
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) { 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 MarryPartyResult MarryPartyRemove(int roleID, bool forceRemove, GameClient client) { MarryPartyData partyData = m_MarryPartyDataCache.GetParty(roleID); if (partyData == null) { return(MarryPartyResult.PartyNotFound); } if (forceRemove == false && partyData.StartTime <= TimeUtil.NOW()) { return(MarryPartyResult.AlreadyStart); } MarryPartyConfigData configData = GetMarryPartyConfigData(partyData.PartyType); if (null == configData) { return(MarryPartyResult.InvalidParam); } if (MarryPartyRemoveInternal(roleID, forceRemove, client, partyData) == false) { return(MarryPartyResult.PartyNotFound); } if (forceRemove == false) { // 手动取消,直接返绑金 GameManager.ClientMgr.AddMoney1(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, configData.PartyCost, "婚宴退款", false); SendMarryPartyList(client, new MarryPartyData()); //if (m_MarryPartyDataCache.GetPartyCount() <= 0) //{ // lock (MarryPartyNPCShowMutex) // { // if (MarryPartyNPCShow == true) // { // // TODO: add npc // MarryPartyNPCShow = false; // } // } //} } else { // 被动强制取消, 如果婚宴沒开始, 邮件返绑金 if (partyData.StartTime > TimeUtil.NOW()) { GoodsData goodData = Global.GetNewGoodsData(50014, 1); goodData.GCount = configData.PartyCost / 10000; List <GoodsData> goodList = new List <GoodsData>(); goodList.Add(goodData); Global.UseMailGivePlayerAward3(roleID, goodList, "婚宴取消", "你的婚宴被取消,返回金币请查收!", 0); } } return(MarryPartyResult.Success); }
private bool MarryPartyRemoveInternal(int roleID, bool forceRemove, GameClient self, MarryPartyData partyData = null) { if (m_MarryPartyDataCache.RemoveParty(roleID) == false) { return(false); } byte[] byteData = null; TCPProcessCmdResults dbResult = Global.RequestToDBServer3(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, (int)TCPGameServerCmds.CMD_DB_MARRY_PARTY_REMOVE, string.Format("{0}", roleID), out byteData, self.ServerId ); if (dbResult == TCPProcessCmdResults.RESULT_FAILED) { if (forceRemove == false) { m_MarryPartyDataCache.RemovePartyCancel(partyData); return(false); } } return(true); }
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); }