From f27986d2eb32e3d2598d15b91c88479797ce5c72 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 13 三月 2019 17:48:37 +0800
Subject: [PATCH] 6328 【后端】优化代码eval -  二进制流 不能直接输出

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py |   79 +++++++++++++++++++++++++++++++++++----
 1 files changed, 70 insertions(+), 9 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 c14b0e0..2a98f3e 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,9 @@
             giveItem.Clear()
             continue
     
-    #---初始化装备显隐---
-    curPlayer.SetEquipShowSwitch(IPY_GameWorld.revClothesCoat|IPY_GameWorld.revWeaponCoat|IPY_GameWorld.revMask)
+    #---初始化装备显隐 第1套*10+没有套装
+    curPlayer.SetEquipShowSwitch(10)
+    PlayerControl.SetFaceEquipIndex(curPlayer, 11012014)
     
     #默认触发一次功能开启
     if curPlayer.GetLV() == 1:
@@ -1838,9 +1899,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 +3764,7 @@
     curPlayer.SetForbiddenResetItem(0)
     ExitCompose(curPlayer)
     ExitWarehouse(curPlayer)
-    ExitRepair(curPlayer)
+    #ExitRepair(curPlayer)
     ExitCreateFamily(curPlayer)
     ExitBillboard(curPlayer)
     #ExitEventLock(curPlayer)
@@ -3712,9 +3773,9 @@
     #npc商店退出
     ExitNPCShop(curPlayer)
     
-    PlayerTrade.LeaveTrade(curPlayer, 0)
+    #PlayerTrade.LeaveTrade(curPlayer, 0)
     # 清除py自定义状态
-    ClearPyPlayerAction(curPlayer)
+    #ClearPyPlayerAction(curPlayer)
     
     #调用底层结束事件
     #避免策划变更,导致其他退出锁定事件使任务1未接取就退出锁定
@@ -3944,7 +4005,7 @@
 # @remarks 自定义函数, 读数据库任务删除表, 删除任务
 def __DoLogic_DeleteMission(curPlayer, curMission):
     missionID = curMission.GetMissionID()
-    GameWorld.Log("__DoLogic_DeleteMission---%s"%missionID)
+    GameWorld.Log("__DoLogic_DeleteMission---%s"%missionID, curPlayer.GetID())
     delMissionData = GameWorld.GetGameData().GetMissionDeleteByID(missionID)
     #任务删除表中无此任务
     if not delMissionData:
@@ -5003,7 +5064,7 @@
             PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
             return
         for itemID, itemCount, isBind in itemList:
-            ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, isBind, [IPY_GameWorld.rptItem])
+            ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
     
     #给经验
     giveExp = 0

--
Gitblit v1.8.0