From 4087d18ce7cbd1578a6e287962bd902386984048 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 14 七月 2025 10:55:57 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_ServerCode
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 50 +++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 39 insertions(+), 11 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index b519ecf..3d0c00b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -1069,7 +1069,7 @@
def DoTransformItem(self, curPlayer, tagItem, event=["", False, {}]):
## 将特殊物品转化为对应数值
itemID = tagItem.GetItemTypeID()
- itemCount = max(tagItem.GetUserAttr(ShareDefine.Def_IudetItemCount), tagItem.GetCount())
+ itemCount = tagItem.GetCount()
eventName, isForceEvent, addDict = event
if isForceEvent:
pass
@@ -2264,6 +2264,40 @@
return
+def CheckGiveBindMoneyTypeItem(curPlayer, checkMoneyType=None):
+ ## 检查给绑定货币的展示物品
+ bindMoneyItemInfo = IpyGameDataPY.GetFuncEvalCfg("PutInItemPack", 2, {})
+
+ needMoneyItemDict = {}
+ for itemIDStr, moneyType in bindMoneyItemInfo.items():
+ if checkMoneyType != None and moneyType != checkMoneyType:
+ continue
+ if PlayerControl.GetMoney(curPlayer, moneyType): # 有货币时才需要
+ needMoneyItemDict[int(itemIDStr)] = moneyType
+
+ if not needMoneyItemDict:
+ #GameWorld.DebugLog("绑定货币显示物品已经都有了")
+ return
+
+ curPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+ for i in xrange(curPack.GetCount()):
+ curItem = curPack.GetAt(i)
+ if not curItem or curItem.IsEmpty():
+ continue
+ itemID = curItem.GetItemTypeID()
+ if itemID in needMoneyItemDict:
+ needMoneyItemDict.pop(itemID)
+ if not needMoneyItemDict:
+ break
+
+ # 还有没给的物品补给,后端只负责给物品,不处理个数,前端对该类物品默认绑定货币对应的值来显示个数
+ for itemID, moneyType in needMoneyItemDict.items():
+ if not GivePlayerItem(curPlayer, itemID, 1, False, [IPY_GameWorld.rptItem]):
+ break
+ GameWorld.DebugLog("给绑定货币显示物品: moneyType=%s,itemID=%s" % (moneyType, itemID))
+
+ return
+
def GivePlayerItem(curPlayer, itemID, itemCount, isAuctionItem, packIndexList=None, event=["", False, {}], setAttrDict=None):
'''给玩家物品
@param isAuctionItem: 是否拍品
@@ -2312,7 +2346,7 @@
#常规物品
isOK = False
- for _ in range(itemCount/65535 + 1):
+ for _ in range(itemCount/ChConfig.Def_ItemCount_Max + 1):
if itemCount <= 0:
break
giveItem = GetOutPutItemObj(itemID, itemCount, isAuctionItem, curPlayer=curPlayer, setAttrDict=setAttrDict)
@@ -2331,7 +2365,7 @@
# @return: 给成功总数,0代表给失败了
giveOKCount = 0
- for _ in range(itemCount/65535 + 1):
+ for _ in range(itemCount/ChConfig.Def_ItemCount_Max + 1):
if giveOKCount >= itemCount:
break
giveItem = GetOutPutItemObj(itemID, itemCount - giveOKCount, isAuctionItem, curPlayer=curPlayer)
@@ -2444,10 +2478,7 @@
# @return None
def SetItemCount(item, cnt, playerID=0, accID=0, playerName=""):
if not item.IsEmpty():
- if cnt > 0 and IsPutinAutoTransformItem(item):
- item.SetUserAttr(ShareDefine.Def_IudetItemCount, min(cnt, ChConfig.Def_UpperLimit_DWord))
- else:
- item.SetCount(min(cnt, 65535))
+ item.SetCount(min(cnt, ChConfig.Def_ItemCount_Max))
else:
try:
1 / 0
@@ -2456,10 +2487,7 @@
GameWorld.ErrLog(errorInfo + str(traceback.extract_stack()) + "\n" + traceback.format_exc())
raise
-def GetItemCount(item):
- if IsPutinAutoTransformItem(item):
- return item.GetUserAttr(ShareDefine.Def_IudetItemCount)
- return item.GetCount()
+def GetItemCount(item): return item.GetCount()
def GetItemNeedPackCount(packType, itemData, itemCount, isAuctionItem=0):
# 20201223 主干取消拍品有效时长设定
--
Gitblit v1.8.0