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 | 90 +++++++++++++++++++++++++++++++++++++++-----
1 files changed, 79 insertions(+), 11 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 8228b23..2a98f3e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventShell.py
@@ -100,7 +100,7 @@
import PlayerExpandPackCfgMgr
import EventReport
import PlayerCoat
-import PlayerSuccess
+import PlayerGatherSoul
import PlayerArrestTask
import PlayerRune
import IpyGameDataPY
@@ -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:
@@ -1707,6 +1768,11 @@
RunQuestEvent(curPlayer, "magicweaponlv", '%s_%s'%(mwID, lv), Def_RunQuestType_RunAll)
return
+def EventRespons_MagicWeaponFBPassLV(curPlayer, mwID, lv):
+ # 魔族法宝关卡进度
+ RunQuestEvent(curPlayer, "mwfbpasslv", '%s_%s'%(mwID, lv), Def_RunQuestType_Normal)
+ return
+
def EventRespons_SuccessFinish(curPlayer, succID):
# 领取完成就
RunQuestEvent(curPlayer, "successfinish", succID, Def_RunQuestType_RunAll)
@@ -1833,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):
@@ -3698,7 +3764,7 @@
curPlayer.SetForbiddenResetItem(0)
ExitCompose(curPlayer)
ExitWarehouse(curPlayer)
- ExitRepair(curPlayer)
+ #ExitRepair(curPlayer)
ExitCreateFamily(curPlayer)
ExitBillboard(curPlayer)
#ExitEventLock(curPlayer)
@@ -3707,9 +3773,9 @@
#npc商店退出
ExitNPCShop(curPlayer)
- PlayerTrade.LeaveTrade(curPlayer, 0)
+ #PlayerTrade.LeaveTrade(curPlayer, 0)
# 清除py自定义状态
- ClearPyPlayerAction(curPlayer)
+ #ClearPyPlayerAction(curPlayer)
#调用底层结束事件
#避免策划变更,导致其他退出锁定事件使任务1未接取就退出锁定
@@ -3939,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:
@@ -4373,7 +4439,9 @@
# 符印交换
if PlayerRune.SwitchRune(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
return
-
+ # 聚魂交换
+ if PlayerGatherSoul.SwitchGatherSoul(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
+ return
#时装
if PlayerCoat.SwitchCoat(curPlayer, pack_SrcBackpack, pack_DesBackPack, pack_SrcIndex, pack_DestIndex):
@@ -4996,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