From a7ab0247c7b8eff06ad104bee39bc035384ca43e Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 23 七月 2025 12:08:22 +0800 Subject: [PATCH] 80 【常规】背包-服务端(增加背包购买格子;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 295 ---------------------------------------------------------- 1 files changed, 2 insertions(+), 293 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 054bc14..a711479 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py @@ -37,13 +37,11 @@ import UseItem import ItemCommon import ChConfig -import EventShell import PlayerControl import FBLogic import ReadChConfig import OperControlManager import ShareDefine -import PlayerAttrFruit import DataRecordPack import ChPyNetSendPack import NetPackCommon @@ -111,7 +109,7 @@ #=============================================================================== def __Func_InitItem(tick): #初始化物品掉落保护 - MapItemProtectTime = IpyGameDataPY.GetFuncCfg("MapItemProtectTime") + MapItemProtectTime = 120000 #IpyGameDataPY.GetFuncCfg("MapItemProtectTime") GameWorld.GetMapItemManager().SetProtectTime(MapItemProtectTime) #=============================================================================================== @@ -158,12 +156,6 @@ 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("使用交通工具时,无法拾取物品!mapItemID=%s,dropItemNPCID=%s" % (mapItemID, dropItemNPCID), playerID) - return if GameObj.GetHP(curPlayer) == 0: #玩家已经死亡 @@ -284,8 +276,6 @@ # PickupItemSysNotify(curPlayer, isTeamNotify, itemMsgList, isEquip) #======================================================================= - #响应事件 - EventShell.EventRespons_OnGet(curPlayer, mapItemTypeID) #成就 PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PickUpItem, curItemCount, [curItemID]) @@ -657,15 +647,6 @@ #这个物品不是一般物品, 直接返回结果 return useSpecialItemResult - #---特殊装备不验证装备属性, 普通物品要验证装备属性--- - itemControler = ItemControler.PlayerItemControler(curPlayer) - - #装备无法使用 - if itemControler.PlayerCanEquipItem(curItem, False): - #这个物品是装备 - PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_774045") - return - #物品类型ID itemTypeID = curItem.GetItemTypeID() @@ -692,10 +673,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 @@ -723,7 +700,6 @@ ChConfig.Def_Effect_Face:"Item_Face", ChConfig.Def_Effect_FacePic:"Item_Face", ChConfig.Def_Effect_ItemAddLV:"Item_AddLV", #升级道具 - ChConfig.Def_Effect_TJGAddTime:"Item_TJGAddTime", #增加脱机挂时间 ChConfig.Def_Effect_GuajiAward:"Item_GuajiAward", #直接给挂机收益 ChConfig.Def_Effect_CleanGuilt:"Item_CleanGuilt", # 洗红名 ChConfig.Def_Effect_PrizeCoin:"Item_PrizeCoin", # 奖励充值点券 @@ -744,6 +720,7 @@ ChConfig.Def_Effect_ItemGiveWeekPartyPoint1:"Item_WeekPartyPoint", # 增加活动巡礼积分 ChConfig.Def_Effect_AddRealmExpRate:"Item_AddRealmExpRate", # 增加聚灵效率 ChConfig.Def_Effect_TouchMission:"Item_TouchMission", # 触发任务接口 + ChConfig.Def_Effect_HeroSkin:"Item_HeroSkin", # 武将皮肤 #ChConfig.Def_Effect_FamilyImpeach:"Item_FamilyImpeach", # 弹劾符 #ChConfig.Def_Effect_ClothesCoatSkin:"Item_ClothesCoatSkin", #激活时装皮肤 #ChConfig.Def_Effect_AddOfficialExp:"Item_AddOfficialExp", # 增加爵位经验 @@ -920,11 +897,6 @@ ): return False - #在镖车中, 不可使用物品 - if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck : - PlayerControl.NotifyCode(curPlayer, "Old_hgg_0") - return False - #交易状态, 不可使用物品 if curPlayer.GetPlayerAction() == IPY_GameWorld.paTrade: PlayerControl.NotifyCode(curPlayer, "GeRen_lhs_372238") @@ -982,11 +954,6 @@ if ItemControler.IsEventItem(curItem): PlayerControl.NotifyCode(curPlayer, "itemuse_chenxin_31379") - return - - #玩家在镖车中,不能使用物品 - if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvTruck: - PlayerControl.NotifyCode(curPlayer, "Old_hgg_0") return # #玩家事件中, 不能使用物品 @@ -1409,96 +1376,6 @@ def GetBackItemInFabao(index , tick): return -##=============================================================================== -##07 24 tagCDingDianTransport -# -### 定点(城市)传送 和 洞穴传送 (收包参数) -## @param index 玩家索引 -## @param tick 当前时间 -## @return None -## @remarks 函数详细说明. -#def PointTransport(index, tick): -# return -# packUseItem = IPY_GameWorld.IPY_CDingDianTransport() -# useItemIndex = packUseItem.GetItemIndex() -# transportIndex = packUseItem.GetTransportIndex() -# -# #获得玩家使用的物品 -# curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) -# backPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem) -# curItem = backPack.GetAt(useItemIndex) -# -# #检查玩家状态和物品 -# if not CheckUseTransformItem(curPlayer, curItem, tick): -# return -# -# #判断属于哪种传送 -# effIndex = curItem.GetEffectByIndex(0) -# curEffID = effIndex.GetEffectID() -# -# #CD验证 -# if (tick - curPlayer.GetItemCDStartTime(curEffID)) < curItem.GetCDTime(): -# #CD冷却时间未到 -# PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_749572") -# return -# -# #判断并执行传送 -# if not __DoTransport(curPlayer, curItem, curEffID, transportIndex, useItemIndex, tick): -# return -# -### 执行传送 -## @param curPlayer 当前玩家 -## @param curItem 使用物品 -## @param curEffID 当前效果 -## @param transportIndex 传送点索引 -## @param useItemIndex 使用的物品索引 -## @param tick 当前时间 -## @return None -## @remarks 函数详细说明. -#def __DoTransport(curPlayer, curItem, curEffID, transportIndex, useItemIndex, tick): -# #定点列表 -# cityPosList = ReadChConfig.GetEvalChConfig('Def_List_City_Pos') -# #山洞列表 -# cavePosList = ReadChConfig.GetEvalChConfig('Def_List_Cave_Pos') -# -# #定点 -# if curEffID == ChConfig.Def_Item_150_Effect: -# posList = cityPosList -# #山洞 -# elif curEffID == ChConfig.Def_Item_152_Effect: -# posList = cavePosList -# else: -# GameWorld.Log('###非法使用物品,效果值%s'%(curEffID,), curPlayer.GetPlayerID()) -# return -# -# #检查越界 -# if transportIndex < 0 or transportIndex >= len(posList): -# GameWorld.Log('###定点传送越界--%s'%(transportIndex)) -# return -# -# #目标地图判断 -# if not PlayerControl.CheckTagCountry(curPlayer, posList[transportIndex][0]): -# return -# -# itemID = curItem.GetItemTypeID() -# -# -# #使用xx一个 -# PlayerControl.NotifyCode(curPlayer, "LostRes", [itemID, 1]) -# #通知客户端 -# curPlayer.Sync_UseItem(itemID, useItemIndex) -# curPlayer.SetItemCD(curItem.GetCDType(), tick) -# -# #扣除物品(先记录再删除,避免底层已经删除此物品) -# curItem.SetCount(curItem.GetCount() - 1) -# -# #判断成功,进行传送 -# PlayerControl.PlayerResetWorldPos(curPlayer, posList[transportIndex][0], posList[transportIndex][1], posList[transportIndex][2], False) -# -# #传送XX地点提示 -# PlayerControl.NotifyCode(curPlayer, "Map_Deliver_Succeed", [posList[transportIndex][0]]) - -#--------------------------------------------------------------------- #=============================================================================== # //07 26 有对象的使用物品#tagCUseItemTag # tagCUseItemTag * GettagCUseItemTag(); @@ -1650,100 +1527,6 @@ return return -#--------------------------------------------------------------------- -#=============================================================================== -# //07 33 使用五行卷#tagCUseWuXingJuan -# tagCUseWuXingJuan * GettagCUseWuXingJuan(); -# -# class IPY_CUseWuXingJuan -# { -# public: -# //物品Index -# int GetItemIndex(); -# //新的五行 -# int GetNewWuXing(); -# }; -#=============================================================================== -## 使用五行卷轴(封包参数) -# @param index 玩家索引 -# @param tick 当前时间 -# @return None or False -# @remarks 函数详细说明. -def UseWuXingJuan(index , tick): - return - -## 检测物品是否是五行卷轴 -# @param curItem 等待检测的物品 -# @return 布尔值 -# @remarks 函数详细说明. -#=============================================================================== -# def CheckWuXingJuan(curItem): -# if not ItemCommon.CheckItemCanUse(curItem): -# return False -# -# #这个物品不是五行转换卷轴 -# if curItem.GetEffectByIndex(0).GetEffectID() != ChConfig.Def_Effect_ItemWuXingJuan: -# return False -# -# return True -#=============================================================================== - - -## 使用回城 -# @param curPlayer 当前玩家 -# @return None or True -# @remarks 函数详细说明. -def UseTownPortal(curPlayer): - #检查是否是回城卷 - itemIndex = curPlayer.GetDictByKey(ChConfig.Def_Use_Item_303_Index) - curItem = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem).GetAt(itemIndex) - - #物品不存在,不是回城卷不处理 - if not ItemCommon.CheckItemCanUse(curItem) or curItem.GetItemTypeID() != 303: - #不能获得物品ID只能写死,否则玩家移动将找不到物品,或ID不匹配 - PlayerControl.NotifyCode(curPlayer, "B66BA2D6-0B3C-4177-B3FE66153B638DD0", [303, 303]) - return - - useCount = 1 - itemID = curItem.GetItemTypeID() - guID = curItem.GetGUID() - - dataDict = {"ItemID":itemID, "ItemCount":useCount, "IsBind":curItem.GetIsBind(),"ItemGUID":guID} - DataRecordPack.DR_DeleteItem(curPlayer, 'UseTownPortal', dataDict) - - #物品使用减少 - if curItem.GetCount() > useCount: - ItemControler.SetItemCount(curItem, curItem.GetCount() - useCount, - curPlayer.GetID(), curPlayer.GetAccID(), curPlayer.GetPlayerName()) - else: - curItem.Clear() - - #PlayerControl.NotifyCode(curPlayer, "LostRes", [itemID, useCount]) - playerControl = PlayerControl.PlayerControl(curPlayer) - #把人物设置回重生点 - playerControl.SetToBornPlace() - - return True - -#=============================================================================== -# 07 39 使用指定数量的物品 tagCUseItemCount -# struct tagCUseItemCount -# { -# tagHead Head; -# BYTE Type; //物品类型 -# DWORD Count; //物品数量 -# } -#=============================================================================== - -## 07 39封包 使用指定数量的物品 -# @param index 玩家索引 -# @param tick 当前时间 -# @return 无 -# @remarks 和客户端约定的类型来取得指定物品,目前用于离线挂机,扣乾坤珠 -def UseOfflineTime(index, tick): - return - - #=============================================================================== # struct tagCPetUseItemByIndex # { @@ -1946,80 +1729,6 @@ infoDict[ShareDefine.Def_MapItemInfo_IsSuite] = 1 return infoDict - -# 特别设定:卓越物品必带武器技能增强效果,使用者请特别注意 -## 装备动态属性,只用于未设置属性的singleItem,roleItem使用多次发背包刷新包 -# @param curItem 玩家实例 -# @param equipData -# @return -def EquipAddAdditionEx(curItem, equipData): - # 绑定 - #if equipData.isBind: - # ItemControler.SetItemIsBind(curItem, equipData.isBind) - - if not ItemCommon.CheckItemIsEquip(curItem): - return - - #=========================================================================== - # # 强化等级 - # if equipData.starLV: - # curItem.SetItemStarLV(equipData.starLV) - # # 打孔 - # if 0 < equipData.holeCnt <= curItem.GetMaxHoleCount(): - # curItem.SetCanPlaceStoneCount(equipData.holeCnt) - # - # # 给镶嵌宝石 - # for i, stoneID in enumerate(equipData.stoneData): - # if i > equipData.holeCnt - 1: - # break - # - # if stoneID <= 0: - # continue - # - # curItem.SetStone(i, stoneID) - #=========================================================================== - - # 套装 - #if equipData.isSuite: - # curItem.SetIsSuite(equipData.isSuite) - #if equipData.suiteLV: - # curItem.SetUserAttr(ShareDefine.Def_IudetSuiteLV, equipData.suiteLV) - # 物品来源 - if equipData.source: - curItem.SetUserAttr(ShareDefine.Def_IudetSource, equipData.source) - - # 传奇属性 - if equipData.legendAttrIDList and equipData.legendAttrValueList: - curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrID) - curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValue) - for i in xrange(len(equipData.legendAttrIDList)): - curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrID, equipData.legendAttrIDList[i]) - curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValue, equipData.legendAttrValueList[i]) - # 传奇属性 - 神 - if equipData.legendAttrIDListShen and equipData.legendAttrValueListShen: - curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDShen) - curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueShen) - for i in xrange(len(equipData.legendAttrIDListShen)): - curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDShen, equipData.legendAttrIDListShen[i]) - curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueShen, equipData.legendAttrValueListShen[i]) - # 传奇属性 - 仙 - if equipData.legendAttrIDListXian and equipData.legendAttrValueListXian: - curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDXian) - curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueXian) - for i in xrange(len(equipData.legendAttrIDListXian)): - curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDXian, equipData.legendAttrIDListXian[i]) - curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueXian, equipData.legendAttrValueListXian[i]) - # 传奇属性 - 极 - if equipData.legendAttrIDListJi and equipData.legendAttrValueListJi: - curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDJi) - curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueJi) - for i in xrange(len(equipData.legendAttrIDListJi)): - curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDJi, equipData.legendAttrIDListJi[i]) - curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueJi, equipData.legendAttrValueListJi[i]) - - ItemCommon.MakeEquipGS(curItem) - return - ## 判断装备是否是可加强装备 # @param curItem 物品实例 -- Gitblit v1.8.0