From 49070a560884ed182b8fb8ca8d5b515c6305fa7c Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 27 三月 2024 14:45:53 +0800 Subject: [PATCH] 10019 【砍树】回合战斗(优化强化灵兽、弱化灵兽、强化治疗、弱化治疗属性对灵宠治疗技能值的计算规则) --- ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py | 104 ++++++++++++++++++++++++++++++++-------------------- 1 files changed, 64 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..8cbc53c 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/SetRedPacket.py @@ -15,11 +15,13 @@ #"""Version = 2019-01-29 16:00""" #------------------------------------------------------------------------------- -import PlayerFamilyRedPacket -import ShareDefine import GameWorld import IpyGameDataPY import PlayerDBGSEvent +import PlayerFamilyRedPacket +import ChPyNetSendPack +import NetPackCommon +import ShareDefine ## GM命令执行入口 @@ -28,52 +30,74 @@ # @return None or True # @remarks 函数详细说明. def OnExec(curPlayer, paramList): + GameWorld.DebugLog("执行GameServer->SetRedPacket: %s" % paramList) if not paramList: +# GameWorld.DebugAnswer(curPlayer, "---------------------------") +# GameWorld.DebugAnswer(curPlayer, "清所有红包:SetRedPacket 0") +# GameWorld.DebugAnswer(curPlayer, "清指定红包:SetRedPacket 0 类型A 类型B ...") +# GameWorld.DebugAnswer(curPlayer, "发指定红包:SetRedPacket 1 红包编号 个数") +# GameWorld.DebugAnswer(curPlayer, "设置抢红包:SetRedPacket 2 红包功能 可抢数 已抢额度") +# GameWorld.DebugAnswer(curPlayer, "红包功能:1-开服红包;2-节日红包") 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 == 1: + redPackID = paramList[1] if len(paramList) > 1 else 0 + sendCount = paramList[2] if len(paramList) > 2 else 0 + sendCount = min(100, sendCount) + ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPackID) + if not ipyData: + return + getType = ipyData.GetGetType() + wayType = PlayerFamilyRedPacket.GetRedPackGetWayType(getType) + if wayType == ShareDefine.RedPackWayType_Family: + return + openTime = ipyData.GetPacketOpenTime() # 如果有指定发放时间的 + if openTime: + sendCount = 1 + 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