From 8d1a34c156b363d16b979f88909ece9e44771c74 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 20 二月 2025 20:16:43 +0800 Subject: [PATCH] 10361 【越南】【英语】【BT】【GM】【砍树】仙匠大会 - 服务端(修复活动显示等级限制通知错误bug;) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py | 280 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 177 insertions(+), 103 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py index d89f323..cd12da0 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldMineArea.py @@ -15,6 +15,7 @@ #"""Version = 2024-03-07 19:30""" #------------------------------------------------------------------------------- +import ChConfig import GameWorld import NetPackCommon import PyDataManager @@ -165,7 +166,6 @@ self.viewAreaPlayerIDDict = {} # 正在查看某个福地中的玩家ID {areaPlayerID:[viewPlayerID, ...], ...} self.neighborIDListDict = {} # 玩家周围福地玩家ID列表 {playerID:[playerID, ...], ...} - self.socialIDListDict = {} # 玩家有关系道友福地玩家ID列表 {playerID:[playerID, ...], ...} playerID列表倒序 return def AddViewAreaPlayerID(self, viewPlayerID, areaPlayerID): @@ -436,7 +436,7 @@ robWorkerCount = mineItemData.RobWorkerCount if not curWorkerCount and not robWorkerCount: return curPos - moveSpeed = getattr(mineItemData, MineItemAttr_MoveSpeed) + moveSpeed = getattr(mineItemData, MineItemAttr_MoveSpeed, 0) if not moveSpeed: return curPos passSeconds = curTime - mineItemData.UpdTime @@ -530,6 +530,9 @@ battleRatio = workerBattleRatioList[len(workerBattleRatioList) - 1] if batWorkerCount > len(workerBattleRatioList) else workerBattleRatioList[batWorkerCount - 1] needSeconds = int(dist * itemWeight * baseTime * workRatio * battleRatio) # 还需工作时长,秒 + if needSeconds <= 0: + return 0, 0 + moveSpeed = dist / float(needSeconds) # 移动速度 x格/秒 needHms = "%02d:%02d:%02d" % (needSeconds / 3600, needSeconds % 3600 / 60, needSeconds % 60) @@ -556,7 +559,7 @@ GameWorld.Log("福地系统定时刷新! %s" % str(curHourMinute)) mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager() for playerID in mineItemMgr.playerMineItemDict.keys(): - __DoMineItemRefresh(playerID, isSuper=True) + __DoMineItemRefresh(playerID, isSys=True) return def OnMineItemTimeProcess(curTime, tick): @@ -633,7 +636,7 @@ while doCount > 0 and allMineItemByEndTimeList: doCount -= 1 mineItemData = allMineItemByEndTimeList[index] - endTime = getattr(mineItemData, MineItemAttr_EndTime) + endTime = getattr(mineItemData, MineItemAttr_EndTime, 0) if curTime < endTime: break @@ -698,6 +701,8 @@ AddMineItemRecord(awardPlayerID, MineAreaRecordType_Pull, areaPlayerID, mineID, curTime) if areaPlayerID != awardPlayerID: AddMineItemRecord(areaPlayerID, MineAreaRecordType_BeRobbed, awardPlayerID, mineID, curTime) + DecRobValue(awardPlayerID, areaPlayerID, 1) + AddRobValue(areaPlayerID, awardPlayerID, 1) # 被抢的 if IpyGameDataPY.GetFuncCfg("MineAreaSysRefresh", 3) > 0: @@ -733,79 +738,117 @@ recordMgr = PyDataManager.GetDBPyMineAreaRecordManager() recordList = recordMgr.AddPlayerRecord(recordData) - # 被人抢,更新关系福地ID记录 - if recordData.RecordType == MineAreaRecordType_BeRobbed: - __DoUpdSocialPlayerIDList(playerID) - if len(recordList) > Def_RecordMax: recordList.pop(0) # 删除最早一条 return -def __DoUpdSocialPlayerIDList(playerID): - ## 更新有关系的道友ID列表 - recordMgr = PyDataManager.GetDBPyMineAreaRecordManager() - recordList = recordMgr.playerMineRecordListDict.get(playerID, []) - - socialAreaMax = IpyGameDataPY.GetFuncCfg("MineAreaRob", 1) # 道友福地个数 - socialIDList = [] # 反序 - for recData in recordList[::-1]: - if recData.RecordType != MineAreaRecordType_BeRobbed: - ## 优先保留被抢记录关系玩家 +def DecRobValue(playerID, tagPlayerID, decValue): + ## 减少敌对值 + playerRecMgr = PyDataManager.GetDBPlayerRecDataManager() + robRecData = playerRecMgr.GetPlayerRecDataFirst(ShareDefine.Def_PlayerRecType_MineAreaRecord, playerID, False) + if not robRecData: + GameWorld.DebugLog("没有敌对福地记录!", playerID) + return 0 + # 抢劫的人减少与对方敌对值 + setRobValue = 0 + robValueList = robRecData.GetUserDataByKey(ChConfig.Def_RecDataKey_RobValueList, []) + GameWorld.DebugLog("减少与对方敌对值: tagPlayerID=%s,decValue=%s" % (tagPlayerID, decValue), playerID) + GameWorld.DebugLog(" bef robValueList=%s" % robValueList, playerID) + for index, robValueInfo in enumerate(robValueList): + robValue, pID = robValueInfo + if pID != tagPlayerID: continue - if recData.TagPlayerID not in socialIDList: - socialIDList.append(recData.TagPlayerID) - if len(socialIDList) >= socialAreaMax: - break - - mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager() - socialIDListBef = mineItemMgr.socialIDListDict.get(playerID, []) - # 优先使用历史记录 - if len(socialIDList) < socialAreaMax: - for socialIDBef in socialIDListBef: - if socialIDBef not in socialIDList: - socialIDList.append(socialIDBef) - if len(socialIDList) >= socialAreaMax: - break - - # 优先随机真人 - if len(socialIDList) < socialAreaMax and mineItemMgr.realAreaPlayerIDList: - random.shuffle(mineItemMgr.realAreaPlayerIDList) - for areaPlayerID in mineItemMgr.realAreaPlayerIDList: - if areaPlayerID not in socialIDList and areaPlayerID != playerID: - socialIDList.append(areaPlayerID) - if len(socialIDList) >= socialAreaMax: - break - - # 不够补充假人 - if len(socialIDList) < socialAreaMax and mineItemMgr.fackAreaPlayerIDList: - random.shuffle(mineItemMgr.fackAreaPlayerIDList) - for areaPlayerID in mineItemMgr.fackAreaPlayerIDList: - if areaPlayerID not in socialIDList: - socialIDList.append(areaPlayerID) - if len(socialIDList) >= socialAreaMax: - break - - mineItemMgr.socialIDListDict[playerID] = socialIDList - return socialIDList + robValue -= decValue + GameWorld.DebugLog(" tagPlayerID=%s,更新敌对值=%s" % (tagPlayerID, robValue), playerID) + if robValue <= 0: + robValueList.pop(index) + else: + robValueList[index] = [robValue, pID] + setRobValue = robValue + robRecData.SetUserDataByKey(ChConfig.Def_RecDataKey_RobValueList, robValueList, True) + break + + robValueList = robRecData.GetUserDataByKey(ChConfig.Def_RecDataKey_RobValueList, []) + GameWorld.DebugLog(" aft robValueList=%s" % robValueList, playerID) + return setRobValue + +def AddRobValue(playerID, tagPlayerID, addValue): + ## 被抢的人增加与对方敌对值,并置顶 + + if playerID <= Def_FakeAreaCount: + return 0 + + GameWorld.DebugLog("增加与对方敌对值: tagPlayerID=%s,addValue=%s" % (tagPlayerID, addValue), playerID) + setRobValue = 0 + playerRecMgr = PyDataManager.GetDBPlayerRecDataManager() + robRecData = playerRecMgr.GetPlayerRecDataFirst(ShareDefine.Def_PlayerRecType_MineAreaRecord, playerID, True) + robValueList = robRecData.GetUserDataByKey(ChConfig.Def_RecDataKey_RobValueList, []) + GameWorld.DebugLog(" bef robValueList=%s" % robValueList, playerID) + for index, robValueInfo in enumerate(robValueList): + robValue, pID = robValueInfo + if pID != tagPlayerID: + continue + robValueList.pop(index) + setRobValue = robValue + break + setRobValue += addValue + GameWorld.DebugLog(" tagPlayerID=%s,更新敌对值=%s" % (tagPlayerID, setRobValue), playerID) + + robValueList.insert(0, [setRobValue, tagPlayerID]) + robRecData.SetUserDataByKey(ChConfig.Def_RecDataKey_RobValueList, robValueList) + + robValueList = robRecData.GetUserDataByKey(ChConfig.Def_RecDataKey_RobValueList, []) + GameWorld.DebugLog(" aft robValueList=%s" % robValueList, playerID) + return setRobValue + +def GetRobPlayerIDList(playerID): + ## 获取敌对玩家ID列表 + if playerID <= Def_FakeAreaCount: + return [] + playerRecMgr = PyDataManager.GetDBPlayerRecDataManager() + robRecData = playerRecMgr.GetPlayerRecDataFirst(ShareDefine.Def_PlayerRecType_MineAreaRecord, playerID, False) + if not robRecData: + return [] + robIDList = [] + rPlayerRobValueList = robRecData.GetUserDataByKey(ChConfig.Def_RecDataKey_RobValueList, []) + for robValueInfo in rPlayerRobValueList: + _, pID = robValueInfo + robIDList.append(pID) + return robIDList + +def GetRobValueDict(playerID): + ## 获取敌对玩家敌对值字典 + if playerID <= Def_FakeAreaCount: + return {} + playerRecMgr = PyDataManager.GetDBPlayerRecDataManager() + robRecData = playerRecMgr.GetPlayerRecDataFirst(ShareDefine.Def_PlayerRecType_MineAreaRecord, playerID, False) + if not robRecData: + return {} + robValueDict = {} + rPlayerRobValueList = robRecData.GetUserDataByKey(ChConfig.Def_RecDataKey_RobValueList, []) + for robValueInfo in rPlayerRobValueList: + robValue, pID = robValueInfo + robValueDict[pID] = robValue + return robValueDict def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList): - # 摇人帮助请求 - if funcLineID == 0: + # 摇人帮助请求、自己驱赶请求 + if funcLineID == 0 or funcLineID == 1: return __OnMineHelpRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList) return def OnTurnFightOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList): - # 摇人帮助结果 - if funcLineID == 0: + # 摇人帮助结果、自己驱赶结果 + if funcLineID == 0 or funcLineID == 1: return __OnMineHelpOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList) return def __OnMineHelpRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList): - # 摇人帮助请求 + # 摇人帮助请求、自己驱赶请求 playerID = curPlayer.GetPlayerID() if not valueList or len(valueList) < 2: GameWorld.DebugLog("没有指定valueList!", playerID) @@ -813,10 +856,15 @@ areaPlayerID = valueList[0] itemIndex = valueList[1] - if playerID == areaPlayerID: - GameWorld.DebugLog("不能帮助自己!", playerID) - return - + if funcLineID == 0: + if playerID == areaPlayerID: + GameWorld.DebugLog("不能帮助自己! areaPlayerID=%s" % areaPlayerID, playerID) + return + elif funcLineID == 1: + if playerID != areaPlayerID: + GameWorld.DebugLog("不是自己的福地,无法自己驱赶! areaPlayerID=%s" % areaPlayerID, playerID) + return + mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager() mineItemData = mineItemMgr.GetMineItem(areaPlayerID, itemIndex) mineID = mineItemData.MineID @@ -832,7 +880,7 @@ return tick = GameWorld.GetGameWorld().GetTick() - helpTick = getattr(mineItemData, MineItemAttr_HelpTick) + helpTick = getattr(mineItemData, MineItemAttr_HelpTick, 0) if helpTick and tick - helpTick < 10000: GameWorld.DebugLog("已经有其他人在帮助中!", playerID) return @@ -841,7 +889,7 @@ return True def __OnMineHelpOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet, awardItemList): - # 摇人帮助结果 + # 摇人帮助结果、自己驱赶结果 playerID = curPlayer.GetPlayerID() helpPlayerName = curPlayer.GetName() @@ -861,19 +909,27 @@ robPlayerID = mineItemData.RobPlayerID # 赶走抢夺者 if robPlayerID and robPlayerID == tagPlayerID: - __DoCancelPull(tagPlayerID, areaPlayerID, itemIndex) + __DoCancelPull(tagPlayerID, areaPlayerID, itemIndex, "out") - robCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(tagPlayerID)) - robPlayerName = robCacheDict.get("Name", "") + # 帮助的发奖 + if funcLineID == 0: + robCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(tagPlayerID)) + robPlayerName = robCacheDict.get("Name", "") + + areaCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(areaPlayerID)) + areaPlayerName = areaCacheDict.get("Name", "") + + # 邮件发放奖励 + PlayerCompensation.SendMailByKey("MineHelpAward", [playerID], awardItemList, [areaPlayerName, robPlayerName]) + + # 通知福地玩家 + PlayerCompensation.SendMailByKey("MineHelpReqOK", [areaPlayerID], [], [helpPlayerName, robPlayerName]) + + # 自己驱赶的 + elif funcLineID == 1: + # 自己驱赶的,不用再通知地图,直接return + return - areaCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(areaPlayerID)) - areaPlayerName = areaCacheDict.get("Name", "") - - # 邮件发放奖励 - PlayerCompensation.SendMailByKey("MineHelpAward", [playerID], awardItemList, [areaPlayerName, robPlayerName]) - - # 通知福地玩家 - PlayerCompensation.SendMailByKey("MineHelpReqOK", [areaPlayerID], [], [helpPlayerName, robPlayerName]) return True def MapServer_MineArea(curPlayer, msgList): @@ -888,16 +944,22 @@ # 拉物品 if msgType == "Pull": - __DoPullItem(playerID, curPlayer, dataMsg) + ret = __DoPullItem(playerID, curPlayer, dataMsg) # 刷新福地物品 elif msgType == "MineItemRefresh": playerID, isSuper = dataMsg - __DoMineItemRefresh(playerID, curPlayer, isSuper=isSuper) + __DoMineItemRefresh(playerID, curPlayer, isSuper=isSuper, queryType=99, queryValue=isSuper) # 地图结算奖励OK elif msgType == "MineAreaAwardGetOK": __DoMineAreaAwardGetOK(curPlayer, dataMsg) + + # 刷新周围玩家 + elif msgType == "MineRobRefresh": + tick = GameWorld.GetGameWorld().GetTick() + queryType, queryValue = 3, 1 + SyncNeighborAreaInfo(curPlayer, tick, queryType, queryValue) if ret == None: return @@ -910,7 +972,7 @@ return if workerCount <= 0: if not isPreview: - __DoCancelPull(playerID, areaPlayerID, itemIndex) + __DoCancelPull(playerID, areaPlayerID, itemIndex, "cancel") return GameWorld.DebugLog("请求福地拉物品! areaPlayerID=%s,itemIndex=%s,workerCount=%s,workerState=%s,workerTotal=%s,isPreview=%s" % (areaPlayerID, itemIndex, workerCount, workerState, workerTotal, isPreview), playerID) @@ -1001,9 +1063,9 @@ __RefreshMineItemSpeed(mineItemData, True) SyncMineAreaItemInfo(areaPlayerID, [itemIndex], notifyPlayerIDListEx) - return + return [areaPlayerID] -def __DoCancelPull(playerID, areaPlayerID, itemIndex): +def __DoCancelPull(playerID, areaPlayerID, itemIndex, reason=""): ## 取消拉取 mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager() mineItemData = mineItemMgr.GetMineItem(areaPlayerID, itemIndex) @@ -1038,9 +1100,12 @@ __RefreshMineItemSpeed(mineItemData, True) SyncMineAreaItemInfo(areaPlayerID, [itemIndex], notifyPlayerIDListEx) + curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) + if curPlayer: + MapServer_QueryPlayerResult(curPlayer, "MineAreaCancelPull", [areaPlayerID, reason]) return -def __DoMineItemRefresh(areaPlayerID, areaPlayer=None, isSys=False, isSuper=False, isNotify=True, refreshIndexList=None, setPosition=None, setItemLV=None, setMineID=None): +def __DoMineItemRefresh(areaPlayerID, areaPlayer=None, isSys=False, isSuper=False, isNotify=True, refreshIndexList=None, setPosition=None, setItemLV=None, setMineID=None, queryType=0, queryValue=0): '''刷新福地物品 @param areaPlayerID: 福地玩家ID,可能是假人 @param areaPlayer: 福地玩家实例 @@ -1139,7 +1204,7 @@ GameWorld.DebugLog(" index=%s,randMineID=%s,position=%s,mineType=%s,itemLV=%s" % (index, randMineID, position, mineType, itemLV), areaPlayerID) if isNotify and refreshDict: - SyncMineAreaItemInfo(areaPlayerID, refreshDict.keys()) + SyncMineAreaItemInfo(areaPlayerID, refreshDict.keys(), queryType=queryType, queryValue=queryValue) return refreshDict #// B0 33 福地查看 #tagCGMineAreaView @@ -1176,6 +1241,7 @@ # 查看周围随机福地列表 elif queryType == 3: + queryValue = 0 # GameServer默认只给查询,刷新列表改为从MapServer发起 B0 31 福地物品刷新 #tagCMMineItemRefresh 请求 SyncNeighborAreaInfo(curPlayer, tick, queryType, queryValue) # 退出他人福地 @@ -1188,7 +1254,7 @@ return -def SyncMineAreaItemInfo(areaPlayerID, mineIndexList, notifyPlayerIDListEx=None): +def SyncMineAreaItemInfo(areaPlayerID, mineIndexList, notifyPlayerIDListEx=None, queryType=0, queryValue=0): '''某个福地物品变更时同步,会同步给相关玩家 @param areaPlayerID: 福地玩家ID,可能是假人 @param mineIndexList: 需要同步的矿物索引 @@ -1205,9 +1271,9 @@ notifyPlayerIDList.append(areaPlayerID) # 列表中 - for playerID, socialIDList in mineItemMgr.socialIDListDict.items(): - if areaPlayerID in socialIDList: - notifyPlayerIDList.append(playerID) + robPlayerIDList = GetRobPlayerIDList(areaPlayerID) + if robPlayerIDList: + notifyPlayerIDList += robPlayerIDList for playerID, neighborIDList in mineItemMgr.neighborIDListDict.items(): if areaPlayerID in neighborIDList: notifyPlayerIDList.append(playerID) @@ -1229,7 +1295,7 @@ if not notifyPlayerIDList: return - clientPack = __GetMineAreaInfoPack([[areaPlayerID, mineIndexList]]) + clientPack = __GetMineAreaInfoPack([[areaPlayerID, mineIndexList]], queryType=queryType, queryValue=queryValue) # 去重同步 playerManager = GameWorld.GetPlayerManager() for playerID in set(notifyPlayerIDList): @@ -1244,16 +1310,12 @@ return def SyncSocialAreaInfo(curPlayer, queryType=0, queryValue=0): - ## 同步有关系的道友福地列表 + ## 同步有关系的道友福地列表 - 敌对列表 playerID = curPlayer.GetPlayerID() - mineItemMgr = PyDataManager.GetDBPyMineAreaItemManager() - if playerID in mineItemMgr.socialIDListDict: - socialIDList = mineItemMgr.socialIDListDict[playerID] - else: - socialIDList = __DoUpdSocialPlayerIDList(playerID) - + socialIDList = GetRobPlayerIDList(playerID) + robValueDict = GetRobValueDict(playerID) areaMineList = [[areaPlayerID, []] for areaPlayerID in socialIDList] - clientPack = __GetMineAreaInfoPack(areaMineList, queryType, queryValue) + clientPack = __GetMineAreaInfoPack(areaMineList, queryType, queryValue, robValueDict) NetPackCommon.SendFakePack(curPlayer, clientPack) return @@ -1286,9 +1348,14 @@ if neighborIDBef in areaPlayerIDList: areaPlayerIDList.remove(neighborIDBef) neighborCount = IpyGameDataPY.GetFuncCfg("MineAreaRob", 2) + realmLV = curPlayer.GetOfficialRank() + officialNeighborCountList = IpyGameDataPY.GetFuncEvalCfg("MineAreaRob2", 1) + for needRLV, nCount in officialNeighborCountList: + if realmLV >= needRLV: + neighborCount = nCount neighborIDList = areaPlayerIDList[:neighborCount] mineItemMgr.neighborIDListDict[playerID] = neighborIDList - GameWorld.DebugLog("刷新周围随机福地: %s" % neighborIDList, playerID) + GameWorld.DebugLog("刷新周围随机福地: realmLV=%s,neighborCount=%s,%s" % (realmLV, neighborCount, neighborIDList), playerID) areaMineList = [[areaPlayerID, []] for areaPlayerID in neighborIDList] clientPack = __GetMineAreaInfoPack(areaMineList, queryType, queryValue) @@ -1319,7 +1386,7 @@ NetPackCommon.SendFakePack(curPlayer, clientPack) return -def __GetMineAreaInfoPack(areaMineList, queryType=0, queryValue=0): +def __GetMineAreaInfoPack(areaMineList, queryType=0, queryValue=0, robValueDict=None): ''' 获取同步福地详细信息包 @param areaMineList: [[areaPlayerID, mineIndexList], ...] 按指定福地ID顺序列表获取,mineIndexList为空时同步该福地全部物品,否则只同步指定索引物品 ''' @@ -1334,8 +1401,11 @@ if areaPlayerID > Def_FakeAreaCount: cacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(areaPlayerID)) areaInfo.PlayerName = cacheDict.get("Name", "") - areaInfo.Face = cacheDict.get("Job", 0) - + areaInfo.Job = cacheDict.get("Job", 0) + areaInfo.Face = cacheDict.get("Face", 0) + areaInfo.FacePic = cacheDict.get("FacePic", 0) + areaInfo.RobValue = robValueDict.get(areaPlayerID, 0) if robValueDict else 0 # 敌对值,前端仅queryType为2时才更新敌对值 + areaInfo.MineItemList = [] if not mineIndexList: mineIndexList = range(IpyGameDataPY.GetFuncCfg("MineAreaBase", 1)) @@ -1348,16 +1418,18 @@ mineItem.UpdTime = mineItemData.UpdTime mineItem.Position = mineItemData.Position mineItem.PosLen = len(mineItem.Position) - mineItem.MoveSpeed = "%s" % getattr(mineItemData, MineItemAttr_MoveSpeed) + mineItem.MoveSpeed = "%s" % getattr(mineItemData, MineItemAttr_MoveSpeed, 0) mineItem.SpeedLen = len(mineItem.MoveSpeed) - mineItem.EndTime = getattr(mineItemData, MineItemAttr_EndTime) + mineItem.EndTime = getattr(mineItemData, MineItemAttr_EndTime, 0) mineItem.WorkerCount = mineItemData.WorkerCount mineItem.RobPlayerID = mineItemData.RobPlayerID mineItem.RobWorkerCount = mineItemData.RobWorkerCount if mineItemData.RobPlayerID: robCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(mineItemData.RobPlayerID)) mineItem.RobPlayerName = robCacheDict.get("Name", "") - mineItem.RobFace = robCacheDict.get("Job", 0) + mineItem.RobJob = robCacheDict.get("Job", 0) + mineItem.RobFace = robCacheDict.get("Face", 0) + mineItem.RobFacePic = robCacheDict.get("FacePic", 0) areaInfo.MineItemList.append(mineItem) areaInfo.MineCount = len(areaInfo.MineItemList) @@ -1381,7 +1453,9 @@ if playerID != recordInfo.TagPlayerID and recordInfo.TagPlayerID > Def_FakeAreaCount: tagCacheDict = PlayerViewCache.GetCachePropDataDict(PlayerViewCache.FindViewCache(recordInfo.TagPlayerID)) recordInfo.TagPlayerName = tagCacheDict.get("Name", "") - recordInfo.TagFace = tagCacheDict.get("Job", 0) + recordInfo.TagJob = tagCacheDict.get("Job", 0) + recordInfo.TagFace = tagCacheDict.get("Face", 0) + recordInfo.TagFacePic = tagCacheDict.get("FacePic", 0) clientPack.AreaRecordList.append(recordInfo) clientPack.RecordCount = len(clientPack.AreaRecordList) NetPackCommon.SendFakePack(curPlayer, clientPack) -- Gitblit v1.8.0