| | |
| | | #------------------------------------------------------------------------------
|
| | | import GameWorld
|
| | | import IPY_GameWorld
|
| | | import ReadChConfig
|
| | | import ItemControler
|
| | | import ChConfig
|
| | | import ItemCommon
|
| | |
| | | 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):
|
| | |
| | |
|
| | | # 给物品
|
| | | for itemID, itemCount, isBind in rewardItemList:
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem])
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
|
| | |
|
| | | # 全服提示
|
| | | if len(rewardItemList) >= 2:
|
| | |
| | |
|
| | | # 通知客户端
|
| | | Sync_FirstGoldInfo(curPlayer)
|
| | | |
| | | #超值礼包记录时间
|
| | | FunctionNPCCommon.UpdataSuperGiftTime(curPlayer)
|
| | | return
|
| | |
|
| | | ###################################################################
|
| | |
| | | # @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)
|
| | | #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleGoldGiftIndex, 0)
|
| | | #PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnlimitedGoldGiftCnt, 0)
|
| | | # 通知单日充值多选一礼包信息
|
| | | #Sync_SingleGoldGiftInfo(curPlayer, True)
|
| | | #Sync_UnlimitedGoldGiftRecord(curPlayer)
|
| | | return
|
| | |
|
| | | ## 充值豪礼OnLogin
|
| | |
| | | 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()))
|
| | |
| | | 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)
|
| | | |
| | | # 通知单日充值多选一礼包信息
|
| | | Sync_SingleGoldGiftInfo(curPlayer, True)
|
| | | return
|
| | |
|
| | | ## 单日充值任选一奖励
|
| | | # @param curPlayer: 玩家
|
| | | # @param giftIndex: 礼包索引
|
| | | # @param giftLV: 礼包档次
|
| | | # @return: None
|
| | | def GetSingleGoldGift(curPlayer, giftIndex, giftLV, giftType):
|
| | | |
| | | findSingleGoldGift = GetTodaySingleGoldGiftInfo()
|
| | | |
| | | GameWorld.DebugLog("当日充值奖励领奖 (档%s - %s) giftType=%s,findSingleGoldGift=%s" |
| | | % (giftLV, giftIndex, giftType, str(findSingleGoldGift)))
|
| | | |
| | | if not findSingleGoldGift:
|
| | | GameWorld.DebugLog(" 今日未配置充值单选礼包!")
|
| | | return
|
| | |
|
| | | todayGiftType = findSingleGoldGift[2]
|
| | | if giftType != todayGiftType:
|
| | | GameWorld.DebugLog(" 非当日充值礼包类型!todayGiftType=%s" % todayGiftType)
|
| | | return
|
| | | |
| | | goldGiftInfoList = findSingleGoldGift[3]
|
| | | |
| | | # 无限领取礼包类型
|
| | | if giftType == 1:
|
| | | __GetUnlimitedGoldGift(curPlayer, goldGiftInfoList)
|
| | | return
|
| | | |
| | | if giftIndex <= 0:
|
| | | return
|
| | | |
| | | if giftLV >= len(goldGiftInfoList):
|
| | | GameWorld.ErrLog("单日充值单选礼包配置错误SingleGoldGift.txt 不存在该奖励档!giftLV=%s" % giftLV)
|
| | | return
|
| | | |
| | | curGoldGiftInfo = goldGiftInfoList[giftLV]
|
| | | needGold, chooseGiftList = curGoldGiftInfo
|
| | | |
| | | dailyGoldCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargeCnt)
|
| | | |
| | | if dailyGoldCnt < needGold:
|
| | | GameWorld.DebugLog(" 今日充值额度未满足,无法领奖!needGold=%s,dailyGoldCnt=%s" |
| | | % (needGold, dailyGoldCnt))
|
| | | return
|
| | | |
| | | goldGiftAwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleGoldGiftIndex)
|
| | | singleGoldGiftIndex = GameWorld.GetDataByDigitPlace(goldGiftAwardRecord, giftLV)
|
| | | if singleGoldGiftIndex > 0:
|
| | | GameWorld.DebugLog(" 今日已领取!singleGoldGiftIndex=%s" % (singleGoldGiftIndex))
|
| | | return
|
| | | |
| | | if giftIndex > len(chooseGiftList):
|
| | | GameWorld.ErrLog("单日充值单选礼包配置错误SingleGoldGift.txt giftIndex=%s 不在奖励列表里!" % giftIndex)
|
| | | return
|
| | | |
| | | hasSpace = ItemCommon.CheckPackHasSpace(curPlayer, IPY_GameWorld.rptItem)
|
| | | if not hasSpace:
|
| | | GameWorld.DebugLog(" 背包已满!")
|
| | | return
|
| | | |
| | | # 更新领奖索引
|
| | | updGoldGiftRecord = GameWorld.ChangeDataByDigitPlace(goldGiftAwardRecord, giftLV, giftIndex)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SingleGoldGiftIndex, updGoldGiftRecord)
|
| | | |
| | | itemID, itemCount, isBind = chooseGiftList[giftIndex - 1]
|
| | | isOK = ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem], True)
|
| | | if not isOK:
|
| | | return
|
| | |
|
| | | # 流向
|
| | | infoDict = {"SingleGiftIndex":giftIndex, "ItemID":itemID, "ItemCount":itemCount, "IsBind":isBind,
|
| | | "SingleGiftLV":giftLV, "GoldGiftAwardRecord":updGoldGiftRecord}
|
| | | DataRecordPack.DR_GoldGiftGiveItem(curPlayer, "SingleGoldGift", infoDict)
|
| | | |
| | | # 同步客户端状态
|
| | | Sync_SingleGoldGiftInfo(curPlayer)
|
| | | GameWorld.DebugLog(" awardRecord=%s,updRecord=%s,infoDict=%s" % (goldGiftAwardRecord, updGoldGiftRecord, infoDict))
|
| | | return
|
| | |
|
| | | def __GetUnlimitedGoldGift(curPlayer, goldGiftInfoList):
|
| | | |
| | | dailyGoldCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargeCnt)
|
| | | |
| | | # 已领取次数
|
| | | hadGetCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnlimitedGoldGiftCnt)
|
| | | |
| | | maxGetCnt = goldGiftInfoList[0] # 最大重复领取次数
|
| | | perNeedGold = goldGiftInfoList[1] # 每次领取需要充值钻石数
|
| | | curCanGetCnt = dailyGoldCnt / perNeedGold # 当前可领取的最大次数
|
| | | if maxGetCnt > 0:
|
| | | curCanGetCnt = min(curCanGetCnt, maxGetCnt)
|
| | | |
| | | GameWorld.DebugLog("领取当日充值无限领取礼包:dailyGoldCnt=%s / per(%s) = canCnt(%s),hadGetCnt=%s,MaxCntCfg=%s" |
| | | % (dailyGoldCnt, perNeedGold, curCanGetCnt, hadGetCnt, maxGetCnt))
|
| | | |
| | | if curCanGetCnt <= 0:
|
| | | GameWorld.DebugLog(" 可领取次数=%s,不可领取!" % curCanGetCnt)
|
| | | return
|
| | | |
| | | if hadGetCnt >= curCanGetCnt:
|
| | | GameWorld.DebugLog(" 已达到最大领取次数!%s" % curCanGetCnt)
|
| | | return
|
| | | |
| | | getCnt = curCanGetCnt - hadGetCnt
|
| | | |
| | | # 检查背包
|
| | | packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem)
|
| | | needSpace = goldGiftInfoList[2]
|
| | | if needSpace > packSpace:
|
| | | PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
|
| | | return
|
| | |
|
| | | # 给物品
|
| | | curGetCnt = getCnt
|
| | | awardItemList = goldGiftInfoList[3]
|
| | | for itemID, itemCnt, isBind in awardItemList:
|
| | | gameData = GameWorld.GetGameData()
|
| | | curItemData = gameData.GetItemByTypeID(itemID)
|
| | | if curItemData == None:
|
| | | GameWorld.ErrLog("领取当日充值无限领取礼包,物品ID数据错误!(%s)" % itemID, curPlayer.GetPlayerID())
|
| | | return
|
| | | |
| | | maxPackCount = curItemData.GetPackCount()
|
| | | perSpaceCanGetCnt = maxPackCount / itemCnt # 单个空位最大可领取次数
|
| | | curGetCnt = min(perSpaceCanGetCnt, curGetCnt)
|
| | | #GameWorld.DebugLog(" itemID=%s,maxPackCount=%s,giveCnt=%s,perSpaceCanGetCnt=%s,curGetCnt=%s" |
| | | # % (itemID, maxPackCount, itemCnt, perSpaceCanGetCnt, curGetCnt))
|
| | | |
| | | # 更新已领取成功标记
|
| | | updGetCnt = hadGetCnt + curGetCnt
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_UnlimitedGoldGiftCnt, updGetCnt)
|
| | |
|
| | | # 给物品
|
| | | awardItemList = goldGiftInfoList[3]
|
| | | isOKStr = ""
|
| | | for itemID, itemCnt, isBind in awardItemList:
|
| | | isOK = ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt * curGetCnt, isBind, |
| | | [IPY_GameWorld.rptItem, IPY_GameWorld.rptAnyWhere], True)
|
| | | |
| | | isOKStr = "%s%s" % (str(int(isOK)), isOKStr)
|
| | | |
| | | # 记录领取事件
|
| | | addDataDict = {"isOKStr":isOKStr, "awardItemList":str(awardItemList), "DailyGoldCnt":dailyGoldCnt,
|
| | | "TodayGetCnt":updGetCnt, "CurGetCnt":curGetCnt}
|
| | | DataRecordPack.DR_FuncGiveItem(curPlayer, "UnlimitedGoldGift", addDataDict)
|
| | | |
| | | # 通知客户端
|
| | | Sync_UnlimitedGoldGiftRecord(curPlayer)
|
| | | GameWorld.DebugLog(" 领取充值无限领取礼包奖励OK!TodayGetCnt=%s,CurGetCnt=%s" % (updGetCnt, curGetCnt))
|
| | | return
|
| | |
|
| | |
|
| | | ## 通知无限领取礼包已领取次数
|
| | | # @param None
|
| | | # @return None
|
| | | def Sync_UnlimitedGoldGiftRecord(curPlayer):
|
| | | #record = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_UnlimitedGoldGiftCnt)
|
| | | #ChPlayer.Sync_RewardGetRecordInfo(curPlayer, ShareDefine.Def_RewardType_UnlimitedGoldGift, record)
|
| | | 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.FirstGoldTry = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FirstGoldTry)
|
| | | NetPackCommon.SendFakePack(curPlayer, sendPack)
|
| | | return
|
| | |
|
| | | ## 通知单日充值多选一礼包信息
|
| | | # @param curPlayer
|
| | | # @return None
|
| | | def Sync_SingleGoldGiftInfo(curPlayer, isCheckTime=False):
|
| | | #===============================================================================================
|
| | | # if isCheckTime:
|
| | | # todayGiftInfo = GetTodaySingleGoldGiftInfo()
|
| | | # if not todayGiftInfo:
|
| | | # return
|
| | | # |
| | | # sendPack = ChPyNetSendPack.tagMCSingleGoldGift()
|
| | | # sendPack.Clear()
|
| | | # sendPack.GoldCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DailyGoldChargeCnt)
|
| | | # sendPack.GiftIndex = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SingleGoldGiftIndex)
|
| | | # NetPackCommon.SendFakePack(curPlayer, sendPack)
|
| | | #===============================================================================================
|
| | | return
|
| | |
|
| | | ## 获取单日充值多选一礼包信息
|
| | | # @param None
|
| | | # @return None代表今日无活动
|
| | | def GetTodaySingleGoldGiftInfo():
|
| | | # 开服前7天默认不开启
|
| | | openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
|
| | | |
| | | singleGoldGiftList = ReadChConfig.GetEvalChConfig("SingleGoldGift")
|
| | | |
| | | curDataTimeStr = GameWorld.GetCurrentDataTimeStr()
|
| | | |
| | | curTime = GameWorld.GetCurrentTime()
|
| | | weekday = curTime.weekday() + 1
|
| | | |
| | | findSingleGoldGift = None
|
| | | for giftInfo in singleGoldGiftList:
|
| | | |
| | | # 判断日期, 日期活动优先
|
| | | dateTimeInfo = giftInfo[0]
|
| | | if dateTimeInfo:
|
| | | startTime = dateTimeInfo[0]
|
| | | endTime = dateTimeInfo[1]
|
| | | if startTime <= curDataTimeStr <= endTime:
|
| | | findSingleGoldGift = giftInfo
|
| | | break
|
| | | |
| | | # 判断星期, 开服前7天默认不开启星期活动
|
| | | weekDayInfo = giftInfo[1]
|
| | | if weekday in weekDayInfo and openServerDay >= ShareDefine.Def_OSC_ValidDay:
|
| | | findSingleGoldGift = giftInfo
|
| | | break
|
| | | |
| | | return findSingleGoldGift
|
| | |
|
| | |
|
| | | #// A5 11 试用首充武器 #tagCMTryFirstGoldItem
|
| | | #
|
| | |
| | | if not result:
|
| | | GameWorld.Log(' 试用首充武器 卸下原装备失败!!', curPlayer.GetID())
|
| | | return
|
| | | |
| | | tryItem = ItemControler.GetOutPutItemObj(tryItemID, 1, 1)
|
| | | if ChEquip.DoPlayerEquipItem(curPlayer, tryItem, equipPlace, tick):
|
| | | tryItem = ItemControler.GetOutPutItemObj(tryItemID)
|
| | | if ChEquip.DoPlayerEquipItem(curPlayer, tryItem, ItemCommon.GetEquipPackIndex(tryItem), tick):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FirstGoldTry, 2)
|
| | | else:
|
| | | curItem.clear()
|
| | |
| | | if not giveItemID:
|
| | | return
|
| | | GameWorld.DebugLog('首充试用物品过期了 背包仓库没武器则送一把giveItemID=%s'%giveItemID, curPlayer.GetID())
|
| | | if not ItemControler.GivePlayerItem(curPlayer, giveItemID, 1, True, [IPY_GameWorld.rptItem], True):
|
| | | if not ItemControler.GivePlayerItem(curPlayer, giveItemID, 1, 0, [IPY_GameWorld.rptItem]):
|
| | | GameWorld.DebugLog('首充试用物品过期了 背包仓库没武器则送一把 没给成功!!giveItemID=%s'%giveItemID, curPlayer.GetID())
|
| | |
|
| | | return
|
| | |
| | | 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 |