From c53bdc3bc2a095d25e5fdd7fa4b37c0106db874f Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 23 八月 2021 22:16:17 +0800
Subject: [PATCH] 8796 【主干】【gt_1.101.1】【后端】Part1 2、每日在线送符印寻宝20次(主干固定为七日在线奖励);
---
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py | 95 +++++++++++++++++++++++++++--------------------
1 files changed, 55 insertions(+), 40 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py
index 9a5ae44..cd8ba65 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py
@@ -15,11 +15,12 @@
#"""Version = 2019-01-29 16:00"""
#-------------------------------------------------------------------------------
-import PlayerFamilyRedPacket
-import ShareDefine
import GameWorld
import IpyGameDataPY
import PlayerDBGSEvent
+import PlayerFamilyRedPacket
+import ChPyNetSendPack
+import NetPackCommon
## GM命令执行入口
@@ -28,52 +29,66 @@
# @return None or True
# @remarks 函数详细说明.
def OnExec(curPlayer, paramList):
+ GameWorld.DebugLog("执行GameServer->SetRedPacket: %s" % paramList)
if not paramList:
+# GameWorld.DebugAnswer(curPlayer, "清除所有类型红包:SetRedPacket 0")
+# GameWorld.DebugAnswer(curPlayer, "清除指定类型红包:SetRedPacket 0 类型A 类型B ...")
+# GameWorld.DebugAnswer(curPlayer, "发送全服系统红包:SetRedPacket 36 红包编号 个数")
+# GameWorld.DebugAnswer(curPlayer, "全服系统红包编号:126~130")
+# GameWorld.DebugAnswer(curPlayer, "红包类型:36-全服红包;33-节日成就")
return
-
-# GameWorld.DebugAnswer(curPlayer, "重置所有红包领取:SetRedPacket 0")
-# GameWorld.DebugAnswer(curPlayer, "清除所有类型红包:SetRedPacket 0 0")
-# GameWorld.DebugAnswer(curPlayer, "清除指定类型红包:SetRedPacket 0 类型A 类型B ...")
paramA = paramList[0]
- paramB = paramList[1] if len(paramList) > 1 else None
- # 重置所有红包数据
if paramA == 0:
- PlayerFamilyRedPacket.g_allRecordDict = {}
- PlayerFamilyRedPacket.g_grabDataDict = {}
- PlayerFamilyRedPacket.g_redPackCountDict = {}
+ delRedIDList = []
+ delTypeList = paramList[1:]
+ redpacketMgr = PlayerFamilyRedPacket.GetRedpacketMgr()
+ for redPacketID, redPacketObj in redpacketMgr.allRedPacketDict.items():
+ getWay = redPacketObj.getWay
+ if delTypeList and getWay not in delTypeList:
+ continue
+ delRedIDList.append(redPacketID)
+ redpacketMgr.allRedPacketDict.pop(redPacketID)
+ familyID = redPacketObj.familyID
+ if familyID in redpacketMgr.familyRedPacketDict:
+ redpacketMgr.DelFamilyRedPacketID(familyID, redPacketID)
+ redpacketMgr.DelActiveRedPacketID(getWay, redPacketID)
+ for playerID in redpacketMgr.playerNosendRedPacketIDInfo.keys():
+ redpacketMgr.DelPlayerNosendRedPacketID(playerID, getWay, redPacketID)
+ for playerID in redpacketMgr.playerCanGetRedPacketIDInfo.keys():
+ redpacketMgr.DelPlayerCanGetRedPacketID(playerID, getWay, redPacketID)
+ if redPacketID in redpacketMgr.notifyAllServerRedPacketIDList:
+ redpacketMgr.notifyAllServerRedPacketIDList.remove(redPacketID)
+
+ __ResetSendState(delTypeList)
+ GameWorld.DebugAnswer(curPlayer, "清除类型红包OK!%s,条数:%s" % (delTypeList, len(delRedIDList)))
- universalRecMgr = GameWorld.GetUniversalRecMgr()
- # 清除所有类型红包
- if paramB == 0:
- universalRecMgr.Delete(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketAllRecord)
- __ResetSendState([])
- GameWorld.DebugAnswer(curPlayer, "清除所有类型红包OK!")
+ if delRedIDList:
+ sendPack = ChPyNetSendPack.tagGCRedPacketDel()
+ sendPack.DelRedPacketID = delRedIDList
+ sendPack.Cnt = len(delRedIDList)
- # 清除指定类型红包
- elif paramB:
- delTypeList = paramList[1:]
- allRecordList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketAllRecord)
- delCount = 0
- for index in xrange(allRecordList.Count()):
- universalRecData = allRecordList.At(index - delCount)
- strValue1 = universalRecData.GetStrValue1()
- strValue1List = strValue1.split('|')
- getWay = int(strValue1List[3])
- if getWay not in delTypeList:
+ playerManager = GameWorld.GetPlayerManager()
+ for index in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(index)
+ if not curPlayer.GetID():
continue
- allRecordList.Delete(index)
- delCount += 1
- __ResetSendState(delTypeList)
- GameWorld.DebugAnswer(curPlayer, "清除指定类型红包OK!%s,条数:%s" % (delTypeList, delCount))
-
- # 清除抢的记录
- universalRecMgr.Delete(ShareDefine.Def_UniversalGameRecType_FamilyRedPacketGrabRecord)
- PlayerFamilyRedPacket.NotifyRedPacketInfo(curPlayer)
- GameWorld.DebugAnswer(curPlayer, "清除所有红包领取记录OK!")
- return
-
-
+ NetPackCommon.SendFakePack(curPlayer, sendPack)
+
+ elif paramA == 36:
+ redPackID = paramList[1] if len(paramList) > 1 else 0
+ sendCount = paramList[2] if len(paramList) > 2 else 0
+ sendCount = min(100, sendCount)
+ canSendRedPacketIDList = range(126, 130 + 1) + []
+ if redPackID not in canSendRedPacketIDList or not sendCount:
+ GameWorld.DebugAnswer(curPlayer, "发送全服系统红包参数错误!")
+ return
+ for _ in xrange(sendCount):
+ PlayerFamilyRedPacket.CreateSystemRedPacket(redPackID)
+ GameWorld.DebugAnswer(curPlayer, "成功发送红包编号:%s 共:%s个" % (redPackID, sendCount))
+
+ else:
+ GameWorld.DebugAnswer(curPlayer, "红包命令参数错误!")
return
def __ResetSendState(delTypeList):
--
Gitblit v1.8.0