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