xdh
2019-05-28 69dc81f34df6887f26cbde4fad3fab687573f5b7
6965 【2.0】【后端】炼丹功能精简优化
4个文件已修改
74 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -12573,7 +12573,8 @@
    _fields_ = [
                  ("ItemID", c_int),    #果实物品ID
                  ("EatCnt", c_ushort),    #已使用个数
                  ("AddItemCnt", c_int),    #增幅丹使用个数
                  ("ItemAddCnt", c_int),    #增幅丹增加上限
                  ("ItemBreakCnt", c_int),    #增幅丹突破次数
                  ]
    def __init__(self):
@@ -12588,7 +12589,8 @@
    def Clear(self):
        self.ItemID = 0
        self.EatCnt = 0
        self.AddItemCnt = 0
        self.ItemAddCnt = 0
        self.ItemBreakCnt = 0
        return
    def GetLength(self):
@@ -12601,12 +12603,14 @@
        DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
                                ItemID:%d,
                                EatCnt:%d,
                                AddItemCnt:%d
                                ItemAddCnt:%d,
                                ItemBreakCnt:%d
                                '''\
                                %(
                                self.ItemID,
                                self.EatCnt,
                                self.AddItemCnt
                                self.ItemAddCnt,
                                self.ItemBreakCnt
                                )
        return DumpString
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3510,8 +3510,8 @@
Def_PDict_AddPointValue = "AddPointValue_%s"  # 已加属性点数, 参数(属性ID)
Def_PDict_AttrFruitEatCnt = "AttrFruitEatCnt_%s"  # 已吃属性果实个数,参数为物品id
Def_PDict_AttrFruitAddValue = "AttrFruitAddValue_%s"  # 已吃属性果实增加的属性,参数为物品id
Def_PDict_AttrFruitAddItemCnt = "FruitAddItemCnt_%s"  # 已吃增幅丹个数,参数为果实物品id
Def_PDict_AttrFruitAddItemCnt = "FruitAddItemCnt_%s"  # 增幅丹增加上限数,参数为果实物品id
Def_PDict_AttrFruitItemBreakCnt = "FruitItemBreakCnt_%s"  # 增幅丹突破次数,参数为果实物品id
Def_PDict_NobleLV = "NobleLV" # 贵族等级, 0位为不同贵族模式版本切换标记位, 从1位开始表示每种等级贵族开通情况, 1-已开通过;9-永久
Def_PDict_NobleEndTime = "NobleEndTime_%s" # 贵族到期结束时间<单位s>, 参数为贵族等级, 从1开始
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -12573,7 +12573,8 @@
    _fields_ = [
                  ("ItemID", c_int),    #果实物品ID
                  ("EatCnt", c_ushort),    #已使用个数
                  ("AddItemCnt", c_int),    #增幅丹使用个数
                  ("ItemAddCnt", c_int),    #增幅丹增加上限
                  ("ItemBreakCnt", c_int),    #增幅丹突破次数
                  ]
    def __init__(self):
@@ -12588,7 +12589,8 @@
    def Clear(self):
        self.ItemID = 0
        self.EatCnt = 0
        self.AddItemCnt = 0
        self.ItemAddCnt = 0
        self.ItemBreakCnt = 0
        return
    def GetLength(self):
@@ -12601,12 +12603,14 @@
        DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
                                ItemID:%d,
                                EatCnt:%d,
                                AddItemCnt:%d
                                ItemAddCnt:%d,
                                ItemBreakCnt:%d
                                '''\
                                %(
                                self.ItemID,
                                self.EatCnt,
                                self.AddItemCnt
                                self.ItemAddCnt,
                                self.ItemBreakCnt
                                )
        return DumpString
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py
@@ -196,7 +196,7 @@
    Sync_AttrFruitEatCnt(curPlayer, [itemID])
    
    # 增加属性
    attrIDList = __AddFruitAttr(curPlayer, itemID, funcIndex, addValue)
    __AddFruitAttr(curPlayer, itemID, funcIndex, addValue)
    
    # 刷新属性
    __RefreshAttr(curPlayer, funcIndex)
