hch
2019-05-27 1dbff913370634e8aea37f2940f2a0d261d4dcb3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipStar.py
@@ -24,6 +24,7 @@
import DataRecordPack
import IpyGameDataPY
import GameWorld
import EventShell
import ChConfig
import ChEquip
#-------------------------------------------------------------------------------------------
@@ -91,8 +92,12 @@
        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
     
@@ -112,27 +117,34 @@
        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