def findOutFighter(self,num=10,rowUser=None): '''跨服查找可攻城对象''' #print ' --- findOutFighter ---' try: if not rowUser: rowUser = self.getUserInfo(['UserCamp','UserLevel']) url = Gcore.loadCoreCfg('PlatformUrl') Post = {} Post['ServerId'] = Gcore.getServerId() Post['LOCKKEY'] = TokenDecode().makeLockKey() Post['FUNC'] ="FindUI.FindFighter" Post['PARAM'] ={ 'FromServerId':Gcore.getServerId(), 'UserCamp':rowUser['UserCamp'], 'UserLevel':rowUser['UserLevel'], 'GetNum':num, } url+='?MSG='+json.dumps(Post) #print 'findOutFighter>>',url req = urllib2.Request(url) f = urllib2.urlopen(req) response = f.read() lis = response.split('@.@') return json.loads(lis[1]) except: return []
def findOutFighter(self, num=10, rowUser=None): '''跨服查找可攻城对象''' #print ' --- findOutFighter ---' try: if not rowUser: rowUser = self.getUserInfo(['UserCamp', 'UserLevel']) url = Gcore.loadCoreCfg('PlatformUrl') Post = {} Post['ServerId'] = Gcore.getServerId() Post['LOCKKEY'] = TokenDecode().makeLockKey() Post['FUNC'] = "FindUI.FindFighter" Post['PARAM'] = { 'FromServerId': Gcore.getServerId(), 'UserCamp': rowUser['UserCamp'], 'UserLevel': rowUser['UserLevel'], 'GetNum': num, } url += '?MSG=' + json.dumps(Post) #print 'findOutFighter>>',url req = urllib2.Request(url) f = urllib2.urlopen(req) response = f.read() lis = response.split('@.@') return json.loads(lis[1]) except: return []
def checkListenKey(VK): from sgLib.core import Gcore SECRET_KEY = Gcore.loadCoreCfg('Encryption') mt = hashlib.md5() mt.update(SECRET_KEY) t = mt.hexdigest() mt = hashlib.md5() mt.update(t) t = mt.hexdigest() if VK != t: print VK, t return VK == t
def OpenInThisMonth(self): ''' 判断是否是本月开服 本月开服则返回开服的具体日 否则返回0 ''' ServerOpenTime = Gcore.loadCoreCfg('ServerOpenTime') ServerOpenTime = ServerOpenTime.split(' ')[0] #去掉开服日期的时分秒 ServerOpenTime = map(int, ServerOpenTime.split('-')) #将开服日期换成整数 now = datetime.datetime.now() if now.year == ServerOpenTime[0] and now.month == ServerOpenTime[1]: return ServerOpenTime[2] else: return 0
def checkListenKey(VK): from sgLib.core import Gcore SECRET_KEY = Gcore.loadCoreCfg('Encryption') mt=hashlib.md5() mt.update(SECRET_KEY) t = mt.hexdigest() mt=hashlib.md5() mt.update(t) t = mt.hexdigest() if VK!=t: print VK,t return VK == t
def getTokenMsg(self, tokenStr=''): '''检查Token是否有效 @param tokenStr: 客户端在总服登录成功的加密串 @return: dict or False ''' from sgLib.core import Gcore SECRET_KEY = Gcore.loadCoreCfg('Encryption') timeOut = 180 #密码有效时间 try: #tokenStr='JV4vUlQXUyNsPQ5GCExEWENQISwvSQxNDkNOAEUKAh4GCWseUA5FD3YwAlUdVBt0OjtBQldPR01FNhpaAk0VejQ1T15TWz16Pj9FVVhQNn82fnUxaWFxdWkoWUlfRl4dVUE1cTIsY31gegtLDEIKHAQXbnk6Jm16cn0fcjx1NEYFS25tdm10ZHljGg8eDRRP' tokenStr = base64.b64decode(tokenStr) #base64从decode encode中抽离 tokenStr = decode(tokenStr, SECRET_KEY) #print 'tokenStr',tokenStr tokenDic = json.loads(tokenStr) #print 'tokenDic',tokenDic #PHPcode: $s_LockKey = md5( substr( md5($i_LockTime.$Encryptionkey), 1, 18 ).$Encryptionkey ); #tokenDic: {u'TotalServiceId': u'42', u'LoginMode': 2, u'PlayerId': 0, u'LoginVersion': 101, u'Lan': 1, u'LockTime': 1367994093, u'LockKey': u'6b11732eb74eb4e8791afdb02096b6a1'} LockTime = str(tokenDic['LockTime']) mt = hashlib.md5() mt.update(LockTime) mt.update(SECRET_KEY) OutKey = mt.hexdigest() mt = hashlib.md5() mt.update(OutKey[1:19]) #substr(1,18) mt.update(SECRET_KEY) OutKey = mt.hexdigest() # print 'OutKey',OutKey # print 'LockKey',tokenDic['LockKey'] #if (int(time.time())-int(LockTime))>timeOut: #分服登录-过期后重启去总服登录#@todo # return False if OutKey == tokenDic['LockKey']: tokenDic.pop('LockKey') return tokenDic else: return False except: return False print tokenDic
def getTokenMsg(self,tokenStr=''): '''检查Token是否有效 @param tokenStr: 客户端在总服登录成功的加密串 @return: dict or False ''' from sgLib.core import Gcore SECRET_KEY = Gcore.loadCoreCfg('Encryption') timeOut = 180 #密码有效时间 try: #tokenStr='JV4vUlQXUyNsPQ5GCExEWENQISwvSQxNDkNOAEUKAh4GCWseUA5FD3YwAlUdVBt0OjtBQldPR01FNhpaAk0VejQ1T15TWz16Pj9FVVhQNn82fnUxaWFxdWkoWUlfRl4dVUE1cTIsY31gegtLDEIKHAQXbnk6Jm16cn0fcjx1NEYFS25tdm10ZHljGg8eDRRP' tokenStr = base64.b64decode(tokenStr) #base64从decode encode中抽离 tokenStr = decode(tokenStr,SECRET_KEY) #print 'tokenStr',tokenStr tokenDic = json.loads(tokenStr) #print 'tokenDic',tokenDic #PHPcode: $s_LockKey = md5( substr( md5($i_LockTime.$Encryptionkey), 1, 18 ).$Encryptionkey ); #tokenDic: {u'TotalServiceId': u'42', u'LoginMode': 2, u'PlayerId': 0, u'LoginVersion': 101, u'Lan': 1, u'LockTime': 1367994093, u'LockKey': u'6b11732eb74eb4e8791afdb02096b6a1'} LockTime = str(tokenDic['LockTime']) mt=hashlib.md5() mt.update(LockTime) mt.update(SECRET_KEY) OutKey=mt.hexdigest() mt=hashlib.md5() mt.update(OutKey[1:19]) #substr(1,18) mt.update(SECRET_KEY) OutKey=mt.hexdigest() # print 'OutKey',OutKey # print 'LockKey',tokenDic['LockKey'] #if (int(time.time())-int(LockTime))>timeOut: #分服登录-过期后重启去总服登录#@todo # return False if OutKey==tokenDic['LockKey']: tokenDic.pop('LockKey') return tokenDic else: return False except: return False print tokenDic
def CreatedPlayer(self, accountId): try: url = Gcore.loadCoreCfg('PlatformUrl') Post = {} Post['ServerId'] = Gcore.getServerId() Post['LOCKKEY'] = TokenDecode().makeLockKey() Post['FUNC'] = "FindUI.CreatedPlayer" Post['PARAM'] = { 'FromServerId': Gcore.getServerId(), 'AccountId': accountId, } url += '?MSG=' + json.dumps(Post) #print 'findOutFighter>>',url req = urllib2.Request(url) f = urllib2.urlopen(req) response = f.read() lis = response.split('@.@') return json.loads(lis[1]) except: pass
def CreatedPlayer(self,accountId): try: url = Gcore.loadCoreCfg('PlatformUrl') Post = {} Post['ServerId'] = Gcore.getServerId() Post['LOCKKEY'] = TokenDecode().makeLockKey() Post['FUNC'] ="FindUI.CreatedPlayer" Post['PARAM'] ={ 'FromServerId':Gcore.getServerId(), 'AccountId':accountId, } url+='?MSG='+json.dumps(Post) #print 'findOutFighter>>',url req = urllib2.Request(url) f = urllib2.urlopen(req) response = f.read() lis = response.split('@.@') return json.loads(lis[1]) except: pass
def makeLockKey(self): '''组成服务器通讯加密串''' from sgLib.core import Gcore SECRET_KEY = Gcore.loadCoreCfg('Encryption') import time LockTime = int(time.time()) LockTime = str(LockTime) mt = hashlib.md5() mt.update(LockTime) mt.update(SECRET_KEY) OutKey = mt.hexdigest() mt = hashlib.md5() mt.update(OutKey) #substr(1,18) mt.update(SECRET_KEY) OutKey = mt.hexdigest() d = {} d['TokenLockTime'] = LockTime d['Tokenkey'] = OutKey return d
def makeLockKey(self): '''组成服务器通讯加密串''' from sgLib.core import Gcore SECRET_KEY = Gcore.loadCoreCfg('Encryption') import time LockTime = int(time.time()) LockTime = str(LockTime) mt=hashlib.md5() mt.update(LockTime) mt.update(SECRET_KEY) OutKey=mt.hexdigest() mt=hashlib.md5() mt.update(OutKey) #substr(1,18) mt.update(SECRET_KEY) OutKey=mt.hexdigest() d = {} d['TokenLockTime'] = LockTime d['Tokenkey'] = OutKey return d
def findPvcTarget(self): '''查找攻城对象 @note:硬凑在这里''' CrossServer = int(Gcore.loadCoreCfg('CrossServer')) #是否跨服的配置 print ' -- ps findPvcTarget CrossServer:%s'%CrossServer N=200 #匹配参考值 Num = 20 #每次拿10个 if Gcore.TEST: Num = 100 rowUser = self.getUserInfo(['UserCamp','UserLevel']) UserLevel = rowUser['UserLevel'] UserCamp = rowUser['UserCamp'] UserLevelFrom = UserLevel-30; UserLevelTo = UserLevel+30; ServerId = Gcore.getServerId() homeList1 = [] homeList2 = [] if(UserCamp==1): query = " (UserCamp=2 OR UserCamp=3)" elif(UserCamp==2): query = " (UserCamp=1 OR UserCamp=3)" elif(UserCamp==3): query = " (UserCamp=1 OR UserCamp=2)" query+= " AND UserLevel>=%s"%Gcore.loadCfg(9301).get('FightLevel') query+= " AND UserId!=%s"%self.uid query+= " AND Online=0 AND ProtectEndTime <= UNIX_TIMESTAMP()"; where = query+' AND UserLevel>=%s AND UserLevel<=%s'%(UserLevelFrom,UserLevelTo) M = self.db.count('tb_user',where) UserLevelFrom2 = UserLevel-5; UserLevelTo2 = UserLevel+5; where = query+' AND UserLevel>=%s AND UserLevel<=%s'%(UserLevelFrom2,UserLevelTo2) for unit in self.db.out_rand('tb_user','UserId',where,Num): homeList1.append([ServerId,unit['UserId']]) print 'findPvcTarget local +-5 > ',self.db.sql where = query+' AND (UserLevel>=%s AND UserLevel<%s) OR (UserLevel>%s AND UserLevel<=%s)'\ %(UserLevelFrom,UserLevelFrom2,UserLevelTo2,UserLevelTo) for unit in self.db.out_rand('tb_user','UserId',where,Num): homeList2.append([ServerId,unit['UserId']]) print 'findPvcTarget local +-30 > ',self.db.sql #print 'homeList1',homeList1 #print 'homeList2',homeList2 random.shuffle(homeList1) random.shuffle(homeList2) if M>=N:#不跨服 crossPercent = 0 #跨服比例 elif M<=20: crossPercent = 100 elif M>=0.75*N: crossPercent = 25 elif M>=0.5*N: crossPercent = 50 elif M>=0.25*N: crossPercent = 75 else: crossPercent = 100 #print 'crossPercent',crossPercent targetList = [] randPercent = random.randint(1,100) #print 'randPercent',randPercent if randPercent<=crossPercent and CrossServer: #中比例 y=math.ceil(M/N*Num) getNum = Num-y # print 'M',M # print 'N',N # print 'getNum',getNum targetList = Gcore.getMod('Request', self.uid).findOutFighter(getNum,rowUser) print 'Request targetList',targetList #print targetList for i in xrange(Num-len(targetList)): if len(homeList1)>i: targetList.append(homeList1[i]) if len(targetList)>=Num: break; if len(homeList2)>i: targetList.append(homeList2[i]) if len(targetList)>=Num: break; #print 'targetList',targetList return targetList
def findPvcTarget(self): '''查找攻城对象 @note:硬凑在这里''' CrossServer = int(Gcore.loadCoreCfg('CrossServer')) #是否跨服的配置 print ' -- ps findPvcTarget CrossServer:%s' % CrossServer N = 200 #匹配参考值 Num = 20 #每次拿10个 if Gcore.TEST: Num = 100 rowUser = self.getUserInfo(['UserCamp', 'UserLevel']) UserLevel = rowUser['UserLevel'] UserCamp = rowUser['UserCamp'] UserLevelFrom = UserLevel - 30 UserLevelTo = UserLevel + 30 ServerId = Gcore.getServerId() homeList1 = [] homeList2 = [] if (UserCamp == 1): query = " (UserCamp=2 OR UserCamp=3)" elif (UserCamp == 2): query = " (UserCamp=1 OR UserCamp=3)" elif (UserCamp == 3): query = " (UserCamp=1 OR UserCamp=2)" query += " AND UserLevel>=%s" % Gcore.loadCfg(9301).get('FightLevel') query += " AND UserId!=%s" % self.uid query += " AND Online=0 AND ProtectEndTime <= UNIX_TIMESTAMP()" where = query + ' AND UserLevel>=%s AND UserLevel<=%s' % ( UserLevelFrom, UserLevelTo) M = self.db.count('tb_user', where) UserLevelFrom2 = UserLevel - 5 UserLevelTo2 = UserLevel + 5 where = query + ' AND UserLevel>=%s AND UserLevel<=%s' % ( UserLevelFrom2, UserLevelTo2) for unit in self.db.out_rand('tb_user', 'UserId', where, Num): homeList1.append([ServerId, unit['UserId']]) print 'findPvcTarget local +-5 > ', self.db.sql where = query+' AND (UserLevel>=%s AND UserLevel<%s) OR (UserLevel>%s AND UserLevel<=%s)'\ %(UserLevelFrom,UserLevelFrom2,UserLevelTo2,UserLevelTo) for unit in self.db.out_rand('tb_user', 'UserId', where, Num): homeList2.append([ServerId, unit['UserId']]) print 'findPvcTarget local +-30 > ', self.db.sql #print 'homeList1',homeList1 #print 'homeList2',homeList2 random.shuffle(homeList1) random.shuffle(homeList2) if M >= N: #不跨服 crossPercent = 0 #跨服比例 elif M <= 20: crossPercent = 100 elif M >= 0.75 * N: crossPercent = 25 elif M >= 0.5 * N: crossPercent = 50 elif M >= 0.25 * N: crossPercent = 75 else: crossPercent = 100 #print 'crossPercent',crossPercent targetList = [] randPercent = random.randint(1, 100) #print 'randPercent',randPercent if randPercent <= crossPercent and CrossServer: #中比例 y = math.ceil(M / N * Num) getNum = Num - y # print 'M',M # print 'N',N # print 'getNum',getNum targetList = Gcore.getMod('Request', self.uid).findOutFighter( getNum, rowUser) print 'Request targetList', targetList #print targetList for i in xrange(Num - len(targetList)): if len(homeList1) > i: targetList.append(homeList1[i]) if len(targetList) >= Num: break if len(homeList2) > i: targetList.append(homeList2[i]) if len(targetList) >= Num: break #print 'targetList',targetList return targetList
def PlayerInfo(self): '''返回获取用户相关资料''' startTime = time.time() fields = ['UserHonour','UserCamp','NickName','VipLevel','BuyMapTimes', 'WorkerNumber', 'UserIcon','UserExp','UserLevel','Fighter','FightEndTime','ProtectEndTime','BindAccount','LoginTimes', 'HolderServerId','HolderId','HoldEndTime', #我是否有藩国,藩国结束时间 ] userProfile = self.getUserProfile() data = self.getUserBaseInfo(fields) data['UserId'] = self.uid data['ServerId'] = Gcore.getServerId() #服务器ID data['SuserId']= '%s.%s'%(Gcore.getServerId(),self.uid) #服务器ID跟角色ID组成的标志串 #data['Worker'] = self.getUserWorker() #@todo 添加更多主角信息 if Gcore.common.nowtime()>=data['FightEndTime']: FightRestTime = 0 else: FightRestTime = data['FightEndTime'] - Gcore.common.nowtime() data['FightRestTime'] = FightRestTime #被攻打剩余时间 Fighter - 正在被谁攻打 data.pop('FightEndTime') buildingCfg = Gcore.loadCfg(CFG_BUILDING) data['InitJcoin'] = buildingCfg['InitJcoin'] data['InitGcoin'] = buildingCfg['InitGcoin'] data['Coin'] = self.getUserCoin() data['ServerTime'] = time.time() #round(time.time(),2) data['SoldierLevel'] = Gcore.getMod('Book',self.uid).getTechsLevel(1) data['SoldierInfo'] = Gcore.getMod('Building_camp', self.uid).TouchAllSoldiers() data['Equipments'] = Gcore.getMod('Equip', self.uid).getAllValidEquip() data['Factor'] = { #全部系数 'kLeader': Gcore.loadCfg(Gcore.defined.CFG_BATTLE)["kLeaderAddNum"] , #统帅系数 @todo 从配置中读取 } data['Exchange'] = Gcore.loadCfg( Gcore.defined.CFG_ITEM ).get('exchange') #货币兑换比例 #data['Timezone'] = Gcore.config.CFG_TIMEZONE #时区 #data['TimezoneDif'] = Gcore.config.CFG_TIMEZONEDIF #格林时间+CFG_TIMEDIF data['Timezone'] = Gcore.loadCoreCfg('Timezone') #时区 data['TimezoneDif'] = int( Gcore.loadCoreCfg('TimezoneDif') ) #格林时间+CFG_TIMEDIF data['PVPstartTime'] = Gcore.loadCfg( Gcore.defined.CFG_PVP ).get('PVPstartTime') #将弃用 data['PVPendTime'] = Gcore.loadCfg( Gcore.defined.CFG_PVP ).get('PVPendTime') #将弃用 data['PvpTime'] = Gcore.loadCfg( Gcore.defined.CFG_PVP ).get('PvpTime') #军团信息 clubInfo = Gcore.getMod('Building_club', self.uid).getMemberInfoByUID(self.uid,['ClubId','DevoteCurrent'])#军团ID data['ClubId'] = clubInfo.get('ClubId',0) data['ClubDvo'] = clubInfo.get('DevoteCurrent',0) data['ClubBox'] = Gcore.loadCfg(Gcore.defined.CFG_BUILDING_CLUB).get('BoxCost') #装备传承花费 data['DivertCost'] = Gcore.loadCfg(Gcore.defined.CFG_EQUIP).get('DivertCost') data['DivertCostType'] = Gcore.loadCfg(Gcore.defined.CFG_EQUIP).get('DivertCostType') data['Inters'] = Gcore.getMod('Building_home', self.uid).getInters() #内政 #获取场景14001 MapUI.getScene()搬过来的 BuildingInfo = Gcore.getMod('Building',self.uid).getAllBuildingCoord() interactGids=Gcore.getMod('Interact',self.uid).getHaveMcoinGeneralIds()#获取有交流记录的武将ID Add by Yew data['Scene'] = {'BuildingInfo':BuildingInfo,'BuyMapInfo':[],'InteractGids':interactGids} #获取武将信息15013 Building_trainUI.GetGenerals()搬过来 Generals = Gcore.getMod('General', self.uid).getLatestGeneralInfo() data['Generals'] = Generals if Generals else [] #VIP折扣 data['VipDiscount'] = {r['VipLevel']:r['Discount'] for r in Gcore.getCfg('tb_cfg_vip_up').values()} data['MaxWorkerNum'] = Gcore.loadCfg(Gcore.defined.CFG_BUILDING).get('MaxWorkerNum',5) #攻城等级 data['FightLevel'] = Gcore.loadCfg(9301).get('FightLevel') #是否首次登录 data['FirstLogin'] = 0 if data.pop('LoginTimes') else 1 #军师和指引进度 data['ArmyAdviserId'] = userProfile.get('ArmyAdviserId',0) data['GuideProcessId'] = userProfile.get('GuideProcessId',0) #进贡百分比 data['GiveRatio'] = Gcore.loadCfg(1506).get('GiveRatio',0.05) #完成任务数量 data['MissionFinish'] = Gcore.getMod('Mission',self.uid).getMissionFinishNum() #官网 data['Website'] = Gcore.loadCoreCfg('Website') #心跳时间 data['HeartBeatInterval'] = Gcore.config.HEARTBEAT_TIME #结束----------------------------------- runtime = time.time() - startTime if Gcore.IsServer: #调试计时 row = { 'UserId':self.uid, 'OptId':10001, 'CallMethod':'PlayerMod.PlayerInfo', 'Param':'--skip', 'Response':'--skip', 'Runtime':runtime, 'RecordTime':Gcore.common.datetime(), } self.db.insert('temp_runtime_log', row, isdelay=True) #------------------------------------- return data
def PlayerInfo(self): '''返回获取用户相关资料''' startTime = time.time() fields = [ 'UserHonour', 'UserCamp', 'NickName', 'VipLevel', 'BuyMapTimes', 'WorkerNumber', 'UserIcon', 'UserExp', 'UserLevel', 'Fighter', 'FightEndTime', 'ProtectEndTime', 'BindAccount', 'LoginTimes', 'HolderServerId', 'HolderId', 'HoldEndTime', #我是否有藩国,藩国结束时间 ] userProfile = self.getUserProfile() data = self.getUserBaseInfo(fields) data['UserId'] = self.uid data['ServerId'] = Gcore.getServerId() #服务器ID data['SuserId'] = '%s.%s' % (Gcore.getServerId(), self.uid ) #服务器ID跟角色ID组成的标志串 #data['Worker'] = self.getUserWorker() #@todo 添加更多主角信息 if Gcore.common.nowtime() >= data['FightEndTime']: FightRestTime = 0 else: FightRestTime = data['FightEndTime'] - Gcore.common.nowtime() data['FightRestTime'] = FightRestTime #被攻打剩余时间 Fighter - 正在被谁攻打 data.pop('FightEndTime') buildingCfg = Gcore.loadCfg(CFG_BUILDING) data['InitJcoin'] = buildingCfg['InitJcoin'] data['InitGcoin'] = buildingCfg['InitGcoin'] data['Coin'] = self.getUserCoin() data['ServerTime'] = time.time() #round(time.time(),2) data['SoldierLevel'] = Gcore.getMod('Book', self.uid).getTechsLevel(1) data['SoldierInfo'] = Gcore.getMod('Building_camp', self.uid).TouchAllSoldiers() data['Equipments'] = Gcore.getMod('Equip', self.uid).getAllValidEquip() data['Factor'] = { #全部系数 'kLeader': Gcore.loadCfg( Gcore.defined.CFG_BATTLE)["kLeaderAddNum"], #统帅系数 @todo 从配置中读取 } data['Exchange'] = Gcore.loadCfg(Gcore.defined.CFG_ITEM).get( 'exchange') #货币兑换比例 #data['Timezone'] = Gcore.config.CFG_TIMEZONE #时区 #data['TimezoneDif'] = Gcore.config.CFG_TIMEZONEDIF #格林时间+CFG_TIMEDIF data['Timezone'] = Gcore.loadCoreCfg('Timezone') #时区 data['TimezoneDif'] = int( Gcore.loadCoreCfg('TimezoneDif')) #格林时间+CFG_TIMEDIF data['PVPstartTime'] = Gcore.loadCfg(Gcore.defined.CFG_PVP).get( 'PVPstartTime') #将弃用 data['PVPendTime'] = Gcore.loadCfg(Gcore.defined.CFG_PVP).get( 'PVPendTime') #将弃用 data['PvpTime'] = Gcore.loadCfg(Gcore.defined.CFG_PVP).get('PvpTime') #军团信息 clubInfo = Gcore.getMod('Building_club', self.uid).getMemberInfoByUID( self.uid, ['ClubId', 'DevoteCurrent']) #军团ID data['ClubId'] = clubInfo.get('ClubId', 0) data['ClubDvo'] = clubInfo.get('DevoteCurrent', 0) data['ClubBox'] = Gcore.loadCfg( Gcore.defined.CFG_BUILDING_CLUB).get('BoxCost') #装备传承花费 data['DivertCost'] = Gcore.loadCfg( Gcore.defined.CFG_EQUIP).get('DivertCost') data['DivertCostType'] = Gcore.loadCfg( Gcore.defined.CFG_EQUIP).get('DivertCostType') data['Inters'] = Gcore.getMod('Building_home', self.uid).getInters() #内政 #获取场景14001 MapUI.getScene()搬过来的 BuildingInfo = Gcore.getMod('Building', self.uid).getAllBuildingCoord() interactGids = Gcore.getMod( 'Interact', self.uid).getHaveMcoinGeneralIds() #获取有交流记录的武将ID Add by Yew data['Scene'] = { 'BuildingInfo': BuildingInfo, 'BuyMapInfo': [], 'InteractGids': interactGids } #获取武将信息15013 Building_trainUI.GetGenerals()搬过来 Generals = Gcore.getMod('General', self.uid).getLatestGeneralInfo() data['Generals'] = Generals if Generals else [] #VIP折扣 data['VipDiscount'] = { r['VipLevel']: r['Discount'] for r in Gcore.getCfg('tb_cfg_vip_up').values() } data['MaxWorkerNum'] = Gcore.loadCfg(Gcore.defined.CFG_BUILDING).get( 'MaxWorkerNum', 5) #攻城等级 data['FightLevel'] = Gcore.loadCfg(9301).get('FightLevel') #是否首次登录 data['FirstLogin'] = 0 if data.pop('LoginTimes') else 1 #军师和指引进度 data['ArmyAdviserId'] = userProfile.get('ArmyAdviserId', 0) data['GuideProcessId'] = userProfile.get('GuideProcessId', 0) #进贡百分比 data['GiveRatio'] = Gcore.loadCfg(1506).get('GiveRatio', 0.05) #完成任务数量 data['MissionFinish'] = Gcore.getMod('Mission', self.uid).getMissionFinishNum() #官网 data['Website'] = Gcore.loadCoreCfg('Website') #心跳时间 data['HeartBeatInterval'] = Gcore.config.HEARTBEAT_TIME #结束----------------------------------- runtime = time.time() - startTime if Gcore.IsServer: #调试计时 row = { 'UserId': self.uid, 'OptId': 10001, 'CallMethod': 'PlayerMod.PlayerInfo', 'Param': '--skip', 'Response': '--skip', 'Runtime': runtime, 'RecordTime': Gcore.common.datetime(), } self.db.insert('temp_runtime_log', row, isdelay=True) #------------------------------------- return data