| | |
| | | import IPY_GameWorld
|
| | | import PlayerControl
|
| | | import ItemControler
|
| | | import PlayerMagicWeapon
|
| | | import PlayerFamilyRedPacket
|
| | | import PlayerGatherSoul
|
| | | import IpyGameDataPY
|
| | | import PyGameData
|
| | | import EventReport
|
| | |
| | | import datetime
|
| | | import time
|
| | | import math
|
| | | import ChEquip
|
| | | import PlayerRune
|
| | | import Operate_EquipStone
|
| | | import Operate_EquipWash
|
| | | import PlayerFeastRedPacket
|
| | | import PlayerDogz
|
| | | import DataRecordPack
|
| | |
|
| | |
|
| | |
| | | self.attrDict = {} # 完成成就获得的属性 {attrid:attrvalue}
|
| | | self.hasAward = True #是否有奖励
|
| | | self.redPacketID = 0 # 红包ID
|
| | | self.magicWeaponExp = {} # 法宝升级经验{id:exp}
|
| | | return
|
| | |
|
| | |
|
| | |
| | | succData.exp = successIpyData.GetExp()
|
| | | succData.attrDict = successIpyData.GetAwardAttr()
|
| | | succData.redPacketID = successIpyData.GetRedPacketID()
|
| | | magicWeaponID = successIpyData.GetMagicWeaponID()
|
| | | magicWeaponExp = successIpyData.GetMagicWeaponExp()
|
| | | if magicWeaponID and magicWeaponExp:
|
| | | succData.magicWeaponExp[magicWeaponID] = magicWeaponExp
|
| | | succData.hasAward = bool(succData.awardItemDict or succData.moneyDict or succData.exp or succData.attrDict or succData.redPacketID or succData.magicWeaponExp \
|
| | | succData.hasAward = bool(succData.awardItemDict or succData.moneyDict or succData.exp or succData.attrDict or succData.redPacketID \
|
| | | or succData.awardItemDict2)
|
| | | successDataObjDict[succData.succID]=succData
|
| | | if tuple(succData.condition) not in conditionDict:
|
| | |
| | | if finishTime > 0 or GetSuccHasGot(curPlayer, succID):
|
| | | continue
|
| | | SetSuccFinishValue(curPlayer, succType, condition, 0)
|
| | | return
|
| | |
|
| | | def DoEquipSuccessLogic(curPlayer, classLV):
|
| | | #玩家当前可装备的装备类型
|
| | | |
| | | ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'ClassLV':classLV}, True)
|
| | | if not ipyDataList:
|
| | | return
|
| | | |
| | | placeCountDict, colorCountDict, suitCountDict = {}, {}, {}
|
| | | playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
|
| | | for ipyData in ipyDataList:
|
| | | equipIndex = ipyData.GetGridIndex()
|
| | | curEquip = playerEquip.GetAt(equipIndex)
|
| | | if curEquip.IsEmpty():
|
| | | continue
|
| | | itemPlace = curEquip.GetEquipPlace()
|
| | | |
| | | # 套装、颜色 成就 统计基础部位
|
| | | if itemPlace in ChConfig.EquipPlace_Base:
|
| | | itemColor = curEquip.GetItemColor()
|
| | | colorConditionKey = (classLV, itemColor)
|
| | | colorCountDict[colorConditionKey] = colorCountDict.get(colorConditionKey, 0) + 1
|
| | | |
| | | # 统计套装数
|
| | | if curEquip.GetSuiteID():
|
| | | suitConditionKey = (classLV, )
|
| | | suitCountDict[suitConditionKey] = suitCountDict.get(suitConditionKey, 0) + 1
|
| | | |
| | | # 部位 成就 统计特殊部位
|
| | | elif itemPlace in ChConfig.EquipPlace_Special:
|
| | | placeConditionKey = (classLV, itemPlace)
|
| | | placeCountDict[placeConditionKey] = placeCountDict.get(placeConditionKey, 0) + 1
|
| | | |
| | | # 更新成就
|
| | | #GameWorld.DebugLog("装备阶部位成就数据: classLV=%s,placeCountDict=%s" % (classLV, placeCountDict))
|
| | | UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipPlace, placeCountDict)
|
| | | |
| | | #GameWorld.DebugLog("装备阶颜色成就数据: classLV=%s,colorCountDict=%s" % (classLV, colorCountDict))
|
| | | UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipColorItem, colorCountDict)
|
| | | |
| | | #GameWorld.DebugLog("装备阶套装成就数据: classLV=%s,suitCountDict=%s" % (classLV, suitCountDict))
|
| | | UpdateSuccessProgressByConditions(curPlayer, ShareDefine.SuccType_EquipSuit, suitCountDict)
|
| | | return
|
| | |
|
| | | def UpdateSuccessProgressByConditions(curPlayer, successType, conditionCountDict):
|
| | |
| | |
|
| | | if isNeedSys:
|
| | | PlayerControl.WorldNotify(0, 'AncientBattlefield_1', [playerName, succID])
|
| | | |
| | | for mwID in succDataObj.magicWeaponExp.keys():
|
| | | EventReport.WriteEvent_MWSuccess(curPlayer, mwID, succID, ChConfig.CME_Log_Start)
|
| | | |
| | | GameWorld.DebugLog(" 完成成就succID=%s, type=%s,time=%s"
|
| | | % (succID, successType, curTime))
|
| | |
|
| | |
| | | #发红包
|
| | | if succData.redPacketID:
|
| | | PlayerFamilyRedPacket.CreatRedPacketByID(curPlayer, succData.redPacketID, PlayerFamilyRedPacket.State_NoGot, succID)
|
| | | #法宝经验
|
| | | if succData.magicWeaponExp:
|
| | | for mwID, addExp in succData.magicWeaponExp.items():
|
| | | PlayerMagicWeapon.AddMagicWeaponUpExp(curPlayer, mwID, addExp)
|
| | | EventReport.WriteEvent_MWSuccess(curPlayer, mwID, succID, ChConfig.CME_Log_End, 1)
|
| | | GameWorld.DebugLog(" OK! awardItemDict=%s moneyDict=%s" % (itemDict, succData.moneyDict))
|
| | | ItemControler.NotifyGiveAwardInfo(curPlayer, giveItemList, "SuccessAward", exp=succData.exp, moneyInfo=succData.moneyDict)
|
| | | return itemDict
|
| | |
| | |
|
| | | def AddEnterFBSuccess(curPlayer, mapID, addCount):
|
| | | #进入副本成就相关
|
| | | |
| | | if mapID == ChConfig.Def_FBMapID_BZZD:
|
| | | #仙界秘境
|
| | | DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_BZZD, addCount)
|
| | | elif mapID == ChConfig.Def_FBMapID_IceLode:
|
| | | #冰晶矿脉
|
| | | DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_IceLode, addCount)
|
| | | return
|
| | |
|
| | | def GetSuccessScoreAward(curPlayer, awardIndex):
|