From a075f7841fb2d0a3b32bf10c8bc2df5bf02d6acb Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期日, 14 十二月 2025 14:24:28 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(贾诩所有技能;5022效果支持配置buff额外属性计算方式;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py |   65 +++++++++++++++-----------------
 1 files changed, 30 insertions(+), 35 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 452ef4b..0bef096 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -25,6 +25,7 @@
 import traceback
 import random
 import ReadChConfig
+import PlayerActivity
 import ChPyNetSendPack
 import NetPackCommon
 import PlayerXiangong
@@ -32,7 +33,6 @@
 import PlayerGubao
 import PyGameData
 import PlayerHero
-import ObjPool
 
 import math
 import time
@@ -179,24 +179,6 @@
             return item
         
     return None
-
-## 检查是否可以换马匹
-#  @param curPlayer 当前玩家
-#  @return None or True
-#  @remarks 函数详细说明.
-def CheckCanEquipHorse(curPlayer):
-    if curPlayer.GetPlayerVehicle() == IPY_GameWorld.pvHorse :
-        #DJ_Res_Horses_AlreadyEquip  对不起,您处于骑马状态中,操作无效
-        PlayerControl.NotifyCode(curPlayer, "DJ_Res_Horses_AlreadyEquip")
-        return
-    
-    horsePack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptHorse)
-    if not GetPackIsEmpty(horsePack):
-        #Horses_Bag_NoRoom 对不起,您的马匹背包中有物品,操作无效!
-        PlayerControl.NotifyCode(curPlayer, "Horses_Bag_NoRoom")
-        return
-    
-    return True
 
 #===============================================================================
 # #将物品放入增值栏的一个空位置中,如果失败,替换第一个位置
@@ -501,6 +483,12 @@
     
     itemType = curItem.GetType()
     itemID = curItem.GetItemTypeID()
+    
+    if itemType in IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 4) \
+        or itemID in IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 5):
+        GameWorld.DebugLog("不需要记录的物品类型或ID! itemType=%s,itemID=%s" % (itemType, itemID))
+        return False
+    
     itemTypeMinColorDict = IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 1)
     if itemType in itemTypeMinColorDict:
         minColor = itemTypeMinColorDict[itemType]
@@ -514,11 +502,6 @@
         or itemID in IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 3):
         #GameWorld.DebugLog("需要记录的物品类型或ID! itemType=%s,itemID=%s" % (itemType, itemID))
         return True
-    
-    if itemType in IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 4) \
-        or itemID in IpyGameDataPY.GetFuncEvalCfg("ItemRecordRule", 5):
-        #GameWorld.DebugLog("不需要记录的物品类型或ID! itemType=%s,itemID=%s" % (itemType, itemID))
-        return False
     
     #if itemType == ChConfig.Def_ItemType_Rune:
     #    return IsRuneItemNeedRecord(curItem, curItem.GetUserAttr(ShareDefine.Def_IudetRuneLV))
@@ -919,6 +902,18 @@
         GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_PutInItem, itemMsg, [serverGroupID])
         return
     
+    def __autoUseByEffectID(self, curPlayer, tagItem, itemEff, itemID, itemCount):
+        effectID = itemEff.GetEffectID()
+        
+        # 物品碎片
+        if effectID == ChConfig.Def_Effect_ItemCount:
+            SetItemCountByID(curPlayer, itemID, GetItemCountByID(curPlayer, itemID) + itemCount)
+        # 活跃度
+        elif effectID == ChConfig.Def_Effect_AddActivity:
+            PlayerActivity.DoAddActivity(curPlayer, itemCount)
+            
+        return
+    
     ## 放入物品 
     #  @param packIndex 背包索引
     #  @param tagItem 物品
@@ -957,11 +952,11 @@
         #    tagItem.Clear()
         #    return True
         itemEff = tagItem.GetEffectByIndex(0)
-        #物品碎片
-        if itemEff.GetEffectID() == ChConfig.Def_Effect_ItemCount:
-            SetItemCountByID(curPlayer, itemID, GetItemCountByID(curPlayer, itemID) + tagItemCount)
+        if itemEff.GetEffectID() in ChConfig.AutoUseItemEffectIDList:
+            self.__autoUseByEffectID(curPlayer, tagItem, itemEff, itemID, tagItemCount)
             tagItem.Clear()
             return True
+        
         #气运
         if itemEff.GetEffectID() == ChConfig.Def_Effect_TiandaoQiyun:
             isAutoUse = itemEff.GetEffectValue(1)
@@ -1269,7 +1264,7 @@
         itemCount = GetItemCountByID(curPlayer, itemID)
         if not itemCount and not force:
             continue
-        countInfo = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCAutoItemCount)
+        countInfo = ChPyNetSendPack.tagMCAutoItemCount()
         countInfo.Clear()
         countInfo.ItemID = itemID
         countInfo.ItemCount = itemCount
@@ -1278,7 +1273,7 @@
     if not itemCountList:
         return
     
-    clientPack = ObjPool.GetPoolMgr().acquire(ChPyNetSendPack.tagMCAutoItemCountRefresh)
+    clientPack = ChPyNetSendPack.tagMCAutoItemCountRefresh()
     clientPack.Clear()
     clientPack.ItemCountList = itemCountList
     clientPack.Count = len(clientPack.ItemCountList)
@@ -2010,11 +2005,11 @@
         return False
     
     if isAuctionItem:
-        ipyData = IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
-        if not ipyData:
-            GameWorld.ErrLog("非拍卖物品,默认转为非拍品! itemID=%s,itemCount=%s,isAuctionItem=%s" 
-                             % (itemID, itemCount, isAuctionItem), curPlayer.GetPlayerID())
-            isAuctionItem = 0
+        #ipyData = None #IpyGameDataPY.GetIpyGameData("AuctionItem", itemID)
+        #if not ipyData:
+        #    GameWorld.ErrLog("非拍卖物品,默认转为非拍品! itemID=%s,itemCount=%s,isAuctionItem=%s" 
+        #                     % (itemID, itemCount, isAuctionItem), curPlayer.GetPlayerID())
+        isAuctionItem = 0
     
     defaultPack = IPY_GameWorld.rptItem if not packIndexList else packIndexList[0]
     packIndex = ChConfig.GetItemPackType(curItemData, defaultPack)
@@ -2197,7 +2192,7 @@
     if itemData.GetItemTypeID() in ChConfig.Def_TransformItemIDList or itemData.GetType() == ChConfig.Def_ItemType_AutoUseMoney:
         return True
     itemEff = itemData.GetEffectByIndex(0)
-    if itemEff.GetEffectID() == ChConfig.Def_Effect_ItemCount:
+    if itemEff.GetEffectID() in ChConfig.AutoUseItemEffectIDList:
         return True
     return False
 

--
Gitblit v1.8.0