From 94e2b6d3f93f5b25b788d4ee48c5cd15042b1f5e Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期六, 22 九月 2018 02:19:17 +0800 Subject: [PATCH] 3724 【开发】加下拾取无法放入背包日志 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 77 ++++++++++++++++++++++---------------- 1 files changed, 44 insertions(+), 33 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py index a17cfa3..0154b23 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py @@ -149,37 +149,37 @@ # @remarks 函数详细说明. def __DoPickup(curPlayer, mapItemID, tick, isGuard): + playerID = curPlayer.GetPlayerID() + mapItemManager = GameWorld.GetMapItemManager() + mapItem = mapItemManager.GetItemByID(mapItemID) + if mapItem == None or mapItem.IsEmpty(): + GameWorld.Log("当前物品不存在或已经被回收,玩家拾取失败,mapItemID=%s" % mapItemID, playerID) + return + dropItemNPCID = GetMapItemUserDataValue(mapItem, ShareDefine.Def_MapItemInfo_NPCID) + #镖车中,无法拾取 if not isGuard and curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck: PlayerControl.NotifyCode(curPlayer, "Old_hgg_21675") - #GameWorld.Log("使用交通工具时,无法拾取物品") + GameWorld.Log("使用交通工具时,无法拾取物品!mapItemID=%s,dropItemNPCID=%s" % (mapItemID, dropItemNPCID), playerID) return if curPlayer.GetHP() == 0: #玩家已经死亡 - #GameWorld.Log("当前玩家已经死亡") + GameWorld.Log("玩家已死亡,无法拾取物品!mapItemID=%s,dropItemNPCID=%s" % (mapItemID, dropItemNPCID), playerID) return - mapItemManager = GameWorld.GetMapItemManager() - mapItem = mapItemManager.GetItemByID(mapItemID) - - if mapItem == None or mapItem.IsEmpty(): - GameWorld.Log("当前物品已经被回收,玩家拾取失败,mapItemID=%s" % mapItemID, curPlayer.GetPlayerID()) - return - - pickDist = GameWorld.GetDist(curPlayer.GetPosX(), curPlayer.GetPosY(), - mapItem.GetPosX(), mapItem.GetPosY()) - + posX, posY, itemPosX, itemPosY = curPlayer.GetPosX(), curPlayer.GetPosY(), mapItem.GetPosX(), mapItem.GetPosY() + pickDist = GameWorld.GetDist(posX, posY, itemPosX, itemPosY) # 守护拾取不验证拾取范围 if not isGuard and pickDist > curPlayer.GetPickupDist(): #距离过远, 不能捡起 PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_805889") -# GameWorld.Log("当前距离过远, 玩家(%d,%d)-物品(%d,%d)"%(curPlayer.GetPosX(), curPlayer.GetPosY(), -# mapItem.GetPosX(), mapItem.GetPosY())) + GameWorld.Log("当前距离过远, mapItemID=%s,dropItemNPCID=%s,玩家(%d,%d)-物品(%d,%d),pickDist=%s > playerPickupDist=%s" + % (mapItemID, dropItemNPCID, posX, posY, itemPosX, itemPosY, pickDist, curPlayer.GetPickupDist()), playerID) return #拾取判断 - if not __CheckPickUpItemTime(curPlayer , mapItem , tick): + if not __CheckPickUpItemTime(curPlayer, mapItem, tick, mapItemID, dropItemNPCID): PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_913598") return @@ -237,7 +237,7 @@ # # 队伍拾取装备时,先保存物品的xml属性,用于提示的xml显示 # itemMsgList = ItemCommon.GetItemXMLMsg(singItem) #======================================================================= - + curItemCount = singItem.GetCount() curItemID = singItem.GetItemTypeID() curItemIsBind = singItem.GetIsBind() @@ -248,17 +248,20 @@ # 是否可放入 if not itemControl.CanPutInItem(packIndex, curItemID, curItemCount, curItemIsBind): PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [packIndex]) + GameWorld.Log("拾取物品无法放入背包!mapItemID=%s,dropItemNPCID=%s,curItemID=%s,packIndex=%s" + % (mapItemID, dropItemNPCID, curItemID, packIndex), curPlayer.GetPlayerID()) return # 副本拾取物品 FBLogic.OnFBPickUpItem(curPlayer, singItem, tick) - dropItemNPCID = GetMapItemUserDataValue(mapItem, ShareDefine.Def_MapItemInfo_NPCID) equipInfo = [singItem.GetEquipPlace(), ItemCommon.GetItemClassLV(singItem), singItem.GetItemColor(), singItem.GetItemQuality(), singItem.GetUserData()] if not itemControl.PutInItem(packIndex, singItem, event=[ChConfig.ItemGive_Pickup, False, {"NPCID":dropItemNPCID}]): #物品不能放入 #PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_676165", [packIndex]) + GameWorld.Log("拾取物品放入背包失败!mapItemID=%s,dropItemNPCID=%s,curItemID=%s,packIndex=%s" + % (mapItemID, dropItemNPCID, curItemID, packIndex), curPlayer.GetPlayerID()) return if dropItemNPCID: @@ -348,13 +351,14 @@ # SingleFBTPickUP(curPlayer, mapItemID, tick) # return + GameWorld.DebugLog("请求拾取物品, isGuard=%s,mapItemIDList=%s" % (isGuard, mapItemIDList), curPlayer.GetPlayerID()) + succMapItemIDList = [] # 成功拾取的地图物品 for mapItemID in mapItemIDList: if __DoPickup(curPlayer, mapItemID, tick, isGuard): succMapItemIDList.append(mapItemID) - GameWorld.DebugLog("请求拾取物品, isGuard=%s, MapItemID=%s, SuccMapItemID=%s" - % (isGuard, mapItemIDList, succMapItemIDList), curPlayer.GetPlayerID()) + GameWorld.DebugLog(" 成功拾取物品, succMapItemIDList=%s" % (succMapItemIDList), curPlayer.GetPlayerID()) # 守护拾取的,附加同步守护拾取结果 if isGuard and succMapItemIDList: @@ -1190,46 +1194,53 @@ # @param tick 当前时间 # @return True or False # @remarks 函数详细说明. -def __CheckPickUpItemTime(curPlayer , mapItem , tick): +def __CheckPickUpItemTime(curPlayer, mapItem, tick, mapItemID, dropItemNPCID): #判断物品保护时间 #玩家击杀掉落的 if mapItem.GetRemainTick(tick) == 0: return True - itemOwnerType = mapItem.GetOwnerType() + itemOwnerType = mapItem.GetOwnerType() + playerID = curPlayer.GetPlayerID() + ownerID = mapItem.GetOwnerID() #所有人都可以拾取的物品 if itemOwnerType == ChConfig.Def_NPCHurtTypeAll: return True #个人物品 elif itemOwnerType == ChConfig.Def_NPCHurtTypePlayer: - if mapItem.GetOwnerID() != curPlayer.GetPlayerID(): - #GameWorld.Log("该物品不属于你,不能拾取1") + if ownerID != playerID: + GameWorld.Log("玩家没有归属权,不能拾取! mapItemID=%s,dropItemNPCID=%s,ownerID=%s" + % (mapItemID, dropItemNPCID, ownerID), playerID) return False #队伍物品 elif itemOwnerType == ChConfig.Def_NPCHurtTypeTeam: curTeam = curPlayer.GetTeam() if curTeam == None: - #GameWorld.Log("该物品不属于你,不能拾取2") + GameWorld.Log("没有队伍不能拾取归属队伍物品! mapItemID=%s,dropItemNPCID=%s,ownerID=%s" + % (mapItemID, dropItemNPCID, ownerID), playerID) return False - if curTeam.GetTeamID() != mapItem.GetOwnerID(): - #GameWorld.Log("该物品不属于你,不能拾取3") + if curTeam.GetTeamID() != ownerID: + GameWorld.Log("队伍没有归属权,不能拾取! mapItemID=%s,dropItemNPCID=%s,ownerID=%s,curTeamID=%s" + % (mapItemID, dropItemNPCID, ownerID, curTeam.GetTeamID()), playerID) return False #阵营物品 elif itemOwnerType == ChConfig.Def_NPCHurtTypeFaction: - if mapItem.GetOwnerID() != curPlayer.GetFaction(): - #GameWorld.Log("该物品不属于你,不能拾取5") + if ownerID != curPlayer.GetFaction(): + GameWorld.Log("阵营没有归属权,不能拾取! mapItemID=%s,dropItemNPCID=%s,ownerID=%s,curFaction=%s" + % (mapItemID, dropItemNPCID, ownerID, curPlayer.GetFaction()), playerID) return False #特殊玩家ID归属 elif itemOwnerType == ChConfig.Def_NPCHurtTypeSpecial: ownerIDList = GetMapItemUserDataValue(mapItem, ShareDefine.Def_MapItemInfo_SpecOwner, []) - if curPlayer.GetPlayerID() not in ownerIDList: - #GameWorld.Log("该物品不属于你,不能拾取6! ownerIDList=%s" % ownerIDList, curPlayer.GetPlayerID()) + if playerID not in ownerIDList: + GameWorld.Log("玩家没有归属权,不能拾取! mapItemID=%s,dropItemNPCID=%s,ownerIDList=%s" + % (mapItemID, dropItemNPCID, ownerIDList), playerID) return False #仙盟归属 elif itemOwnerType == ChConfig.Def_NPCHurtTypeFamily: - if mapItem.GetOwnerID() != curPlayer.GetFamilyID(): - #GameWorld.Log("该物品不属于你仙盟的,不能拾取7! ownerFamilyID=%s,curFamilyID=%s" - # % (mapItem.GetOwnerID(), curPlayer.GetFamilyID()), curPlayer.GetPlayerID()) + if ownerID != curPlayer.GetFamilyID(): + GameWorld.Log("仙盟没有归属权,不能拾取! mapItemID=%s,dropItemNPCID=%s,ownerID=%s,curFamilyID=%s" + % (mapItemID, dropItemNPCID, ownerID, curPlayer.GetFamilyID()), playerID) return False return True -- Gitblit v1.8.0