| | |
| | | import ChPyNetSendPack
|
| | | import GameWorld
|
| | | import NetPackCommon
|
| | | import PlayerGodWeapon
|
| | | import PlayerHorse
|
| | | import PlayerPet
|
| | | import ShareDefine
|
| | | import IpyGameDataPY
|
| | | import PlayerMagicWeapon
|
| | | import PlayerRefineStove
|
| | | import PlayerControl
|
| | | import PlayerPrestigeSys
|
| | | import PlayerBillboard
|
| | | import PlayerTreasure
|
| | | import PlayerSignDay
|
| | | import PlayerGoldGift
|
| | | import PlayerEquipDecompose
|
| | | import PlayerCrossChampionship
|
| | | import PlayerFreeGoods
|
| | | import FunctionNPCCommon
|
| | | import PlayerGreatMaster
|
| | | import PlayerActBuyCountGift
|
| | | import PlayerActLoginNew
|
| | | import PlayerActTask
|
| | | import IPY_GameWorld
|
| | | import ItemCommon
|
| | | import ItemControler
|
| | | import PlayerLianTi
|
| | | import PlayerArena
|
| | | import PlayerFaQi
|
| | | import PlayerGuaji
|
| | | import PlayerTask
|
| | |
|
| | |
|
| | | # 功能开启需执行的函数{功能ID:执行函数, ...} 函数需返回是否激活成功, 功能开启有需要处理功能逻辑的这里增加函数调用配置即可
|
| | | FuncOpenLogicDict = {
|
| | | ShareDefine.GameFuncID_Horse:lambda curObj:PlayerHorse.DoHorseOpen(curObj),
|
| | | ShareDefine.GameFuncID_GodWeapon:lambda curObj:PlayerGodWeapon.DoGodWeaponOpen(curObj),
|
| | | ShareDefine.GameFuncID_Pet:lambda curObj:PlayerPet.DoPetOpen(curObj),
|
| | | ShareDefine.GameFuncID_MagicWeapon:lambda curObj:PlayerMagicWeapon.DoMagicWeaponOpen(curObj),
|
| | | ShareDefine.GameFuncID_RefineStove:lambda curObj:PlayerRefineStove.DoRefineStoveOpen(curObj),
|
| | | ShareDefine.GameFuncID_Official:lambda curObj:PlayerPrestigeSys.DoOfficialOpen(curObj),
|
| | | ShareDefine.GameFuncID_Billboard:lambda curObj:PlayerBillboard.DoBillboardOpen(curObj),
|
| | | ShareDefine.GameFuncID_SignDay:lambda curObj:PlayerSignDay.DoSignDayOpen(curObj),
|
| | | ShareDefine.GameFuncID_Treasure:lambda curObj:PlayerTreasure.DoTreasureOpen(curObj),
|
| | | ShareDefine.GameFuncID_FirstGoldTip:lambda curObj:PlayerGoldGift.DoFirstGoldOpen(curObj),
|
| | | ShareDefine.GameFuncID_EquipDecompose:lambda curObj:PlayerEquipDecompose.DoEquipDecomposeOpen(curObj),
|
| | | ShareDefine.GameFuncID_FreeGoods:lambda curObj:PlayerFreeGoods.DoFreeGoodsOpen(curObj),
|
| | | ShareDefine.GameFuncID_OSSail:lambda curObj:FunctionNPCCommon.OSSaleOpenMail(curObj),
|
| | | ShareDefine.GameFuncID_AddPoint:lambda curObj:PlayerControl.DoAddPointOpen(curObj),
|
| | | ShareDefine.GameFuncID_Talent:lambda curObj:PlayerGreatMaster.DoTalentOpen(curObj),
|
| | | ShareDefine.GameFuncID_Arena:lambda curObj:PlayerArena.DoArenaOpen(curObj),
|
| | | ShareDefine.GameFuncID_FaQi:lambda curObj:PlayerFaQi.DoFaQiOpen(curObj),
|
| | | ShareDefine.GameFuncID_LianTi:lambda curObj:PlayerLianTi.DoLianTiOpen(curObj),
|
| | | ShareDefine.GameFuncID_Championship:lambda curObj:PlayerCrossChampionship.DoChampionshipOpen(curObj),
|
| | | ShareDefine.GameFuncID_Guaji:lambda curObj:PlayerGuaji.DoGuajiOpen(curObj),
|
| | | #ShareDefine.GameFuncID_RunDaily:lambda curObj:FBCommon.DoFuncOpen_RunDaily(curObj),
|
| | | #ShareDefine.GameFuncID_RunFamily:lambda curObj:FBCommon.DoFuncOpen_RunFamily(curObj),
|
| | |
|
| | | }
|
| | |
|
| | | ## 注意:功能开启需执行的函数 及 功能开启后升级逻辑 只会执行其中一个
|
| | | ## 注意:功能开启需执行的函数 及 功能开启后升级逻辑 只会执行其中一个
|
| | | ## 注意:功能开启需执行的函数 及 功能开启后升级逻辑 只会执行其中一个
|
| | |
|
| | | # 功能开启后升级逻辑 需要处理的函数 {功能ID:执行函数, ...} |
| | | #FuncLVUpLogicDict = {
|
| | | # ShareDefine.GameFuncID_Pet:lambda curObj:PlayerPet.DoLVUPLogic_Pet(curObj),
|
| | | # }
|
| | |
|
| | | # 功能开启需要同步到GameServer的
|
| | | FuncOpenNotifyGameServer = [ShareDefine.GameFuncID_Championship, ShareDefine.GameFuncID_MineArea]
|
| | |
|
| | | def GetFuncOpenLVIpyData(funcID): return IpyGameDataPY.GetIpyGameData("FuncOpenLV", funcID)
|
| | |
|
| | | def DoFuncOpenLogic(curPlayer, finishMissionIDList=[]):
|
| | | def DoFuncOpenLogic(curPlayer):
|
| | | '''执行触发功能开启逻辑
|
| | | @param finishMissionIDList: 完成的任务ID列表
|
| | | '''
|
| | |
| | | ipyData = ipyGameData.GetFuncOpenLVByIndex(i)
|
| | | funcID = ipyData.GetFuncId()
|
| | | limitMissionID = ipyData.GetLimitMissionID()
|
| | | if limitMissionID and limitMissionID in finishMissionIDList:
|
| | | if not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_MissionFinish % limitMissionID):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_MissionFinish % limitMissionID, 1)
|
| | | GameWorld.DebugLog(" 设置功能开启所需任务完成: funcID=%s,limitMissionID=%s" % (funcID, limitMissionID), curPlayer.GetPlayerID())
|
| | | |
| | | if limitMissionID and not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_MissionFinish % limitMissionID) \
|
| | | and PlayerTask.IsTaskFinish(curPlayer, limitMissionID):
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_MissionFinish % limitMissionID, 1)
|
| | | GameWorld.DebugLog(" 设置功能开启所需任务完成: funcID=%s,limitMissionID=%s" % (funcID, limitMissionID), curPlayer.GetPlayerID())
|
| | | |
| | | isOpen = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncFirstTouch, funcID, True)
|
| | | if isOpen:
|
| | | #GameWorld.DebugLog(" 功能已经开启过, 不需要重复触发开启! funcID=%s" % (funcID), curPlayer.GetPlayerID())
|
| | |
| | | if limitLV and curLV < limitLV:
|
| | | continue
|
| | |
|
| | | limitMagicWeapon = ipyData.GetLimitMagicWeapon()
|
| | | limitMagicWeaponID, limitMagicWeaponlv = limitMagicWeapon/100, limitMagicWeapon%100
|
| | | if limitMagicWeaponID and not PlayerMagicWeapon.GetIsActiveMagicWeapon(curPlayer, limitMagicWeaponID, limitMagicWeaponlv):
|
| | | continue
|
| | | |
| | | limitRealmLV = ipyData.GetLimiRealmLV()
|
| | | if limitRealmLV and curPlayer.GetOfficialRank() < limitRealmLV:
|
| | | continue
|
| | |
|
| | | limitMissionID = ipyData.GetLimitMissionID()
|
| | | if limitMissionID and not curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_MissionFinish % limitMissionID):
|
| | | continue
|
| | | |
| | | limitVIPLV = ipyData.GetLimitVIPLV()
|
| | | if limitVIPLV and curPlayer.GetVIPLv() < limitVIPLV:
|
| | | continue
|
| | |
|
| | | # 先更新值再处理开启逻辑,不能可能导致在功能开启逻辑中再开启功能引发的递归死循环
|
| | |
| | |
|
| | | if openFuncIDList:
|
| | | Sync_FuncOpenState(curPlayer, openFuncIDList)
|
| | | notifyGameServerFuncIDList = []
|
| | | for funcID in openFuncIDList:
|
| | | if funcID not in FuncOpenNotifyGameServer:
|
| | | continue
|
| | | notifyGameServerFuncIDList.append(funcID)
|
| | | if notifyGameServerFuncIDList:
|
| | | GameWorld.DebugLog("notifyGameServerFuncIDList=%s" % notifyGameServerFuncIDList)
|
| | | msgInfo = str(notifyGameServerFuncIDList)
|
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(curPlayer.GetID(), 0, 0, "FuncOpen", msgInfo, len(msgInfo))
|
| | | |
| | | PlayerActTask.OnCheckRelateFuncAct(curPlayer, openFuncIDList)
|
| | | PlayerActLoginNew.OnCheckRelateFuncAct(curPlayer, openFuncIDList)
|
| | | PlayerActBuyCountGift.OnCheckRelateFuncAct(curPlayer, openFuncIDList)
|
| | |
| | |
|
| | | ## 功能是否可用
|
| | | def GetFuncCanUse(curPlayer, funcID):
|
| | | if funcID < 0: return False
|
| | | return GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncFirstTouch, funcID, True)
|
| | |
|
| | | ## 获取功能限制等级(等级条件为全局)
|