From 90e08c4c72c7a42f5fcbb53e834dbc4ac88d8b56 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 21 九月 2018 11:20:48 +0800
Subject: [PATCH] 3357 优化脱机战斗表现-- 190级以下脱机挂玩家,6个中随机5个隐身,前期太多玩家

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
index 92e89fd..138d27e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/ChNPC.py
@@ -46,6 +46,7 @@
 import SkillShell
 import FBLogic
 import PassiveBuffEffMng
+import IpyGameDataPY
 #---------------------------------------------------------------------
 #导入所有的NPCAI
 GameWorld.ImportAll("Script\\NPC\\" , "NPCAI")
@@ -96,6 +97,13 @@
     callFunc(curNPC,HurtType,HurtID)
     return
 
+def OnNPCSetDead(curNPC):
+    callFunc = GameWorld.GetExecFunc(NPCAI, "AIType_%d.%s"%(curNPC.GetAIType(), "OnNPCSetDead"))
+    if callFunc == None:
+        return None
+    callFunc(curNPC)
+    return
+
 def OnNPCReborn(curNPC):
     FBLogic.OnNPCRebornInFB(curNPC)
     callFunc = GameWorld.GetExecFunc(NPCAI, "AIType_%d.%s"%(curNPC.GetAIType(), "OnNPCReborn"))
@@ -136,11 +144,25 @@
 def __Func_InitNPC(tick):
     #调用NPC AI击杀触发
     NPCCommon.OnNPCDie = OnNPCDie
-    GameWorld.Log("NPC Initing...FB %d"%GameWorld.GetGameWorld().GetCurGameWorldIndex())
+    gameWorldIndex = GameWorld.GetGameWorld().GetCurGameWorldIndex()
+    GameWorld.Log("NPC Initing...FB %d" % gameWorldIndex)
+    mapID = GameWorld.GetMap().GetMapID()
+    hideNPCIDList = [] # 需要隐藏的NPCID列表
+    # 由于某些常规线boss区域要重复利用,所以活动线独立,不开放给玩家,仅特定活动时系统传入
+    activityMapLineDict = IpyGameDataPY.GetFuncEvalCfg("MapLine", 2, {})
+    if mapID in activityMapLineDict:
+        activityLineID = max(0, activityMapLineDict[mapID] - 1)
+        if gameWorldIndex == activityLineID:
+            hideNPCIDList = IpyGameDataPY.GetFuncEvalCfg("MapLine", 3)
+            GameWorld.Log("    hideNPCIDList=%s" % hideNPCIDList)
+            
     gameNPC = GameWorld.GetNPCManager()
     npcCount = gameNPC.GetNPCCount()
     for i in xrange(npcCount):
         curNPC = gameNPC.GetNPCByIndex(i)
+        if curNPC.GetNPCID() in hideNPCIDList:
+            curNPC.SetVisible(False)
+            continue
         #初始化
         NPCCommon.InitNPC(curNPC) 
         

--
Gitblit v1.8.0