From 02e97056134c570be30922f6ee3bb3b17b209524 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期二, 26 三月 2019 10:17:05 +0800 Subject: [PATCH] 6351 【后端】【2.1】新版骑宠争夺 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 47 ++++++++++++++++++++++++++++++++++------------- 1 files changed, 34 insertions(+), 13 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py index 20ff038..1128d84 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py @@ -587,6 +587,27 @@ #GameWorld.DebugLog(" totalExp=%s,totalMoney=%s,needSpace=%s,jsonItemList=%s" % (totalExp, totalMoney, needSpace, jsonItemList)) return jsonItemList, totalExp, totalMoney +def DoVirtualItemDrop(curPlayer, dropItemList, dropPosX, dropPosY): + ##前端假掉落表现 + gameMap = GameWorld.GetMap() + index = 0 + for posX, posY in ChConfig.Def_DropItemAreaMatrix: + resultX = dropPosX + posX + resultY = dropPosY + posY + if not gameMap.CanMove(resultX, resultY): + #玩家不可移动这个点 + continue + if index > len(dropItemList) - 1: + break + itemInfo = dropItemList[index] + index += 1 + itemID, itemCount, isAuctionItem = itemInfo + curItem = ItemControler.GetOutPutItemObj(itemID, itemCount, isAuctionItem) + dropItemDataStr = ChItem.GetMapDropItemDataStr(curItem) + SendVirtualItemDrop(curPlayer, itemID, resultX, resultY, dropItemDataStr) + curItem.Clear() + return + ################################### NPC掉落 ################################### Def_NPCMaxDropRate = 1000000 # NPC掉落相关的最大概率, 数值设定 @@ -4156,7 +4177,7 @@ if mapID == ChConfig.Def_FBMapID_GatherSoul:#聚魂副本特殊处理 GameLogic_GatherSoul.KillGatherSoulNPCDropAward(itemID, itemCnt, isAuctionItem) dropItemDataStr = ChItem.GetMapDropItemDataStr(curItem) - self.SendVirtualItemDrop(ownerPlayer, itemID, resultX, resultY, dropItemDataStr) + SendVirtualItemDrop(ownerPlayer, itemID, resultX, resultY, dropItemDataStr) curItem.Clear() continue @@ -4166,21 +4187,10 @@ #可以放入背包 if ItemControler.DoLogic_PutItemInPack(ownerPlayer, curItem, event=["NPCDrop", False, {"npcID":npcID}]): #通知客户端 - self.SendVirtualItemDrop(ownerPlayer, itemID, resultX, resultY, dropItemDataStr) + SendVirtualItemDrop(ownerPlayer, itemID, resultX, resultY, dropItemDataStr) else: self.__MapCreateItem(curItem, resultX, resultY, ownerType, ownerID) - return - - def SendVirtualItemDrop(self, player, itemID, posX, posY, userDataStr): - #通知客户端 - vItemDrop = ChPyNetSendPack.tagMCVirtualItemDrop() - vItemDrop.ItemTypeID = itemID - vItemDrop.PosX = posX - vItemDrop.PosY = posY - vItemDrop.UserData = userDataStr - vItemDrop.UserDataLen = len(vItemDrop.UserData) - NetPackCommon.SendFakePack(player, vItemDrop) return #--------------------------------------------------------------------- ## NPC被杀死逻辑处理 @@ -5080,6 +5090,17 @@ return curItem #--------------------------------------------------------------------- +def SendVirtualItemDrop(player, itemID, posX, posY, userDataStr): + #通知客户端假物品掉落 + vItemDrop = ChPyNetSendPack.tagMCVirtualItemDrop() + vItemDrop.ItemTypeID = itemID + vItemDrop.PosX = posX + vItemDrop.PosY = posY + vItemDrop.UserData = userDataStr + vItemDrop.UserDataLen = len(vItemDrop.UserData) + NetPackCommon.SendFakePack(player, vItemDrop) + return + def GetNPCExp(curPlayer, npcID): npcData = GameWorld.GetGameData().FindNPCDataByID(npcID) if not npcData: -- Gitblit v1.8.0