From 38904391ac59bc51133e66b9b5150c6b5db46ec4 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 08 十月 2019 17:58:00 +0800
Subject: [PATCH] 8301 【恺英】【后端】仙缘币货币调整(改为给灵石,刷新召唤改为消耗灵石)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py |  365 +++++++++------------------------------------------
 1 files changed, 65 insertions(+), 300 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
index 56a5da5..1295897 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGoldGift.py
@@ -36,7 +36,6 @@
 #------------------------------------------------------------------------------ 
 import GameWorld
 import IPY_GameWorld
-import ReadChConfig
 import ItemControler
 import ChConfig
 import ItemCommon
@@ -46,194 +45,11 @@
 import ChPyNetSendPack
 import PlayerFamilyRedPacket
 import NetPackCommon
-import PyMapTable
-import PlayerCoin
 import IpyGameDataPY
 import PlayerTJG
 import ChEquip
 
 import time
-import FunctionNPCCommon
-
-# 定义配表外围索引
-(
-Def_NotifyMark, # 系统提示mark
-Def_NeedSpace, # 所需格子数
-Def_GiftInfo, # 奖品信息
-) = range(3)
-
-# 定义奖励物品信息索引
-(
-Def_InfoIndex_ItemType, # 物品类型 
-Def_InfoIndex_ItemID, # 物品id或定制物品索引
-Def_InfoIndex_ItemCount, # 物品个数
-Def_InfoIndex_IsBind, # 是否绑定
-) = range(4)
-
-
-# 定义物品类型
-(
-Def_ItemType_CommonItem, # 一般物品
-Def_ItemType_AppointItem, # 特殊定制物品
-) = range(2)
-
-## 领取玩家充值豪礼奖励
-#  @param giftNum:豪礼编号,从0开始
-#  @return None
-def GetPlayerGoldGift(curPlayer, giftNum):
-    
-    # 检查可否领取
-    if not __CheckCanGetGift(curPlayer, giftNum):
-        GameWorld.DebugLog("return can not Get GoldGift!!!")
-        return
-    
-    goldGiftInfo = ReadChConfig.GetEvalChConfig("GoldGiftInfo_%s" % giftNum)
-    
-    # 检查背包
-    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)
-    needSpace = goldGiftInfo[Def_NeedSpace]
-    if needSpace > packSpace:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-        return
-    
-    # 给物品
-    if not __GiveGoldGift(curPlayer, goldGiftInfo[Def_GiftInfo]):
-        return
-    
-    # 全服提示
-    notifyMark = goldGiftInfo[Def_NotifyMark]
-    #如果有消息提示
-    if notifyMark.strip() != "":
-        PlayerControl.WorldNotify(0, notifyMark, [curPlayer.GetPlayerName()])
-    vipLV = curPlayer.GetVIPLv()
-    msgParamList = [vipLV, curPlayer.GetPlayerName(), giftNum + 1]
-    PlayerControl.WorldNotify(0, "GeRen_liubo_927007", msgParamList)
-        
-    # 更新已领取成功标记
-    __UpdateLVAwardGetRecord(curPlayer, giftNum)
-    
-    # 记录领取事件
-    DataRecordPack.DR_GoldGiftGiveItem(curPlayer, giftNum)
-    
-    # 通知客户端
-    Sync_GoldGiftGetRecordInfo(curPlayer)
-    return
-
-
-## 通知充值豪礼领取记录信息
-#  @param None
-#  @return None
-def Sync_GoldGiftGetRecordInfo(curPlayer):
-    #getRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftGetRecord, 0,
-    #                                          ChConfig.Def_PDictType_GoldGift)
-    #ChPlayer.Sync_RewardGetRecordInfo(curPlayer, ShareDefine.Def_RewardType_GoldGift, getRecord)
-    return
-
-
-## 给玩家充值豪礼奖励物品
-#  @param curPlayer:玩家实例
-#  @param goldGiftInfoDict:充值豪礼物品配置字典
-#  @return None
-def __GiveGoldGift(curPlayer, goldGiftInfoDict):
-
-    goldGiftInfoList = __GetGoldGiftInfoList(curPlayer, goldGiftInfoDict)
-    
-    # 如果找不到对应的奖励信息,则返回False
-    if not goldGiftInfoList:
-        return False
-    
-    # 给物品
-    for giftInfo in goldGiftInfoList:
-        itemType = giftInfo[Def_InfoIndex_ItemType]
-        itemCount = giftInfo[Def_InfoIndex_ItemCount]
-        itemID = giftInfo[Def_InfoIndex_ItemID]
-        isBind = 0
-        if len(giftInfo) > Def_InfoIndex_IsBind:
-            isBind = giftInfo[Def_InfoIndex_IsBind]
-
-        if itemCount <= 0:
-            continue
-        
-        # 一般物品
-        if itemType == Def_ItemType_CommonItem:
-            ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
-        
-        # 特殊定制物品
-        elif itemType == Def_ItemType_AppointItem:
-            itemData = PyMapTable.GetPyMapTable("AppointItemList").GetRecord("ItemIndex", str(itemID))
-            GameWorld.DebugLog("__GiveGoldGift itemData=%s" % itemData)
-            if not itemData:
-                GameWorld.ErrLog("__GiveGoldGift()itemType=%s,ItemIndex=%s not data" % (itemType, itemID))
-                continue
-            
-            if len(itemData) != 1:
-                GameWorld.ErrLog("__GiveGoldGift()itemType=%s,ItemIndex=%s,recordCount=%s !=1 error" % \
-                                                        (itemType, itemID, len(itemData)))
-                continue
-            
-            itemDictData = itemData[0]
-            itemDictData['IsBind'] = str(isBind)
-            ItemControler.GivePlayerEquip(curPlayer, itemDictData)
-
-    return True
-
-
-## 给玩家充值豪礼奖励物品信息列表
-#  @param curPlayer:玩家实例
-#  @param awardItemInfoDict:奖励物品配置字典
-#  @return None
-def __GetGoldGiftInfoList(curPlayer, goldGiftInfoDict):
-    infoKey = () # 默认key
-    job = curPlayer.GetJob()
-    for key in goldGiftInfoDict.keys():
-        # 如果玩家职业在配置的key里,则取指定的key信息
-        if job in key:
-            infoKey = key
-            break
-        
-    return goldGiftInfoDict[infoKey]
-
-
-## 更新领取记录
-#  @param giftNum:豪礼编号,从0开始
-#  @return None
-def __UpdateLVAwardGetRecord(curPlayer, giftNum):
-    
-    curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftGetRecord, 0,
-                                              ChConfig.Def_PDictType_GoldGift)
-    
-    curValue = curValue|(1 << giftNum)
-    
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GoldGiftGetRecord, curValue,
-                                   ChConfig.Def_PDictType_GoldGift)
-    return
-
-## 检查可否领取
-#  @param giftNum:豪礼编号
-#  @return True-可领取
-def __CheckCanGetGift(curPlayer, giftNum):
-    
-    needGoldCntList = ReadChConfig.GetEvalChConfig("NeedGoldCntList")
-    
-    # 非法索引
-    if giftNum < 0 or giftNum >= len(needGoldCntList):
-        GameWorld.ErrLog("__CheckCanGetGift() error:not giftNum=%s" % (giftNum))
-        return False
-    
-    # 判断已冲元宝数是否满足
-    curChangeCoin = curPlayer.GetChangeCoinPointTotal()
-    curChangeGold = PlayerCoin.GetCoinRate() * curChangeCoin
-    if curChangeGold < needGoldCntList[giftNum]:
-        GameWorld.DebugLog("__CheckCanGetGift() curChangeGold not enough " + \
-                                       "giftNum=%s,needGold=%s,changeGold=%s" % \
-                                       (giftNum, needGoldCntList[giftNum], curChangeGold))
-        return False
-    
-    # 判断是否已领取
-    curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftGetRecord, 0,
-                                              ChConfig.Def_PDictType_GoldGift)
-    return not (curValue & pow(2, giftNum))
-
 
 ##------------------------------------------------------------------------------
 def DoFirstGoldOpen(curPlayer):
