From d2e8880933fca8e8d8a8f0205bdd9ea95f4ec665 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 20 十二月 2023 15:58:14 +0800
Subject: [PATCH] 10024 【主干】【港台】【砍树】新增三种战令(增加战令类型4:古宝总星级)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py | 41 ++++++++++++++++++++++-------------------
1 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
index ccd7413..d2dca9f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyRedPacket.py
@@ -422,6 +422,8 @@
playerCanGetIDList = []
for redPacketID in nowActiveRedPacketIDList:
redPacketObj = redPacketMgr.GetRedPacketObj(redPacketID, False)
+ if not redPacketObj:
+ continue
if playerID in redPacketObj.grabDict:
continue
playerCanGetIDList.append(redPacketID)
@@ -446,6 +448,14 @@
PlayerDBGSEvent.SetDBGSTrig_ByKey(DBKey_RedPacketSystemDayCount, 0) # 重置每日全服系统红包发放个数
RandTodayServerSystemRedPacketSendTime()
return
+
+def GetRedPackGetWayType(getWay):
+ ## 获取红包getWay所属红包分类
+ getWayTypeDict = IpyGameDataPY.GetFuncEvalCfg("RedPacketClassify", 1, {})
+ for getWayType, getWayList in getWayTypeDict.items():
+ if getWay in getWayList:
+ return getWayType
+ return ShareDefine.RedPackWayType_Family
def CheckDelRedpacketData():
## 检查红包删除红包,5分钟一次: 1-删除过期红包,2-删除已全部抢完的红包
@@ -711,6 +721,8 @@
for i in xrange(checkIndex + 1, len(nowActiveRedPacketIDList)):
newCanGetRedID = nowActiveRedPacketIDList[i]
newRedPacketObj = redPacketMgr.GetRedPacketObj(newCanGetRedID, False)
+ if not newRedPacketObj:
+ continue
if playerID in newRedPacketObj.grabDict:
continue
if newCanGetRedID not in canGetIDList:
@@ -861,7 +873,7 @@
sendTimeList = []
sysRedPackketSendCountToday = PlayerDBGSEvent.GetDBGSTrig_ByKey(DBKey_RedPacketSystemDayCount)
maxCount = IpyGameDataPY.GetFuncCfg("ServerSysRedPacket", 1)
- if maxCount:
+ if not maxCount:
return
needSendCount = max(0, maxCount - sysRedPackketSendCountToday)
@@ -957,7 +969,8 @@
PlayerDBGSEvent.SetDBGSTrig_ByKey(DBKey_RedPacketSend % redPackID, 1)
GameWorld.DebugLog("定时发放的红包,设置已发放! redPackID=%s" % redPackID)
- if getType == ShareDefine.RedPackType_Server:
+ getWayType = GetRedPackGetWayType(getType)
+ if getWayType == ShareDefine.RedPackWayType_Server:
isAnonymous = 1
job = 0
@@ -983,11 +996,7 @@
family = GameWorld.GetFamilyManager().FindFamily(familyID)
if not family:
return
- packetCnt = min(packetCnt, family.GetCount())
-# if getType != 0:
-# commonCntLimit = IpyGameDataPY.GetFuncCfg('FamilyRedPacketCnt')
-# packetCnt = max(packetCnt, commonCntLimit)
-
+
if outputNum < packetCnt:
GameWorld.DebugLog(" 生成新仙盟红包 红包额度不能低该红包个数!outputNum=%s,redCnt=%s" % (outputNum, packetCnt))
return
@@ -1059,21 +1068,14 @@
#通知
OnChangeRedPacketState(family, redPacketObj, None)
- if getType == ShareDefine.RedPackType_OpenServer:
- if not PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSRedPacket):
- PlayerControl.WorldNotify(0, 'OpenRedBag2', [playerName, data, outputNum])
- PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OSRedPacket, 1)
- elif data in IpyGameDataPY.GetFuncEvalCfg('OSRSuccess'):
- PlayerControl.WorldNotify(0, 'OpenRedBag3', [playerName, data, outputNum])
-
+
if not familyID:
#大于200额度的红包
getTypeRainDict = IpyGameDataPY.GetFuncEvalCfg('OpenServerRedPacketRain', 2, {})
if str(getType) in getTypeRainDict:
PlayerControl.WorldNotify(0, getTypeRainDict[str(getType)])
- elif outputNum >= IpyGameDataPY.GetFuncCfg('OpenServerRedPacketRain') \
- and getType not in [ShareDefine.RedPackType_Server]:
- PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])
+ elif outputNum >= IpyGameDataPY.GetFuncCfg('OpenServerRedPacketRain'):
+ PlayerControl.WorldNotify(0, 'OSRedpackSfx', [getType])
return redPacketObj
@@ -1183,9 +1185,10 @@
GameWorld.ErrLog("领取的红包类型不一致,无法领取! reqGetWay=%s,getWay=%s" % (reqGetWay, getWay))
return
- if getWay in [ShareDefine.RedPackType_OpenServer, ShareDefine.RedPackType_Server]:
+ getWayType = GetRedPackGetWayType(getWay)
+ if getWayType == ShareDefine.RedPackWayType_Server:
getNumformula = IpyGameDataPY.GetFuncCompileCfg('OpenRedRacketOutNum')
- elif getWay in ShareDefine.FeastRedPackType:
+ elif getWayType == ShareDefine.RedPackWayType_Feast:
getNumformula = IpyGameDataPY.GetFuncCompileCfg('FeastRedPacket', 2)
else:
getNumformula = IpyGameDataPY.GetFuncCompileCfg('FamilyRedRacketOutNum')
--
Gitblit v1.8.0