From 8068ba5ca1ea2aef5908e2e42604be27d6ffcf3c Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期四, 06 六月 2019 15:53:19 +0800
Subject: [PATCH] 7152 【后端】每次炼制灵根丹数量随机1-2
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py | 100 +++++++++++++++++++++++++++-----------------------
1 files changed, 54 insertions(+), 46 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
index 56bd17f..b83636a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
@@ -161,51 +161,59 @@
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代表失败
- if isSuccess:
+ 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, {}])
+ event=[ChConfig.ItemGive_Refine, False, {}])
#紫色及以上全服广播
notifyColor = IpyGameDataPY.GetFuncCfg("AlchemyNotify", 1)
needNotifyItemIDList = IpyGameDataPY.GetFuncEvalCfg("AlchemyNotify", 2)
@@ -213,9 +221,9 @@
if alchemyItemID not in notNotifyItemIDList and (alchemyItemID in needNotifyItemIDList or makeItemData.GetItemColor() >= notifyColor):
PlayerControl.WorldNotify(0, "AchemyGreatSuccess", [curPlayer.GetPlayerName(), alchemyItemID])
- #任务
- for _ in xrange(refineTimes):
- EventShell.EventRespons_RefineItem(curPlayer, alchemyQuality, alchemyItemID)
+ #任务
+ for _ in xrange(refineTimes):
+ EventShell.EventRespons_RefineItem(curPlayer, alchemyQuality, alchemyItemID)
#重置
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyItemID % alchemType, 0)
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyStartTime % alchemyID, 0)
@@ -224,19 +232,19 @@
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)
-
+
Sycn_AlchemyMsg(curPlayer, alchemyID, False, alchemyItemID, resultCnt)
-
+
#完成1次炼丹成就
PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_RefineItem, refineTimes)
#完成1次X品质物品炼丹成就
#PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_RefineStoveColor, 1, [makeItemData.GetItemColor()])
-
-
+
+
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, refineTimes)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, refineTimes)
PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_Alchemy, refineTimes)
--
Gitblit v1.8.0