From 5c27c43c293460a98a1374504c07533ddf17d24f Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期一, 03 六月 2019 19:32:21 +0800
Subject: [PATCH] 7067 【2.0】【后端】丹炉新增批量炼丹

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py              |   56 ++++++++++--------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py          |    8 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py |   83 +++++++++++++++------------
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py                                   |   12 ++-
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                               |    8 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                 |    1 
 6 files changed, 96 insertions(+), 72 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 406c6ca..4a9855a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -2228,7 +2228,7 @@
 
 class  tagCGVoiceChat(Structure):
     Head = tagHead()
-    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域    
+    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域	
     TargetNameLen = 0    #(BYTE TargetNameLen)
     TargetName = ""    #(String TargetName)//size = TargetNameLen
     TargetID = 0    #(DWORD TargetID)// 默认发玩家ID,没有ID才发名称
@@ -3396,8 +3396,8 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("ZoneID", c_ubyte),    # 赛区ID    
-                  ("SeasonID", c_ubyte),    # 赛季ID    
+                  ("ZoneID", c_ubyte),    # 赛区ID	
+                  ("SeasonID", c_ubyte),    # 赛季ID	
                   ]
 
     def __init__(self):
@@ -5953,7 +5953,7 @@
                   ("SrcBackpack", c_ubyte),    #源背包类型
                   ("DesBackPack", c_ubyte),    #目标背包类型
                   ("SrcIndex", c_ushort),    #转移物品索引位置;当全部转移时此值无效
-                  ("IsAll", c_ubyte),    #是否全部转移        
+                  ("IsAll", c_ubyte),    #是否全部转移		
                   ]
 
     def __init__(self):
@@ -10304,6 +10304,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("AlchemyID", c_int),    # 丹药ID
+                  ("AlchemyTimes", c_ushort),    # 丹药次数
                   ("DoType", c_ubyte),    # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
                   ]
 
@@ -10322,6 +10323,7 @@
         self.Cmd = 0xA5
         self.SubCmd = 0x76
         self.AlchemyID = 0
+        self.AlchemyTimes = 0
         self.DoType = 0
         return
 
@@ -10336,12 +10338,14 @@
                                 Cmd:%s,
                                 SubCmd:%s,
                                 AlchemyID:%d,
+                                AlchemyTimes:%d,
                                 DoType:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
                                 self.AlchemyID,
+                                self.AlchemyTimes,
                                 self.DoType
                                 )
         return DumpString
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index a218635..2c62392 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -16465,6 +16465,7 @@
     _fields_ = [
                   ("AlchemyID", c_int),    # 丹 ID
                   ("StartTime", c_int),    # 开始炼的时间
+                  ("AlchemyTimes", c_ushort),    # 炼的次数
                   ]
 
     def __init__(self):
@@ -16479,6 +16480,7 @@
     def Clear(self):
         self.AlchemyID = 0
         self.StartTime = 0
+        self.AlchemyTimes = 0
         return
 
     def GetLength(self):
@@ -16490,11 +16492,13 @@
     def OutputString(self):
         DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
                                 AlchemyID:%d,
