| | |
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import PlayerPreset
|
| | | import PlayerControl
|
| | | import ItemControler
|
| | | import IpyGameDataPY
|
| | |
| | | def OnMinggeTuiyan(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | tyCount = clientData.Count
|
| | | DoMinggeTuiyan(curPlayer, tyCount)
|
| | | if not DoMinggeTuiyan(curPlayer, tyCount):
|
| | | ItemCommon.SyncMakeItemAnswer(curPlayer, ShareDefine.Def_mitMGTuiyan, ChConfig.Def_ComposeState_Fail, 0)
|
| | | return
|
| | |
|
| | | def GetMGColorRateList(curPlayer):
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MGGanwuLV, updLV)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_MGGanwuExp, updExp)
|
| | | Sync_MinggeInfo(curPlayer)
|
| | | return
|
| | | |
| | | ItemCommon.SyncMakeItemAnswer(curPlayer, ShareDefine.Def_mitMGTuiyan, ChConfig.Def_ComposeState_Sucess, succCount)
|
| | | return True
|
| | |
|
| | | #// B2 51 命格分解 #tagCSMinggeDecompose
|
| | | #
|
| | |
| | | def OnMinggeDecompose(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | __doDecomposeMingge(curPlayer, clientData.IndexList)
|
| | | ItemCommon.SyncMakeItemAnswer(curPlayer, ShareDefine.Def_mitMinggeEquip, ChConfig.Def_ComposeState_Sucess, 0)
|
| | | return
|
| | |
|
| | | def __doDecomposeMingge(curPlayer, itemIndexList):
|
| | |
| | | isAutoDec = clientData.AutoDec
|
| | | GameWorld.DebugLog("命格装备替换: mgNum=%s,itemIndex=%s,isAutoDec=%s" % (mgNum, itemIndex, isAutoDec), playerID)
|
| | |
|
| | | openNum = IpyGameDataPY.GetFuncCfg("MinggeCfg", 1)
|
| | | if mgNum < 1 or mgNum > openNum:
|
| | | GameWorld.DebugLog("命格套编号不支持! mgNum=%s" % mgNum, playerID)
|
| | | if not PlayerPreset.GetFuncPresetIDState(curPlayer, mgNum, ShareDefine.FuncPreset_Mingge):
|
| | | GameWorld.DebugLog("命格套方案未解锁! mgNum=%s" % mgNum, playerID)
|
| | | return
|
| | |
|
| | | mgTuiyanPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptMGTuiyan)
|
| | |
| | | __doDecomposeMingge(curPlayer, [itemIndex])
|
| | |
|
| | | # 刷属性
|
| | | RefreshMinggeAttr(curPlayer)
|
| | | RefreshMinggeAttr(curPlayer, mgNum)
|
| | | |
| | | ItemCommon.SyncMakeItemAnswer(curPlayer, ShareDefine.Def_mitMinggeEquip, ChConfig.Def_ComposeState_Sucess, itemIndex)
|
| | | return
|
| | |
|
| | | #// B2 53 命格祈灵#tagCSMinggeQiling
|
| | |
| | | Sync_MinggeInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def RefreshMinggeAttr(curPlayer):
|
| | | #CalcMinggeAttr(curPlayer)
|
| | | PlayerOnline.GetOnlinePlayer(curPlayer).RefreshRoleAttr()
|
| | | def RefreshMinggeAttr(curPlayer, mgNum=0):
|
| | | CalcMinggeAttr(curPlayer, mgNum)
|
| | | PlayerOnline.GetOnlinePlayer(curPlayer).RefreshByFuncPreset(ShareDefine.FuncPreset_Mingge, mgNum)
|
| | | return
|
| | |
|
| | | def CalcMinggeAttr(curPlayer):
|
| | | def GetMGNumPackIndexList(mgNum):
|
| | | mgCnt = len(ChConfig.Def_MGGuayuType)
|
| | | startIndex = (mgNum - 1) * mgCnt
|
| | | endIndex = startIndex + mgCnt
|
| | | return range(startIndex, endIndex)
|
| | |
|
| | | def CalcMinggeAttr(curPlayer, mgNum=0):
|
| | | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | funcPresetType = ShareDefine.FuncPreset_Mingge
|
| | | if not mgNum:
|
| | | ipyDataList = IpyGameDataPY.GetIpyGameDataList("PresetUnlock", funcPresetType)
|
| | | mgPresetIDList = range(1, 1 + len(ipyDataList)) if ipyDataList else []
|
| | | else:
|
| | | mgPresetIDList = [mgNum]
|
| | | |
| | | olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
|
| | | equipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptMGGuayu)
|
| | | for mgPresetID in mgPresetIDList:
|
| | | |
| | | attrDict, skillLVDict = {}, {}
|
| | | if not PlayerPreset.GetFuncPresetIDState(curPlayer, mgPresetID, funcPresetType):
|
| | | olPlayer.SetCalcAttr(ChConfig.Def_CalcAttr_Mingge, attrDict, skillLVDict, presetID=mgPresetID)
|
| | | continue
|
| | | |
| | | for index in GetMGNumPackIndexList(mgPresetID):
|
| | | if index < 0 or index >= equipPack.GetCount():
|
| | | continue
|
| | | curEquip = equipPack.GetAt(index)
|
| | | if not curEquip or curEquip.IsEmpty():
|
| | | continue
|
| | | |
| | | legendAttrIDCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
|
| | | legendAttrValueCnt = curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
|
| | | for i in xrange(min(legendAttrIDCnt, legendAttrValueCnt)):
|
| | | attrID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i)
|
| | | attrValue = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i)
|
| | | attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
|
| | | |
| | | for i in xrange(curEquip.GetUserAttrCount(ShareDefine.Def_IudetAddSkillID)):
|
| | | skillID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetAddSkillID, i)
|
| | | if skillID:
|
| | | skillLVDict[skillID] = skillLVDict.get(skillID, 0) + 1
|
| | | |
| | | GameWorld.DebugLog("命格属性: %s,skillLVDict=%s,mgPresetID=%s" % (attrDict, skillLVDict, mgPresetID), playerID)
|
| | | olPlayer.SetCalcAttr(ChConfig.Def_CalcAttr_Mingge, attrDict, skillLVDict, presetID=mgPresetID)
|
| | | |
| | | return
|
| | |
|
| | | def Sync_MinggeInfo(curPlayer):
|