| | |
| | | import PyGameData
|
| | | import PlayerVip
|
| | | import ChEquip
|
| | | import PlayerHero
|
| | |
|
| | | import math
|
| | | import time
|
| | |
| | | if isNeedRecord:
|
| | | itemNoteDict = ItemCommon.GetItemNoteDict(item, curItemCount, packItemCount, GetItemCount(item))
|
| | | ItemCommon.DR_GetItem(curPlayer, packIndex, eventName, itemNoteDict, addDict)
|
| | | |
| | | if item.GetType() == ChConfig.Def_ItemType_Hero:
|
| | | PlayerHero.OnGiveHeroItem(curPlayer, item)
|
| | | |
| | | break
|
| | |
|
| | | #放入东西
|
| | |
| | | return
|
| | |
|
| | | # 整理方式不同区分
|
| | | if packIndex == IPY_GameWorld.rptWarehouse:
|
| | | if packIndex == ShareDefine.rptHero:
|
| | | if tick - curPlayer.GetResetItemTick() <= ChConfig.Def_ItemPackResetInterval:
|
| | | #GameWorld.DebugLog("重整背包时间间隔太短")
|
| | | return
|
| | | curPlayer.SetResetItemTick(tick)
|
| | | ResetHeroPack(curPlayer, curPack, beingIndex, endIndex)
|
| | | |
| | | elif packIndex == IPY_GameWorld.rptWarehouse:
|
| | | #验证间隔
|
| | | if tick - curPlayer.GetTickByType(ChConfig.TYPE_Player_Tick_WareHouseSort) < \
|
| | | ChConfig.TYPE_Player_Tick_Time[ChConfig.TYPE_Player_Tick_WareHouseSort]:
|
| | |
| | |
|
| | | return
|
| | |
|
| | | def ResetHeroPack(curPlayer, curPack, beingIndex, endIndex):
|
| | | itemList = []
|
| | | for i in range(beingIndex, endIndex + 1):
|
| | | curRoleItem = curPack.GetAt(i)
|
| | | if curRoleItem.IsEmpty():
|
| | | continue
|
| | | curItem = curRoleItem.GetItem() |
| | | itemList.append(curItem)
|
| | | itemList.sort(__CmpHeroPack)
|
| | | |
| | | curPack.WipePack(beingIndex, endIndex)
|
| | | putPlace = beingIndex
|
| | | for item in itemList:
|
| | | curPack.GetAt(putPlace).AssignItem(item, False)
|
| | | putPlace += 1
|
| | | |
| | | return
|
| | |
|
| | | def __CmpHeroPack(item1, item2):
|
| | | '''排序规则:上阵武将排前,未上阵武将排后,再各自按照以下规则排序
|
| | | 武将等级>突破等级>武将星级>武将品质>武将ID
|
| | | '''
|
| | | |
| | | posNum1 = item1.GetUserAttr(ShareDefine.Def_IudetHeroPosNum)
|
| | | posNum2 = item2.GetUserAttr(ShareDefine.Def_IudetHeroPosNum)
|
| | | if (posNum1 and posNum2) or (not posNum1 and not posNum2):
|
| | | lv1 = item1.GetUserAttr(ShareDefine.Def_IudetHeroLV)
|
| | | lv2 = item2.GetUserAttr(ShareDefine.Def_IudetHeroLV)
|
| | | if lv1 == lv2:
|
| | | bLV1 = item1.GetUserAttr(ShareDefine.Def_IudetHeroBreakLV)
|
| | | bLV2 = item2.GetUserAttr(ShareDefine.Def_IudetHeroBreakLV)
|
| | | if bLV1 == bLV2:
|
| | | star1 = item1.GetUserAttr(ShareDefine.Def_IudetHeroStar)
|
| | | star2 = item2.GetUserAttr(ShareDefine.Def_IudetHeroStar)
|
| | | if star1 == star2:
|
| | | heroID1 = item1.GetItemTypeID()
|
| | | heroID2 = item2.GetItemTypeID()
|
| | | ipyData1 = IpyGameDataPY.GetIpyGameData("Hero", heroID1)
|
| | | ipyData2 = IpyGameDataPY.GetIpyGameData("Hero", heroID2)
|
| | | quality1 = ipyData1.GetQuality() if ipyData1 else 0
|
| | | quality2 = ipyData2.GetQuality() if ipyData2 else 0
|
| | | if quality1 == quality2:
|
| | | return cmp(heroID1, heroID2)
|
| | | return -cmp(quality1, quality2)
|
| | | return -cmp(star1, star2)
|
| | | return -cmp(bLV1, bLV2)
|
| | | return -cmp(lv1, lv2)
|
| | | elif posNum1:
|
| | | return -1
|
| | | elif posNum2:
|
| | | return 1
|
| | | else:
|
| | | return cmp(item1.GetItemTypeID(), item2.GetItemTypeID())
|
| | | |
| | | #===============================================================================
|
| | | #Python 版重整物品
|
| | | # def ResetItem(curPlayer, curPackIndex, tick):
|
| | |
| | | GameWorld.ErrLog("产出物品异常,无法创建物品 = %s" % (itemID))
|
| | | return
|
| | |
|
| | | # 英雄
|
| | | if curItem.GetType() == ChConfig.Def_ItemType_Hero:
|
| | | return curItem
|
| | | |
| | | # 非装备,无需设置属性
|
| | | if not ItemCommon.CheckItemIsEquip(curItem):
|
| | | return curItem
|