-                                StartTime:%d
+                                StartTime:%d,
+                                AlchemyTimes:%d
                                 '''\
                                 %(
                                 self.AlchemyID,
-                                self.StartTime
+                                self.StartTime,
+                                self.AlchemyTimes
                                 )
         return DumpString
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 81375a4..e4ef773 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3891,6 +3891,7 @@
 Def_PDict_AlchemyLearnState = "AlchemyLearnState%s" #丹方是否已学习 
 Def_PDict_AlchemyItemID = "AlchemyItemID_%s" #炼丹中的丹药ID  参数丹药类型
 Def_PDict_AlchemyStartTime = "AlchemyStartTime_%s" #炼丹开始时间    参数丹药ID
+Def_PDict_AlchemyTimes = "AlchemyTimes_%s" #本次炼丹几次    参数丹药ID
 Def_PDict_AlchemyCnt = "AlchemyCnt%s" #丹药炼丹次数
 
 Def_PDict_AlchemyPrayCnt = "AlchemyPrayCnt" #炼丹祈福次数
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 406c6ca..aa0e755 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -2228,7 +2228,7 @@
 
 class  tagCGVoiceChat(Structure):
     Head = tagHead()
-    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域    
+    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 -------查看封包tagCMVoiceChat 5 区域
     TargetNameLen = 0    #(BYTE TargetNameLen)
     TargetName = ""    #(String TargetName)//size = TargetNameLen
     TargetID = 0    #(DWORD TargetID)// 默认发玩家ID,没有ID才发名称
@@ -2326,7 +2326,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("TagID", c_int),    
+                  ("TagID", c_int),
                   ("Answer", c_ubyte),    #0: 拒绝 1: 接受
                   ]
 
@@ -2382,7 +2382,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("ItemID", c_int),    
+                  ("ItemID", c_int),
                   ("IsAttention", c_ubyte),    #是否关注,取消关注发0
                   ]
 
@@ -3396,8 +3396,8 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("ZoneID", c_ubyte),    # 赛区ID    
-                  ("SeasonID", c_ubyte),    # 赛季ID    
+                  ("ZoneID", c_ubyte),    # 赛区ID
+                  ("SeasonID", c_ubyte),    # 赛季ID
                   ]
 
     def __init__(self):
@@ -3676,7 +3676,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("Adult", c_ubyte),    
+                  ("Adult", c_ubyte),
                   ]
 
     def __init__(self):
@@ -4029,7 +4029,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    
+                  ("MapID", c_int),
                   ]
 
     def __init__(self):
@@ -4129,8 +4129,8 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    
-                  ("FuncLineID", c_ushort),    
+                  ("MapID", c_int),
+                  ("FuncLineID", c_ushort),
                   ]
 
     def __init__(self):
@@ -4185,7 +4185,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("ObjID", c_int),    
+                  ("ObjID", c_int),
                   ]
 
     def __init__(self):
@@ -4341,7 +4341,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("TaskID", c_int),    
+                  ("TaskID", c_int),
                   ("RewardPer", c_ushort),    # 奖励百分比, 默认100;  150则代表1.5倍
                   ]
 
@@ -4397,7 +4397,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("NPCID", c_int),    
+                  ("NPCID", c_int),
                   ("EndType", c_ubyte),    # 0-默认;1-跳过
                   ]
 
@@ -4781,8 +4781,8 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("ObjID", c_int),    
-                  ("BossID", c_int),    
+                  ("ObjID", c_int),
+                  ("BossID", c_int),
                   ]
 
     def __init__(self):
@@ -4837,8 +4837,8 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("ObjID", c_int),    
-                  ("NPCID", c_int),    
+                  ("ObjID", c_int),
+                  ("NPCID", c_int),
                   ("QueryType", c_ubyte),    # 0-实时仙盟伤血,1-历史仙盟伤血,2-实时玩家伤血,3-历史玩家伤血
                   ]
 
@@ -5119,7 +5119,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("MissionID", c_int),    
+                  ("MissionID", c_int),
                   ("DoType", c_ubyte),    # 0-只完成本次;1-完成所有环任务
                   ]
 
@@ -5336,7 +5336,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("GuideIndex", c_ubyte),    # 记录位索引, 发送255时,代表设置全部
-                  ("IsOK", c_ubyte),    
+                  ("IsOK", c_ubyte),
                   ]
 
     def __init__(self):
@@ -5467,7 +5467,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("MissionID", c_int),    
+                  ("MissionID", c_int),
                   ]
 
     def __init__(self):
@@ -5666,7 +5666,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("PlayerID", c_int),    
+                  ("PlayerID", c_int),
                   ("EquipClassLV", c_ubyte),    #大于0为查看指定境界阶装备信息,  0为查看默认信息
                   ]
 
@@ -5898,7 +5898,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("Seting", c_int),    
+                  ("Seting", c_int),
                   ]
 
     def __init__(self):
@@ -5953,7 +5953,7 @@
                   ("SrcBackpack", c_ubyte),    #源背包类型
                   ("DesBackPack", c_ubyte),    #目标背包类型
                   ("SrcIndex", c_ushort),    #转移物品索引位置;当全部转移时此值无效
-                  ("IsAll", c_ubyte),    #是否全部转移        
+                  ("IsAll", c_ubyte),    #是否全部转移
                   ]
 
     def __init__(self):
@@ -6839,7 +6839,7 @@
                   ("SubCmd", c_ubyte),
                   ("PackType", c_ubyte),    #背包类型
                   ("ItemIndex", c_ushort),    #物品在背包中索引
-                  ("DropPosX", c_ushort),    
+                  ("DropPosX", c_ushort),
                   ("DropPosY", c_ushort),    #掉落物品
                   ]
 
@@ -7895,8 +7895,8 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("MapID", c_int),    
-                  ("LineID", c_ushort),    
+                  ("MapID", c_int),
+                  ("LineID", c_ushort),
                   ("Cnt", c_ubyte),    # 扫荡次数
                   ("IsFinish", c_ubyte),    # 是否立即完成; 0-否;1-花钱立即完成;2-客户端自行倒计时间到后发送2代表领取扫荡完成奖励
                   ("DataEx", c_int),    #附带信息
@@ -10073,7 +10073,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
-                  ("MWID", c_int),    
+                  ("MWID", c_int),
                   ]
 
     def __init__(self):
@@ -10304,6 +10304,7 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("AlchemyID", c_int),    # 丹药ID
+                  ("AlchemyTimes", c_ushort),    # 丹药次数
                   ("DoType", c_ubyte),    # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
                   ]
 
@@ -10322,6 +10323,7 @@
         self.Cmd = 0xA5
         self.SubCmd = 0x76
         self.AlchemyID = 0
+        self.AlchemyTimes = 0
         self.DoType = 0
         return
 
@@ -10336,12 +10338,14 @@
                                 Cmd:%s,
                                 SubCmd:%s,
                                 AlchemyID:%d,
+                                AlchemyTimes:%d,
                                 DoType:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
                                 self.AlchemyID,
+                                self.AlchemyTimes,
                                 self.DoType
                                 )
         return DumpString
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index f3daa2e..10ec851 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -16465,6 +16465,7 @@
     _fields_ = [
                   ("AlchemyID", c_int),    # 丹 ID
                   ("StartTime", c_int),    # 开始炼的时间 
+                  ("AlchemyTimes", c_ushort),    # 炼的次数
                   ]
 
     def __init__(self):
@@ -16479,6 +16480,7 @@
     def Clear(self):
         self.AlchemyID = 0
         self.StartTime = 0
+        self.AlchemyTimes = 0
         return
 
     def GetLength(self):
@@ -16490,11 +16492,13 @@
     def OutputString(self):
         DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
                                 AlchemyID:%d,
-                                StartTime:%d
+                                StartTime:%d,
+                                AlchemyTimes:%d
                                 '''\
                                 %(
                                 self.AlchemyID,
-                                self.StartTime
+                                self.StartTime,
+                                self.AlchemyTimes
                                 )
         return DumpString
 
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 04958df..56bd17f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerRefineStove.py
@@ -76,7 +76,7 @@
     if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_RefineStove):
         GameWorld.DebugLog("炼丹炉功能未开启!", playerID)
         return
