From d7f44d8d871a90c818bdb3ffe9a60af875b7100a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 30 九月 2025 10:12:23 +0800 Subject: [PATCH] 135 【挑战】战锤秘境-服务端(白骨盈野;副本基础;副本扫荡;广告奖励支持;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 155 ++++++++------------------------------------------- 1 files changed, 25 insertions(+), 130 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 55c26ef..3d49a93 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py @@ -42,7 +42,6 @@ import ReadChConfig import OperControlManager import ShareDefine -import PlayerAttrFruit import DataRecordPack import ChPyNetSendPack import NetPackCommon @@ -148,7 +147,7 @@ # @param tick 当前时间 # @return None or True # @remarks 函数详细说明. -def __DoPickup(curPlayer, mapItemID, tick, isGuard): +def __DoPickup(curPlayer, mapItemID, tick): playerID = curPlayer.GetPlayerID() mapItemManager = GameWorld.GetMapItemManager() @@ -166,7 +165,7 @@ 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(): + if pickDist > curPlayer.GetPickupDist(): #距离过远, 不能捡起 PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_805889") GameWorld.Log("当前距离过远, mapItemID=%s,dropItemNPCID=%s,玩家(%d,%d)-物品(%d,%d),pickDist=%s > playerPickupDist=%s" @@ -190,8 +189,6 @@ mapItemCount = singItem.GetCount() singItemGUID = singItem.GetGUID() curEffID = singItem.GetEffectByIndex(0).GetEffectID() - playerTeam = curPlayer.GetTeam() - #isTeamNotify = (ownerType == ChConfig.Def_NPCHurtTypeTeam and playerTeam != None) isTeamNotify = False # 拾取金钱 if mapItemType == ChConfig.Def_ItemType_Money: @@ -199,10 +196,6 @@ ChConfig.Def_GiveMoney_Pickup, {}, not isTeamNotify): return - # 提示获得金钱数量 - if isTeamNotify: - PlayerControl.TeamNotify(playerTeam.GetTeamID(), "GeRen_lhs_295695", [curPlayer.GetName(), - mapItemCount]) # 副本拾取金钱 FBLogic.OnFBPickUpItem(curPlayer, singItem, tick) singItem.Clear() @@ -264,8 +257,8 @@ mapID = GameWorld.GetGameWorld().GetMapID() lineID = 0 if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull else PlayerControl.GetFBFuncLineID(curPlayer) #合并地图的,使用前端lineID,即 FBID - if mapID in [ChConfig.Def_FBMapID_BossHome]: - lineID = curPlayer.GetClientLineID() + #if mapID in [ChConfig.Def_FBMapID_BossHome]: + # lineID = curPlayer.GetClientLineID() NPCCommon.SendGameServerGoodItemRecord(curPlayer, mapID, lineID, dropItemNPCID, curItemID, equipInfo) # 不需要队伍提示 @@ -306,20 +299,6 @@ return #--------------------------------------------------------------------- -#// A3 12 守护拾取物品 #tagCMGuardPickupItem -# -#struct tagCMGuardPickupItem -#{ -# tagHead Head; -# WORD ItemCount; -# WORD MapItemID[ItemCount]; //size = ItemCount -#}; -def OnGuardPickupItem(index, clientData, tick): - curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) - mapItemIDList = clientData.MapItemID - __DoPickupItem(curPlayer, mapItemIDList, tick, True) - return - ## 玩家拾取物品(封包参数) # @param index 当前玩家索引 # @param tick 当前时间 @@ -330,103 +309,23 @@ #玩家捡起物品 pickPack = IPY_GameWorld.IPY_PickUpItem() mapItemID = pickPack.GetMapItemID() - __DoPickupItem(curPlayer, [mapItemID], tick, False) + __DoPickupItem(curPlayer, [mapItemID], tick) return -def __DoPickupItem(curPlayer, mapItemIDList, tick, isGuard): - # @param isGuard: 是否守护拾取 - - if isGuard and GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull: - mapID = curPlayer.GetMapID() - fbIpyData = FBCommon.GetFBIpyData(mapID) - if fbIpyData and not fbIpyData.GetGuardPick(): - GameWorld.Log("该地图守护无法拾取物品! mapID=%s" % mapID, curPlayer.GetPlayerID()) - return - -# #单人副本一键拾取 -# if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtSingle: -# SingleFBTPickUP(curPlayer, mapItemID, tick) -# return - +def __DoPickupItem(curPlayer, mapItemIDList, tick): if not mapItemIDList: GameWorld.ErrLog("没有指定要拾取的地图物品ID!", curPlayer.GetPlayerID()) return succMapItemIDList = [] # 成功拾取的地图物品 for mapItemID in mapItemIDList: - if __DoPickup(curPlayer, mapItemID, tick, isGuard): + if __DoPickup(curPlayer, mapItemID, tick): succMapItemIDList.append(mapItemID) if succMapItemIDList: GameWorld.Log("成功拾取地图物品, succMapItemIDList=%s" % (succMapItemIDList), curPlayer.GetPlayerID()) - - # 守护拾取的,附加同步守护拾取结果 - if isGuard and succMapItemIDList: - guradPickupSucc = ChPyNetSendPack.tagMCGuradPickupItemSucc() - guradPickupSucc.MapItemID = succMapItemIDList - guradPickupSucc.ItemCount = len(guradPickupSucc.MapItemID) - NetPackCommon.SendFakePack(curPlayer, guradPickupSucc) - -# 玩家拾取结果目前客户端暂时无用,不通知 -# if not __DoPickup(curPlayer, mapItemID, tick): -# curPlayer.Notify_PickupItemResult(mapItemID, 0) -# else: -# curPlayer.Notify_PickupItemResult(mapItemID, 1) return - -###单人副本一键拾取 -## @param curPlayer mapItemID -## @return None -#def SingleFBTPickUP(curPlayer, mapItemID, tick): -# mapItemManager = GameWorld.GetMapItemManager() -# curMapItem = mapItemManager.GetItemByID(mapItemID) -# if curMapItem == None or curMapItem.IsEmpty(): -# return -# -# posX = curPlayer.GetPosX() -# posY = curPlayer.GetPosY() -# itemPosX = curMapItem.GetPosX() -# itemPosY = curMapItem.GetPosY() -# -# pickDist = GameWorld.GetDist(posX, posY, itemPosX, itemPosY) -# -# if pickDist > curPlayer.GetPickupDist(): -# #距离过远, 不能捡起 -# PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_805889") -# return -# -# mapItemIDList = [curMapItem.GetID()] -# #拾取当前格子周围的物品 -# mapItemManager = GameWorld.GetMapItemManager() -# for index in range(mapItemManager.GetMapItemCount()): -# mapItem = mapItemManager.GetMapItemByIndex(index) -# if not mapItem or mapItem.IsEmpty(): -# continue -# -# mapItemObjID = mapItem.GetID() -# if mapItemObjID in mapItemIDList: -# continue -# -# curItem = mapItem.GetItem() -# # 只一键拾取金钱 -# if curItem.GetType() != ChConfig.Def_ItemType_Money: -# continue -# -# pickDist = GameWorld.GetDist(posX, posY, mapItem.GetPosX(), mapItem.GetPosY()) -# -# if pickDist > curPlayer.GetPickupDist(): -# continue -# -# mapItemIDList.append(mapItemObjID) -# -# for mapItemID in mapItemIDList: -# if not __DoPickup(curPlayer, mapItemID, tick): -# curPlayer.Notify_PickupItemResult(mapItemID, 0) -# else: -# curPlayer.Notify_PickupItemResult(mapItemID, 1) -# -# return #--------------------------------------------------------------------- ## 玩家使用物品 ->自身效果(封包参数) # @param index 当前玩家索引 @@ -462,12 +361,12 @@ def __DoLogic_PlayerUseItemSelf(curPlayer, useItemIndex, tick, useCnt=1, exData=0): #使用物品行为状态, 判断客户端限制 - if not OperControlManager.IsObjCanDoAction( - curPlayer, - ChConfig.Def_Obj_ActState_ClientAct, - IPY_GameWorld.oalUseItem - ): - return False + #if not OperControlManager.IsObjCanDoAction( + # curPlayer, + # ChConfig.Def_Obj_ActState_ClientAct, + # IPY_GameWorld.oalUseItem + # ): + # return False #------------------封包参数 获得 玩家物品 backPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) @@ -674,10 +573,6 @@ # @return None or True # @remarks 函数详细说明. def __DealWith_SpecialItem(curPlayer, curItem, tick, useCnt, exData): - #果实物品 - useFruitResult = PlayerAttrFruit.DoPlayerEatFruitItem(curPlayer, curItem, useCnt) - if useFruitResult != -1: - return useFruitResult #------------------------获得物品相关属性 itemTypeID = curItem.GetItemTypeID() #物品类型id @@ -715,7 +610,6 @@ ChConfig.Def_Effect_TrainRealmLV:"Item_TrainRealmLV", # 境界培养卡 ChConfig.Def_Effect_ResetBossKillCnt:"Item_ResetBossKillCnt", # 重置boss击杀疲劳 ChConfig.Def_Effect_AddFBCnt:"Item_AddFBCnt", # 增加副本可进入次数 - ChConfig.Def_Effect_AddArenaBattleCount:"Item_AddArenaBattleCount", # 增加竞技场挑战次数 ChConfig.Def_Effect_AddKillBossCnt:"Item_AddKillBossCnt", # 增加BOSS可击杀次数 ChConfig.Def_Effect_AddMagicWeaponUpExp:"Item_AddMagicWeaponUpExp", # 增加法宝升星经验 ChConfig.Def_Effect_ChatBubbleBox:"Item_ChatBubbleBox", # 激活聊天气泡框 @@ -726,6 +620,7 @@ ChConfig.Def_Effect_AddRealmExpRate:"Item_AddRealmExpRate", # 增加聚灵效率 ChConfig.Def_Effect_TouchMission:"Item_TouchMission", # 触发任务接口 ChConfig.Def_Effect_HeroSkin:"Item_HeroSkin", # 武将皮肤 + #ChConfig.Def_Effect_AddArenaBattleCount:"Item_AddArenaBattleCount", # 增加竞技场挑战次数 #ChConfig.Def_Effect_FamilyImpeach:"Item_FamilyImpeach", # 弹劾符 #ChConfig.Def_Effect_ClothesCoatSkin:"Item_ClothesCoatSkin", #激活时装皮肤 #ChConfig.Def_Effect_AddOfficialExp:"Item_AddOfficialExp", # 增加爵位经验 @@ -887,25 +782,25 @@ # @return 布尔值 # @remarks 检查使用物品的玩家属性. def CheckUseItemSelf_Player(curPlayer): - if GameObj.GetHP(curPlayer) <= 0 : - return False + #if GameObj.GetHP(curPlayer) <= 0 : + # return False # #眩晕时, 不可使用物品 # if curPlayer.GetAbnormalState() == IPY_GameWorld.sctFaint: # return False #使用物品行为状态, 判断服务端限制 - if not OperControlManager.IsObjCanDoAction( - curPlayer, - ChConfig.Def_Obj_ActState_ServerAct, - IPY_GameWorld.oalUseItem - ): - return False + #if not OperControlManager.IsObjCanDoAction( + # curPlayer, + # ChConfig.Def_Obj_ActState_ServerAct, + # IPY_GameWorld.oalUseItem + # ): + # return False #交易状态, 不可使用物品 - if curPlayer.GetPlayerAction() == IPY_GameWorld.paTrade: - PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_372238") - return False + #if curPlayer.GetPlayerAction() == IPY_GameWorld.paTrade: + # PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_372238") + # return False # #GM禁止使用 # if GameWorld.IsGM(curPlayer): -- Gitblit v1.8.0