| | |
| | | list BookActAwardMoney; // 图鉴激活奖励货币 类型|值
|
| | | list DismissReturnItems; // 遣散每星返还道具 [[物品ID,个数], ...]
|
| | | list BeautyReturnItems; // 红颜效果返还道具基数 [[物品ID,个数], ...]
|
| | | list TitleReturnItems; // 称号效果返还道具基数 [[物品ID,个数], ...]
|
| | | list RecommendAwardMoney; // 阵容推荐激活奖励货币 类型|值
|
| | | };
|
| | |
|
| | |
| | | list AttrIDList; //属性ID列表
|
| | | list InitAttrValueList; //初始属性值列表
|
| | | list AttrPerStarAddList; //每星加成值列表
|
| | | BYTE EffType; //天赋效果类型
|
| | | DWORD EffTypeValue; //效果类型值
|
| | | DWORD EffValue; //效果初始值
|
| | | DWORD EffPerStarAdd; //效果每星成长
|
| | | };
|
| | |
|
| | | //形象表
|
| | |
| | | # 称号
|
| | | Def_PDict_TitleState = "TitleState_%s" # 称号状态,参数(key编号)
|
| | | Def_PDict_TitleEndTime = "TitleEndTime_%s" # 称号到期时间戳,0为永久,参数(称号ID)
|
| | | Def_PDict_TitleGoldRewardTime = "TitleGRewardTime_%s" # 称号每日俸禄上次发放时间戳,参数(称号ID)
|
| | | Def_PDict_TitleStar = "TitleStar_%s" # 称号星级,参数(称号ID)
|
| | |
|
| | | # 形象
|
| | |
| | | else:
|
| | | todayLineID = value1
|
| | | highestLineID = paramList[1] if len(paramList) > 1 else None
|
| | | if not todayLineID:
|
| | | todayLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DJGLineID)
|
| | | #if not todayLineID:
|
| | | # todayLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_DJGLineID)
|
| | | if not highestLineID:
|
| | | highestLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)
|
| | |
|
| | |
| | | value1 = msgList[0]
|
| | |
|
| | | # 删除称号
|
| | | if value1 == "t1":
|
| | | if value1 == "t0":
|
| | | titleID = msgList[1] if len(msgList) > 1 else 0
|
| | | if not titleID:
|
| | | for index in range(ipyDataMgr.GetTitleCount()):
|
| | |
| | | titleID = ipyData.GetTitleID()
|
| | | if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TitleState, titleID):
|
| | | continue
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TitleState, titleID, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleEndTime % titleID, 0)
|
| | | PlayerHJG.DelTitle(curPlayer, titleID, False)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleStar % titleID, 0)
|
| | | syncTitleIDList.append(titleID)
|
| | | else:
|
| | |
| | | if not ipyData:
|
| | | GameWorld.DebugAnswer(curPlayer, "该称号不存在:%s" % titleID)
|
| | | return
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TitleState, titleID, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleEndTime % titleID, 0)
|
| | | PlayerHJG.DelTitle(curPlayer, titleID, False)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleStar % titleID, 0)
|
| | | syncTitleIDList.append(titleID)
|
| | | GameWorld.DebugAnswer(curPlayer, "删除称号:%s" % syncTitleIDList)
|
| | |
| | | import IpyGameDataPY
|
| | | import NetPackCommon
|
| | | import PlayerOnline
|
| | | import PlayerHJG
|
| | | import ChConfig
|
| | |
|
| | | import math
|
| | |
|
| | | # 自动选择排序优先级索引
|
| | | (
|
| | |
| | | awardIpyData = quickIpyData
|
| | | if not awardIpyData:
|
| | | return
|
| | | awardItemList = awardIpyData.GetQuickAwardList()
|
| | | quickAwardList = awardIpyData.GetQuickAwardList()
|
| | |
|
| | | # 设置起始层关卡
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_DJGLineID, todayLineID)
|
| | |
| | | GivePassLayerEff(curPlayer, addEffCnt)
|
| | | SyncDingjungeInfo(curPlayer)
|
| | |
|
| | | awardItemList = []
|
| | | isBind = ItemControler.GetIsBindValue(srcSign=ChConfig.ItemSrcSign_TitleEff)
|
| | | djgPer = PlayerHJG.GetTitleEffInfo(curPlayer, PlayerHJG.TitleEff_DingjungeQuickPer)[0]
|
| | | for itemID, itemCount in quickAwardList:
|
| | | awardItemList.append([itemID, itemCount])
|
| | | if djgPer:
|
| | | itemCountEx = int(math.ceil(itemCount * djgPer / 100.0))
|
| | | awardItemList.append([itemID, itemCountEx, isBind])
|
| | | ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["Dingjunge", False, {}])
|
| | | return
|
| | |
|
| | |
| | | import PlayerSuccess
|
| | | import ShareDefine
|
| | | import PlayerTask
|
| | | import PlayerHJG
|
| | | import ChConfig
|
| | |
|
| | | def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagType, tagID, valueList):
|
| | |
| | | itemList += [[exItemID, exItemCount, isBind]] # 标记是红颜效果额外获得的
|
| | | GameWorld.DebugLog("红颜额外增加扫荡物品奖励: exItemID=%s, exItemCount=%s, itemList=%s" % (exItemID, exItemCount, itemList))
|
| | |
|
| | | isBind = ItemControler.GetIsBindValue(srcSign=ChConfig.ItemSrcSign_TitleEff)
|
| | | exItemCount, exItemID = PlayerHJG.GetTitleEffInfo(curPlayer, PlayerHJG.TitleEff_FBZhanchuiItemEx) # 扫荡额外物品奖励
|
| | | if exItemCount and exItemID:
|
| | | itemList += [[exItemID, exItemCount, isBind]] # 标记是称号效果额外获得的
|
| | | GameWorld.DebugLog("称号额外增加扫荡物品奖励: exItemID=%s, exItemCount=%s, itemList=%s" % (exItemID, exItemCount, itemList))
|
| | | |
| | | ItemControler.GivePlayerItemOrMail(curPlayer, itemList, event=["Zhanchui", False, {}], isNotifyAward=False)
|
| | |
|
| | | isPass = 1
|
| | |
| | | ("list", "BookActAwardMoney", 0),
|
| | | ("list", "DismissReturnItems", 0),
|
| | | ("list", "BeautyReturnItems", 0),
|
| | | ("list", "TitleReturnItems", 0),
|
| | | ("list", "RecommendAwardMoney", 0),
|
| | | ),
|
| | |
|
| | |
| | | ("list", "AttrIDList", 0),
|
| | | ("list", "InitAttrValueList", 0),
|
| | | ("list", "AttrPerStarAddList", 0),
|
| | | ("BYTE", "EffType", 0),
|
| | | ("DWORD", "EffTypeValue", 0),
|
| | | ("DWORD", "EffValue", 0),
|
| | | ("DWORD", "EffPerStarAdd", 0),
|
| | | ),
|
| | |
|
| | | "Model":(
|
| | |
| | | def GetBookActAwardMoney(self): return self.attrTuple[7] # 图鉴激活奖励货币 类型|值 list
|
| | | def GetDismissReturnItems(self): return self.attrTuple[8] # 遣散每星返还道具 [[物品ID,个数], ...] list
|
| | | def GetBeautyReturnItems(self): return self.attrTuple[9] # 红颜效果返还道具基数 [[物品ID,个数], ...] list
|
| | | def GetRecommendAwardMoney(self): return self.attrTuple[10] # 阵容推荐激活奖励货币 类型|值 list |
| | | def GetTitleReturnItems(self): return self.attrTuple[10] # 称号效果返还道具基数 [[物品ID,个数], ...] list
|
| | | def GetRecommendAwardMoney(self): return self.attrTuple[11] # 阵容推荐激活奖励货币 类型|值 list |
| | | |
| | | # 武将品质突破表 |
| | | class IPY_HeroQualityBreak(): |
| | |
| | | def GetAttrIDList(self): return self.attrTuple[7] # 属性ID列表 list
|
| | | def GetInitAttrValueList(self): return self.attrTuple[8] # 初始属性值列表 list
|
| | | def GetAttrPerStarAddList(self): return self.attrTuple[9] # 每星加成值列表 list |
| | | def GetEffType(self): return self.attrTuple[10] # 天赋效果类型 BYTE
|
| | | def GetEffTypeValue(self): return self.attrTuple[11] # 效果类型值 DWORD
|
| | | def GetEffValue(self): return self.attrTuple[12] # 效果初始值 DWORD
|
| | | def GetEffPerStarAdd(self): return self.attrTuple[13] # 效果每星成长 DWORD |
| | | |
| | | # 形象表 |
| | | class IPY_Model(): |
| | |
| | | # 保存计算值
|
| | | GameWorld.DebugLog("红颜属性: %s" % attrDict, playerID)
|
| | | GameWorld.DebugLog("红颜效果: %s" % effTypeDict, playerID)
|
| | | PyGameData.g_beautyEffTypeDict[playerID] = effTypeDict
|
| | | PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_Beauty, attrDict)
|
| | | PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_Beauty, attrDict, effTypeDict)
|
| | | return
|
| | |
|
| | | def GetBeautyEffInfo(curPlayer, effType):
|
| | | ## 获取红颜特殊效果信息
|
| | | # @return: effValue, effTypeValue
|
| | | effTypeDict = PyGameData.g_beautyEffTypeDict.get(curPlayer.GetPlayerID(), {})
|
| | | effTypeDict = PlayerOnline.GetOnlinePlayer(curPlayer).GetCalcSpecInfo(ChConfig.Def_CalcAttr_Beauty)
|
| | | return effTypeDict.get(effType, [0, 0])
|
| | |
|
| | | def SyncBeautyInfo(curPlayer, beautyIDList=None, skinIDList=None):
|
| | |
| | | import PlayerHero
|
| | | import PlayerTree
|
| | | import PlayerLLMJ
|
| | | import PlayerHJG
|
| | | import DBDataMgr
|
| | |
|
| | | import datetime
|
| | |
| | | PlayerLLMJ.PlayerOnDay(curPlayer)
|
| | | FunctionNPCCommon.ShopItemOnDay(curPlayer)
|
| | | OpenServerActivity.PlayerOnDay(curPlayer)
|
| | | PlayerHJG.PlayerOnDay(curPlayer)
|
| | |
|
| | | # 特殊时间点X点过天
|
| | | #elif onEventType == ShareDefine.Def_OnEventTypeEx:
|
| | |
| | | import NetPackCommon
|
| | | import PlayerFace
|
| | | import PlayerHero
|
| | | import PlayerMail
|
| | | import ChConfig
|
| | |
|
| | | import random
|
| | |
| | | HJGType_FacePic = 3
|
| | | HJGType_ChatBox = 4
|
| | | HJGType_Title = 5
|
| | |
|
| | | # 称号效果类型
|
| | | (
|
| | | TitleEff_FBZhanchuiItemEx, # 1.白骨盈野扫荡额外物品奖励 TypeValue:物品ID Value:数量
|
| | | TitleEff_DayGold, # 2.每天俸禄元宝数量 Value:元宝数量
|
| | | TitleEff_HeroItemExPer, # 3.遣散/吞噬武将额外返还 Value:百分比
|
| | | TitleEff_DingjungeQuickPer, # 4. 定军阁速战获取奖励提高百分比 Value:百分比
|
| | | ) = range(1, 1 + 4)
|
| | |
|
| | | def OnPlayerLogin(curPlayer):
|
| | | SyncTitleInfo(curPlayer)
|
| | |
| | | OnMinuteModel(curPlayer)
|
| | | PlayerFace.OnMinute(curPlayer)
|
| | | PlayerChatBox.OnMinute(curPlayer)
|
| | | return
|
| | |
|
| | | def PlayerOnDay(curPlayer):
|
| | | OnDayTitle(curPlayer)
|
| | | return
|
| | |
|
| | | #// B2 25 幻境阁操作 #tagCSHJGOP
|
| | |
| | |
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | attrDict = {}
|
| | | titleEffDict = {}
|
| | |
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | # 称号
|
| | |
| | | perStarAdd = perStarAddList[aIndex] if len(perStarAddList) > aIndex else 0
|
| | | attrValue = initValue + perStarAdd * star
|
| | | attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
|
| | | |
| | | # 特殊效果
|
| | | effType = ipyData.GetEffType()
|
| | | effTypeValue = ipyData.GetEffTypeValue()
|
| | | effValue = ipyData.GetEffValue()
|
| | | effPerStarAdd = ipyData.GetEffPerStarAdd()
|
| | | if effType:
|
| | | effValue = effValue + effPerStarAdd * star
|
| | | if effType not in titleEffDict:
|
| | | titleEffDict[effType] = [0, effTypeValue]
|
| | | titleEffDict[effType][0] = titleEffDict[effType][0] + effValue
|
| | | #GameWorld.DebugLog("称号特殊效果: titleID=%s,effType=%s,star=%s,%s" % (titleID, effType, star, titleEffDict), playerID)
|
| | | |
| | | #GameWorld.DebugLog("幻境阁累加称号,总属性: %s" % attrDict)
|
| | |
|
| | | # 形象
|
| | |
| | | # 保存计算值
|
| | | GameWorld.DebugLog("幻境阁属性: %s" % attrDict, playerID)
|
| | | PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcAttr(ChConfig.Def_CalcAttr_HJG, attrDict)
|
| | | PlayerOnline.GetOnlinePlayer(curPlayer).SetCalcSpecInfo("Title", titleEffDict)
|
| | | return
|
| | |
|
| | | ## ----------------------------------------- 称号 --------------------------------------------------
|
| | |
|
| | | def GetTitleEffInfo(curPlayer, effType):
|
| | | ## 获取称号特殊效果信息
|
| | | # @return: effValue, effTypeValue
|
| | | titleEffDict = PlayerOnline.GetOnlinePlayer(curPlayer).GetCalcSpecInfo("Title")
|
| | | return titleEffDict.get(effType, [0, 0])
|
| | |
|
| | | def __GiveTitleGoldSalary(curPlayer, ipyData):
|
| | | ## 给称号每日俸禄 - 邮件发放
|
| | | |
| | | if not ipyData:
|
| | | return
|
| | | |
| | | titleID = ipyData.GetTitleID()
|
| | | effType = ipyData.GetEffType()
|
| | | if effType != TitleEff_DayGold:
|
| | | #GameWorld.DebugLog("非俸禄效果称号不处理! titleID=%s" % titleID)
|
| | | return
|
| | | |
| | | if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TitleState, titleID):
|
| | | #GameWorld.DebugLog("未激活俸禄效果称号不处理! titleID=%s" % titleID)
|
| | | return
|
| | | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | |
| | | curTime = int(time.time())
|
| | | lastRewardTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TitleGoldRewardTime % titleID)
|
| | | if not lastRewardTime:
|
| | | lastRewardTime = curTime - 3600 * 24 # 未发放过的设置为昨天,让今天也可以发放
|
| | | #GameWorld.DebugLog("从未发放过该称号俸禄")
|
| | | |
| | | endTime = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TitleEndTime % titleID)
|
| | | calcTime = curTime if (not endTime or endTime > curTime) else endTime
|
| | | |
| | | rewardDays = GameWorld.GetDiff_Day(calcTime, lastRewardTime)
|
| | | GameWorld.DebugLog("俸禄称号可发放天数: %s,titleID=%s,lastRewardTime=%s,calcTime=%s,endTime=%s" |
| | | % (rewardDays, titleID, GameWorld.ChangeTimeNumToStr(lastRewardTime), GameWorld.ChangeTimeNumToStr(calcTime), |
| | | GameWorld.ChangeTimeNumToStr(endTime)), playerID)
|
| | | if rewardDays <= 0:
|
| | | #GameWorld.DebugLog("不用发放称号每日俸禄: titleID=%s" % (titleID), playerID)
|
| | | return
|
| | | |
| | | moneyItemID = ItemCommon.GetMoneyItemID(IPY_GameWorld.TYPE_Price_Gold_Money)
|
| | | if not moneyItemID:
|
| | | return
|
| | | |
| | | star = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TitleStar % titleID)
|
| | | effValue = ipyData.GetEffValue()
|
| | | effPerStarAdd = ipyData.GetEffPerStarAdd()
|
| | | |
| | | goldOneDay = effValue + effPerStarAdd * star
|
| | | giveGold = int(goldOneDay * rewardDays)
|
| | | |
| | | mailItemList = [[moneyItemID, giveGold]]
|
| | | GameWorld.DebugLog("邮件发放称号每日俸禄! titleID=%s,rewardDays=%s,goldOneDay=%s, %s" % (titleID, rewardDays, goldOneDay, mailItemList), playerID)
|
| | | updRewardTime = curTime
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleGoldRewardTime % titleID, updRewardTime)
|
| | | if rewardDays > 1:
|
| | | PlayerMail.SendMailByKey("TitleGoldSalaryDays", playerID, mailItemList, [titleID, rewardDays], limitDays=3)
|
| | | else:
|
| | | PlayerMail.SendMailByKey("TitleGoldSalaryDay", playerID, mailItemList, [titleID], limitDays=3)
|
| | | return
|
| | |
|
| | | def OnDayTitle(curPlayer):
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in range(ipyDataMgr.GetTitleCount()):
|
| | | ipyData = ipyDataMgr.GetTitleByIndex(index)
|
| | | titleID = ipyData.GetTitleID()
|
| | | if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TitleState, titleID):
|
| | | # 未激活的不处理
|
| | | continue
|
| | | __GiveTitleGoldSalary(curPlayer, ipyData) # 过天发放
|
| | | return
|
| | |
|
| | | def OnMinuteTitle(curPlayer):
|
| | | curTime = int(time.time())
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleEndTime % titleID, updEndTime)
|
| | | RefreshHJGAttr(curPlayer)
|
| | | SyncTitleInfo(curPlayer, [titleID])
|
| | | __GiveTitleGoldSalary(curPlayer, ipyData) # 激活发放
|
| | | return True
|
| | |
|
| | | def DelTitle(curPlayer, titleID, isRefreshAttr=True, notifyMail=""):
|
| | |
| | | if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_PDict_TitleState, titleID):
|
| | | return
|
| | | GameWorld.Log("删除称号: titleID=%s,notifyMail=%s" % (titleID, notifyMail), playerID)
|
| | | __GiveTitleGoldSalary(curPlayer, ipyData) # 过期补发
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_TitleState, titleID, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleEndTime % titleID, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleGoldRewardTime % titleID, 0)
|
| | | # 星级不重置,重新激活后再次生效
|
| | |
|
| | | if PlayerControl.GetTitleID(curPlayer) == titleID:
|
| | |
| | | import PlayerPreset
|
| | | import PlayerBeauty
|
| | | import PlayerTask
|
| | | import PlayerHJG
|
| | | import GameWorld
|
| | | import ChConfig
|
| | |
|
| | | import random
|
| | | import math
|
| | |
|
| | | def PlayerOnDay(curPlayer):
|
| | | if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HeroAwakeRebirthCnt):
|
| | |
| | | def __calcHeroQualityReturnItemEx(curPlayer, qualityIpyData, returnItemExDict):
|
| | | ## 其他功能额外返还
|
| | |
|
| | | # 红颜特殊效果
|
| | | # 红颜特殊效果: 遣散/吞噬额外返还百分比
|
| | | beautyReturnItems = qualityIpyData.GetBeautyReturnItems()
|
| | | if beautyReturnItems:
|
| | | isBind = ItemControler.GetIsBindValue(srcSign=ChConfig.ItemSrcSign_BeautyEff)
|
| | | retPer = PlayerBeauty.GetBeautyEffInfo(curPlayer, PlayerBeauty.EffType_HeroItemExPer)[0] # 红颜遣散/吞噬额外返还百分比
|
| | | retPer = PlayerBeauty.GetBeautyEffInfo(curPlayer, PlayerBeauty.EffType_HeroItemExPer)[0]
|
| | | for itemID, itemCount in beautyReturnItems:
|
| | | if not retPer:
|
| | | break
|
| | | key = (itemID, isBind)
|
| | | retCnt = max(1, int(round(itemCount * retPer / 100.0)))
|
| | | retCnt = max(1, int(math.ceil(itemCount * retPer / 100.0)))
|
| | | returnItemExDict[key] = returnItemExDict.get(key, 0) + retCnt
|
| | | GameWorld.DebugLog(" 红颜返还: retPer=%s,%s,总%s" % (retPer, beautyReturnItems, returnItemExDict))
|
| | |
|
| | | # 称号特殊效果
|
| | | # 称号特殊效果: 遣散/吞噬额外返还百分比
|
| | | titleReturnItems = qualityIpyData.GetTitleReturnItems()
|
| | | if titleReturnItems:
|
| | | isBind = ItemControler.GetIsBindValue(srcSign=ChConfig.ItemSrcSign_TitleEff)
|
| | | retPer = PlayerHJG.GetTitleEffInfo(curPlayer, PlayerHJG.TitleEff_HeroItemExPer)[0]
|
| | | for itemID, itemCount in titleReturnItems:
|
| | | if not retPer:
|
| | | break
|
| | | key = (itemID, isBind)
|
| | | retCnt = max(1, int(math.ceil(itemCount * retPer / 100.0)))
|
| | | returnItemExDict[key] = returnItemExDict.get(key, 0) + retCnt
|
| | | GameWorld.DebugLog(" 称号返还: retPer=%s,%s,总%s" % (retPer, titleReturnItems, returnItemExDict))
|
| | |
|
| | | return
|
| | |
|
| | |
| | | def GetCalcSpecInfo(self, calcIndex, presetID=0):
|
| | | calcKey = (calcIndex, presetID) if presetID else calcIndex
|
| | | return self._calcSpecEffDict.get(calcKey, {})
|
| | | def SetCalcSpecInfo(self, calcKey, specEffInfo, presetID=0):
|
| | | # @param calcKey: 与calcIndex公用,只是使用其他自定义key,一般用于同个属性功能点,但是又需要区分不同的子功能点时可用
|
| | | calcKey = (calcKey, presetID) if presetID else calcKey
|
| | | self._calcSpecEffDict[calcKey] = specEffInfo
|
| | | return
|
| | | def GetCalcAttr(self, calcIndex, presetID=0):
|
| | | calcKey = (calcIndex, presetID) if presetID else calcIndex
|
| | | return self._calcAttrDict.get(calcKey, {})
|
| | |
| | | g_arenaPlayerMatchDict = {} # 本服竞技场玩家匹配记录缓存 {playerID:[tagPlayerID, ...], ...}
|
| | | g_qunyingPlayerMatchDict = {} # 群英榜玩家匹配记录缓存,该功能允许重复的机器人ID,所以记录匹配名次 {playerID:[rank, ...], ...}
|
| | |
|
| | | g_beautyEffTypeDict = {} # 红颜特殊效果缓存 {playerID:{effType:[effValue, effTypeValue], ...}, ...}
|
| | |
|
| | | g_mapIDTxtInfo = {} # MapID.txt 加载的信息
|
| | | g_realmDiffPlayerDict = {} # 境界难度玩家信息 {realm:[playerID, ...], ...}
|
| | | g_realmDiffNPCRefresh = {} # {(lineID, realm):{refreshID:tagNPCRefresh, ...}}
|