From 8dabd16a2b668b73b6139b0d4d443b896d7d312f Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期三, 19 九月 2018 13:54:32 +0800 Subject: [PATCH] fix:3623 子 任务修改 / 【后端】增加洗练至X级时触发的接口 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyRedPacket.py | 64 ++++++++++++++++++++++++-------- 1 files changed, 48 insertions(+), 16 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyRedPacket.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyRedPacket.py index 368ac60..a608139 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyRedPacket.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyRedPacket.py @@ -46,32 +46,59 @@ ## OnDay处理 # @param curPlayer # @return None -def RedPacketOnDay(curPlayer): - #发钻石红包额度重置 - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0) - __NotifyGoldLimt(curPlayer) +def RedPacketOnDay(curPlayer, onEventType): + if onEventType == ShareDefine.Def_OnEventType: + #发钻石红包额度重置 + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FamilyRedPacketGoldLimit, 0) + __NotifyGoldLimt(curPlayer) + elif onEventType == ShareDefine.Def_OnEventTypeEx: + oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg') + openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + if openServerDay < oscDay: + grabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketCanGrabCnt, 0) + sendCnt = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 5) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, grabCnt+sendCnt) + NotifyOSRedPacket(curPlayer) return + +def CreatCacheRedPacktet(curPlayer): + #加入仙盟后,发放待发的红包 + ipyMgr = IpyGameDataPY.IPY_Data() + for i in xrange(ipyMgr.GetFamilyRedPackCount()): + ipyData = ipyMgr.GetFamilyRedPackByIndex(i) + redPacketID = ipyData.GetID() + if GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_FamilyRedPacketCache, redPacketID): + CreatRedPacketByID(curPlayer, redPacketID) + GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FamilyRedPacketCache, redPacketID, 0) + return + def CreatRedPacketByID(curPlayer, redPacketID, state=State_NoSend, data=0): #根据红包ID生成红包 ipyData = IpyGameDataPY.GetIpyGameData('FamilyRedPack', redPacketID) if not ipyData: return - DoCreatFamilyRedPacket(curPlayer, ipyData.GetGetType(), ipyData.GetMoneyType(), ipyData.GetMoneyNum(), ipyData.GetPacketCnt(), state, '', data) - return - -## 生成红包 -def DoCreatFamilyRedPacket(curPlayer, getType, moneyType=2, awardNum=100, packetCnt=10, state=State_NoSend, wishInfo='', data=0): -# if not curPlayer.GetFamilyID(): -# #没家族 -# return - + getType = ipyData.GetGetType() if getType == IpyGameDataPY.GetFuncCfg('OpenServerRedPacketType'): oscDay = IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg') openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) if openServerDay >= oscDay: GameWorld.DebugLog(' 发开服红包,活动已过,不可发送!') return + else: + if not curPlayer.GetFamilyID(): + #没家族 先存起来,等进仙盟时再补发 + GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_FamilyRedPacketCache, redPacketID, 1) + return + + DoCreatFamilyRedPacket(curPlayer, getType, ipyData.GetMoneyType(), ipyData.GetMoneyNum(), ipyData.GetPacketCnt(), state, '', data) + return + +## 生成红包 +def DoCreatFamilyRedPacket(curPlayer, getType, moneyType=2, awardNum=100, packetCnt=10, state=State_NoSend, wishInfo='', data=0): + + + playerID = curPlayer.GetPlayerID() packetCnt = min(packetCnt, awardNum) @@ -81,7 +108,11 @@ if awardNum + goldLimit > familyRedPacketGoldLimit: GameWorld.DebugLog(' 主动发仙盟钻石红包,额度已超%s,不可发送!' % familyRedPacketGoldLimit, playerID) return - + if not PlayerControl.HaveMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney, awardNum): + curBourseMoney = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney) + GameWorld.Log(" 不能发钻石红包 no enough bourse money! priceCount=%s,curBourseMoney=%s" + % (awardNum, curBourseMoney), playerID) + return if not PlayerControl.PayMoney(curPlayer, moneyType, awardNum, ChConfig.Def_Cost_FamilyRedPacket): return @@ -209,8 +240,8 @@ if not isSelf: #抢自己的红包不扣次数 grabCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_OSRedPacketCanGrabCnt, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketCanGrabCnt, max(0, grabCnt-1)) - if grabCnt == IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 4): - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketStartTime, int(time.time())) +# if grabCnt == IpyGameDataPY.GetFuncCfg('OpenServerRedPacketCfg', 4): +# PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_OSRedPacketStartTime, int(time.time())) #通知 @@ -218,6 +249,7 @@ return def ProcessOSRedPacket(curPlayer, tick): + return #开服红包恢复次数 if not GameWorld.SetPlayerTickTime(curPlayer, ChConfig.TYPE_Player_Tick_OSRedPacket, tick): return -- Gitblit v1.8.0