From a7ab0247c7b8eff06ad104bee39bc035384ca43e Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 23 七月 2025 12:08:22 +0800
Subject: [PATCH] 80 【常规】背包-服务端(增加背包购买格子;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py |  212 ++--------------------------------------------------
 1 files changed, 11 insertions(+), 201 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 241e10b..b35b8c3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -14,10 +14,8 @@
 #"""Version = 2017-07-17 15:00"""
 #---------------------------------------------------------------------
 import GameWorld
-import ChEquip
 import SkillShell
 import ChConfig
-import EffGetSet
 import PlayerHorse
 import PlayerTeam
 import SkillCommon
@@ -41,27 +39,15 @@
 import ChPyNetSendPack
 import NetPackCommon
 import DataRecordPack
-import CalcNoLineEffect
-import CalcLineEffect
-import PlayerEquipDecompose
-import FormulaControl
-import PlayerDienstgrad
 import PlayerPrestigeSys
-import OpenServerCampaign
-import PlayerGodWeapon
-import PlayerExpandPackCfgMgr
 import PlayerActivity
 import FBCommon
 import PassiveBuffEffMng
 import EventReport
-import PlayerGatherSoul
-import PlayerGatherTheSoul
 import PlayerSuccess
-import PlayerPet
 import ItemControler
 import GameFuncComm
 import IpyGameDataPY
-import PlayerRune
 import PyGameData
 import PlayerMagicWeapon
 import PlayerFeastTravel
@@ -70,9 +56,6 @@
 import GameLogic_ZhuXianBoss
 import GameLogic_CrossDemonKing
 import PlayerVip
-import PlayerRefineStove
-import PlayerFamilyTech
-import PlayerFamilyZhenfa
 import PlayerCostRebate
 import PlayerActLunhuidian
 import PlayerActGarbageSorting
@@ -80,24 +63,14 @@
 import PlayerTongTianLing
 import FunctionNPCCommon
 import PlayerGoldInvest
-import IPY_PlayerDefine
 import CrossRealmPlayer
 import CrossPlayerData
-import NPCHurtManager
 import ChNetSendPack
-import PlayerLianTi
-import PlayerCoat
 import PlayerAssist
 import PlayerState
-import PlayerDogz
-import PlayerFaQi
-import PlayerLove
 import PlayerGubao
-import PlayerShentong
 import PlayerOnline
-import PlayerCharm
 import PlayerTask
-import PlayerFace
 import PlayerMail
 import ChPlayer
 import GameObj
@@ -777,21 +750,6 @@
     curPlayer.Stand()
     
     
-    return
-#---------------------------------------------------------------------
-##玩家播放表情
-# @param curPlayer 玩家实例
-# @return 返回值无意义
-# @remarks 玩家播放表情
-def DoPlayerShowPlayerFace(curPlayer, faceType):
-    #清空玩家点击
-    curPlayer.SetActionObj(None)
-    #通知中断战斗对峙
-    ExitPlayerConfronting(curPlayer)
-    #通知停止移动
-    curPlayer.StopMove()
-    #通知客户端播放表情
-    curPlayer.View_ShowPlayerFace(faceType)
     return
 
 #---------------------------------------------------------------------
@@ -3647,10 +3605,6 @@
             
             # 升级需要执行的游戏功能处理
             GameFuncComm.DoFuncOpenLogic(curPlayer)
-            #ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer) # 灵器属性会随等级成长
-            #if aftLV%10 == 0:
-            #    # 控制下刷新次数
-            #    PlayerPet.CalcPetItemAddPlayerAttr(curPlayer)   # 宠物有随等级变化的技能
             
             PlayerOnline.CalcRoleBase(curPlayer)
             PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr()
@@ -4268,104 +4222,22 @@
 #        return False
     
     return True
-#------------------------------------------------------------------------------------
-##初始化玩家背包.
-# @param curPlayer 玩家实例
-# @return 返回值无意义
-# @remarks 初始化玩家背包
-def Init_ItemPack(curPlayer):
-    packType = IPY_GameWorld.rptItem
-    
-    #初始化玩家背包
-    if packType not in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys():
-        return
-    
-    #获取玩家背包
-    curPack = curPlayer.GetItemManager().GetPack(packType)
-    
-    #默认14格子 + 开启的
-    keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key]
-    count = ItemCommon.GetPackInitCount(packType) + curPlayer.NomalDictGetProperty(keyName)
-    curPack.SetCount(count)
-        
-    #通知客户端背包格子数目
-#    curPlayer.Sync_ItemCount(curPack.GetCount())
-    curPack.Sync_PackCanUseCount()
-    return
 
 #------------------------------------------------------------------------------------
-##初始化玩家仓库.
-# @param curPlayer 玩家实例
-# @return 返回值无意义
-# @remarks 初始化玩家仓库
-def Init_Warehouse(curPlayer):
-    
-    packType = IPY_GameWorld.rptWarehouse
-    
-    #初始化玩家背包
-    if packType not in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys():
-        return
-    
-    #获取玩家背包
+
+def Init_PackCount(curPlayer, packType, defaultMax=False, isSync=True):
+    ## 初始化刷新玩家某个背包格子数
     curPack = curPlayer.GetItemManager().GetPack(packType)
-    
-    #默认42格子 + 开启的
-    keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key]
-    count = ItemCommon.GetPackInitCount(packType) + curPlayer.NomalDictGetProperty(keyName)
-    
-    curPack.SetCount(count)
-    
-    #通知客户端
-    curPack.Sync_PackCanUseCount()
+    maxCount = curPack.GetMaxCount()
+    if defaultMax:
+        curPack.SetCount(maxCount)
+    else:
+        count = ItemCommon.GetPackInitCount(packType) + ItemCommon.GetPackOpenItemCnt(curPlayer, packType)
+        curPack.SetCount(min(count, maxCount))
+    if isSync:
+        curPack.Sync_PackCanUseCount()
     return
 