@@ -333,24 +149,6 @@
 #  @return: None
 def OnDay(curPlayer):
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyChargeState, 0)
-    
-    #===============================================================================================
-    # curChangeCoin = curPlayer.GetChangeCoinPointTotal()
-    # # 今天之前有充值过才需要处理天天首充
-    # if curChangeCoin > 0:
-    #    # 天天首充状态开启
-    #    dailyGoldState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargeState, 0)
-    #    if not dailyGoldState:
-    #        UpdateDailyGoldState(curPlayer, 1)
-    #    
-    #    # 天天首充领奖状态 0-不可领;1-可领;2-已领
-    #    dailyGoldRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargePrizeRecord, 0)
-    #    if dailyGoldRecord != 1:
-    #        UpdateDailyGoldRecord(curPlayer, 0)
-    #===============================================================================================
-            
-    # 重置今日已充值数, 领取礼包索引
-    #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGoldChargeCnt, 0)
     return
 
 ## 充值豪礼OnLogin
@@ -360,6 +158,7 @@
     Sync_FirstGoldInfo(curPlayer)
     
     Sync_FirstGoldTime(curPlayer)
+    Sync_HistoryChargeAwardGetRecordInfo(curPlayer)
     #更新首充提示开始计时时间
     if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldRemainTime):
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTipStartTime, int(time.time()))
@@ -377,104 +176,6 @@
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGoldChargeCnt, updDailyGoldCnt)
     #PlayerControl.NotifyPlayerDictValue(curPlayer, ChConfig.Def_PDict_DailyGoldChargeCnt)
     