-
+    refineTimes = max(1, clientPack.AlchemyTimes)
     alchemyID = clientPack.AlchemyID
     doType = clientPack.DoType
     GameWorld.DebugLog("玩家炼丹: alchemyID=%s, doType=%s" % (alchemyID, doType), playerID)
@@ -119,9 +119,11 @@
         if curAlchemyItemID:
             GameWorld.DebugLog('当前丹类型已在炼丹中! curAlchemyItemID=%s' % curAlchemyItemID)
             return
+        if refineTimes < 1:
+            return
         # 基础固定消耗
         needMaterialDict = alchemyIpyData.GetMaterial()
-
+        needMaterialDict = {itemID:itemCnt*refineTimes for itemID, itemCnt in needMaterialDict.items()}
         itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
         lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needMaterialDict, itemPack, False)
         if lackItemDict:
@@ -132,6 +134,7 @@
         ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, ChConfig.ItemDel_Alchemy)
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyItemID % alchemType, alchemyItemID)
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyStartTime % alchemyID, curTime)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyTimes % alchemyID, refineTimes)
 
         Sycn_AlchemyMsg(curPlayer, alchemyID, False)
         #日常任务
@@ -149,33 +152,36 @@
         if curAlchemyItemID != alchemyItemID:
             GameWorld.DebugLog('开炉丹药ID错误 curAlchemyItemID=%s' % curAlchemyItemID)
             return
