xdh
2019-06-06 8068ba5ca1ea2aef5908e2e42604be27d6ffcf3c
7152 【后端】每次炼制灵根丹数量随机1-2
1个文件已修改
80 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
@@ -161,49 +161,57 @@
            return
        alchemyQuality = alchemyIpyData.GetAlchemyQuality()
        # appointInfo = [] #定制配置 [数量,成功率]
        # alchemyCustomizedDict = IpyGameDataPY.GetFuncEvalCfg('alchemyCustomized', 1, {})
        # if alchemyID in alchemyCustomizedDict:
        #     alchemyCnt = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_AlchemyCnt, alchemyID, False)
        #     alchemyCntDict = alchemyCustomizedDict[alchemyID]
        #     if alchemyCnt + 1 in alchemyCntDict:
        #         appointInfo = alchemyCntDict[alchemyCnt + 1]
        alchemyAppointCntDict = {} #定制配置 {次数:[数量,成功率]}
        alchemyCustomizedDict = IpyGameDataPY.GetFuncEvalCfg('alchemyCustomized', 1, {})
        if alchemyID in alchemyCustomizedDict:
            alchemyCnt = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_AlchemyCnt, alchemyID, False)
            alchemyAppointCntDict = alchemyCustomizedDict[alchemyID]
        resultIpyData = IpyGameDataPY.InterpolationSearch('AlchemyResult', 'LuckValue', curLuckValue, {'AlchemyQuality':alchemyIpyData.GetAlchemyQuality()})
        if not resultIpyData:
            GameWorld.ErrLog('AlchemyResult 配置错误 未找到该丹方数量 alchemyItemID=%s' % alchemyItemID, playerID)
            return
        makeItemData = GameWorld.GetGameData().GetItemByTypeID(alchemyItemID)
        if not makeItemData:
            return
        #灵丹成功率公式 参数 curLuckValue:慧根  alchemyLV:炼丹等级 alchemyQuality:丹药等级  qualityNeedLuck:要求慧根
        qualityNeedLuck = IpyGameDataPY.GetFuncEvalCfg('alchemySuccess', 2, {}).get(str(alchemyQuality), 0)
        nomalsuccessRate = eval(IpyGameDataPY.GetFuncCompileCfg('alchemySuccess'))
        
        #成功率
        # if appointInfo:
        #     successRate = appointInfo[1]
        # elif alchemType == DefStoveType2:
        #     successRate = ShareDefine.Def_MaxRateValue  #仙丹必定成功
        # elif alchemType == DefStoveType1:
        #     #灵丹成功率公式 参数 curLuckValue:慧根  alchemyLV:炼丹等级 alchemyQuality:丹药等级  qualityNeedLuck:要求慧根
        #     qualityNeedLuck = IpyGameDataPY.GetFuncEvalCfg('alchemySuccess', 2, {}).get(str(alchemyQuality), 0)
        #     successRate = eval(IpyGameDataPY.GetFuncCompileCfg('alchemySuccess'))
        # else:
        #     return
        isSuccess = 1 #GameWorld.CanHappen(successRate)
        resultCnt = 0  #丹药数量 0代表失败
        for i in xrange(refineTimes):
            #成功率
            appointInfo = [] #[数量,成功率]
            if alchemyAppointCntDict and alchemyCnt+1+i in alchemyAppointCntDict:
                appointInfo = alchemyAppointCntDict[alchemyCnt+1+i]
            if appointInfo:
                successRate = appointInfo[1]
            elif alchemType == DefStoveType2:
                successRate = ShareDefine.Def_MaxRateValue  #仙丹必定成功
            elif alchemType == DefStoveType1:
                successRate = nomalsuccessRate
            else:
                return
            isSuccess = GameWorld.CanHappen(successRate)
        if isSuccess:
                if alchemType == DefStoveType2:
                    resultCnt += 1 #仙丹必定为1
                elif alchemType == DefStoveType1:
                    if appointInfo:
                        resultCnt += appointInfo[0]
                    else:
                        resultCnt += GameWorld.GetResultByRandomList(resultIpyData.GetCntRateList())
                if not resultCnt:
                    GameWorld.ErrLog('AlchemyResult 配置错误 未随机出该丹方数量alchemyItemID=%s' % alchemyItemID, playerID)
                    return
        if resultCnt:
            needSpace = 1
            packSpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
            if needSpace > packSpace:
                PlayerControl.NotifyCode(curPlayer, "GeRen_chenxin_998371")
                return
            if alchemType == DefStoveType2:
                resultCnt = 1 #仙丹必定为1
            elif alchemType == DefStoveType1:
                ipyData = IpyGameDataPY.InterpolationSearch('AlchemyResult', 'LuckValue', curLuckValue, {'AlchemyQuality':alchemyIpyData.GetAlchemyQuality()})
                if not ipyData:
                    GameWorld.ErrLog('AlchemyResult 配置错误 未找到该丹方数量 alchemyItemID=%s' % alchemyItemID, playerID)
                    return
                resultCnt = GameWorld.GetResultByRandomList(ipyData.GetCntRateList())
            if not resultCnt:
                GameWorld.ErrLog('AlchemyResult 配置错误 未随机出该丹方数量alchemyItemID=%s' % alchemyItemID, playerID)
                return
            makeItemData = GameWorld.GetGameData().GetItemByTypeID(alchemyItemID)
            if not makeItemData:
                return
            resultCnt *=refineTimes
            ItemControler.GivePlayerItem(curPlayer, alchemyItemID, resultCnt, 0, [IPY_GameWorld.rptItem],
                                     event=[ChConfig.ItemGive_Refine, False, {}])
            #紫色及以上全服广播
@@ -224,8 +232,8 @@
        addExp = alchemyIpyData.GetAlchemyExp() * refineTimes
        AddRefineExp(curPlayer, addExp, alchemyLV)
        #加次数
        # if alchemyID in alchemyCustomizedDict:
        #     GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_AlchemyCnt, alchemyID, min(alchemyCnt + refineTimes, 9), False)
        if alchemyID in alchemyCustomizedDict:
            GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_AlchemyCnt, alchemyID, min(alchemyCnt + refineTimes, 9), False)
        GameWorld.DebugLog('炼丹结果 alchemyItemID=%s,refineTimes=%s,isSuccess=%s,resultCnt=%s' % (alchemyItemID, refineTimes, isSuccess, resultCnt), playerID)