From c26f44a3d2d8debf560f46fb09e23761516ab7b4 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 28 十月 2025 16:36:28 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(王元姬、张宝技能;增加释放方式5-弹射攻击,9-弹射治疗,1002-持续治疗;增加效果6015-增加弹射次数;效果7004-随机弹射次数;效果5005-按类型清除buff;增加技能类型15-清除净化buff类;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py |   57 ++++++++++++++++++++++++++++++---------------------------
 1 files changed, 30 insertions(+), 27 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..452ef4b 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:
@@ -914,8 +905,6 @@
             PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_GongdePoint, itemCount)
         elif itemID == ChConfig.Def_ItemID_FamilyFlagWarPoint:
             PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_FamilyFlagWarPoint, itemCount)
-        elif itemID == ChConfig.Def_ItemID_SuccessScore:
-            PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_SuccessSocre, itemCount, moneyEventName, addDict)
         return True
     
     def __CrossServerPutInItem(self, packIndex, tagItem, event=["", False, {}]):
@@ -973,13 +962,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 +1269,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 +1278,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 +2129,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 +2199,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 +2328,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