-def Init_HeroPack(curPlayer):
-    packType = ShareDefine.rptHero    
-    #获取玩家背包
-    curPack = curPlayer.GetItemManager().GetPack(packType)
-    initCount = ItemCommon.GetPackInitCount(packType)
-    if packType in ChConfig.Def_Type_CanBuyPack_PlayerDict.keys():
-        keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key]
-        initCount += curPlayer.NomalDictGetProperty(keyName)
-    curPack.SetCount(initCount)
-    #通知客户端背包格子数目
-#    curPlayer.Sync_ItemCount(curPack.GetCount())
-    curPack.Sync_PackCanUseCount()
-    return
-
-
-##初始化寻宝背包
-# @param curPlayer 玩家实例
-# @return None
-def Init_TreasurePack(curPlayer):
-    curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptTreasure)
-    curPack.SetCount(ItemCommon.GetPackInitCount(ShareDefine.rptTreasure))
-    
-    #通知客户端
-    curPack.Sync_PackCanUseCount()
-    return
-
-##初始化玩家收纳柜
-# @param curPlayer 玩家实例
-# @param packType 背包类型
-# @return 返回值无意义
-def Init_CabinetCountByType(curPlayer, packType):
-    keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict.get(packType)[ChConfig.Def_PlayerPackDict_Index_Key]
-    if keyName == None:
-        GameWorld.ErrLog("Init_Pack Error type=%s" % packType)
-        return
-    
-    #初始化时装武器背包
-    curPack = curPlayer.GetItemManager().GetPack(packType)
-    #默认14格子 + 开启的
-    count = ChConfig.Def_PackCnt_WeaponCoat + curPlayer.NomalDictGetProperty(keyName)
-    curPack.SetCount(count)
-    
-    #通知客户端
-    curPack.Sync_PackCanUseCount()
-    return
-
-#---------------------------------------------------------------------
 def IsInOperationAction(curPlayer, actName, actIDKey, crossActName="", crossActIDKey=""):
     ## 玩家是否有正在进行中运营活动,不含参与结束阶段
     
@@ -4871,68 +4743,6 @@
 # #@warning: ExAttr6~ExAttr10, 新增2个布尔默认参数, 是否通知客户端, 是否通知GameServer, 默认值为False
 #===============================================================================
 #---------------------------------------------------------------------------
-
-##获取可免费开启的格子数
-# @param curPlayer 玩家对象
-# @param packType 背包类型
-# @param openCnt 实际要开启的格子数
-# @return 获取可免费开启的格子数
-def GetCanAutoOpenPackCount(curPlayer, packType, openCnt, tick):
-    if packType not in [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse]:
-        return 0
-    cfgObj = PlayerExpandPackCfgMgr.GetExpandPackCfg(curPlayer, packType)
-    #找不到这种背包的配置信息对象
-    if not cfgObj:
-        return 0
-    #已购买或自动开启的格子数
-    keyName = ChConfig.Def_Type_CanBuyPack_PlayerDict[packType][ChConfig.Def_PlayerPackDict_Index_Key]
-    curCount = curPlayer.NomalDictGetProperty(keyName)
-    
-#    nextCountIndex = curCount + 1
-#    infoObj = cfgObj.GetAttrInfoByInex(nextCountIndex)
-#    if None == infoObj:
-#        return 0
-#    #更新下玩家的在线时间
-#    UpdateOnLineTime(curPlayer, tick)
-#    onlineTime = curPlayer.GetOnlineTime()
-#    #需要的时间
-#    needOnlineTime = infoObj["OnlineTime"]
-#    #最后一次自动开启背包的在线时间tick
-#    lastAutoOpenPackTick = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_LastAutoOpenPackTick)
-#    if onlineTime - lastAutoOpenPackTick > needOnlineTime:
-#        return 1
-#    return 0
-    
-    #最大可增加的背包数
-    maxCanAddCount = cfgObj.GetCanAddCount()
-    forCount = min(openCnt, maxCanAddCount - curCount)
-    
-    #可以再增加的格子数
-    count = 0
-    #遍历可增加的背包格子数
-    UpdateOnLineTime(curPlayer, tick)
-    onlineTime = curPlayer.GetOnlineTime()
-    lastAutoOpenPackTick = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_LastAutoOpenPackTick % packType)
-    lastInfoObj = cfgObj.GetTotalAddAttrInfoByCount(curCount)
-    notOnlineTime = 0
-    if lastInfoObj:
-        notOnlineTime = lastInfoObj["OnlineTime"]
-#    GameWorld.Log("get online time = %s"%onlineTime)
-    for i in range(forCount):
-        nextCount = curCount + i + 1
-        infoObj = cfgObj.GetTotalAddAttrInfoByCount(nextCount)
-        if None == infoObj:
-            break
-        # (小于0的不具有免费开启功能)
-        if infoObj["OnlineTime"] < 0:
-            continue
-        needOnlineTime = infoObj["OnlineTime"] - notOnlineTime
-#        GameWorld.Log("get need online time = %s"%needOnlineTime)
-        #要求的在线时间,大于当前的在线时间,没办法加背包格子
-        if needOnlineTime > onlineTime - lastAutoOpenPackTick:
-            break
-        count += 1
-    return count
 
 ## 获取玩家当前等级升级所需总经验
 #  @param playerLv 玩家等级

--
Gitblit v1.8.0