-    # 天天首充已开启才处理
-    dailyGoldState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargeState, 0)
-    if dailyGoldState:
-        # 天天首充领奖状态 0-不可领;1-可领;2-已领
-        dailyGoldRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargePrizeRecord, 0)
-        # 不可领的时候才置为可领
-        if dailyGoldRecord == 0:
-            UpdateDailyGoldRecord(curPlayer, 1)
-    
-    # 充值达到额定元宝获得奖励,邮件发送
-    __GiveGoldGiftByMail(curPlayer)
-    return
-
-## 玩家累计充值元宝发送邮件奖励
-#  @param curPlayer: 玩家
-#  @return: None
-def __GiveGoldGiftByMail(curPlayer):
-    coinPointTotal = curPlayer.GetChangeCoinPointTotal()
-    goldTotal = PlayerCoin.GetCoinRate() * coinPointTotal
-    GameWorld.DebugLog("邮件发送充值豪礼:goldTotal=%s" % (goldTotal))
-    if goldTotal <= 0:
-        return
-    
-    goldGiftByMailList = ReadChConfig.GetEvalChConfig("GoldGiftByMail")
-    playerID = curPlayer.GetPlayerID()
-    for i, giftInfo in enumerate(goldGiftByMailList):
-        
-        needGold = giftInfo[0]
-        giftItemList = giftInfo[1]
-        mailTitle = giftInfo[2]
-        mailContent = giftInfo[3]
-        getDays = giftInfo[4]
-        
-        curMailRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftMailRecord, 0, 
-                                                       ChConfig.Def_PDictType_GoldGift)
-        
-        if curMailRecord&pow(2, i):
-            GameWorld.DebugLog("邮件发送充值豪礼:已发送过!i=%s,needGold=%s" % (i, needGold))
-            continue
-    
-        if goldTotal < needGold:
-            continue
-        
-        if not PlayerControl.SendMail(mailTitle, mailContent, getDays, [playerID], giftItemList):
-            continue
-        
-        updMailRecord = curMailRecord|pow(2, i)
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GoldGiftMailRecord, updMailRecord,
-                                       ChConfig.Def_PDictType_GoldGift)
-        
-        GameWorld.DebugLog("邮件发送充值豪礼:i=%s,needGold=%s,giftItemList=%s,updMailRecord=%s" 
-                           % (i, needGold, str(giftItemList), updMailRecord))
-        # 流向
-        DataRecordPack.DR_GoldGiftGiveItem(curPlayer, "GoldGiftSendMail_%s_%s" % (i, needGold))
-    return
-
-## 领取玩家天天首充奖励
-#  @param curPlayer
-#  @return None
-def GetPlayerDailyGoldChargeGift(curPlayer):
-    
-    dailyGoldRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargePrizeRecord, 0)
-    
-    if dailyGoldRecord != 1:
-        GameWorld.DebugLog("天天首充不可领!当前状态=%s" % dailyGoldRecord)
-        return
-    
-    dailyFirstGoldPrizeInfo = ReadChConfig.GetEvalChConfig("GoldGiftInfoFirstDaily")
-    
-    # 检查背包
-    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)
-    needSpace = dailyFirstGoldPrizeInfo[Def_NeedSpace]
-    if needSpace > packSpace:
-        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
-        return
-    
-    # 给物品
-    if not __GiveGoldGift(curPlayer, dailyFirstGoldPrizeInfo[Def_GiftInfo]):
-        return
-
-    # 全服提示
-    notifyMark = dailyFirstGoldPrizeInfo[Def_NotifyMark]
-    if notifyMark:
-        PlayerControl.WorldNotify(0, notifyMark, [curPlayer.GetPlayerName()])
-
-    UpdateDailyGoldRecord(curPlayer, 2)
-    
-    # 记录领取事件
-    DataRecordPack.DR_GoldGiftGiveItem(curPlayer, "dailyFirstGoldPrize")
-    return
-
-
-## 更新天天首充奖励记录
-#  @param curPlayer
-#  @return None
-def UpdateDailyGoldRecord(curPlayer, record):
-    #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyGoldChargePrizeRecord, record)
-    #Sync_DailyGoldRecordInfo(curPlayer)
     return
 
 def Sync_FirstGoldInfo(curPlayer):
