#!/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 PlayerFamilyRedPacket
|
import NetPackCommon
|
import IpyGameDataPY
|
import PlayerTJG
|
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):
|
#¸üÐÂÊ׳äÌáʾʣÓàʱ¼ä
|
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, 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
|