From 22bb99e929439653669b8b2e14325dcc865c7fe3 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 17 十月 2025 16:05:08 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(快速加入公会失败提示)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 55 ++++++++++++++++++++++++++++++-------------------------
1 files changed, 30 insertions(+), 25 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 9981cf9..866a05c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -25,19 +25,14 @@
import traceback
import random
import ReadChConfig
-import ChItem
-import PlayerSuccess
-import PlayerFamily
import ChPyNetSendPack
import NetPackCommon
-import Operate_EquipStone
import PlayerXiangong
import IpyGameDataPY
-import DataRecordPack
import PlayerGubao
import PyGameData
-import ChEquip
import PlayerHero
+import ObjPool
import math
import time
@@ -877,12 +872,8 @@
return True
if itemID not in ChConfig.Def_TransformItemIDList:
return False
- if itemID == ChConfig.Def_ItemID_FamilyContribution:
- PlayerFamily.AddPlayerFamilyActiveValue(curPlayer, itemCount, True, ShareDefine.Def_AddFAVReason_UseItem, True)
- elif itemID == ChConfig.Def_ItemID_SilverMoney:
+ if itemID == ChConfig.Def_ItemID_SilverMoney:
PlayerControl.GiveMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, itemCount)
- elif itemID == ChConfig.Def_ItemID_FamilyActive:
- PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyActivity, itemCount)
elif itemID == ChConfig.Def_ItemID_SP:
PlayerControl.PlayerAddZhenQi(curPlayer, itemCount)
elif itemID == ChConfig.Def_ItemID_GoldPaper:
@@ -973,13 +964,6 @@
SetItemCountByID(curPlayer, itemID, GetItemCountByID(curPlayer, itemID) + tagItemCount)
tagItem.Clear()
return True
- #古宝碎片
- if itemEff.GetEffectID() == ChConfig.Def_Effect_GubaoPiece:
- gubaoID = itemEff.GetEffectValue(0)
- if gubaoID:
- PlayerGubao.AddGubaoPiece(curPlayer, gubaoID, tagItemCount, itemID)
- tagItem.Clear()
- return True
#气运
if itemEff.GetEffectID() == ChConfig.Def_Effect_TiandaoQiyun:
isAutoUse = itemEff.GetEffectValue(1)
@@ -1287,7 +1271,7 @@
itemCount = GetItemCountByID(curPlayer, itemID)
if not itemCount and not force:
continue
- countInfo = ChPyNetSendPack.tagMCAutoItemCount()
+ countInfo = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCAutoItemCount)
countInfo.Clear()
countInfo.ItemID = itemID
countInfo.ItemCount = itemCount
@@ -1296,7 +1280,7 @@
if not itemCountList:
return
- clientPack = ChPyNetSendPack.tagMCAutoItemCountRefresh()
+ clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCAutoItemCountRefresh)
clientPack.Clear()
clientPack.ItemCountList = itemCountList
clientPack.Count = len(clientPack.ItemCountList)
@@ -2147,11 +2131,32 @@
def GetItemCountByID(curPlayer, itemID):
return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ItemCount % itemID)
def SetItemCountByID(curPlayer, itemID, itemCount, isSync=True):
+ befCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ItemCount % itemID)
itemCount = max(0, min(itemCount, ChConfig.Def_UpperLimit_DWord))
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_ItemCount % itemID, itemCount)
+
+ # 检查碎片溢出自动转化,数量增加时才检查
+ if itemCount > befCount:
+ #GameWorld.DebugLog("碎片数量增加,检查溢出! itemID=%s,itemCount=%s,befCount=%s" % (itemID, itemCount, befCount))
+ if PlayerGubao.AutoTransGubaoPiece(curPlayer, itemID):
+ PyGameData.g_transItemSign = 1
+
if isSync:
Sync_AutoItemCount(curPlayer, [itemID])
return itemCount
+def CheckItemEnoughByID(curPlayer, itemID, needCount):
+ itemCount = GetItemCountByID(curPlayer, itemID)
+ if itemCount < needCount:
+ GameWorld.DebugLog("物品碎片不足! itemID=%s,itemCount=%s < %s" % (itemID, itemCount, needCount))
+ return False
+ return True
+def DelItemCountByID(curPlayer, itemID, delCount, isSync=True):
+ itemCount = GetItemCountByID(curPlayer, itemID)
+ if itemCount < delCount:
+ GameWorld.DebugLog("扣除物品碎片不足! itemID=%s,itemCount=%s < %s" % (itemID, itemCount, delCount))
+ return False
+ SetItemCountByID(curPlayer, itemID, itemCount - delCount, isSync)
+ return True
## 设置物品数量
# @param item 物品实例
@@ -2196,10 +2201,6 @@
itemEff = itemData.GetEffectByIndex(0)
if itemEff.GetEffectID() == ChConfig.Def_Effect_ItemCount:
return True
- if itemEff.GetEffectID() == ChConfig.Def_Effect_GubaoPiece:
- gubaoID = itemEff.GetEffectValue(0)
- if gubaoID:
- return True
return False
def GetOutPutItemObj(itemID, itemCount=1, isAuctionItem=False, expireTime=0, curPlayer=None, setAttrDict=None):
@@ -2329,7 +2330,11 @@
def CheckPackSpaceEnough(curPlayer, itemList, isNotify=True):
## 检查玩家对应背包是否足够放入物品
needPackSpaceDict = {}
- for itemID, itemCnt, isAuctionItem in itemList:
+ for itemInfo in itemList:
+ if not itemInfo:
+ continue
+ itemID, itemCnt = itemInfo[:2]
+ isAuctionItem = itemInfo[2] if len(itemInfo) > 2 else 0
curItem = GameWorld.GetGameData().GetItemByTypeID(itemID)
if not curItem:
return False
--
Gitblit v1.8.0