|  |  | 
 |  |  |     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
 | 
 |  |  | 
 |  |  |         return
 | 
 |  |  |     
 | 
 |  |  |     curPlayer.SetActionObj(curNPC)
 | 
 |  |  |      | 
 |  |  |     if NPCCommon.OnCollectNPCBegin(curPlayer, curNPC, tick):
 | 
 |  |  |         return
 | 
 |  |  |     
 | 
 |  |  |     prepareTime = FBLogic.GetFBPrepareTime(curPlayer, curNPC)
 | 
 |  |  |     
 | 
 |  |  | 
 |  |  |     curPlayer.SetForbiddenResetItem(0)
 | 
 |  |  |     ExitCompose(curPlayer)
 | 
 |  |  |     ExitWarehouse(curPlayer)
 | 
 |  |  |     ExitRepair(curPlayer)
 | 
 |  |  |     #ExitRepair(curPlayer)
 | 
 |  |  |     ExitCreateFamily(curPlayer)
 | 
 |  |  |     ExitBillboard(curPlayer)
 | 
 |  |  |     #ExitEventLock(curPlayer)
 | 
 |  |  | 
 |  |  |     #npc商店退出
 | 
 |  |  |     ExitNPCShop(curPlayer)
 | 
 |  |  |     
 | 
 |  |  |     PlayerTrade.LeaveTrade(curPlayer, 0)
 | 
 |  |  |     #PlayerTrade.LeaveTrade(curPlayer, 0)
 | 
 |  |  |     # 清除py自定义状态
 | 
 |  |  |     ClearPyPlayerAction(curPlayer)
 | 
 |  |  |     #ClearPyPlayerAction(curPlayer)
 | 
 |  |  |     
 | 
 |  |  |     #调用底层结束事件
 | 
 |  |  |     #避免策划变更,导致其他退出锁定事件使任务1未接取就退出锁定
 |