xdh
2019-03-11 ff52a6596b014b171a10de35779648e46b7a621b
6307 【后端】【2.0】多套装备开发单(洗练配置修改)
3个文件已修改
116 ■■■■■ 已修改文件
PySysDB/PySysDBPY.h 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/PySysDBPY.h
@@ -1810,4 +1810,13 @@
    list        WorldLV;    //世界等级
    list        Rank;    //排名
    list        Award;    //奖励 [[独立概率万分率,[物品ID,数量,拍品分组]],..]
};
//装备洗练等级上限
struct tagItemWashMax
{
    BYTE        _Type;        //按装备位对应类型查找
    BYTE        _Star;    // 装备星数
    WORD        LevelMax;    //洗练等级上限
};
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipWash.py
@@ -46,9 +46,7 @@
    washType = GetEquipWashType(equipPlace)
    if not washType:
        return 0
    maxLVDict = IpyGameDataPY.GetFuncEvalCfg("EquipWashGroup%s" % washType, 2)
    if not maxLVDict:
        return 0
    equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
    curEquip = equipPack.GetAt(equipPackindex)
    if not curEquip or curEquip.IsEmpty():
@@ -56,38 +54,29 @@
        return 0
    
    equipStar = ChEquip.GetEquipPartStarByRank(curPlayer, equipPackindex, curEquip)
    minStarCfg = min(maxLVDict)
    if equipStar < minStarCfg:
        GameWorld.DebugLog("该装备位装备星数=%s < minStarCfg(%s),无法洗练!equipPackindex=%s"
                           % (equipStar, minStarCfg, equipPackindex))
    ipyData = IpyGameDataPY.GetIpyGameDataNotLog("ItemWashMax", washType, equipStar)
    if ipyData:
        return ipyData.GetLevelMax()
    ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('ItemWashMax', {'Type':washType}, True, False)
    if not ipyDataList:
        return 0
    if equipStar in maxLVDict:
        maxWashLV = maxLVDict[equipStar]
        if not maxWashLV:
            GameWorld.DebugLog("该装备位装备星数=%s,maxWashLV=%s,无法洗练!equipPackindex=%s"
                               % (equipStar, maxWashLV, equipPackindex))
            return 0
        return maxWashLV
    maxStarCfg = max(maxLVDict)
    if equipStar > maxStarCfg:
        return maxLVDict[maxStarCfg]
    # 默认返回当前部位洗练等级
    return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashLV % equipPackindex) + 1
    maxStar = ipyDataList[-1].GetStar()
    if equipStar > maxStar:
        return ipyDataList[-1].GetLevelMax()
    findMax = 0
    for ipyData in ipyDataList:
        if equipStar >= ipyData.GetStar():
            findMax = ipyData.GetLevelMax()
    return findMax
def GetEquipWashPlaceList(washType):
    ## 获取洗练类型对应的所有装备位
    placeList = IpyGameDataPY.GetFuncEvalCfg("EquipWashGroup%s" % washType, 1)
    if placeList:
        return placeList
    return []
def GetEquipWashType(equipPlace):
    ## 获取装备位对应的洗练类型
    for washType in range(1, Def_EquipWashMaxType + 1):
        placeList = GetEquipWashPlaceList(washType)
        if equipPlace in placeList:
            return washType
    return
    return IpyGameDataPY.GetFuncEvalCfg('EquipWashGroup', 1, {}).get(equipPlace)
def GetEquipWashData(washType, washLV):
    return IpyGameDataPY.GetIpyGameData("EquipWash", washType, washLV)
@@ -97,13 +86,12 @@
    global g_allIndexList
    if not g_allIndexList:
        maxClasslv = IpyGameDataPY.GetFuncCfg('EquipMaxClasslv')
        for washType in range(1, Def_EquipWashMaxType + 1):
            for equipPlace in GetEquipWashPlaceList(washType):
                for classLV in xrange(1, maxClasslv+1):
                    ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
                    if not ipyData:
                        continue
                    g_allIndexList.append(ipyData.GetGridIndex())
        for equipPlace in IpyGameDataPY.GetFuncEvalCfg('EquipWashGroup', 1, {}):
            for classLV in xrange(1, maxClasslv+1):
                ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
                if not ipyData:
                    continue
                g_allIndexList.append(ipyData.GetGridIndex())
    return g_allIndexList
