xdh
2019-02-22 abe6fdab99df2e4200a59a6b6c46f6de913632b8
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/FunctionNPCCommon.py
@@ -64,6 +64,7 @@
import PlayerRune
import GameFuncComm
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerSpringSale
import PyGameData
@@ -215,18 +216,29 @@
    elif onEventType == ShareDefine.Def_OnEventTypeEx:
        refreshType = [4]
        openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
        if openServerDay % 3 == 0:
            refreshType = [4,7]
        isMixServer = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
        if isMixServer:
            mixServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay)
            if mixServerDay % 3 == 0:
                refreshType.append(7)
        elif openServerDay % 3 == 0:
            refreshType.append(7)
    else:
        return
    __ResetShopItemBuyCount(curPlayer, refreshType)
    ResetShopItemBuyCount(curPlayer, refreshType)
    return
##商店物品OnWeek
# @param curPlayer 玩家实例
# @return 
def ShopItemOnWeek(curPlayer, onEventType):
    __ResetShopItemBuyCount(curPlayer, [onEventType])
    if onEventType == ShareDefine.Def_OnEventType:
        refreshType = [1]
    elif onEventType == ShareDefine.Def_OnEventTypeEx:
        refreshType = [2]
    else:
        return
    ResetShopItemBuyCount(curPlayer, refreshType)
    return
##商店物品OnMonth
@@ -239,24 +251,29 @@
        refreshType = 6
    else:
        return
    __ResetShopItemBuyCount(curPlayer, [refreshType])
    ResetShopItemBuyCount(curPlayer, [refreshType])
    return
def ShopItemOnCrossPKSeasonChange(curPlayer):
    ## 按跨服PK赛季重置
    refreshType = 8
    __ResetShopItemBuyCount(curPlayer, [refreshType])
    ResetShopItemBuyCount(curPlayer, [refreshType])
    return
def __ResetShopItemBuyCount(curPlayer, onEventTypeList):
def ResetShopItemBuyCount(curPlayer, resetTypeList):
    #@param resetTypeList: 需要重置的类型列表
    #重置商店物品购买次数  1:周一0点刷新    2:周一5点刷新    3:每日0点刷新    4:每日5点刷新    5每月0点    6每月5点   7每3天5点  8每赛季
    if not resetTypeList:
        # 暂定必须指定类型列表,防止终身限购的误被重置
        return
    syncIndexList = []
    ipyDataMgr = IpyGameDataPY.IPY_Data()
    for i in xrange(ipyDataMgr.GetStoreCount()):
        shopItem = ipyDataMgr.GetStoreByIndex(i)
        if not shopItem.GetLimitCnt():
            continue
        if shopItem.GetRefreshType() not in onEventTypeList:
        if shopItem.GetRefreshType() not in resetTypeList:
            continue
        dayBuyCntKey = ChConfig.Def_PDict_ShopItemDayBuyCnt % shopItem.GetID()
        curDayBuyCnt = curPlayer.NomalDictGetProperty(dayBuyCntKey)
@@ -407,7 +424,7 @@
        if not state:
            GameWorld.DebugLog("限时特惠非活动中!state=%s" % (state), curPlayer.GetPlayerID())
            return
        shopTypeList = PlayerSpringSale.GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
        shopTypeList = PlayerSpringSale.GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), actInfo.get(ShareDefine.ActKey_WorldLV, 0))
        if not shopTypeList:
            return
        actShopType = shopTypeList[-1] if state > len(shopTypeList) else shopTypeList[state - 1]
@@ -421,7 +438,7 @@
        if not state:
            GameWorld.DebugLog("限时抢购非活动中!state=%s" % (state), curPlayer.GetPlayerID())
            return
        shopTypeList = PlayerFlashSale.GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), state)
        shopTypeList = PlayerFlashSale.GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0), state, actInfo.get(ShareDefine.ActKey_WorldLV, 0))
        if not shopTypeList:
            return
        actShopType = shopTypeList[0]
@@ -481,10 +498,10 @@
    jobItemList = ipyData.GetJobItem()
    totalItemList = []
    if itemID:
        jobItemID = __GetShopJobItem(job, itemID, jobItemList)
        jobItemID = GetShopJobItem(job, itemID, jobItemList)
        totalItemList.append([jobItemID, itemCount * clientBuyCount, isBind])
    for itemIDEx, itemCountEx, isBindEx in itemListEx:
        jobItemID = __GetShopJobItem(job, itemIDEx, jobItemList)
        jobItemID = GetShopJobItem(job, itemIDEx, jobItemList)
        totalItemList.append([jobItemID, itemCountEx * clientBuyCount, isBindEx])
    #允许价钱配置0,用来免费购买
    if not totalItemList:
@@ -601,9 +618,12 @@
    SyncShoppingResult(curPlayer, itemIndex, clientBuyCount)
    if itemIndex in IpyGameDataPY.GetFuncEvalCfg('CeremonyFireParty', 1, {}).values():
        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Fireworks, clientBuyCount)
    if itemIndex in IpyGameDataPY.GetFuncEvalCfg('NewCeremonyFireParty', 1, {}).values():
        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Fireworks, clientBuyCount)
    return
def __GetShopJobItem(job, itemID, jobItemList):
def GetShopJobItem(job, itemID, jobItemList):
    ## 获取商城物品对应的职业物品, 职业从1开始
    for jobItemIDList in jobItemList:
        if type(jobItemIDList) not in [list, tuple]:
@@ -645,7 +665,8 @@
    #烟花狂欢
    if itemIndex in IpyGameDataPY.GetFuncEvalCfg('CeremonyFireParty', 1, {}).values():
        return not PlayerFairyCeremony.IsCanBuyFireworks(curPlayer, itemIndex)
    if itemIndex in IpyGameDataPY.GetFuncEvalCfg('NewCeremonyFireParty', 1, {}).values():
        return not PlayerNewFairyCeremony.IsCanBuyFireworks(curPlayer, itemIndex)
#    if itemIndex in dict(IpyGameDataPY.GetFuncEvalCfg('SuperGiftTimeList')):
#        return not CheckSuperGiftBuy(curPlayer, itemIndex)
    if shopNPCID == 16:#神秘限购