@@ -563,4 +264,68 @@
         return
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyChargeState, 1)
     PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, 2)
+    return
+
+
+def OnGetHistoryRechargeAward(curPlayer, awardID):
+    # 领取历史充值奖励
+    
+    ipyData = IpyGameDataPY.GetIpyGameData('HistoryRechargeAward', awardID)
+    if not ipyData:
+        return
+    
+    getRecharge = ipyData.GetRecharge()
+    # 检查可否领取
+    
+    # 玩家充值小于领取充值
+    if curPlayer.GetChangeCoinPointTotal()/100 < getRecharge:
+        GameWorld.ErrLog("OnGetHistoryRechargeAward error:getRecharge=%s greater than ChangeCoinPointTotal=%s" % (getRecharge, curPlayer.GetChangeCoinPointTotal()))
+        return
+    awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HistoryChargeAwardGetRecord, 0)
+    awardMark = pow(2, awardID)
+    if awardInfo & awardMark:
+        #已领取
+        GameWorld.DebugLog("已领取历史充值奖励!awardID=%s,getRecharge=%s" % (awardID, getRecharge))
+        return
+
+    job = curPlayer.GetJob()
+    awardDict = ipyData.GetReward()
+    if str(job) not in awardDict:
+        return
+    itemList = awardDict[str(job)]
+    
+    if not itemList:
+        return
+    # 检查背包
+    needSpace = len(itemList)
+    packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
+    if needSpace > packSpace:
+        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
+        return
+    
+    # 给物品
+    for itemInfo in itemList:
+        itemID, itemCount = itemInfo[:2]
+        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
+    
+    # 更新已领取成功标记
+    awardMark = pow(2, awardID)
+
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HistoryChargeAwardGetRecord, awardInfo | awardMark)
+    # 通知客户端
+    Sync_HistoryChargeAwardGetRecordInfo(curPlayer)
+    
+    # 记录领取事件
+    DataRecordPack.SendEventPack("HistoryRechargeAward", {'awardID':awardID, 'getRecharge':getRecharge}, curPlayer)
+    return
+
+
+## 通知等级奖励领取记录信息
+#  @param None
+#  @return None
+def Sync_HistoryChargeAwardGetRecordInfo(curPlayer):
+    sendPack = ChPyNetSendPack.tagMCHistoryReChargeAwardRecord()
+    sendPack.Clear()
+    sendPack.AwardGetRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HistoryChargeAwardGetRecord, 0)
+    NetPackCommon.SendFakePack(curPlayer, sendPack)
     return
\ No newline at end of file

--
Gitblit v1.8.0