@@ -408,7 +408,7 @@
    
    #[属性索引, 是否基础属性,(非)线性]
    attrInfo = ChConfig.ItemEffect_AttrDict.get(effPerID, [])
    if attrInfo == []:
    if attrInfo is []:
        return
    
    addAttrList = attrInfo[0]
@@ -433,12 +433,12 @@
#  @param curPlayer 
#  @param fruitItemID 
#  @return None
def Sync_AttrFruitEatCnt(curPlayer, fruitItemIDList=[]):
def Sync_AttrFruitEatCnt(curPlayer, fruitItemIDList=None):
    
    eatPack = ChPyNetSendPack.tagMCAttrFruitEatCntList()
    eatPack.Clear()
    eatPack.EatCntList = []
    if fruitItemIDList == []:
    if fruitItemIDList is None:
        itemidList = []
        ipyDataMgr = IpyGameDataPY.IPY_Data()
        maxCnt = ipyDataMgr.GetAttrFruitCount()
@@ -458,7 +458,8 @@
        eatCntPack.Clear()
        eatCntPack.ItemID = fruitItemID
        eatCntPack.EatCnt = curPlayer.NomalDictGetProperty(eatCntKey)
        eatCntPack.AddItemCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitAddItemCnt % fruitItemID)
        eatCntPack.ItemAddCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitAddItemCnt % fruitItemID)
        eatCntPack.ItemBreakCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitItemBreakCnt % fruitItemID)
        eatPack.EatCntList.append(eatCntPack)
    
    eatPack.count = len(eatPack.EatCntList)
@@ -516,11 +517,7 @@
            maxEatCnt = maxEatCntDict[order]
            break
    addItemUseCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitAddItemCnt % itemID)
    if addItemUseCnt:
        addItemInfo = ipyData.GetAddItemInfo()
        if addItemInfo:
            singleItemCnt, singleAddCnt = addItemInfo[1:]
            maxEatCnt += (addItemUseCnt/singleItemCnt*singleAddCnt)
    maxEatCnt += addItemUseCnt
    return maxEatCnt
@@ -537,19 +534,30 @@
    ipyData = GetAttrFruitIpyData(itemID)
    if not ipyData:
        return
    addItemInfo = ipyData.GetAddItemInfo()
    if not addItemInfo:
    addItemInfoList = ipyData.GetAddItemInfo()
    if not addItemInfoList:
        return
    addItemUseCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitAddItemCnt % itemID)
    needItemID, singleItemCnt, singleAddCnt = addItemInfo
    if addItemUseCnt + singleItemCnt> ChConfig.Def_UpperLimit_DWord:
    itemBreakCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitItemBreakCnt % itemID)
    itemAddUseCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AttrFruitAddItemCnt % itemID)
    needUseCnt = canUpCnt = 0
    for breakCnt, useCnt, upCnt in addItemInfoList:
        if itemBreakCnt >= breakCnt:
            continue
        needUseCnt, canUpCnt = useCnt, upCnt
        break
    if not needUseCnt:
        return
    needItemID = IpyGameDataPY.GetFuncCfg('AlchemyOverLimit')
    if itemAddUseCnt + canUpCnt> ChConfig.Def_UpperLimit_DWord:
        return
    itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
    enough, indexList, hasBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(needItemID, itemPack, singleItemCnt)
    enough, indexList, hasBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(needItemID, itemPack, needUseCnt)
    if not enough:
        return
    ItemCommon.ReduceItem(curPlayer, itemPack, indexList, singleItemCnt, False, "AddFruitUseLimit")
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AttrFruitAddItemCnt % itemID, addItemUseCnt+singleItemCnt)
    ItemCommon.ReduceItem(curPlayer, itemPack, indexList, needUseCnt, False, "AddFruitUseLimit")
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AttrFruitAddItemCnt % itemID, itemAddUseCnt+canUpCnt)
    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AttrFruitItemBreakCnt % itemID,
                                       itemBreakCnt + 1)
    Sync_AttrFruitEatCnt(curPlayer, [itemID])
    return