From 0f297a5b66b91751d8342624db871efeca7ed94e Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期六, 02 三月 2019 10:20:48 +0800
Subject: [PATCH] 6307 【后端】【2.0】多套装备开发单(穿脱、升星)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py |   74 +++++++++++++++++++++++++++++++++---
 1 files changed, 67 insertions(+), 7 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 0e6ff72..f66d612 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,6 +345,9 @@
         return
     
     curPlayer.SetActionObj(curNPC)
+    
+    if NPCCommon.OnCollectNPCBegin(curPlayer, curNPC, tick):
+        return
     
     prepareTime = FBLogic.GetFBPrepareTime(curPlayer, curNPC)
     
@@ -808,8 +868,8 @@
             giveItem.Clear()
             continue
     
-    #---初始化装备显隐---
-    curPlayer.SetEquipShowSwitch(IPY_GameWorld.revClothesCoat|IPY_GameWorld.revWeaponCoat|IPY_GameWorld.revMask)
+    #---初始化装备显隐---前端自己设置
+    #curPlayer.SetEquipShowSwitch(IPY_GameWorld.revClothesCoat|IPY_GameWorld.revWeaponCoat|IPY_GameWorld.revMask)
     
     #默认触发一次功能开启
     if curPlayer.GetLV() == 1:
@@ -1838,9 +1898,9 @@
     RunQuestEvent(curPlayer, "trialexange", costItemID, Def_RunQuestType_Normal)
     return
 
-def EventRespons_EquipByPlace(curPlayer, equipplace):
+def EventRespons_EquipByPlace(curPlayer, itemClassLV, equipplace):
     #穿戴某部位装备(非时效)
-    RunQuestEvent(curPlayer, "equipbyplace", equipplace, Def_RunQuestType_Normal)
+    RunQuestEvent(curPlayer, "equipbyplace", '%s_%s'%(itemClassLV, equipplace), Def_RunQuestType_Normal)
     return
 
 def EventRespons_CompoundEquip(curPlayer, itemColor, itemQuality):
@@ -3703,7 +3763,7 @@
     curPlayer.SetForbiddenResetItem(0)
     ExitCompose(curPlayer)
     ExitWarehouse(curPlayer)
-    ExitRepair(curPlayer)
+    #ExitRepair(curPlayer)
     ExitCreateFamily(curPlayer)
     ExitBillboard(curPlayer)
     #ExitEventLock(curPlayer)
@@ -3712,9 +3772,9 @@
     #npc商店退出
     ExitNPCShop(curPlayer)
     
-    PlayerTrade.LeaveTrade(curPlayer, 0)
+    #PlayerTrade.LeaveTrade(curPlayer, 0)
     # 清除py自定义状态
-    ClearPyPlayerAction(curPlayer)
+    #ClearPyPlayerAction(curPlayer)
     
     #调用底层结束事件
     #避免策划变更,导致其他退出锁定事件使任务1未接取就退出锁定

--
Gitblit v1.8.0