#!/usr/bin/python # -*- coding: GBK -*- #--------------------------------------------------------------------- # #--------------------------------------------------------------------- ##@package PlayerCoin # @todo: Íæ¼Òµã¾í´¦Àí # # @author: panwei # @date 2011-06-30 # @version 2.8 # # @note: ´Ëº¯ÊýÂß¼­¸Ä¶¯ÐèÉ÷ÖØ!!! # # @change: "2013-07-26 17:00" Alee VIP¸Ä³É¹ºÂò # @change: "2013-12-27 16:30" Alee ·ö³ÖÕ˺Š# @change: "2014-01-22 16:00" hxp Ð޸ijäֵʼþͬ²½ÊýֵΪnoteCoin # @change: "2014-04-24 19:10" xcc »Ö¸´Ô­À´³äÖµÉý¼¶vipµÈ¼¶µÄ´¦Àí # @change: "2014-06-12 21:00" hxp Ôö¼Ó³äÖµÀñ°ü´¦ÀíÈë¿Ú # @change: "2014-06-21 15:20" hxp Ôö¼ÓÌØ»Ý³äÖµ»î¶¯ # @change: "2014-10-16 19:00" Alee CTG²»·¢Ëͺǫ́¼Ç¼£¬Á÷Ïò¼Ç¼֧³ÖСÊýµã # @change: "2014-11-11 16:30" xmnathan Ôö¼Ó³äÖµÅÅÐаñ # @change: "2014-11-25 19:30" hxp Ôö¼Ó¿ª·þ³äÖµ»î¶¯ # @change: "2014-12-03 14:30" hxp Ôö¼ÓºÏ·þ³äÖµ»î¶¯ # @change: "2014-12-23 00:30" hxp Ôö¼Ó³äֵǰÐÅÏ¢Á÷Ïò # @change: "2015-01-14 00:30" hxp Ôö¼ÓCTGʼþ»ã±¨ # @change: "2015-06-08 20:30" hxp Ôö¼Óµãȯ¶Ò»»Ê¼þ»ã±¨ # @change: "2015-08-26 14:00" zqx Ôö¼Ó»ñµÃ×êʯ³É¾Í # @change: "2016-06-30 21:30" hxp È¥³ý¿ª·þ»î¶¯ # @change: "2016-07-20 14:30" hxp µãȯ¶Ò»»Ôö¼ÓÁ÷ÏòÀàÐÍ; Á÷ÏòÕûºÏ #------------------------------------------------------------------------------ #"""Version = 2016-07-20 14:30""" #------------------------------------------------------------------------------ import PlayerControl import ItemControler import GameWorld import IPY_GameWorld import DataRecordPack import ChConfig import ChPyNetSendPack import NetPackCommon import PlayerVip import IpyGameDataPY import ShareDefine import PlayerFlashGiftbag import PlayerDailyGiftbag import PlayerFairyCeremony import PlayerNewFairyCeremony import PlayerGoldGift import PlayerActTotalRecharge import PlayerActRechargePrize import PlayerActGrowupBuy import OpenServerCampaign import PlayerWeekParty import PlayerGoldInvest import ItemCommon import time #--------------------------------------------------------------------- #×¢Òâ: GetChangeCoinPointTotal ³äÖµµãºÍÔùË͵ã×ÜºÍ # GetPrizeCoinPointTotal ÔùË͵ã×ÜºÍ #µã¾í¶Ò»»±ÈÂÊ(´Ë±ÈÂÊÑϽûÉÏÏßÔËÓªºóÐÞ¸Ä!!!) def GetCoinRate(): return IpyGameDataPY.GetFuncCfg("PayRMB") def OnLogin(curPlayer): if not DoResetCTGCountByTime(curPlayer): Sync_CoinToGoldCountInfo(curPlayer) if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DayFreeGoldGiftState): Sync_DayFreeGoldGiftState(curPlayer) return def DoResetCTGCountByTime(curPlayer): # ÖØÖóäÖµ´ÎÊý ctgResetTimeYMD = IpyGameDataPY.GetFuncCfg("CTG", 1) if not ctgResetTimeYMD: return if not isinstance(ctgResetTimeYMD, int): GameWorld.ErrLog("³äÖµÖØÖÃʱ¼äÅäÖñØÐëÊÇÊýÖµ¸ñʽ£¬²»Äܰüº¬·ûºÅ!") return curTime = int(time.time()) #playerID = curPlayer.GetPlayerID() resetTime = GameWorld.ChangeTimeStrToNum(str(ctgResetTimeYMD), "%Y%m%d") if curTime < resetTime: #GameWorld.DebugLog("»¹Î´µ½´ï³äÖµ³äÖµ´ÎÊýʱ¼ä£¡curTime=%s < resetTime=%s" % (curTime, resetTime), playerID) return playerResetTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGCountResetTime) if playerResetTime == resetTime: #GameWorld.DebugLog("ÒѾ­ÖØÖùý³äÖµ´ÎÊý£¡resetTime=%s" % resetTime, playerID) return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGCountResetTime, resetTime) DoResetCTGCount(curPlayer, ctgResetTimeYMD) return True def DoResetCTGCount(curPlayer, resetEvent): # ÖØÖóäÖµ´ÎÊý playerID = curPlayer.GetPlayerID() ipyDataMgr = IpyGameDataPY.IPY_Data() for i in xrange(ipyDataMgr.GetCTGCount()): ipyData = ipyDataMgr.GetCTGByIndex(i) recordID = ipyData.GetRecordID() if not ipyData.GetCanResetBuyCount(): continue 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(), "ResetEvent":resetEvent, "totalBuyCount":totalBuyCount, "todayBuyCount":todayBuyCount, "recordID":recordID} DataRecordPack.SendEventPack("ResetCTGCount", drDict, curPlayer) GameWorld.Log("ÖØÖóäÖµ´ÎÊý: resetEvent=%s,recordID=%s,totalBuyCount=%s,todayBuyCount=%s" % (resetEvent, recordID, totalBuyCount, todayBuyCount), playerID) Sync_CoinToGoldCountInfo(curPlayer) return def OnDay(curPlayer): ## ³äÖµÏà¹Ø¹ýÌì #ÔÚÖØÖÃ֮ǰÐèÒª´¦ÀíµÄ PlayerActGrowupBuy.DoUpdateGrowupBuyStateOnDay(curPlayer) # ³É³¤±ØÂò PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCoinTotal, 0) syncRecordIDList = [] ipyDataMgr = IpyGameDataPY.IPY_Data() for i in xrange(ipyDataMgr.GetCTGCount()): ipyData = ipyDataMgr.GetCTGByIndex(i) #if not ipyData.GetDailyBuyCount(): # continue recordID = ipyData.GetRecordID() if not curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCount % recordID): continue PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, 0) syncRecordIDList.append(recordID) if syncRecordIDList: Sync_CoinToGoldCountInfo(curPlayer, syncRecordIDList) if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DayFreeGoldGiftState): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayFreeGoldGiftState, 0) Sync_DayFreeGoldGiftState(curPlayer) return ## ´´½ÇÔùËÍ # @param curPlayer Íæ¼ÒʵÀý # @return None def GiveGoldByCreate(curPlayer): giveCoinByCreate = IpyGameDataPY.GetFuncCfg("CornerPresentedMoney", 1) if not giveCoinByCreate: return isAddBourseMoney = IpyGameDataPY.GetFuncCfg("CornerPresentedMoney", 2) PlayerCoinToGoldEx(curPlayer, giveCoinByCreate, ChConfig.Def_GiveMoney_SuperAccountCreate, isAddBourseMoney) return def PlayerCoinToGoldEx(curPlayer, orderRMB, eventName, isAddBourseMoney): ## Ö±½Ó³äÖµ×Ô¶¨Òå½ð¶î prizeGold = 0 giveItemList = [] orderCoin = orderRMB * 100 addGold = orderRMB * GetCoinRate() addDRDict = {"orderCoin":orderCoin, "isAddBourseMoney":isAddBourseMoney, "eventName":eventName} DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict) return def DoGMCTG(curPlayer, orderInfo, appID, isAddBourseMoney, eventName): ## GM³äÖµ£¬°üº¬GMÃüÁîÖ±½Ó³äÖµ¡¢ºǫ́GM¹¤¾ß³äÖµ ipyData = IpyGameDataPY.GetIpyGameData("OrderInfo", orderInfo, appID) if not ipyData: return cPlayerCoin = CPY_PlayerCoinToGold() cPlayerCoin.useCoin = int(ipyData.GetPayRMBNum() * 100) cPlayerCoin.orderInfo = orderInfo cPlayerCoin.appID = appID cPlayerCoin.isAddBourseMoney = isAddBourseMoney return PlayerCoinToGold(curPlayer, cPlayerCoin, eventName) ##ÌØ±ð˵Ã÷£º³äÖµÔùË͵ãȯ¶¼Òª¼ÆËãµ½¸÷¸ö»î¶¯ÖÐ ##Íæ¼Òµã¾í¶Ò»»Ôª±¦. # @param curPlayer Íæ¼ÒʵÀý # @param useCoin ʹÓõĵã¾í # @param eventName ¶Ò»»Ê¼þÃû # @return None def PlayerCoinToGold(curPlayer, chargeInfo, eventName): ## °´ÉÌÆ·±àºÅ³äÖµ orderCoin = chargeInfo.GetCoin() # ½ð¶î ÒѳËÒÔ100 ÈËÃñ±Òµ¥Î»Îª·Ö #notePrizeCoin = chargeInfo.GetPrizeCoin() orderInfo = chargeInfo.GetOrderInfo() # ÉÌÆ·±àºÅ orderID = chargeInfo.GetOrderID() #¶©µ¥ºÅ£¬¶Ò»»³É¹¦ºóÇå³ý isAddBourseMoney = chargeInfo.GetIsAddBourseMoney() if orderID: curPlayer.SendDBFinishRecharge(orderID) appID = chargeInfo.GetAppID() if not appID: appID = GameWorld.GetPlayerPlatform(curPlayer) addDRDict = {"orderCoin":orderCoin, "orderInfo":orderInfo, "orderID":orderID, "isAddBourseMoney":isAddBourseMoney, "eventName":eventName, "appID":appID} if orderCoin <= 0: DataRecordPack.DR_CTGError(curPlayer, "The orderCoin is zero!", addDRDict) return ipyData = IpyGameDataPY.GetIpyGameData("OrderInfo", orderInfo, appID) if not ipyData: DataRecordPack.DR_CTGError(curPlayer, "Can not found the orderInfo.", addDRDict) return payRMBNum = ipyData.GetPayRMBNum() # µ¥Î»£¬Ôª if orderCoin != int(payRMBNum * 100): DataRecordPack.DR_CTGError(curPlayer, "The orderCoin is not equal to the ipyData's RMB(%s)!" % payRMBNum, addDRDict) return 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, notifyMark = ctgResultInfo elif ipyData.GetGiftbagID(): giftbagID = ipyData.GetGiftbagID() if 100 <= giftbagID < 199: if not PlayerDailyGiftbag.OnPlayerOrderDailyGiftbag(curPlayer, giftbagID, addDRDict): return elif not PlayerFlashGiftbag.OnPlayerOrderGiftbag(curPlayer, [ipyData.GetGiftbagID()], addDRDict): return else: #ÓÃÓÚÖ§¸¶ÆäËûµÄÉÌÆ·£¬´ýÀ©Õ¹... DataRecordPack.DR_CTGError(curPlayer, "The orderInfo is useless!", addDRDict) return DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, notifyMark, ipyData) #³äÖµ³É¹¦Ö÷¶¯²éѯһ´Î£¬ÎÞ³äÖµÊýÁ¿¾Í²»»á¼ÌÐø²éѯ if orderID: #curPlayer.SendDBFinishRecharge(orderID) # ³äÖµ³É¹¦»Ø±¨¿Í»§¶Ë£¬SDKµÈ»áÓõ½ Sync_CoinToGoldReport(curPlayer, orderID, orderCoin) curPlayer.SendDBQueryRecharge() return True def __GetCTGInfoByID(curPlayer, chargeInfo, recordID, eventName, addDRDict, isAddBourseMoney): ## ¸ù¾Ý³äÖµÊý¾ÝID»ñÈ¡³äÖµÐÅÏ¢ ipyData = IpyGameDataPY.GetIpyGameData("CTG", recordID) if not ipyData: DataRecordPack.DR_CTGError(curPlayer, "Can not find CTG ipyData!", addDRDict) return addDRDict.update({"recordID":recordID}) # ³É³¤±ØÂòÀàÐÍ if ipyData.GetPayType() == 16: canBuy, errInfo = PlayerActGrowupBuy.CheckGrowupBuyState(curPlayer, recordID) if not canBuy: DataRecordPack.DR_CTGError(curPlayer, errInfo, addDRDict) return totalBuyCountLimit = ipyData.GetTotalBuyCount() totalBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID) if totalBuyCountLimit: addDRDict.update({"totalBuyCountLimit":totalBuyCountLimit, "totalBuyCount":totalBuyCount}) if totalBuyCount >= totalBuyCountLimit: DataRecordPack.DR_CTGError(curPlayer, "Pay count limit total!totalBuyCount=%s" % totalBuyCount, addDRDict) return dailyBuyCountLimit = ipyData.GetDailyBuyCount() todayBuyCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCount % recordID) if dailyBuyCountLimit: addDRDict.update({"dailyBuyCountLimit":dailyBuyCountLimit, "todayBuyCount":todayBuyCount}) if todayBuyCount >= dailyBuyCountLimit: DataRecordPack.DR_CTGError(curPlayer, "Pay count limit today!todayBuyCount=%s" % todayBuyCount, addDRDict) return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_CTGGoodsBuyCount % recordID, totalBuyCount + 1) addDRDict.update({"totalBuyCountUpd":(totalBuyCount + 1)}) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCount % recordID, todayBuyCount + 1) addDRDict.update({"todayBuyCountUpd":(todayBuyCount + 1)}) giveItemList = ipyData.GetGainItemList() addGold = ipyData.GetGainGold() # »ñµÃÏÉÓñÊý gainGoldPrize = ipyData.GetGainGoldPrize() # ÔùËÍÏÉÓñÊý£¬Ê״γäÖµÔùËÍÏÉÓñʱ£¬´ËÏÉÓñ²»¸ø firstGoldPrize = ipyData.GetFirstGoldPrize() # Ê״γäÖµÔùË͵ÄÏÉÓñ notifyMark = ipyData.GetNotifyMark() prizeGold = firstGoldPrize if (not totalBuyCount and firstGoldPrize) else gainGoldPrize actPrizeGold = PlayerActRechargePrize.DoAddPlayerActRechargePrizeCount(curPlayer, recordID) if actPrizeGold: prizeGold = actPrizeGold addDRDict.update({"actRechargePrize":1}) Sync_CoinToGoldCountInfo(curPlayer, [recordID]) return addGold, prizeGold, giveItemList, notifyMark def DoCTGLogic(curPlayer, orderCoin, addGold, prizeGold, giveItemList, isAddBourseMoney, eventName, addDRDict, notifyMark='', ipyData=None): goldBefore = curPlayer.GetGold() bourseMoneyBefore = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney) if addGold: PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, addGold, eventName, addDRDict, isGiveBourseMoney=isAddBourseMoney) if prizeGold: PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Gold_Money, prizeGold, eventName, addDRDict, isGiveBourseMoney=isAddBourseMoney) if giveItemList: ItemControler.GivePlayerItemOrMail(curPlayer, giveItemList, "", event=[ChConfig.ItemGive_CTG, True, addDRDict]) if notifyMark: mainItemID = giveItemList[0][0] PlayerControl.WorldNotify(0, notifyMark, [curPlayer.GetName(), mainItemID, '']) else: if notifyMark: PlayerControl.WorldNotify(0, notifyMark, [curPlayer.GetName()]) addVIPExp = int(orderCoin / 100 * GetCoinRate()) PlayerVip.AddVIPExp(curPlayer, addVIPExp) changeCoinPointBefore = curPlayer.GetChangeCoinPointTotal() curPlayer.SetChangeCoinPointTotal(changeCoinPointBefore + orderCoin, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTry, 0) todayCTGCoinTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCoinTotal) + orderCoin PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TodayCTGCoinTotal, todayCTGCoinTotal) goldAfter = curPlayer.GetGold() changeCoinPointAfter = curPlayer.GetChangeCoinPointTotal() bourseMoneyAfter = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_BourseMoney) addDRDict.update({"gold":[goldBefore, goldAfter], "changeCoinPoint":[changeCoinPointBefore, changeCoinPointAfter], "todayCTGCoinTotal":todayCTGCoinTotal, "bourseMoney":[bourseMoneyBefore, bourseMoneyAfter], "addGold":addGold, "prizeGold":prizeGold, "giveItemList":giveItemList}) DataRecordPack.DR_CTGOK(curPlayer, addDRDict) #---³äÖµ³É¹¦ºóÂß¼­--- #ÏɽçÊ¢µä-³äÖµ´óÀñ PlayerFairyCeremony.OnFCRecharge(curPlayer) PlayerNewFairyCeremony.OnFCRecharge(curPlayer) PlayerGoldGift.OnPlayerChargeGold(curPlayer, addGold) #ÀÛ»ý³äÖµXÔª PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin/100, 1) PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin/100, 2) PlayerFairyCeremony.AddFCCTGRMB(curPlayer, orderCoin/100) PlayerNewFairyCeremony.AddFCCostGold(curPlayer, orderCoin/100) #¿ª·þ»î¶¯ #OpenServerCampaign.AddOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Recharge, orderCoin) PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Recharge, addVIPExp) #Ͷ×Ê if ipyData: PlayerGoldInvest.InvestByCTG(curPlayer, ipyData.GetCTGID()) GameWorld.Log("Billing: eventName=%s, %s" % (eventName, addDRDict), curPlayer.GetPlayerID()) return #=============================================================================== ## Ä£Äâ³äÖµÐÅÏ¢£¬µãȯ³äÖµÐÅÏ¢ # # µãȯ³äÖµÐÅÏ¢ class CPY_PlayerCoinToGold(): ## ³õʼ»¯ # @param ²ÎÊý # @return ·µ»ØÖµ # @remarks def __init__(self): self.useCoin = 0 # ³äÖµ½ð¶î webÓжԽð¶î½øÐд¦Àí£¬×ªÕûÊýÈ絥λ1.10ԪתΪ110·Ö self.prizeCoin = 0 # Ôݲ»Ê¹Óà self.appendix = '' # Ôݲ»Ê¹Óà self.orderInfo = "" # ÉÌÆ·±àºÅ È繺ÂòÀñ°ü Ô¿¨ ³äÖµ½ð¶îµÈ self.appID = "" self.orderID = "" self.isAddBourseMoney = False # ÊÇ·ñͬ²½Ôö¼Ó½»Ò×Ëù¹ºÂò¶î¶È return ## ʹÓõãȯÊý # @param ²ÎÊý # @return ·µ»ØÖµ # @remarks def GetCoin(self): return self.useCoin ## ÔùË͵ãȯÊý # @param ²ÎÊý # @return ·µ»ØÖµ # @remarks def GetPrizeCoin(self): return self.prizeCoin ## ¸½¼ÓÐÅÏ¢ # @param self # @return None def GetAppendix(self): return self.appendix # ÉÌÆ·±àºÅ def GetOrderInfo(self): return self.orderInfo def GetAppID(self): return self.appID def GetOrderID(self): return self.orderID def GetIsAddBourseMoney(self): return self.isAddBourseMoney # ֪ͨ¿Í»§¶Ë±¾´Î³äÖµ½ð¶î£¬ÓÃÓÚSDKµÈ£¬coinΪÈËÃñ±Òµ¥Î»·Ö def Sync_CoinToGoldReport(curPlayer, orderID, money): openGleeGame = ChPyNetSendPack.tagMCCoinToGoldReport() openGleeGame.Clear() openGleeGame.OrderLen = len(orderID) openGleeGame.OrderID = orderID openGleeGame.Coin = money NetPackCommon.SendFakePack(curPlayer, openGleeGame) return def Sync_CoinToGoldCountInfo(curPlayer, syncRecordIDList=[]): if not syncRecordIDList: ipyDataMgr = IpyGameDataPY.IPY_Data() for i in xrange(ipyDataMgr.GetCTGCount()): ipyData = ipyDataMgr.GetCTGByIndex(i) syncRecordIDList.append(ipyData.GetRecordID()) if not syncRecordIDList: return countInfoPack = ChPyNetSendPack.tagMCCoinToGoldCountInfo() countInfoPack.Clear() countInfoPack.CTGCountInfoList = [] for recordID in syncRecordIDList: countInfo = ChPyNetSendPack.tagMCCoinToGoldCount() countInfo.RecordID = recordID countInfo.TodayPayCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TodayCTGCount % recordID) countInfo.TotalPayCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_CTGGoodsBuyCount % recordID) countInfoPack.CTGCountInfoList.append(countInfo) countInfoPack.RecordCount = len(countInfoPack.CTGCountInfoList) NetPackCommon.SendFakePack(curPlayer, countInfoPack) return ## ---------- ÿÈÕÃâ·ÑÖ±¹ºÀñ°ü ---------------- def OnGetDayFreeGoldGift(curPlayer): ''' ÁìȡÿÈÕÃâ·ÑÖ±¹ºÀñ°ü ''' isGet = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DayFreeGoldGiftState) if isGet: #GameWorld.DebugLog("ÒѾ­ÁìÈ¡¹ýÿÈÕÃâ·ÑÖ±¹ºÀñ°ü!") return rewardItemList = IpyGameDataPY.GetFuncEvalCfg("DayFreeGoldGift", 1) if not rewardItemList: return needSpace = len(rewardItemList) packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace) if needSpace > packSpace: PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371") return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DayFreeGoldGiftState, 1) # ¸øÎïÆ· isAuctionItem = False for itemID, itemCount in rewardItemList: ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem]) # ֪ͨ¿Í»§¶Ë Sync_DayFreeGoldGiftState(curPlayer) return def Sync_DayFreeGoldGiftState(curPlayer): clientPack = ChPyNetSendPack.tagMCDayFreeGoldGiftState() clientPack.DayFreeGoldGiftState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DayFreeGoldGiftState) NetPackCommon.SendFakePack(curPlayer, clientPack) return ## ------------------------------------------