From d7203ff6c31fdb3518b98f773046571eaf45f354 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 21 一月 2025 14:15:19 +0800
Subject: [PATCH] 10263 【越南】【英文】【BT】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(快速战斗后退出副本优化buff通知)
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossLuckyCloudBuy.py | 32 ++++++++++++++++++++++----------
1 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossLuckyCloudBuy.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossLuckyCloudBuy.py
index 8c9ebff..ae64795 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossLuckyCloudBuy.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossLuckyCloudBuy.py
@@ -64,6 +64,8 @@
StrValue3:lotteryInfo 分区信息|大奖信息|中奖玩家账号
'''
+Def_SyncBuyRec_Count = 50
+
class LuckyCloudBuyNum():
''' 幸运云购购买号码记录
'''
@@ -242,6 +244,7 @@
return
Sync_LuckyCloudBuyRoundInfo(curPlayer)
+ Sync_LuckyCloudBuyNumRecInfo(curPlayer)
__LoginNotifyMapCloudBuyNumInfo(curPlayer)
return
@@ -478,6 +481,10 @@
zoneLotteryInfo = {zoneID:[lotteryRec.GetString()]}
dataMsg = {"syncType":"New", "zoneLotteryInfo":zoneLotteryInfo}
CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_LuckyCloudBuyLottery, dataMsg)
+
+ maxBuyCount = IpyGameDataPY.GetFuncCfg("LuckyCloudBuySet", 2)
+ dataMsg = {"syncType":"All", "zoneID":zoneID, "zoneBuyNumList":[], "remainCount":maxBuyCount}
+ CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_LuckyCloudBuyNum, dataMsg)
return True
def Sync_LuckyCloudBuyDataToClientServer(tick, serverGroupID=0):
@@ -498,10 +505,12 @@
for zoneID in PyGameData.g_luckyCloudBuyLotteryDict.keys():
zoneBuyNumList = []
buyRecList = PyGameData.g_luckyCloudBuyNumDict.get(zoneID, [])
- for buyRec in buyRecList:
+ for buyRec in buyRecList[-Def_SyncBuyRec_Count:]:
zoneBuyNumList.append(buyRec.GetString())
- dataMsg = {"syncType":"All", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList}
+ maxBuyCount = IpyGameDataPY.GetFuncCfg("LuckyCloudBuySet", 2)
+ remainCount = max(0, maxBuyCount - len(buyRecList))
+ dataMsg = {"syncType":"All", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList, "remainCount":remainCount}
CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_LuckyCloudBuyNum, dataMsg)
return
@@ -654,11 +663,12 @@
DataRecordPack.SendEventPack("LuckyCloudBuyNum", dataDict)
# 通知子服
- dataMsg = {"syncType":"New", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList, "buyPlayer":[serverGroupID, playerID, roundID, buyCount]}
+ remainCount -= buyCount
+ dataMsg = {"syncType":"New", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList, "buyPlayer":[serverGroupID, playerID, roundID, buyCount], "remainCount":remainCount}
CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_LuckyCloudBuyNum, dataMsg)
# 结算开奖
- if remainCount == buyCount:
+ if remainCount <= 0:
DoLuckyCloudBuyLottery(lotteryRec, False, "SoldOut")
return
@@ -709,11 +719,12 @@
zoneBuyNumList.append(buyRec.GetString())
# 通知子服
- dataMsg = {"syncType":"New", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList}
+ remainCount -= buyCount
+ dataMsg = {"syncType":"New", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList, "remainCount":remainCount}
CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_LuckyCloudBuyNum, dataMsg)
# 结算开奖
- if remainCount == buyCount:
+ if remainCount <= 0:
DoLuckyCloudBuyLottery(lotteryRec, False, "SoldOut")
return
@@ -723,6 +734,7 @@
syncType = msgData["syncType"] # All New
zoneID = msgData["zoneID"]
zoneBuyNumList = msgData["zoneBuyNumList"]
+ remainCount = msgData["remainCount"]
curServerGroupID = GameWorld.GetServerGroupID()
actInfo = CrossActionControl.GetCrossActInfoByServerGroupID(ShareDefine.CrossActName_LuckyCloudBuy, curServerGroupID)
@@ -737,6 +749,8 @@
GameWorld.DebugLog("不是本服务器分区的云购记录不处理! curServerGroupID=%s,serverZoneID(%s) != zoneID(%s)"
% (curServerGroupID, serverZoneID, zoneID))
return
+
+ PyGameData.g_luckyCloudBuyRemainCountDict[zoneID] = remainCount
if syncType == "All":
PyGameData.g_luckyCloudBuyNumDict = {}
@@ -944,12 +958,10 @@
lotteryRec = None if not lotteryRecList else lotteryRecList[-1] # 取最新一期的
if not lotteryRec:
return
- syncRecList = buyRecList[-50:]
-
- maxBuyCount = IpyGameDataPY.GetFuncCfg("LuckyCloudBuySet", 2)
+ syncRecList = buyRecList[-Def_SyncBuyRec_Count:]
clientPack = ChPyNetSendPack.tagGCLuckyCloudBuyNumRecInfo()
- clientPack.RemainCount = max(0, maxBuyCount - len(buyRecList))
+ clientPack.RemainCount = PyGameData.g_luckyCloudBuyRemainCountDict.get(zoneID, 0)
clientPack.BuyNumRecList = []
for buyRec in syncRecList:
buyNumInfo = ChPyNetSendPack.tagGCLuckyCloudBuyNumRec()
--
Gitblit v1.8.0