"use strict"; class BcmTool { constructor() { this.mgrTeamInfo = g_game.mgr.mgr_team_player_team_info; this.logger = new Logger(); } queryPlayerInfo(playersToQuery) { const attributes = [ ['速度', 1], ['力量', 2], ['内攻', 3], ['中投', 4], ['三分', 5], ['三分急停跳投倾向', 6], ['内线防守能力', 7], ['外线防守能力', 8], ['突破能力', 9], ['上篮能力', 10], ['控球能力', 11], ['传球能力', 12], ['传球视野', 13], ['干扰投篮', 14], ['篮板能力', 15], ['*出手时间', 16], ['*进攻IQ', 17], ['*防守IQ', 18], ['体能', 19], ['卡位能力', 20], ['罚球能力', 21], ['抢断能力', 22], ['盖帽能力', 23], ['*进攻犯规', 24], ['*防守犯规', 25], ['扣篮能力', 26], ['勾手倾向', 27], ['*后仰倾向', 28], ['打板倾向', 29], ['*反应时间', 30], ['拉开空间', 31], ['补防、协防', 32], ['*造进攻犯规', 33], ['快下', 34], ['无球跑动', 35], ['挡拆', 36], ['*造防守犯规', 37], ['无球掩护', 38], ['进攻篮板', 39], ['*假动作', 40], ['攻转守', 41], ['进攻技能', 44], ['防守技能', 48], ['身体素质', 50], ]; for (const playerId of playersToQuery) { if (!this.checkInfo(playerId)) { console.log('找不到id', playerId); continue; } this.logger.Info(this.queryName(playerId)); for (const info of attributes) { const name = info[0]; const id = info[1]; const record = this.queryInfo(playerId, id); this.logger.Info(name, record); } g_game.tools.CopyStrToClipboard(this.logger.GetOutput()); this.logger.Clear(); } } checkInfo(playerId) { const data = this.mgrTeamInfo.GetPlayerData(playerId); return data != null; } queryName(playerId) { const data = this.mgrTeamInfo.GetPlayerData(playerId); return data.playerName; } queryInfo(playerId, attri) { const data = this.mgrTeamInfo.GetPlayerData(playerId); return data.GetSingleAttribute(attri).toFixed(2); } getPlayerIds() { return Object.keys(this.mgrTeamInfo._map_player_detail); } listPlayers() { const ids = Object.keys(this.mgrTeamInfo._map_player_detail); for (const id of ids) { console.log(this.queryName(id), id); } } } class Logger { constructor() { this.msgs = ''; } Info(...msgs) { for (const msg of msgs) { this.msgs += String(msg); } this.msgs += '\n'; } GetOutput() { return this.msgs; } Clear() { this.msgs = ''; } } (() => { g_game.bcm_tool = new BcmTool(); })();