#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # #------------------------------------------------------------------------------- # ##@package PlayerGoldGift # # @todo: ¼ÇÂ¼Íæ¼ÒµÄ³äÖµºÀÀñ½±ÀøÐÅÏ¢£¬¶þ½øÖÆÎ»±êʾ£¬Ä¿Ç°ÓÃÁËÒ»¸ö×Öµä # @author hxp # @date 2013-10-16 17:00 # # @version 3.0 # ¼òҪ˵Ã÷: # ÏêϸÃèÊö: # @change: "2013-10-22 11:10" hxp Ð޸ĶÁÈ¡½±ÀøÎïÆ·±í·½Ê½ # @change: "2013-11-12 17:00" hxp Ôö¼ÓÊ׳佱ÀøÁìÈ¡Âß¼­ # @change: "2013-12-09 18:00" hxp Ôö¼ÓÁ콱ȫ·þ¹ã²¥mark # @change: "2014-05-11 14:35" xcc Ôö¼ÓmarkÈç¹ûΪ¿Õ£¬¾Í²»Ìáʾ # @change: "2014-06-06 20:30" hxp Á콱ȫ·þ¹ã²¥ÐÞ¸Ä # @change: "2014-06-12 21:00" hxp Ôö¼ÓÌìÌìÊ׳ä # @change: "2014-08-22 12:00" hxp È¥³ý¶àÓàÈ«·þ¹ã²¥ # @change: "2014-10-09 14:00" hxp Ê׳ä/ÌìÌìÊ׳乿ÔòÐ޸ģ¬ÌìÌìÊ׳äÒ»ÌìÖ»ÄÜÁìȡһ´Î # @change: "2014-12-16 18:00" hxp ·¢ËͳäÖµºÀÀñ·¢ËÍÓʼþ # @change: "2014-12-22 14:00" hxp Ôö¼Óµ¥ÈÕ³äÖµ¶àѡһÀñ°ü # @change: "2015-02-06 10:30" hxp µ¥ÈÕ³äÖµ¶àѡһÀñ°üÖ§³ÖÅäÖÃÐÇÆÚ¼¸ # @change: "2015-02-11 18:30" hxp µ¥ÈÕ³äÖµ¶àѡһÀñ°ü¿ª·þǰ¼¸Ìì²»¿ªÆôµÄ½öÏÞÖÆÐÇÆÚ¼¸µÄ»î¶¯ # @change: "2015-04-23 12:00" hxp µ±ÈÕ³äÖµ¶àѡһÀñ°üÖ§³Ö¶à¸ö×êʯµµ½±Àø # @change: "2015-04-28 16:00" hxp Ôö¼ÓÿÈÕ³äÖµÔª±¦Êý֪ͨ # @change: "2015-05-21 14:30" hxp Ôö¼Óµ±ÈÕ³äÖµÎÞÏÞÁìÈ¡Àñ°ü # @change: "2015-06-09 20:30" hxp ½±ÀøÃû³Æ¸ÄΪ¿Í»§¶ËÅäÖà # @change: "2016-01-26 15:00" hxp PY±íÖ§³ÖÖØ¶Á # @change: "2016-06-27 14:00" hxp Ê׳äÖ§³Ö¿ÉÅäÖöî¶È #------------------------------------------------------------------------------ #"""Version = 2017-05-12 18:00""" #------------------------------------------------------------------------------ import GameWorld import IPY_GameWorld import ItemControler import ChConfig import ItemCommon import PlayerControl import ShareDefine import DataRecordPack import ChPyNetSendPack import NetPackCommon import IpyGameDataPY import CommFunc import ChEquip import time ##------------------------------------------------------------------------------ def DoFirstGoldOpen(curPlayer): ## Ê׳俪Æô ¼Ç¼ÌáʾʣÓàʱ¼ä if curPlayer.GetChangeCoinPointTotal(): return showSysTime = IpyGameDataPY.GetFuncCfg("FirstGold", 3) if not showSysTime: return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldRemainTime, showSysTime) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTipStartTime, int(time.time())) Sync_FirstGoldTime(curPlayer) return def UpdateFirstGoldTime(curPlayer): #¸üÐÂÊ׳äÌáʾʣÓàʱ¼ä remainTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldRemainTime) if not remainTime: return if curPlayer.GetChangeCoinPointTotal(): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldRemainTime, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTipStartTime, 0) else: curTime = int(time.time()) startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldTipStartTime) remainTime = max(0, remainTime - (curTime - startTime)) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldRemainTime, remainTime) if not remainTime: PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTipStartTime, 0) return def Sync_FirstGoldTime(curPlayer): ##֪ͨÊ׳äÌáʾʣÓàʱ¼ä showSysTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldRemainTime) if not showSysTime: return sendPack = ChPyNetSendPack.tagMCFirstGoldTime() sendPack.Clear() sendPack.FirstGoldRemainTime = showSysTime NetPackCommon.SendFakePack(curPlayer, sendPack) return def GetPlayerGoldGiftFirst(curPlayer, giftDay): '''ÁìÈ¡Íæ¼ÒÊ׳佱Àø @param dayIndex: Ê׳äµÚ¼¸Ìì½±Àø ''' if not giftDay: return openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1 firstGoldServerDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldServerDay) if not firstGoldServerDay: GameWorld.DebugLog("»¹Î´³äÖµ¹ý!firstGoldServerDay=%s" % firstGoldServerDay) return canGetMaxDay = openServerDay - firstGoldServerDay + 1 if giftDay > canGetMaxDay: GameWorld.DebugLog("»¹Î´µ½¿ÉÁìÈ¡µÄÊ׳äÌ죬ÎÞ·¨ÁìÈ¡!openServerDay=%s,firstGoldServerDay=%s,canGetMaxDay=%s < giftDay=%s" % (openServerDay, firstGoldServerDay, canGetMaxDay, giftDay)) return dayIndex = giftDay - 1 getRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftFirstRecord) if getRecord & pow(2, dayIndex): GameWorld.DebugLog("ÒѾ­ÁìÈ¡¹ýÊ׳佱Àø£¡giftDay=%s" % giftDay, curPlayer.GetPlayerID()) return if not curPlayer.GetChangeCoinPointTotal(): GameWorld.DebugLog("ûÓгäÖµ¹ý£¬ÎÞ·¨ÁìÈ¡Ê׳佱Àø!", curPlayer.GetPlayerID()) return ipyData = IpyGameDataPY.GetIpyGameData("FirstGold", giftDay) if not ipyData: return jobItemInfoDict = ipyData.GetJobItemInfo() commItemList = ipyData.GetCommItemList() rewardItemList = [] jobStr = str(curPlayer.GetJob()) if jobStr in jobItemInfoDict: rewardItemList += jobItemInfoDict[jobStr] rewardItemList += commItemList 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 # ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç updGetRecord = getRecord | pow(2, dayIndex) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GoldGiftFirstRecord, updGetRecord) GameWorld.DebugLog("ÁìÈ¡Ê׳佱Àø: giftDay=%s,getRecord=%s,updGetRecord=%s, %s" % (giftDay, getRecord, updGetRecord, rewardItemList)) # ¸øÎïÆ· isAuctionItem = False for itemID, itemCount in rewardItemList: ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem]) ItemControler.NotifyGiveAwardInfo(curPlayer, rewardItemList, "GoldGiftFirst") # È«·þÌáʾ if len(rewardItemList) >= 2: PlayerControl.WorldNotify(0, "FirstPayReward1", [curPlayer.GetPlayerName(), rewardItemList[0][0], rewardItemList[1][0], giftDay]) # ¼Ç¼Áìȡʼþ infoDict = {"GiftDay":giftDay, "ItemList":rewardItemList} DataRecordPack.DR_GoldGiftGiveItem(curPlayer, "FirstGoldGift", infoDict) # ֪ͨ¿Í»§¶Ë Sync_FirstGoldInfo(curPlayer) return ################################ ÿÈÕ´ò°üÖ±¹ºÀñ°ü ################################### def OnActiviteDailyPackBuyGift(curPlayer, ctgID): ## ¼¤»îÿÈÕ´ò°üÖ±¹ºÀñ°ü isActivite = False packCTGIDList = IpyGameDataPY.GetFuncEvalCfg("DailyPackBuyGift", 3) # ´ò°ü¹ºÂò¶ÔÓ¦³äÖµIDÁбí if ctgID in packCTGIDList: isActivite = True # Èç¹ûÊÇ´ò°ü¹ºÂòµÄ£¬²»¹Üʲô״̬£¬Ö±½ÓÈ«²¿ÖØÖà PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftPackTime, int(time.time())) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftBuy, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftRecord, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftOnDayTime, 0) GameWorld.Log("¼¤»î´ò°üÖ±¹ºÀñ°ü: ctgID=%s" % ctgID, curPlayer.GetID()) else: actCTGIDDict = IpyGameDataPY.GetFuncEvalCfg("DailyPackBuyGift", 2, {}) # Àñ°üË÷Òý¶ÔÓ¦³äÖµIDÁÐ±í£¬Ã»ÓÐÅäÖõĴú±í¿ÉÃâ·ÑÁìÈ¡ for awardIndexStr, ctgIDList in actCTGIDDict.items(): if ctgID not in ctgIDList: continue isActivite = True awardIndex = int(awardIndexStr) buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftBuy) updBuyState = buyState|pow(2, awardIndex) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftBuy, updBuyState) GameWorld.Log("µ¥¶À¼¤»î´ò°üÖ±¹ºÀñ°ü: awardIndex=%s,ctgID=%s" % (awardIndex, ctgID), curPlayer.GetID()) break if isActivite: Sync_DailyPackBuyGiftInfo(curPlayer) return isActivite def GetDailyPackBuyGift(curPlayer, awardIndex): ## ÁìȡÿÈÕ´ò°üÖ±¹ºÀñ°ü playerID = curPlayer.GetPlayerID() giftItemDict = IpyGameDataPY.GetFuncEvalCfg("DailyPackBuyGift", 1, {}) # Àñ°üË÷Òý¶ÔÓ¦Àñ°üÎïÆ·Áбí if str(awardIndex) not in giftItemDict: GameWorld.DebugLog("²»´æÔÚ¸ÃÿÈÕ´ò°üÖ±¹ºÀñ°ü! awardIndex=%s" % awardIndex, playerID) return itemList = giftItemDict[str(awardIndex)] getRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftRecord) # ÁìÈ¡¼Ç¼ if getRecord&pow(2, int(awardIndex)): GameWorld.DebugLog("ÒѾ­ÁìÈ¡¹ý¸ÃÿÈÕ´ò°üÖ±¹ºÀñ°ü! awardIndex=%s,getRecord=%s" % (awardIndex, getRecord), playerID) return packBuyTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftPackTime) # ´ò°ü¹ºÂòʱ¼ä´Á # ´ò°ü¹ºÂòµÄ if packBuyTime: curTime = int(time.time()) maxDays = IpyGameDataPY.GetFuncCfg("DailyPackBuyGift", 4) curDays = GameWorld.GetDiff_Day(curTime, packBuyTime) + 1 # ´ò°ü¹ºÂòµÚxÌ죬¹ºÂòµ±ÌìΪµÚ1Ìì if curDays > maxDays: GameWorld.DebugLog("´ò°üÖ±¹ºÀñ°ü³¬¹ý¿ÉÁìÈ¡×î´óÌì: curDays=%s > %s" % (curDays, maxDays), playerID) return GameWorld.DebugLog("ÒÑ´ò°ü¹ºÂò: packBuyTime=%s(%s),curDays=%s" % (packBuyTime, GameWorld.ChangeTimeNumToStr(packBuyTime), curDays), playerID) else: actCTGIDDict = IpyGameDataPY.GetFuncEvalCfg("DailyPackBuyGift", 2, {}) # Àñ°üË÷Òý¶ÔÓ¦³äÖµIDÁÐ±í£¬Ã»ÓÐÅäÖõĴú±í¿ÉÃâ·ÑÁìÈ¡ buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftBuy) # µ¥¶À¹ºÂò״̬ if str(awardIndex) in actCTGIDDict and not buyState&pow(2, awardIndex): GameWorld.DebugLog("½ñÈոôò°üÖ±¹ºÀñ°üδ¹ºÂò£¬ÎÞ·¨ÁìÈ¡: awardIndex=%s,buyState=%s" % (awardIndex, buyState), playerID) return GameWorld.DebugLog("Òѵ¥¶À¹ºÂò: awardIndex=%s,buyState=%s" % (awardIndex, buyState), playerID) # ¼ì²é±³°ü if not ItemControler.CheckPackSpaceEnough(curPlayer, itemList): return # ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç updRecord = getRecord|pow(2, awardIndex) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftRecord, updRecord) Sync_DailyPackBuyGiftInfo(curPlayer) GameWorld.DebugLog("ÁìÈ¡´ò°üÖ±¹ºÀñ°ü: awardIndex=%s,updRecord=%s" % (awardIndex, updRecord), playerID) # ¸øÎïÆ· for itemID, itemCount, isAuctionItem in itemList: ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, [IPY_GameWorld.rptItem]) return def DoDailyPackBuyGiftOnDay(curPlayer): ## ÿÈÕ´ò°üÖ±¹ºÀñ°ü¹ýÌì playerID = curPlayer.GetPlayerID() curTime = int(time.time()) # ²¹·¢Î´ÁìÈ¡µÄÌìÊý½±Àø lastOnDayTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftOnDayTime) # Éϴδ¦ÀíµÄ¹ýÌìʱ¼ä packBuyTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftPackTime) # ´ò°ü¹ºÂòʱ¼ä´Á getRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftRecord) # ÁìÈ¡¼Ç¼ buyState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftBuy) # µ¥¶À¹ºÂò״̬ GameWorld.DebugLog("ÿÈÕ´ò°üÖ±¹ºÀñ°ü¹ýÌì: packBuyTime=%s(%s),lastOnDayTime=%s(%s),getRecord=%s,buyState=%s" % (packBuyTime, GameWorld.ChangeTimeNumToStr(packBuyTime), lastOnDayTime, GameWorld.ChangeTimeNumToStr(lastOnDayTime), getRecord, buyState), playerID) giftItemDict = IpyGameDataPY.GetFuncEvalCfg("DailyPackBuyGift", 1, {}) # Àñ°üË÷Òý¶ÔÓ¦Àñ°üÎïÆ·Áбí actCTGIDDict = IpyGameDataPY.GetFuncEvalCfg("DailyPackBuyGift", 2, {}) # Àñ°üË÷Òý¶ÔÓ¦³äÖµIDÁÐ±í£¬Ã»ÓÐÅäÖõĴú±í¿ÉÃâ·ÑÁìÈ¡ # ´ò°ü¹ºÂòµÄ if packBuyTime: maxDays = IpyGameDataPY.GetFuncCfg("DailyPackBuyGift", 4) curDays = GameWorld.GetDiff_Day(curTime, packBuyTime) + 1 # ´ò°ü¹ºÂòµÚxÌ죬¹ºÂòµ±ÌìΪµÚ1Ìì alreadyAwardDays = GameWorld.GetDiff_Day(lastOnDayTime, packBuyTime) if lastOnDayTime else 0 # ÒѾ­½±Àø¹ýµÄÌìÊý GameWorld.DebugLog(" alreadyAwardDays=%s,curDays=%s" % (alreadyAwardDays, curDays), playerID) # ²¹·¢ÉÏ´ÎÀëÏßÌìµÄ awardDays = alreadyAwardDays + 1 for awardIndexStr, addItemList in giftItemDict.items(): if awardIndexStr not in actCTGIDDict: GameWorld.DebugLog(" ´ò°ü¹ºÂòÃâ·ÑµÄ²»²¹·¢! awardIndex=%s" % (awardIndexStr), playerID) continue if getRecord&pow(2, int(awardIndexStr)): GameWorld.DebugLog(" ÒѾ­ÁìÈ¡¹ý¸Ã½±ÀøÁË£¬²»²¹·¢! awardIndex=%s,getRecord=%s" % (awardIndexStr, getRecord), playerID) continue GameWorld.DebugLog(" ²¹·¢ÀëÏßÌì! awardDays=%s,awardIndex=%s" % (awardDays, awardIndexStr), playerID) paramList = [awardDays] PlayerControl.SendMailByKey("DailyPackBuyGift1", [playerID], addItemList, paramList) # ²¹·¢Î´µÇ¼ÍêÕûÌìµÄ for day in range(awardDays + 1, curDays): if day > maxDays: break paramList = [day] GameWorld.DebugLog(" ²¹·¢ÍêÕûÌì! day=%s" % (day), playerID) for awardIndexStr, addItemList in giftItemDict.items(): if awardIndexStr not in actCTGIDDict: GameWorld.DebugLog(" Ãâ·ÑµÄ²»²¹·¢! awardIndex=%s" % (awardIndexStr), playerID) continue PlayerControl.SendMailByKey("DailyPackBuyGift1", [playerID], addItemList, paramList) # ³¬¹ý×î´óÌìÁË£¬ÖØÖÃËùÓÐ if curDays > maxDays: GameWorld.DebugLog(" ³¬¹ý×î´óÌìÁË£¬ÖØÖÃËùÓÐ! curDays=%s" % (curDays), playerID) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftPackTime, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftOnDayTime, 0) else: GameWorld.DebugLog(" 䳬¹ý×î´óÌ죬¹ýÌìÖØÖÃ! curDays=%s" % (curDays), playerID) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftOnDayTime, curTime) else: # µ¥Ìì²¹·¢µÄ for awardIndexStr, addItemList in giftItemDict.items(): if awardIndexStr in actCTGIDDict: if not buyState&pow(2, int(awardIndexStr)): GameWorld.DebugLog("ûÓдò°ü¹ºÂòÇÒûÓе¥¶À¹ºÂò£¬²»²¹·¢! awardIndex=%s,packBuyTime=%s,buyState=%s" % (awardIndexStr, packBuyTime, buyState), playerID) continue else: GameWorld.DebugLog("ûÓдò°ü¹ºÂòÇÒÃâ·ÑµÄ²»²¹·¢! awardIndex=%s" % (awardIndexStr), playerID) continue if getRecord&pow(2, int(awardIndexStr)): GameWorld.DebugLog("ÒѾ­ÁìÈ¡¹ý¸Ã½±ÀøÁË£¬²»²¹·¢! awardIndex=%s,getRecord=%s" % (awardIndexStr, getRecord), playerID) continue GameWorld.DebugLog(" ²¹·¢ÀëÏßÌì! awardIndex=%s" % (awardIndexStr), playerID) paramList = [] PlayerControl.SendMailByKey("DailyPackBuyGift2", [playerID], addItemList, paramList) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftBuy, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyPackBuyGiftRecord, 0) Sync_DailyPackBuyGiftInfo(curPlayer) return def Sync_DailyPackBuyGiftInfo(curPlayer): clientPack = ChPyNetSendPack.tagMCDailyPackBuyGiftInfo() clientPack.Clear() clientPack.PackBuyTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftPackTime) clientPack.BuyStateToday = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftBuy) clientPack.AwardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyPackBuyGiftRecord) NetPackCommon.SendFakePack(curPlayer, clientPack) return ################################################################### ## ³äÖµºÀÀñOnDay # @param curPlayer: Íæ¼Ò # @return: None def OnDay(curPlayer): DoDailyPackBuyGiftOnDay(curPlayer) return ## ³äÖµºÀÀñOnLogin # @param curPlayer: Íæ¼Ò # @return: None def OnLogin(curPlayer): 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())) Sync_DailyPackBuyGiftInfo(curPlayer) return ## Íæ¼Ò³äÖµÔª±¦ # @param curPlayer: Íæ¼Ò # @param addGold: ³äÔª±¦Êý # @return: None def OnPlayerChargeGold(curPlayer): return def OnGiftByCTGID(curPlayer, ctgID): firstGoldCTGIDList = IpyGameDataPY.GetFuncEvalCfg("FirstGold", 4) if ctgID in firstGoldCTGIDList: OnActiviteFirstGold(curPlayer) OnActiviteDailyPackBuyGift(curPlayer, ctgID) return def OnActiviteFirstGold(curPlayer): firstGoldServerDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldServerDay) if not firstGoldServerDay: recordServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldServerDay, recordServerDay) GameWorld.DebugLog("¼Ç¼Ê׳俪·þÌì: recordServerDay=%s" % recordServerDay) Sync_FirstGoldInfo(curPlayer) return def Sync_FirstGoldInfo(curPlayer): ## ֪ͨÊ׳äÐÅÏ¢ sendPack = ChPyNetSendPack.tagMCFirstGoldInfo() sendPack.Clear() sendPack.FirstGoldRewardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftFirstRecord) sendPack.FirstGoldTry = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldTry) sendPack.FirstGoldServerDay = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldServerDay) NetPackCommon.SendFakePack(curPlayer, sendPack) return #// A5 11 ÊÔÓÃÊ׳äÎäÆ÷ #tagCMTryFirstGoldItem # #struct tagCMTryFirstGoldItem # #{ # tagHead Head; #}; def OnTryFirstGoldItem(index, clientData, tick): curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldTry) != 1: return tryItemDict = IpyGameDataPY.GetFuncEvalCfg('FirstGoldTryItem', 1, {}) tryItemID = tryItemDict.get(curPlayer.GetJob(), 0) if not tryItemID: return #ÏÈжÏÂÖ÷ÊÖÎäÆ÷£¨Èô±³°üÂúÔò·¢Óʼþ£©£¬ÔÙ´©ÉÏË͵ÄÎäÆ÷ equipPlace = ShareDefine.retWeapon curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip) curItem = curPack.GetAt(equipPlace) if ItemCommon.CheckItemCanUse(curItem): spaceIndex = ItemControler.GetItemPackSpaceIndex(curPlayer, IPY_GameWorld.rptItem) if spaceIndex == -1: itemObj = ItemCommon.GetMailItemDict(curItem) PlayerControl.SendMailByKey('', [curPlayer.GetID()], [itemObj]) ItemCommon.DelItem(curPlayer, curItem, 1, False) else: result = ItemControler.PlayerItemControler(curPlayer).UnEquipItem(equipPlace, spaceIndex) if not result: GameWorld.Log(' ÊÔÓÃÊ׳äÎäÆ÷ жÏÂÔ­×°±¸Ê§°Ü£¡£¡', curPlayer.GetID()) return tryItem = ItemControler.GetOutPutItemObj(tryItemID) if ChEquip.DoPlayerEquipItem(curPlayer, tryItem, ItemCommon.GetEquipPackIndex(tryItem), tick): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTry, 2) else: curItem.clear() GameWorld.Log(' ÊÔÓÃÊ׳äÎäÆ÷ ÊÔ´©Ê§°Ü£¡£¡tryItemID=%s'%tryItemID, curPlayer.GetID()) Sync_FirstGoldInfo(curPlayer) return def FirstGoldTryItemOutTime(curPlayer): ##Ê׳äÊÔÓÃÎïÆ·¹ýÆÚÁË Èô±³°ü²Ö¿âûÎäÆ÷ÔòËÍÒ»°Ñ haveEquip = False #ÊÇ·ñÓпɴ©µÄÎäÆ÷ playerItemControl = ItemControler.PlayerItemControler(curPlayer) for packIndex in [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse]: curPack = curPlayer.GetItemManager().GetPack(packIndex) for i in range(0, curPack.GetCount()): curItem = curPack.GetAt(i) if not ItemCommon.CheckItemCanUse(curItem): continue if curItem.GetEquipPlace() != ShareDefine.retWeapon: continue if not ItemCommon.CheckItemCanUseByExpireTime(curItem): # ¹ýÆÚ continue if not playerItemControl.PlayerCanEquipItem(curItem, False): continue haveEquip = True break if not haveEquip: giveItemDict = IpyGameDataPY.GetFuncEvalCfg('FirstGoldTryItem', 2, {}) giveItemID = giveItemDict.get(curPlayer.GetJob(), 0) if not giveItemID: return GameWorld.DebugLog('Ê׳äÊÔÓÃÎïÆ·¹ýÆÚÁË ±³°ü²Ö¿âûÎäÆ÷ÔòËÍÒ»°ÑgiveItemID=%s'%giveItemID, curPlayer.GetID()) if not ItemControler.GivePlayerItem(curPlayer, giveItemID, 1, 0, [IPY_GameWorld.rptItem]): GameWorld.DebugLog('Ê׳äÊÔÓÃÎïÆ·¹ýÆÚÁË ±³°ü²Ö¿âûÎäÆ÷ÔòËÍÒ»°Ñ û¸ø³É¹¦£¡£¡giveItemID=%s'%giveItemID, curPlayer.GetID()) return def OnGetHistoryRechargeAward(curPlayer, awardID): # ÁìÈ¡ÀúÊ·³äÖµ½±Àø ipyData = IpyGameDataPY.GetIpyGameData('HistoryRechargeAward', awardID) if not ipyData: return needCoin = CommFunc.RMBToCoin(ipyData.GetNeedRMB()) # ¼ì²é¿É·ñÁìÈ¡ # Íæ¼Ò³äֵСÓÚÁìÈ¡³äÖµ if curPlayer.GetChangeCoinPointTotal() < needCoin: GameWorld.ErrLog("OnGetHistoryRechargeAward error£ºneedCoin=%s greater than ChangeCoinPointTotal=%s" % (needCoin, curPlayer.GetChangeCoinPointTotal())) return awardInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HistoryChargeAwardGetRecord, 0) awardMark = pow(2, awardID) if awardInfo & awardMark: #ÒÑÁìÈ¡ GameWorld.DebugLog("ÒÑÁìÈ¡ÀúÊ·³äÖµ½±Àø£¡awardID=%s,needCoin=%s" % (awardID, needCoin)) return job = curPlayer.GetJob() awardDict = ipyData.GetReward() if str(job) not in awardDict: return itemList = awardDict[str(job)] if not itemList: return # ¼ì²é±³°ü if not ItemControler.CheckPackSpaceEnough(curPlayer, itemList): return # ¸øÎïÆ· for itemInfo in itemList: itemID, itemCount = itemInfo[:2] ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem]) ItemControler.NotifyGiveAwardInfo(curPlayer, itemList, "HistoryRecharge") # ¸üÐÂÒÑÁìÈ¡³É¹¦±ê¼Ç awardMark = pow(2, awardID) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HistoryChargeAwardGetRecord, awardInfo | awardMark) # ֪ͨ¿Í»§¶Ë Sync_HistoryChargeAwardGetRecordInfo(curPlayer) # ¼Ç¼Áìȡʼþ DataRecordPack.SendEventPack("HistoryRechargeAward", {'awardID':awardID, 'needCoin':needCoin}, 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