From 0c96af08f55d05ab40eae9f940467dd8eafae44c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 16 九月 2025 14:07:53 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(增加属性ID技能增伤65、技能减伤66;曹轶技能;被动触发增加属性支持;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py |   85 ++++--------------------------------------
 1 files changed, 8 insertions(+), 77 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
index befdb67..cf7afb1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/GameFuncComm.py
@@ -24,80 +24,29 @@
 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),
-                     #ShareDefine.GameFuncID_RefineExp:lambda curObj:Operate_PlayerBuyZhenQi.DoFuncOpen_RefineExp(curObj),
-                     #ShareDefine.GameFuncID_RefineMoney:lambda curObj:Operate_PlayerBuyZhenQi.DoFuncOpen_RefineMoney(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列表
     '''
@@ -111,11 +60,11 @@
         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())
@@ -125,21 +74,12 @@
         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
         
         # 先更新值再处理开启逻辑,不能可能导致在功能开启逻辑中再开启功能引发的递归死循环
@@ -159,16 +99,6 @@
         
     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)
@@ -177,6 +107,7 @@
 
 ## 功能是否可用
 def GetFuncCanUse(curPlayer, funcID):
+    if funcID < 0: return False
     return GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_GameFuncFirstTouch, funcID, True)
 
 ## 获取功能限制等级(等级条件为全局)

--
Gitblit v1.8.0