From 1ff3e77b9f3398c3c0c057091b17a11d3040228a Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 19 二月 2019 16:05:21 +0800
Subject: [PATCH] 6253 【主干】【1.6】守卫人皇添加怪物波数日志输出

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py |   64 ++++++++++++++++++++++++++++++-
 1 files changed, 61 insertions(+), 3 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
index 5bc021f..23e2b08 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -229,6 +229,63 @@
     EventLogic(curPlayer, sendPack_EventNPCID, tick)
     return
 
+#// C1 06 跨服NPC对话 #tagCMCrossNPCTalk
+#
+#struct    tagCMCrossNPCTalk
+#{
+#    tagHead        Head;
+#    WORD        ObjID;
+#    DWORD        NPCID;
+#    WORD        PosX;
+#    WORD        PosY;
+#};
+def OnCrossNPCTalk(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    
+    objID = clientData.ObjID
+    npcID = clientData.NPCID
+    #posX = clientData.PosX
+    #posY = clientData.PosY
+    if GameWorld.IsCrossServer():
+        return
+    
+    lastTick = curPlayer.GetDictByKey("CrossNPCTalkTick")
+    if tick - lastTick < 2000:
+        return
+    curPlayer.SetDict("CrossNPCTalkTick", tick)
+    
+    npcData = GameWorld.GetGameData().FindNPCDataByID(npcID)
+    if not npcData:
+        GameWorld.ErrLog("跨服NPCID不存在! npcID=%s" % npcID)
+        return
+        
+    # 目前暂支持跨服采集
+    if npcData.GetType() not in [IPY_GameWorld.ntCollection, IPY_GameWorld.ntMissionCollect]:
+        return
+    
+    collectNPCIpyData = IpyGameDataPY.GetIpyGameData("CollectNPC", npcID)
+    if collectNPCIpyData:
+        if not NPCCommon.CheckCanCollectByNPCID(curPlayer, npcID, collectNPCIpyData):
+            return
+        
+        msgDict = {"PlayerID":curPlayer.GetPlayerID(), "ObjID":objID, "NPCID":npcID}
+        GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_CollectNPC, msgDict)
+        
+    return
+
+def ClientServerMsg_CollectNPC(curPlayer, msgData, serverGroupID, tick):
+    ## 收到子服同步的采集NPC
+    objID = msgData["ObjID"]
+    npcID = msgData["NPCID"]
+    curNPC = GameWorld.FindNPCByID(objID)
+    if not curNPC:
+        return
+    if npcID !=  curNPC.GetNPCID():
+        GameWorld.ErrLog("采集跨服NPC错误!npcID=%s != curNPCID=%s" % (npcID, curNPC.GetNPCID()))
+        return
+    EventLogic(curPlayer, objID, tick)
+    return
+
 ##客户端//08 01封包响应 自定义函数: 事件处理
 #@param curPlayer 当前玩家
 #@param eventNPCID 事件NPCID
@@ -288,9 +345,10 @@
         return
     
     curPlayer.SetActionObj(curNPC)
-    if curNPC.GetNPCID() in ReadChConfig.GetEvalChConfig("CollectNPCLostHP"):
-        curPlayer.SetDict(ChConfig.Def_PlayerKey_CollectLostHPTick, tick)
-        
+    
+    if NPCCommon.OnCollectNPCBegin(curPlayer, curNPC, tick):
+        return
+    
     prepareTime = FBLogic.GetFBPrepareTime(curPlayer, curNPC)
     
     collTimeReduceRate = PlayerVip.GetPrivilegeValue(curPlayer, ChConfig.VIPPrivilege_CollTimeReduceRate)

--
Gitblit v1.8.0