| | |
| | | import DataRecordPack
|
| | | import IpyGameDataPY
|
| | | import GameWorld
|
| | | import EventShell
|
| | | import ChConfig
|
| | | import ChEquip
|
| | | #-------------------------------------------------------------------------------------------
|
| | |
| | | playControl.RefreshPlayerAttrState()
|
| | |
|
| | | if updPartStar in IpyGameDataPY.GetFuncEvalCfg('EquipPartStarNotify'):
|
| | | PlayerControl.WorldNotify(0, "StarLevelUp", [curPlayer.GetPlayerName(), curEquip.GetItemTypeID(), updPartStar])
|
| | | #EventShell.EventRespons_EquipPlus(curPlayer)
|
| | | itemID = curEquip.GetItemTypeID()
|
| | | userData = curEquip.GetUserData()
|
| | | guid = ItemCommon.CacheNotifyEquipDetailInfo(curPlayer, curEquip)
|
| | | msgParamList = [curPlayer.GetPlayerName(), itemID, userData, guid, updPartStar]
|
| | | PlayerControl.WorldNotify(0, "StarLevelUp", msgParamList)
|
| | | EventShell.EventRespons_EquipStarUp(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | return result
|
| | | costEquipPlaceList = ipyData.GetCostEquipPlace()
|
| | | costEquipColorList = ipyData.GetCostEquipColor()
|
| | | isJobLimit = ipyData.GetIsJobLimit()
|
| | | suitTotalRate = ipyData.GetSuitTotalRate()
|
| | | singleSuitRate = float(suitTotalRate) / costEquipCnt
|
| | | curRate = 0 #成功概率
|
| | | delEquipIndexList = []
|
| | | itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | for i, index in enumerate(clientData.CostEquipIndex):
|
| | | costEquip = itemPack.GetAt(index)
|
| | | if not costEquip or costEquip.IsEmpty():
|
| | | return result
|
| | | equipID = costEquip.GetItemTypeID()
|
| | | if equipID != clientData.CostEquipID[i]:
|
| | | GameWorld.ErrLog(' 装备升星 客户端发的物品索引与实际物品ID不对应 index=%s,eatItemID=%s,wantEatItemID=%s' % (index, equipID, clientData.CostEquipID[i]))
|
| | | return result
|
| | | if costEquip.GetItemColor() not in costEquipColorList:
|
| | | return result
|
| | | if costEquip.GetEquipPlace() not in costEquipPlaceList:
|
| | | return result
|
| | | delEquipIndexList.append(index)
|
| | | isSuite = costEquip.GetSuiteID()
|
| | | addRate = singleSuitRate if isSuite else singleSuitRate / 2
|
| | | curRate += addRate
|
| | | delEquipIndexList = []
|
| | | if not costEquipCnt:
|
| | | curRate = suitTotalRate / 2
|
| | | else:
|
| | | singleSuitRate = float(suitTotalRate) / costEquipCnt
|
| | | curRate = 0 #成功概率
|
| | | |
| | | for i, index in enumerate(clientData.CostEquipIndex):
|
| | | costEquip = itemPack.GetAt(index)
|
| | | if not costEquip or costEquip.IsEmpty():
|
| | | return result
|
| | | equipID = costEquip.GetItemTypeID()
|
| | | if equipID != clientData.CostEquipID[i]:
|
| | | GameWorld.ErrLog(' 装备升星 客户端发的物品索引与实际物品ID不对应 index=%s,eatItemID=%s,wantEatItemID=%s' % (index, equipID, clientData.CostEquipID[i]))
|
| | | return result
|
| | | if costEquip.GetItemColor() not in costEquipColorList:
|
| | | return result
|
| | | if costEquip.GetEquipPlace() not in costEquipPlaceList:
|
| | | return result
|
| | | if isJobLimit and not ItemCommon.CheckJob(curPlayer, costEquip):
|
| | | return result
|
| | | delEquipIndexList.append(index)
|
| | | isSuite = costEquip.GetSuiteID()
|
| | | addRate = singleSuitRate if isSuite else singleSuitRate / 2
|
| | | curRate += addRate
|
| | | if curRate <= 0:
|
| | | GameWorld.Log('装备升星异常 概率为0!!equipPackIndex=%s'%equipPackIndex)
|
| | | return result
|