#!/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 ReadChConfig import ItemControler import ChConfig import ItemCommon import PlayerControl import ShareDefine import DataRecordPack 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, isBind, [IPY_GameWorld.rptItem], True, showSysInfo=True) # ÌØÊâ¶¨ÖÆÎïÆ· 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, True, showSysInfo=True) 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): ## Ê׳俪Æô ¼Ç¼ÌáʾʣÓàʱ¼ä 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): #¸üÐÂÊ׳äÌáʾʣÓàʱ¼ä if PlayerTJG.GetIsTJG(curPlayer): return 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): '''ÁìÈ¡Íæ¼ÒÊ׳佱Àø ''' isGet = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftFirstRecord) if isGet: GameWorld.DebugLog("ÒѾ­ÁìÈ¡¹ýÊ׳佱Àø£¡", curPlayer.GetPlayerID()) return if not curPlayer.GetChangeCoinPointTotal(): GameWorld.DebugLog("ûÓгäÖµ¹ý£¬ÎÞ·¨ÁìÈ¡Ê׳佱Àø!", curPlayer.GetPlayerID()) return firstGoldRewardDict = IpyGameDataPY.GetFuncEvalCfg("FirstGold", 1) jobStr = str(curPlayer.GetJob()) if jobStr not in firstGoldRewardDict: GameWorld.ErrLog("ûÓÐÅäÖøÃÖ°Òµ¶ÔÓ¦µÄÊ׳佱Àø!job=%s" % jobStr, curPlayer.GetPlayerID()) return rewardItemList = firstGoldRewardDict[jobStr] 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_GoldGiftFirstRecord, 1) # ¸øÎïÆ· for itemID, itemCount, isBind in rewardItemList: ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem]) # È«·þÌáʾ if len(rewardItemList) >= 2: PlayerControl.WorldNotify(0, "FirstPayReward1", [curPlayer.GetPlayerName(), rewardItemList[0][0], rewardItemList[1][0]]) # ¼Ç¼Áìȡʼþ DataRecordPack.DR_GoldGiftGiveItem(curPlayer, "FirstGoldGift") # ֪ͨ¿Í»§¶Ë Sync_FirstGoldInfo(curPlayer) return ################################################################### ## ³äÖµºÀÀñOnDay # @param curPlayer: Íæ¼Ò # @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 # @param curPlayer: Íæ¼Ò # @return: None def OnLogin(curPlayer): Sync_FirstGoldInfo(curPlayer) Sync_FirstGoldTime(curPlayer) #¸üÐÂÊ׳äÌáʾ¿ªÊ¼¼ÆÊ±Ê±¼ä if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldRemainTime): PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTipStartTime, int(time.time())) return ## Íæ¼Ò³äÖµÔª±¦ # @param curPlayer: Íæ¼Ò # @param addGold: ³äÔª±¦Êý # @return: None def OnPlayerChargeGold(curPlayer, addGold): # ¸üнñÈÕÒѳäÖµÊý dailyGoldCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargeCnt) updDailyGoldCnt = dailyGoldCnt + addGold 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): ## ֪ͨÊ׳äÐÅÏ¢ sendPack = ChPyNetSendPack.tagMCFirstGoldInfo() sendPack.Clear() sendPack.FirstGoldRewardState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GoldGiftFirstRecord) sendPack.FirstGoldTry = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldTry) 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, 1, 1) if ChEquip.DoPlayerEquipItem(curPlayer, tryItem, equipPlace, 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, True, [IPY_GameWorld.rptItem], True): GameWorld.DebugLog('Ê׳äÊÔÓÃÎïÆ·¹ýÆÚÁË ±³°ü²Ö¿âûÎäÆ÷ÔòËÍÒ»°Ñ û¸ø³É¹¦£¡£¡giveItemID=%s'%giveItemID, curPlayer.GetID()) return #ÿÈÕ³äÖµÈÎÒâ½ð¶îºì°ü½±Àø def DayChargeRedPackAward(curPlayer): if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyChargeState) == 1: return PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DailyChargeState, 1) PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, 2) return