From a515aa2d1043e20dba19ae0124f7777227c12753 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 11 七月 2025 11:17:39 +0800
Subject: [PATCH] 80 【常规】背包-服务端(优化背包格子初始化,屏蔽无用背包;支持绑定货币数量展示的背包物品;背包物品优化叠加上限20亿支持;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 281 -------------------------------------------------------
1 files changed, 2 insertions(+), 279 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..eb58ca8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -37,7 +37,6 @@
import UseItem
import ItemCommon
import ChConfig
-import EventShell
import PlayerControl
import FBLogic
import ReadChConfig
@@ -111,7 +110,7 @@
#===============================================================================
def __Func_InitItem(tick):
#初始化物品掉落保护
- MapItemProtectTime = IpyGameDataPY.GetFuncCfg("MapItemProtectTime")
+ MapItemProtectTime = 120000 #IpyGameDataPY.GetFuncCfg("MapItemProtectTime")
GameWorld.GetMapItemManager().SetProtectTime(MapItemProtectTime)
#===============================================================================================
@@ -158,12 +157,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 +277,6 @@
# PickupItemSysNotify(curPlayer, isTeamNotify, itemMsgList, isEquip)
#=======================================================================
- #响应事件
- EventShell.EventRespons_OnGet(curPlayer, mapItemTypeID)
#成就
PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_PickUpItem, curItemCount, [curItemID])
@@ -723,7 +714,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 +734,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 +911,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 +968,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 +1390,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 +1541,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 +1743,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