#// A3 25 装备洗炼 #tagCMEquipXLAttrChange
@@ -455,16 +443,16 @@
    return
def EquipWashSuccess(curPlayer):
    succList = [ShareDefine.SuccType_EquipWashLV1,ShareDefine.SuccType_EquipWashLV2,ShareDefine.SuccType_EquipWashLV3]
    for washType in range(1, Def_EquipWashMaxType + 1):
        washTypeLV = 999
        placeList = GetEquipWashPlaceList(washType)
        for equipPlace in placeList:
            washLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashLV % equipPlace) + 1
            washTypeLV = min(washTypeLV, washLV)
        if not washTypeLV:
            continue
        PlayerSuccess.DoAddSuccessProgress(curPlayer, succList[washType-1], 1, [washTypeLV])
#    succList = [ShareDefine.SuccType_EquipWashLV1,ShareDefine.SuccType_EquipWashLV2,ShareDefine.SuccType_EquipWashLV3]
#    for washType in range(1, Def_EquipWashMaxType + 1):
#        washTypeLV = 999
#        placeList = GetEquipWashPlaceList(washType)
#        for equipPlace in placeList:
#            washLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashLV % equipPlace) + 1
#            washTypeLV = min(washTypeLV, washLV)
#
#        if not washTypeLV:
#            continue
#        PlayerSuccess.DoAddSuccessProgress(curPlayer, succList[washType-1], 1, [washTypeLV])
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1405,6 +1405,12 @@
                        ("list", "Rank", 0),
                        ("list", "Award", 0),
                        ),
                "ItemWashMax":(
                        ("BYTE", "Type", 1),
                        ("BYTE", "Star", 1),
                        ("WORD", "LevelMax", 0),
                        ),
                }
@@ -4295,6 +4301,19 @@
    def GetWorldLV(self): return self.WorldLV # 世界等级
    def GetRank(self): return self.Rank # 排名
    def GetAward(self): return self.Award # 奖励 [[独立概率万分率,[物品ID,数量,拍品分组]],..]
# 装备洗练等级上限
class IPY_ItemWashMax():
    def __init__(self):
        self.Type = 0
        self.Star = 0
        self.LevelMax = 0
        return
    def GetType(self): return self.Type # 按装备位对应类型查找
    def GetStar(self): return self.Star #  装备星数
    def GetLevelMax(self): return self.LevelMax # 洗练等级上限
def Log(msg, playerID=0, par=0):
@@ -4600,6 +4619,8 @@
        self.ipyEquipPlusEvolveLen = len(self.ipyEquipPlusEvolveCache)
        self.ipyFamilyBossAwardCache = self.__LoadFileData("FamilyBossAward", IPY_FamilyBossAward)
        self.ipyFamilyBossAwardLen = len(self.ipyFamilyBossAwardCache)
        self.ipyItemWashMaxCache = self.__LoadFileData("ItemWashMax", IPY_ItemWashMax)
        self.ipyItemWashMaxLen = len(self.ipyItemWashMaxCache)
        Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
        Log("IPY_DataMgr InitOK!")
        return
@@ -5046,6 +5067,8 @@
    def GetEquipPlusEvolveByIndex(self, index): return self.ipyEquipPlusEvolveCache[index]
    def GetFamilyBossAwardCount(self): return self.ipyFamilyBossAwardLen
    def GetFamilyBossAwardByIndex(self, index): return self.ipyFamilyBossAwardCache[index]
    def GetItemWashMaxCount(self): return self.ipyItemWashMaxLen
    def GetItemWashMaxByIndex(self, index): return self.ipyItemWashMaxCache[index]
IPYData = IPY_DataMgr()
def IPY_Data(): return IPYData