| | |
| | | syncCoupleInfo = {}
|
| | | if syncPlayerIDList == None:
|
| | | syncPlayerIDList = self.coupleIDDict.keys()
|
| | | # 分批同步,子服长度不能超过 65535,每批暂定最大同步1000个
|
| | | for playerID in syncPlayerIDList:
|
| | | couple = self.GetCouple(playerID)
|
| | | if not couple:
|
| | | syncCoupleInfo[playerID] = []
|
| | | else:
|
| | | syncCoupleInfo[playerID] = couple.GetSendMapServerCoupleInfo(playerID)
|
| | | if len(syncCoupleInfo) >= 1000:
|
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_CoupleInfo, syncCoupleInfo)
|
| | | syncCoupleInfo = {}
|
| | | if not syncCoupleInfo:
|
| | | return
|
| | | GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_CoupleInfo, syncCoupleInfo)
|
| | | return
|
| | |
|
| | |
| | | PyGameData.g_marryReqInfo.pop(playerID, None) # 可能存在相互提亲的情况,尝试顺便把自身的提亲请求删除,因为已经无用了
|
| | | return True
|
| | |
|
| | | def GMAddCandy(curPlayer, bridePriceID, addCount):
|
| | | ## GM添加测试喜糖宴会
|
| | | fakeID = 0
|
| | | for playerIDA, playerIDB in PyGameData.g_marryCandyInfo.keys():
|
| | | if playerIDA < 10000:
|
| | | fakeID = max(playerIDA, fakeID)
|
| | | if playerIDB < 10000:
|
| | | fakeID = max(playerIDB, fakeID)
|
| | | |
| | | ipyData = IpyGameDataPY.GetIpyGameData("Marry", bridePriceID)
|
| | | if not ipyData:
|
| | | return 0
|
| | | prosperity = ipyData.GetProsperity()
|
| | | candyTimes = ipyData.GetCandyTimes()
|
| | | |
| | | syncCandyList = []
|
| | | curTime = int(time.time())
|
| | | for _ in xrange(addCount):
|
| | | playerIDA = fakeID + 1
|
| | | playerIDB = fakeID + 2
|
| | | fakeID = playerIDB
|
| | | |
| | | candyObj = MarryCandy()
|
| | | candyObj.playerIDA = playerIDA
|
| | | candyObj.playerNameA = PlayerSocial.GetSocialPlayerName(playerIDA)
|
| | | candyObj.playerIDB = playerIDB
|
| | | candyObj.playerNameB = PlayerSocial.GetSocialPlayerName(playerIDB)
|
| | | candyObj.bridePriceID = bridePriceID
|
| | | candyObj.marryTime = curTime
|
| | | candyObj.endTime = curTime + candyTimes
|
| | | AddProsperity(candyObj, prosperity)
|
| | | |
| | | PyGameData.g_marryCandyInfo[(playerIDA, playerIDB)] = candyObj
|
| | | syncCandyList.append(candyObj)
|
| | | |
| | | __SortCandy()
|
| | | Sync_CandyList(None, syncCandyList)
|
| | | return addCount
|
| | | |
| | | def __SortCandy():
|
| | | PyGameData.g_marryCandySortList = PyGameData.g_marryCandyInfo.values()
|
| | | PyGameData.g_marryCandySortList.sort(key=operator.attrgetter("endTime"))
|
| | |
| | | tagPlayerID = dataMsg[0]
|
| | | playerID = curPlayer.GetPlayerID()
|
| | |
|
| | | if not PlayerControl.GetDBPlayerAccIDByID(tagPlayerID):
|
| | | PlayerControl.NotifyCode(curPlayer, "NoInDBPlayer")
|
| | | return
|
| | | |
| | | # 黑名单检查
|
| | | if PyDataManager.GetBlacklistManager().CheckBlacklistBoth(playerID, tagPlayerID, curPlayer):
|
| | | return
|
| | |
| | | if not ipyData:
|
| | | return
|
| | |
|
| | | addCharmSelf = ipyData.GetAddCharmSelf() * giftCount
|
| | | addCharmTag = ipyData.GetAddCharmTag() * giftCount
|
| | | addCharmSelf = int(ipyData.GetAddCharmSelf() * giftCount)
|
| | | addCharmTag = int(ipyData.GetAddCharmTag() * giftCount)
|
| | | addIntimacy = ipyData.GetAddIntimacy() * giftCount
|
| | | worldNotifyKey = ipyData.GetWorldNotifyKey()
|
| | |
|
| | |
| | |
|
| | | playerID = curPlayer.GetPlayerID()
|
| | |
|
| | | if not PlayerControl.GetDBPlayerAccIDByID(tagPlayerID):
|
| | | PlayerControl.NotifyCode(curPlayer, "NoInDBPlayer")
|
| | | return
|
| | | |
| | | # 黑名单检查
|
| | | if PyDataManager.GetBlacklistManager().CheckBlacklistBoth(playerID, tagPlayerID, curPlayer):
|
| | | return
|
| | |
| | | coupleID = couple.GetCoupleID(playerID)
|
| | | if coupleID != tagPlayerID:
|
| | | GameWorld.Log("已成亲伴侣ID不一致,无法提亲! tagPlayerID(%s) != coupleID(%s)" % (tagPlayerID, coupleID), playerID)
|
| | | return
|
| | | |
| | | if couple.GetBreakRequestID():
|
| | | PlayerControl.NotifyCode(curPlayer, "LimitByMarryBroke") # 和离中无法操作
|
| | | return
|
| | |
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("Marry", bridePriceID)
|
| | |
| | |
|
| | | clientPack = ChPyNetSendPack.tagGCCandyList()
|
| | | clientPack.CandyInfoList = []
|
| | | for candyObj in PyGameData.g_marryCandySortList:
|
| | | for candyObj in syncCandyList:
|
| | | candyInfo = ChPyNetSendPack.tagGCCandyInfo()
|
| | | candyInfo.PlayerIDA = candyObj.playerIDA
|
| | | candyInfo.PlayerNameA = candyObj.playerNameA
|
| | |
| | | continue
|
| | |
|
| | | for candyInfo in clientPack.CandyInfoList:
|
| | | coupleIDInfo = (candyInfo.PlayerIDA, candyInfo.PlayerIDB)
|
| | | if coupleIDInfo not in PyGameData.g_marryCandyInfo:
|
| | | continue
|
| | | candyObj = PyGameData.g_marryCandyInfo[coupleIDInfo]
|
| | | candyInfo.FireworksPlayerBuyCount = candyObj.fireworksCountDict.get(curPlayer.GetPlayerID(), 0)
|
| | | candyInfo.PlayerFreeEatCandyCount = candyObj.playerFreeEatCountDict.get(curPlayer.GetPlayerID(), 0)
|
| | |
|