+        refineTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyTimes % alchemyID)
+        refineTimes = max(1, refineTimes)
         startTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyStartTime % alchemyID)
         passTime = max(0, curTime - startTime)
-        if passTime < alchemyIpyData.GetNeedTime():
+        if passTime < alchemyIpyData.GetNeedTime() * refineTimes:
             GameWorld.DebugLog('开炉丹药,时间未到  passTime=%s' % passTime)
             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]
+
+        # 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]
 
         
         #成功率
-        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 = GameWorld.CanHappen(successRate)
+        # 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:
             needSpace = 1
@@ -186,20 +192,18 @@
             if alchemType == DefStoveType2:
                 resultCnt = 1 #仙丹必定为1
             elif alchemType == DefStoveType1:
-                if appointInfo:
-                    resultCnt = appointInfo[0]
-                else:
-                    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())
+                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, {}])
             #紫色及以上全服广播
@@ -210,30 +214,32 @@
                 PlayerControl.WorldNotify(0, "AchemyGreatSuccess", [curPlayer.GetPlayerName(), alchemyItemID])
 
             #任务
-            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)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_AlchemyTimes % alchemyID, 0)
         #加经验
-        addExp = alchemyIpyData.GetAlchemyExp()
+        addExp = alchemyIpyData.GetAlchemyExp() * refineTimes
         AddRefineExp(curPlayer, addExp, alchemyLV)
         #加次数
-        if alchemyID in alchemyCustomizedDict:
-            GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_AlchemyCnt, alchemyID, min(alchemyCnt + 1, 9), False)
+        # if alchemyID in alchemyCustomizedDict:
+        #     GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_AlchemyCnt, alchemyID, min(alchemyCnt + refineTimes, 9), False)
 
-        GameWorld.DebugLog('炼丹结果 alchemyItemID=%s,successRate=%s,isSuccess=%s,resultCnt=%s,appointInfo=%s' % (alchemyItemID, successRate, isSuccess, resultCnt, appointInfo), playerID)
+        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, 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, 1)
-        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, 1)
-        PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_Alchemy, 1)
+        PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, refineTimes)
+        PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RefineStove, refineTimes)
+        PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_Alchemy, refineTimes)
     return
 
 
@@ -295,6 +301,7 @@
         StoveInfo = ChPyNetSendPack.tagMCPlayerStoveInfo()
         StoveInfo.AlchemyID = alchemyID
         StoveInfo.StartTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyStartTime % alchemyID)
+        StoveInfo.AlchemyTimes = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_AlchemyTimes % alchemyID)
         pack.InfoList.append(StoveInfo)
     pack.StoveCnt = len(pack.InfoList)
     NetPackCommon.SendFakePack(curPlayer, pack)

--
Gitblit v1.8.0