5076 【主干】【gt_1.101.1】【BT3】【bt3_1.100.1】合服后玩家上线没收到合服邮件(优化登录异常时发邮件逻辑)
| | |
| | | #===============================================================================
|
| | | #初始化物品
|
| | | #ChItem.InitPlayerLoginItem(curPlayer, tick)
|
| | | PlayerControl.ClearUnLoginOKPlayerMailCache(curPlayer.GetPlayerID())
|
| | | return
|
| | | #---------------------------------------------------------------------
|
| | | ##C++封包GameServer_InitOK 处理
|
| | |
| | | break
|
| | | detailDict = {"MixServerWorldLV":mixServerWorldLV, "LastMixServerDay":lastMixServerDay, "ItemWorldLV":itemWorldLV}
|
| | | addItemList = mailItemList + worldLVItemList
|
| | | PlayerControl.SendMailByKey("MixServer1", [playerID], addItemList, gold=gold, silver=silver, detail=detailDict)
|
| | | GameWorld.Log(" 发送合服补偿邮件: itemWorldLV=%s,addItemList=%s" % (itemWorldLV, addItemList), playerID)
|
| | | PlayerControl.SendMailByKey("MixServer1", [playerID], addItemList, gold=gold, silver=silver, detail=detailDict)
|
| | |
|
| | | # 同步排行榜
|
| | | PlayerBillboard.UpdatePlayerBillboardOnLeaveServer(curPlayer, isAll=True)
|
| | |
| | | if playerID not in PyGameData.g_unLoginOKPlayerMailInfo:
|
| | | PyGameData.g_unLoginOKPlayerMailInfo[playerID] = []
|
| | | mailList = PyGameData.g_unLoginOKPlayerMailInfo[playerID]
|
| | | if [cacheType, mailInfo] in mailList:
|
| | | GameWorld.Log("###重复添加GetGameServerInitOK未登录成功的玩家个人邮件发送缓存! 不添加! mailCount=%s, mailInfo=%s" |
| | | % (len(mailList), str(mailInfo)), playerID)
|
| | | return
|
| | | if len(mailList) >= 10: # 做个限制,防止出问题刷邮件
|
| | | GameWorld.Log("###限制添加GetGameServerInitOK未登录成功的玩家个人邮件发送缓存! 超出最大可添加数,不添加! mailCount=%s, mailInfo=%s" |
| | | % (len(mailList), str(mailInfo)), playerID)
|
| | | return
|
| | | mailList.append([cacheType, mailInfo])
|
| | | # curPlayer.GetGameServerInitOK()
|
| | | GameWorld.Log("添加GetGameServerInitOK未登录成功的玩家个人邮件发送缓存! mailCount=%s, %s" % (len(mailList), str(PyGameData.g_unLoginOKPlayerMailInfo)), playerID)
|
| | | return
|
| | |
|
| | | def ClearUnLoginOKPlayerMailCache(playerID):
|
| | | ## 清除未登录成功的玩家个人邮件发送缓存
|
| | | if playerID not in PyGameData.g_unLoginOKPlayerMailInfo:
|
| | | return
|
| | | PyGameData.g_unLoginOKPlayerMailInfo.pop(playerID)
|
| | | GameWorld.Log("清除未登录成功的玩家个人邮件发送缓存!", playerID)
|
| | | GameWorld.Log("添加GetGameServerInitOK未登录成功的玩家个人邮件发送缓存! 等待发送! mailCount=%s, mailInfo=%s" |
| | | % (len(mailList), str(mailInfo)), playerID)
|
| | | return
|
| | |
|
| | | def SendUnLoginOKPlayerMailCache(curPlayer):
|
| | |
| | | PyGameData.g_playerEquipPartAttrDict.pop(playerID, None)
|
| | | PyGameData.g_equipChangeClassLVInfo.pop(playerID, None)
|
| | | NPCCommon.ClearPriWoodPile(curPlayer)
|
| | | ClearUnLoginOKPlayerMailCache(playerID)
|
| | | return
|
| | |
|
| | | ##更新保存玩家在线时间
|