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