xdh
2019-05-05 3811d20e99c0e2ce28a3e9edea805598e59f68af
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerWishingWell.py
@@ -30,10 +30,11 @@
import ItemControler
import ItemCommon
import datetime
import time
g_randomWellDict = {}
g_specialMarkDict = {}
(
WellType_Select,  #可选库
@@ -85,7 +86,7 @@
    return
def RefreshWishingWellAction():
    #__InitWishRateList()
    __InitWishRateList()
    playerManager = GameWorld.GetPlayerManager()
    for i in xrange(playerManager.GetPlayerCount()):
        curPlayer = playerManager.GetPlayerByIndex(i)
@@ -98,7 +99,7 @@
def __CheckPlayerWishingWellAction(curPlayer):
    ## 检查玩家许愿池活动数据信息
    global g_randomWellDict
    global g_specialMarkDict
    playerID = curPlayer.GetPlayerID()
    
    actWishingWellInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
@@ -117,13 +118,15 @@
                       % (WishingWellID, playerWishingWellID, state, worldLV), playerID)
    
    # 未领取的奖励邮件发放
    __SendWishingWellMail(curPlayer, WishingWellID or int(time.time()), state)
    curDataTime = GameWorld.GetCurrentTime()
    curDayTime = datetime.datetime(curDataTime.year, curDataTime.month, curDataTime.day, 0, 0, 0)
    curDayTimeNum = GameWorld.ChangeTimeStrToNum(str(curDayTime))
    __SendWishingWellMail(curPlayer, WishingWellID or curDayTimeNum, state)
        
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellID, WishingWellID)
    #每天开始随机一次免费盘
    if state:
        g_randomWellDict = {}
        g_specialMarkDict = {}
        #g_randomWellDict = {}
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellRefreshCnt, 0)
        __DoActWishingRefresh(curPlayer, 1, True)
 
@@ -138,9 +141,10 @@
    if not lastAwardTime:
        if state != -1:
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellAwardTime, curTime)
            GameWorld.DebugLog('__SendWishingWellMail curTime =%s'%curTime)
        return
    GameWorld.DebugLog('许愿池未领取的奖励邮件发放检查 lastAwardTime=%s,state=%s,pass=%s'%(lastAwardTime, state, curTime - lastAwardTime))
    passDay = (curTime - lastAwardTime)/86400
    passDay = (curTime - lastAwardTime)/86000
    if passDay <= 0:
        return
    isOver = True
@@ -166,20 +170,20 @@
            mailItemList.append([itemID, itemCnt, isBind])
        __SetItemData(curPlayer, WellType_Result, i, 0, 0, 0, 0)
        j +=1
    if state > 0:
        isOver = False
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellAwardTime, 0 if isOver else curTime)
    if mailItemList:
        PlayerControl.SendMailByKey('WishPool', [curPlayer.GetID()], mailItemList)
        if state == -1:
            SyncWishingWellPlayerInfo(curPlayer)
    GameWorld.DebugLog('许愿池距离时间 passDay=%s,mailItemList=%s,saveItemList=%s,isOver=%s'%(passDay, mailItemList, saveItemList, isOver), curPlayer.GetID())
    GameWorld.DebugLog('许愿池距离时间 passDay=%s,mailItemList=%s,saveItemList=%s,isOver=%s,curTime=%s'%(passDay, mailItemList, saveItemList, isOver, curTime), curPlayer.GetID())
    return
def __InitWishRateList():
    ## 初始许愿池随机库
    global g_randomWellDict
    global g_specialMarkDict
    actWishingWellInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_WishingWell, {})
    state = actWishingWellInfo.get(ShareDefine.ActKey_State, 0)
    cfgID = actWishingWellInfo.get(ShareDefine.ActKey_CfgID, 0)
@@ -205,15 +209,14 @@
        isBind = ipyData.GetIsBind()
        weight = ipyData.GetWeight()
        mark = ipyData.GetMark()
        rare = ipyData.GetRare()
        weightDict[isFree] = weightDict.get(isFree, 0) + weight
        if isFree not in g_randomWellDict:
            g_randomWellDict[isFree] = []
        g_randomWellDict[isFree].append([weightDict[isFree], [itemID, itemCnt, isBind, mark]])
        g_randomWellDict[isFree].append([weightDict[isFree], [itemID, itemCnt, isBind, mark, rare]])
        
        groupID, rowID = mark / 100, mark % 100
        if rowID > g_specialMarkDict.get(groupID, 0) % 100:
            g_specialMarkDict[groupID] = mark
    GameWorld.DebugLog('    初始许愿池随机库 g_randomWellDict=%s, g_specialMarkDict=%s' % (g_randomWellDict, g_specialMarkDict))
    GameWorld.DebugLog('    初始许愿池随机库 g_randomWellDict=%s' % (g_randomWellDict))
    return
@@ -281,8 +284,8 @@
        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_WishingWellFreeTime, int(time.time()))
        
    for i, info in enumerate(randomResultList):
        itemID, itemCnt, isBind, mark = info
        isSpecial = 1 if mark in g_specialMarkDict.values() else 0
        itemID, itemCnt, isBind, mark, rare = info
        isSpecial = rare
        __SetItemData(curPlayer, WellType_Select, i, itemID, itemCnt, isBind, isSpecial)
    GameWorld.DebugLog(' 许愿池活动刷新 isFree=%s, randomResultList=%s' % (isFree, randomResultList), playerID)
    return
@@ -357,7 +360,7 @@
        PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
        return
    for itemID, itemCnt, isBind in giveItemList:
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem])
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, 0, [IPY_GameWorld.rptItem])
    for i in xrange(count):
        __SetItemData(curPlayer, WellType_Get, i, 0, 0, 0, 0)
    SyncWishingWellPlayerInfo(curPlayer)
@@ -385,12 +388,13 @@
    actInfo.WellItemInfo = []
    randomItemList = __GetRandomRateList(0)
    for itemInfo in randomItemList:
        itemID, itemCnt, isBind, mark = itemInfo[1]
        itemID, itemCnt, isBind, mark, rare = itemInfo[1]
        wellItemInfo = ChPyNetSendPack.tagMCWishingWellItem()
        wellItemInfo.ItemID = itemID
        wellItemInfo.ItemCnt = itemCnt
        wellItemInfo.IsBind = isBind
        wellItemInfo.Mark = mark
        wellItemInfo.Rare = rare
        actInfo.WellItemInfo.append(wellItemInfo)
    actInfo.Count = len(actInfo.WellItemInfo)
    NetPackCommon.SendFakePack(curPlayer, actInfo)