| | |
| | |
|
| | | 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才发名称
|
| | |
| | | _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):
|
| | |
| | | ("SrcBackpack", c_ubyte), #源背包类型
|
| | | ("DesBackPack", c_ubyte), #目标背包类型
|
| | | ("SrcIndex", c_ushort), #转移物品索引位置;当全部转移时此值无效
|
| | | ("IsAll", c_ubyte), #是否全部转移 |
| | | ("IsAll", c_ubyte), #是否全部转移 |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("AlchemyID", c_int), # 丹药ID
|
| | | ("AlchemyTimes", c_ushort), # 丹药次数
|
| | | ("DoType", c_ubyte), # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
|
| | | ]
|
| | |
|
| | |
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x76
|
| | | self.AlchemyID = 0
|
| | | self.AlchemyTimes = 0
|
| | | self.DoType = 0
|
| | | return
|
| | |
|
| | |
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | AlchemyID:%d,
|
| | | AlchemyTimes:%d,
|
| | | DoType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AlchemyID,
|
| | | self.AlchemyTimes,
|
| | | self.DoType
|
| | | )
|
| | | return DumpString
|
| | |
| | | _fields_ = [
|
| | | ("AlchemyID", c_int), # 丹 ID
|
| | | ("StartTime", c_int), # 开始炼的时间
|
| | | ("AlchemyTimes", c_ushort), # 炼的次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.AlchemyID = 0
|
| | | self.StartTime = 0
|
| | | self.AlchemyTimes = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | 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
|
| | |
|
| | |
| | | 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" #炼丹祈福次数
|
| | |
| | |
|
| | | 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才发名称
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TagID", c_int), |
| | | ("TagID", c_int),
|
| | | ("Answer", c_ubyte), #0: 拒绝 1: 接受
|
| | | ]
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ItemID", c_int), |
| | | ("ItemID", c_int),
|
| | | ("IsAttention", c_ubyte), #是否关注,取消关注发0
|
| | | ]
|
| | |
|
| | |
| | | _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):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Adult", c_ubyte), |
| | | ("Adult", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MapID", c_int), |
| | | ("MapID", c_int),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MapID", c_int), |
| | | ("FuncLineID", c_ushort), |
| | | ("MapID", c_int),
|
| | | ("FuncLineID", c_ushort),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ObjID", c_int), |
| | | ("ObjID", c_int),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TaskID", c_int), |
| | | ("TaskID", c_int),
|
| | | ("RewardPer", c_ushort), # 奖励百分比, 默认100; 150则代表1.5倍
|
| | | ]
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("NPCID", c_int), |
| | | ("NPCID", c_int),
|
| | | ("EndType", c_ubyte), # 0-默认;1-跳过
|
| | | ]
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ObjID", c_int), |
| | | ("BossID", c_int), |
| | | ("ObjID", c_int),
|
| | | ("BossID", c_int),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _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-历史玩家伤血
|
| | | ]
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MissionID", c_int), |
| | | ("MissionID", c_int),
|
| | | ("DoType", c_ubyte), # 0-只完成本次;1-完成所有环任务
|
| | | ]
|
| | |
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("GuideIndex", c_ubyte), # 记录位索引, 发送255时,代表设置全部
|
| | | ("IsOK", c_ubyte), |
| | | ("IsOK", c_ubyte),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MissionID", c_int), |
| | | ("MissionID", c_int),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int), |
| | | ("PlayerID", c_int),
|
| | | ("EquipClassLV", c_ubyte), #大于0为查看指定境界阶装备信息, 0为查看默认信息
|
| | | ]
|
| | |
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Seting", c_int), |
| | | ("Seting", c_int),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("SrcBackpack", c_ubyte), #源背包类型
|
| | | ("DesBackPack", c_ubyte), #目标背包类型
|
| | | ("SrcIndex", c_ushort), #转移物品索引位置;当全部转移时此值无效
|
| | | ("IsAll", c_ubyte), #是否全部转移 |
| | | ("IsAll", c_ubyte), #是否全部转移
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("SubCmd", c_ubyte),
|
| | | ("PackType", c_ubyte), #背包类型
|
| | | ("ItemIndex", c_ushort), #物品在背包中索引
|
| | | ("DropPosX", c_ushort), |
| | | ("DropPosX", c_ushort),
|
| | | ("DropPosY", c_ushort), #掉落物品
|
| | | ]
|
| | |
|
| | |
| | | _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), #附带信息
|
| | |
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("MWID", c_int), |
| | | ("MWID", c_int),
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("AlchemyID", c_int), # 丹药ID
|
| | | ("AlchemyTimes", c_ushort), # 丹药次数
|
| | | ("DoType", c_ubyte), # 0-学习 1-开始炼丹 2-停止炼丹 3-开炉取丹
|
| | | ]
|
| | |
|
| | |
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x76
|
| | | self.AlchemyID = 0
|
| | | self.AlchemyTimes = 0
|
| | | self.DoType = 0
|
| | | return
|
| | |
|
| | |
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | AlchemyID:%d,
|
| | | AlchemyTimes:%d,
|
| | | DoType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AlchemyID,
|
| | | self.AlchemyTimes,
|
| | | self.DoType
|
| | | )
|
| | | return DumpString
|
| | |
| | | _fields_ = [
|
| | | ("AlchemyID", c_int), # 丹 ID
|
| | | ("StartTime", c_int), # 开始炼的时间
|
| | | ("AlchemyTimes", c_ushort), # 炼的次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | |
| | | def Clear(self):
|
| | | self.AlchemyID = 0
|
| | | self.StartTime = 0
|
| | | self.AlchemyTimes = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | 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
|
| | |
|
| | |
| | | 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)
|
| | |
| | | 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:
|
| | |
| | | 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)
|
| | | #日常任务
|
| | |
| | | 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
|
| | |
| | | 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, {}])
|
| | | #紫色及以上全服广播
|
| | |
| | | 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
|
| | |
|
| | |
|
| | |
| | | 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)
|