#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#-------------------------------------------------------------------------------
|
#
|
#-------------------------------------------------------------------------------
|
#
|
##@package PlayerFairyDomain
|
#
|
# @todo:çÎç¿ÏÉÓò
|
# @author xdh
|
# @date 2019-04-23
|
# @version 1.0
|
#
|
#
|
# ÏêϸÃèÊö: çÎç¿ÏÉÓò
|
#
|
#---------------------------------------------------------------------
|
"""Version = 2019-04-23 17:00"""
|
|
import GameWorld
|
import ShareDefine
|
import IpyGameDataPY
|
'''
|
Value1:ʼþID
|
Value2:Сʱ¶Î³öÏÖ´ÎÊý
|
Value3:½ñÈÕ³öÏÖ´ÎÊý
|
'''
|
RecType = ShareDefine.Def_UniversalGameRecType_FairyDomain
|
|
|
def AddFairyDomainEvent(fdEventIDList):
|
fdEventLimitDict = {}
|
for fdEventID in fdEventIDList:
|
ipyData = IpyGameDataPY.GetIpyGameDataNotLog('FairyDomain', fdEventID)
|
if not ipyData:
|
continue
|
hourCntLimit, dayCntLimit = ipyData.GetHourCntPubLimit(), ipyData.GetDayCntPubLimit()
|
if not hourCntLimit and not dayCntLimit:
|
continue
|
fdEventLimitDict[fdEventID] = [hourCntLimit, dayCntLimit]
|
if not fdEventLimitDict:
|
return
|
addfdRecList = fdEventLimitDict.keys()
|
universalRecMgr = GameWorld.GetUniversalRecMgr()
|
recTypeListData = universalRecMgr.GetTypeList(RecType)
|
|
addFDEventList = []
|
for index in xrange(recTypeListData.Count()):
|
recData = recTypeListData.At(index)
|
curID = recData.GetValue1()
|
if curID in fdEventLimitDict:
|
addfdRecList.remove(curID)
|
curHourAppearCnt = recData.GetValue2()
|
curDayAppearCnt = recData.GetValue3()
|
hourCntLimit, dayCntLimit = fdEventLimitDict[curID]
|
if curHourAppearCnt >= hourCntLimit or curDayAppearCnt >= dayCntLimit:
|
continue
|
recData.SetValue2(curHourAppearCnt +1)
|
recData.SetValue3(curDayAppearCnt + 1)
|
if curHourAppearCnt +1 >= hourCntLimit or curDayAppearCnt + 1 >= dayCntLimit:
|
addFDEventList.append(curID)
|
for fdid in addfdRecList:
|
recData = recTypeListData.AddRec()
|
recData.SetValue1(fdid)
|
recData.SetValue2(1)
|
recData.SetValue3(1)
|
hourCntLimit, dayCntLimit = fdEventLimitDict[fdid]
|
if 1 >= hourCntLimit or 1 >= dayCntLimit:
|
addFDEventList.append(fdid)
|
if addFDEventList:
|
#ͬ²½µØÍ¼
|
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_FairyDomainLimit, [1, addFDEventList])
|
|
return
|
|
def OnHour():
|
__ResetFairyDomainCnt(1)
|
return
|
|
def OnDayEx():
|
__ResetFairyDomainCnt(2)
|
return
|
|
def OnMapServerInitOK():
|
__ResetFairyDomainCnt(0)
|
return
|
|
def __ResetFairyDomainCnt(resetType):
|
curLimitEventIDList = []
|
universalRecMgr = GameWorld.GetUniversalRecMgr()
|
recTypeListData = universalRecMgr.GetTypeList(RecType)
|
for index in xrange(recTypeListData.Count()):
|
recData = recTypeListData.At(index)
|
if resetType == 1:
|
recData.SetValue2(0)
|
elif resetType == 2:
|
recData.SetValue3(0)
|
curID = recData.GetValue1()
|
hourAppearCnt = recData.GetValue2()
|
dayAppearCnt = recData.GetValue3()
|
ipyData = IpyGameDataPY.GetIpyGameDataNotLog('FairyDomain', curID)
|
if not ipyData:
|
continue
|
hourCntLimit, dayCntLimit = ipyData.GetHourCntPubLimit(), ipyData.GetDayCntPubLimit()
|
if hourAppearCnt >= hourCntLimit or dayAppearCnt >= dayCntLimit:
|
curLimitEventIDList.append(curID)
|
#ͬ²½µØÍ¼
|
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_FairyDomainLimit, [0, curLimitEventIDList])
|
return
|