ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -45,6 +45,7 @@
import PlayerFlashGiftbag
import PlayerFairyCeremony
import PlayerGoldGift
import PlayerActTotalRecharge
import ItemCommon
#---------------------------------------------------------------------
@@ -55,6 +56,27 @@
def GetCoinRate(): return IpyGameDataPY.GetFuncCfg("PayRMB")
def OnLogin(curPlayer):
    # 重置充值次数
    if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_CTGDoublePrize):
        GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_CTGDoublePrize, 1)
        ipyDataMgr = IpyGameDataPY.IPY_Data()
        for i in xrange(ipyDataMgr.GetCTGCount()):
            ipyData = ipyDataMgr.GetCTGByIndex(i)
            recordID = ipyData.GetRecordID()
            totalBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID)
            todayBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCount % recordID)
            if not totalBuyCount and not todayBuyCount:
                continue
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGGoodsBuyCount % recordID, 0)
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, 0)
            drDict = {"PlayerID":curPlayer.GetPlayerID(),"AccID":curPlayer.GetAccID(), "totalBuyCount":totalBuyCount, "todayBuyCount":todayBuyCount, "recordID":recordID}
            DataRecordPack.SendEventPack("ResetCTGCount", drDict, curPlayer)
            GameWorld.Log("重置充值次数: recordID=%s,totalBuyCount=%s,todayBuyCount=%s"
                          % (recordID, totalBuyCount, todayBuyCount), curPlayer.GetPlayerID())
    else:
        GameWorld.DebugLog("已经重置过充值次数!")
    Sync_CoinToGoldCountInfo(curPlayer)
    return
@@ -124,7 +146,7 @@
    isAddBourseMoney = chargeInfo.GetIsAddBourseMoney()
    appID = chargeInfo.GetAppID()
    if not appID:
        appID = GameWorld.GetPlatform()
        appID = GameWorld.GetPlayerPlatform(curPlayer)
    addDRDict = {"orderCoin":orderCoin, "orderInfo":orderInfo, "orderID":orderID, 
                 "isAddBourseMoney":isAddBourseMoney, "eventName":eventName, "appID":appID}
    
@@ -142,13 +164,13 @@
        DataRecordPack.DR_CTGError(curPlayer, "The orderCoin is not equal to the ipyData's RMB(%s)!" % payRMBNum, addDRDict)
        return
    
    addGold, prizeGold, giveItemList = 0, 0, []
    addGold, prizeGold, giveItemList, notifyMark = 0, 0, [], ''
    
    if ipyData.GetCTGID():
        ctgResultInfo = __GetCTGInfoByID(curPlayer, chargeInfo, ipyData.GetCTGID(), eventName, addDRDict, isAddBourseMoney)
        if not ctgResultInfo:
            return
        addGold, prizeGold, giveItemList = ctgResultInfo
        addGold, prizeGold, giveItemList, notifyMark = ctgResultInfo
        
    elif ipyData.GetGiftbagID():
        if not PlayerFlashGiftbag.OnPlayerOrderGiftbag(curPlayer, [ipyData.GetGiftbagID()], addDRDict):
@@ -158,7 +180,7 @@
        DataRecordPack.DR_CTGError(curPlayer, "The orderInfo is useless!", addDRDict)
        return
    
    DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict)
    DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, notifyMark)
    
    #充值成功主动查询一次,无充值数量就不会继续查询
    if orderID:
@@ -191,6 +213,7 @@
    addGold = ipyData.GetGainGold() # 获得仙玉数
    gainGoldPrize = ipyData.GetGainGoldPrize() # 赠送仙玉数,首次充值赠送仙玉时,此仙玉不给
    firstGoldPrize = ipyData.GetFirstGoldPrize() # 首次充值赠送的仙玉
    notifyMark = ipyData.GetNotifyMark()
    totalBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGGoodsBuyCount % recordID, totalBuyCount + 1)
    prizeGold = firstGoldPrize if (not totalBuyCount and firstGoldPrize) else gainGoldPrize
@@ -198,9 +221,9 @@
    addDRDict.update({"totalBuyCount":(totalBuyCount + 1)})
    
    Sync_CoinToGoldCountInfo(curPlayer, [recordID])
    return addGold, prizeGold, giveItemList
    return addGold, prizeGold, giveItemList, notifyMark
def DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict):
def DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, notifyMark=''):
    goldBefore = curPlayer.GetGold()
    bourseMoneyBefore = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney)
    
@@ -219,6 +242,9 @@
            for itemID, itemCount, isBind in giveItemList:
                ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], 
                                             event=[ChConfig.ItemGive_CTG, True, addDRDict])
        if notifyMark:
            mainItemID = giveItemList[0][0]
            PlayerControl.WorldNotify(0, notifyMark, [curPlayer.GetName(), mainItemID, ''])
                
    addVIPExp = int(orderCoin / 100 * GetCoinRate())
    PlayerVip.AddVIPExp(curPlayer, addVIPExp)
@@ -239,6 +265,7 @@
    #仙界盛典-充值大礼
    PlayerFairyCeremony.OnFCRecharge(curPlayer)
    PlayerGoldGift.DayChargeRedPackAward(curPlayer)
    PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, addGold)
    GameWorld.Log("Billing: eventName=%s, %s" % (eventName, addDRDict), curPlayer.GetPlayerID())
    return