xdh
2018-10-31 530971bfbab8b0bab8fe7a13c4b84e68935b6e46
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
@@ -41,8 +41,9 @@
import PlayerFreeGoods
import FunctionNPCCommon
import PlayerGreatMaster
import IPY_GameWorld
import ItemCommon
import ItemControler
# 功能开启需执行的函数{功能ID:执行函数, ...} 函数需返回是否激活成功, 功能开启有需要处理功能逻辑的这里增加函数调用配置即可
@@ -154,6 +155,33 @@
    
    return ipyData.GetLimitLV()
def GetFuncOpenAward(curPlayer, funcID):
    ## 领取功能开启奖励
    ipyData = IpyGameDataPY.GetIpyGameData('FunctionForecast', funcID)
    if not ipyData:
        return
    getState = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncAwardState, funcID)
    if getState:
        return
    awardDict = ipyData.GetAward()
    job = curPlayer.GetJob()
    itemList = awardDict.get(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
    GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncAwardState, funcID, 1)
    # 给物品
    for itemID, itemCount in itemList:
        ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 1, [IPY_GameWorld.rptItem])
    Sync_FuncOpenState(curPlayer, [funcID])
    return
def Sync_FuncOpenState(curPlayer, syncFuncIDList=[], isSyncUnOpen=False):
    ## 通知功能首次触发情况
    if not syncFuncIDList:
@@ -174,6 +202,7 @@
        funcOpenState.Clear()
        funcOpenState.FuncID = funcID
        funcOpenState.State = openState
        funcOpenState.AwardState = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncAwardState, funcID)
        funcStatePack.FuncStateList.append(funcOpenState)
    funcCount = len(funcStatePack.FuncStateList) 
    funcStatePack.FuncCount = funcCount