├── .gitignore
├── builds
├── buildImages.js
├── buildScripts.js
├── clean.js
├── insertKeymap.js
└── utils.js
├── changelog.md
├── docs
├── images
│ ├── 01-js-settings.png
│ ├── 02-key-macro.png
│ ├── heping-settings.jpg
│ └── tcg-settings.png
├── 官方资料
│ ├── TCG单段,时间间隔压枪配置(推荐设置比较简单).zip
│ ├── TCG多段,指定像素压枪配置(不推荐调像素较麻烦).zip
│ └── TCG多段,时间间隔压枪配置(推荐设置较简单).zip
└── 键位配置
│ └── 2880x1800
│ └── TG_Keys_XiaoMiPad6Max14_2023-12-31.properties
├── gulpfile.js
├── package-lock.json
├── package.json
├── qodana.yaml
├── readme.md
├── src
├── images
│ ├── 1600
│ │ ├── bag
│ │ │ ├── 拾取列表关闭按钮.png
│ │ │ └── 背包已打开的标志.png
│ │ ├── car
│ │ │ └── 下车按钮.png
│ │ ├── guns
│ │ │ ├── delicate
│ │ │ │ ├── 大图ACVAL.png
│ │ │ │ ├── 大图AKM.png
│ │ │ │ ├── 大图AUG.png
│ │ │ │ ├── 大图DP28.png
│ │ │ │ ├── 大图GROZA.png
│ │ │ │ ├── 大图M249.png
│ │ │ │ ├── 大图M4.png
│ │ │ │ ├── 大图M417.png
│ │ │ │ ├── 大图M762.png
│ │ │ │ ├── 大图MG3.png
│ │ │ │ ├── 大图MIGUAN.png
│ │ │ │ ├── 大图MK20H.png
│ │ │ │ ├── 大图P90.png
│ │ │ │ ├── 大图PKM.png
│ │ │ │ ├── 大图SCARL.png
│ │ │ │ ├── 大图TANGMUXUN.png
│ │ │ │ ├── 大图UMP45.png
│ │ │ │ ├── 大图UZI.png
│ │ │ │ ├── 大图VECTOR.png
│ │ │ │ ├── 大图VSS.png
│ │ │ │ └── 大图YENIU.png
│ │ │ └── flat
│ │ │ │ ├── ACVAL.png
│ │ │ │ ├── AK.png
│ │ │ │ ├── AKM.png
│ │ │ │ ├── AUG.png
│ │ │ │ ├── DP28.png
│ │ │ │ ├── GOZA.png
│ │ │ │ ├── GROZA.png
│ │ │ │ ├── M249.png
│ │ │ │ ├── M4.png
│ │ │ │ ├── M417.png
│ │ │ │ ├── M762.png
│ │ │ │ ├── MG3.png
│ │ │ │ ├── MIGUAN.png
│ │ │ │ ├── MK20H.png
│ │ │ │ ├── P90.png
│ │ │ │ ├── PKM.png
│ │ │ │ ├── SCARL.png
│ │ │ │ ├── TANGMUXUN.png
│ │ │ │ ├── UMP45.png
│ │ │ │ ├── UZI.png
│ │ │ │ ├── VECTOR.png
│ │ │ │ ├── VSS.png
│ │ │ │ └── YENIU.png
│ │ ├── medicine
│ │ │ ├── 急救包.png
│ │ │ ├── 止痛药.png
│ │ │ ├── 绷带.png
│ │ │ ├── 肾上腺素注射剂.png
│ │ │ └── 能量饮料.png
│ │ ├── mirrors
│ │ │ ├── 6倍镜调距按钮.png
│ │ │ ├── delicate
│ │ │ │ ├── 大图2倍镜.png
│ │ │ │ ├── 大图3倍镜.png
│ │ │ │ ├── 大图4倍镜.png
│ │ │ │ ├── 大图6倍镜.png
│ │ │ │ ├── 大图8倍镜.png
│ │ │ │ ├── 大图全息.png
│ │ │ │ └── 大图红点.png
│ │ │ ├── text
│ │ │ │ ├── 2倍镜文本.png
│ │ │ │ ├── 3倍镜文本.png
│ │ │ │ ├── 4倍镜文本.png
│ │ │ │ ├── 6倍镜文本.png
│ │ │ │ ├── 8倍镜文本.png
│ │ │ │ ├── 全息文本.png
│ │ │ │ ├── 机瞄文本.png
│ │ │ │ └── 红点文本.png
│ │ │ └── 第一人称文本.png
│ │ └── missile
│ │ │ ├── 取消投掷按钮.png
│ │ │ ├── 投掷物展开按钮.png
│ │ │ ├── 投掷物折叠按钮.png
│ │ │ ├── 烟雾弹.png
│ │ │ ├── 燃烧瓶.png
│ │ │ └── 碎片手榴弹.png
│ └── 1800
│ │ ├── bag
│ │ ├── 拾取列表关闭按钮.png
│ │ ├── 拾取列表关闭按钮备用2.png
│ │ └── 背包已打开的标志.png
│ │ ├── car
│ │ └── 下车按钮.png
│ │ ├── guns
│ │ ├── delicate
│ │ │ ├── 大图ACVAL.png
│ │ │ ├── 大图AKM.png
│ │ │ ├── 大图AUG.png
│ │ │ ├── 大图DP28.png
│ │ │ ├── 大图GROZA.png
│ │ │ ├── 大图M249.png
│ │ │ ├── 大图M4.png
│ │ │ ├── 大图M417.png
│ │ │ ├── 大图M762.png
│ │ │ ├── 大图MG3.png
│ │ │ ├── 大图MIGUAN.png
│ │ │ ├── 大图MK20H.png
│ │ │ ├── 大图P90.png
│ │ │ ├── 大图PKM.png
│ │ │ ├── 大图SCARL.png
│ │ │ ├── 大图TANGMUXUN.png
│ │ │ ├── 大图UMP45.png
│ │ │ ├── 大图UZI.png
│ │ │ ├── 大图VECTOR.png
│ │ │ ├── 大图VSS.png
│ │ │ └── 大图YENIU.png
│ │ └── flat
│ │ │ ├── ACVAL.png
│ │ │ ├── AK.png
│ │ │ ├── AKM.png
│ │ │ ├── AUG.png
│ │ │ ├── DP28.png
│ │ │ ├── GOZA.png
│ │ │ ├── GROZA.png
│ │ │ ├── M249.png
│ │ │ ├── M4.png
│ │ │ ├── M417.png
│ │ │ ├── M762.png
│ │ │ ├── MG3.png
│ │ │ ├── MIGUAN.png
│ │ │ ├── MK14.png
│ │ │ ├── MK20H.png
│ │ │ ├── P90.png
│ │ │ ├── PKM.png
│ │ │ ├── SCARL.png
│ │ │ ├── TANGMUXUN.png
│ │ │ ├── UMP45.png
│ │ │ ├── UZI.png
│ │ │ ├── VECTOR.png
│ │ │ ├── VSS.png
│ │ │ └── YENIU.png
│ │ ├── medicine
│ │ ├── 急救包.png
│ │ ├── 止痛药.png
│ │ ├── 绷带.png
│ │ ├── 肾上腺素注射剂.png
│ │ └── 能量饮料.png
│ │ ├── mirrors
│ │ ├── 6倍镜调距按钮.png
│ │ ├── delicate
│ │ │ ├── 大图2倍镜.png
│ │ │ ├── 大图3倍镜.png
│ │ │ ├── 大图4倍镜.png
│ │ │ ├── 大图6倍镜.png
│ │ │ ├── 大图8倍镜.png
│ │ │ ├── 大图全息.png
│ │ │ └── 大图红点.png
│ │ ├── text
│ │ │ ├── 2倍镜文本.png
│ │ │ ├── 3倍镜文本.png
│ │ │ ├── 4倍镜文本.png
│ │ │ ├── 6倍镜文本.png
│ │ │ ├── 8倍镜文本.png
│ │ │ ├── 全息文本.png
│ │ │ ├── 机瞄文本.png
│ │ │ └── 红点文本.png
│ │ └── 第一人称文本.png
│ │ └── missile
│ │ ├── 取消投掷按钮.png
│ │ ├── 投掷物展开按钮.png
│ │ ├── 投掷物折叠按钮.png
│ │ ├── 烟雾弹.png
│ │ ├── 燃烧瓶.png
│ │ └── 碎片手榴弹.png
└── scripts
│ ├── bag.ts
│ ├── car.ts
│ ├── constant.ts
│ ├── gun.ts
│ ├── keymap.ts
│ ├── medicine.ts
│ ├── mirror.ts
│ ├── missile.ts
│ ├── posture.ts
│ ├── pressArgs.ts
│ ├── pressCtrl.ts
│ ├── skill.ts
│ ├── store.ts
│ └── utils.ts
├── tsconfig.json
└── types
├── index.d.ts
└── mapi.d.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | temp/
2 | .idea
3 | node_modules
4 | dist/
5 |
--------------------------------------------------------------------------------
/builds/buildImages.js:
--------------------------------------------------------------------------------
1 | const { src, dest, series } = require('gulp');
2 | const rename = require('gulp-rename');
3 | const { CTX_PATH, TCG_IMAGES_DIR } = require('./utils');
4 | const clean = require('./clean');
5 |
6 |
7 | function build() {
8 | return src(`src/images/**/*.png`, { cwd: CTX_PATH })
9 |
10 | // 1600/guns/AMK.png -> 1600/AMK.png
11 | .pipe(rename(function (path) {
12 | // { dirname: '1600\\guns', basename: 'ACVAL', extname: '.png' }
13 | const { dirname } = path;
14 |
15 | const dirs = dirname.split(/[/\\]/);
16 |
17 | const firstDir = dirs[0] || '';
18 |
19 | path.dirname = firstDir;
20 | }))
21 |
22 | .pipe(dest(TCG_IMAGES_DIR));
23 | }
24 |
25 | module.exports = series(clean(TCG_IMAGES_DIR), build);
26 |
--------------------------------------------------------------------------------
/builds/buildScripts.js:
--------------------------------------------------------------------------------
1 | const { src, dest, series } = require('gulp');
2 | const replace = require('gulp-replace');
3 | const ts = require('gulp-typescript');
4 | const clean = require('./clean')
5 | const { CTX_PATH, TCG_SCRIPTS_DIR, DIST_PATH } = require('./utils');
6 |
7 | const tsProject = ts.createProject('tsconfig.json');
8 |
9 | const DEVICE = process.env.DEVICE;
10 |
11 | const DEVICE_REGEX = /\/\*\s*replace\s*start\s*\*\/\s*\w+\s*\/\*\s*replace end\s*\*\//;
12 | const RELATIVE_IMPORT_REGEX = /(from\s+['"])(\.\/)(\w+['"])/gm;
13 |
14 | function build() {
15 | return src(['src/scripts/*.js', 'src/scripts/*.ts'], { cwd: CTX_PATH })
16 | // 指定编译哪个设备
17 | // /* replace start */ DEVICE /* replace end */
18 | .pipe(replace(DEVICE_REGEX, DEVICE))
19 |
20 | .pipe(tsProject()).js
21 |
22 | // import x from './x' --> import x from 'x'
23 | .pipe(replace(RELATIVE_IMPORT_REGEX, '$1$3'))
24 |
25 | .pipe(dest(TCG_SCRIPTS_DIR))
26 | .pipe(dest(DIST_PATH));
27 | }
28 |
29 | module.exports = series(clean(TCG_SCRIPTS_DIR), build);
30 |
--------------------------------------------------------------------------------
/builds/clean.js:
--------------------------------------------------------------------------------
1 | const { rmSync } = require('fs');
2 |
3 | module.exports = function(dir) {
4 | return function(next) {
5 | rmSync(dir, { recursive: true });
6 | next();
7 | };
8 | }
9 |
--------------------------------------------------------------------------------
/builds/insertKeymap.js:
--------------------------------------------------------------------------------
1 | const { CTX_PATH } = require('./utils');
2 | const { readFileSync, writeFileSync } = require('fs');
3 | const { resolve } = require('path')
4 |
5 | const KEYMAP_SCRIPT_FILE_PATH = resolve(CTX_PATH, './src/scripts/keymap.ts');
6 |
7 | const README_FILE_PATH = resolve(CTX_PATH, './readme.md');
8 |
9 | const DOC_COMMENTS_REGEX = /(\/\*\*\s*[\s\S]+?\*\/\s*\w+\(\)\s*{)/gm;
10 |
11 | const DESCRIPTION_REGEX = /@description\s([\s\S]*?)@/m;
12 |
13 | const BIND_REGEX = /@bind\s([\s\S]*?)\s*\*/m;
14 |
15 | const METHOD_REGEX = /^\s*(\w*\(\))\s*{/m;
16 |
17 | const KEYMAP_START_TEXT = '';
18 |
19 | const KEYMAP_END_TEXT = '';
20 |
21 | function insertKeymap() {
22 | const comments = getComments();
23 | writeToReadme(comments);
24 | }
25 |
26 | function getComments() {
27 | const content = readFileSync(KEYMAP_SCRIPT_FILE_PATH, { encoding: 'utf-8' });
28 |
29 | const commentStrList = content.match(DOC_COMMENTS_REGEX)
30 | .filter((item) => item.includes('@description') && item.includes('@bind'));
31 |
32 | const comments = commentStrList.map((commentStr) => {
33 | const [ , description ] = commentStr.match(DESCRIPTION_REGEX);
34 | const [ , bind ] = commentStr.match(BIND_REGEX);
35 | const [ , method ] = commentStr.match(METHOD_REGEX);
36 |
37 |
38 | const desc = description.split(/[\n\r]/)
39 | .map((item) => {
40 | return item.trim().replace(/^\*/, '');
41 | })
42 | .filter(Boolean)
43 | .join('
');
44 |
45 | return { description: desc, bind, method };
46 | });
47 |
48 | comments.sort((prev, curr) => {
49 | if (prev.bind < curr.bind) {
50 | return -1;
51 | } else {
52 | return 1;
53 | }
54 | });
55 |
56 | return comments;
57 | }
58 |
59 | function writeToReadme(comments) {
60 | const content = readFileSync(README_FILE_PATH, { encoding: 'utf-8' });
61 |
62 | const tableHeader = ''
63 | + '| 按键 | 说明 | 宏 |\n'
64 | + '| --- | --- | --- |\n'
65 |
66 | let tableRows = '';
67 |
68 | comments.forEach(({ description, bind, method }) => {
69 | const macro =`
70 | (function() {
71 | import('keymap')
72 | .then(({ default: keymap }) => {
73 | keymap.${method};
74 | });
75 | } ());
76 | `
77 | .split(/[\n\r]/gm)
78 | .filter((item) => Boolean(item.trim()))
79 | .map((item) => (`\`${item}\``))
80 | .join('
')
81 | ;
82 |
83 | tableRows += `| ${bind} | ${description} | ${macro} |\n`
84 | });
85 |
86 | const table = tableHeader + tableRows;
87 |
88 | const replacement = `\n${table}\n`;
89 |
90 | const startIndex = content.indexOf(KEYMAP_START_TEXT) + KEYMAP_START_TEXT.length + 1;
91 | const endIndex = content.indexOf(KEYMAP_END_TEXT);
92 |
93 | const newContent = content.substring(0, startIndex) + replacement + content.substring(endIndex)
94 |
95 | writeFileSync(README_FILE_PATH, newContent, { encoding: 'utf-8' });
96 | }
97 |
98 | module.exports = function (next) {
99 | insertKeymap()
100 |
101 | next();
102 | }
103 |
--------------------------------------------------------------------------------
/builds/utils.js:
--------------------------------------------------------------------------------
1 | const { resolve } = require('path');
2 |
3 | // C:\Users\abc
4 | const USER_HOME = process.env.HOME || process.env.USERPROFILE;
5 |
6 | // C:\Users\abc\AppData\Roaming\Sigma-RT\TC Games\resource\Scripts
7 | const TCG_SCRIPTS_DIR = resolve(USER_HOME, 'AppData\\Roaming\\Sigma-RT\\TC Games\\resource\\Scripts')
8 |
9 | // C:\Users\abc\AppData\Roaming\Sigma-RT\TC Games\resource\game\smartkey\com.tencent.tmgp.pubgmhd
10 | const TCG_IMAGES_DIR = resolve(USER_HOME, 'AppData\\Roaming\\Sigma-RT\\TC Games\\resource\\game\\smartkey\\com.tencent.tmgp.pubgmhd')
11 |
12 | const CTX_PATH = resolve(__dirname, '../');
13 |
14 | const DIST_PATH = resolve(__dirname, '../dist');
15 |
16 | module.exports = {
17 | TCG_SCRIPTS_DIR,
18 | TCG_IMAGES_DIR,
19 | CTX_PATH,
20 | DIST_PATH,
21 | }
22 |
--------------------------------------------------------------------------------
/changelog.md:
--------------------------------------------------------------------------------
1 | # change log
2 |
3 | ## v1.0.0
4 |
5 | 说明:
6 |
7 | * 和平精英压枪脚本。
8 |
9 | 支持:
10 |
11 | * 华为 nova9, 2430 × 1080
12 | * 华为 MatePad 11, 2560 × 1600
13 |
14 | 附件 “release-1.0.0.zip” 解压后:
15 |
16 | ```text
17 | release-1.0.0/
18 | matepad11/ # matepad11 脚本目录
19 | nova9/ # nova9 脚本目录
20 | com.tencent.tmgp.pubgmhd.zip # 图片资源
21 | 键位方案.zip
22 | ```
23 |
24 | 如果你是 nova9 设备:
25 |
26 | 1. 复制 `nova9/` 下的所有 `.js` 文件
27 | 2. 粘贴到 `C:\Users\abc\AppData\Roaming\Sigma-RT\TC Games\resource\Scripts` 目录下
28 | 3. 注意:`C:\Users\abc` 改成你自己的
29 |
--------------------------------------------------------------------------------
/docs/images/01-js-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/docs/images/01-js-settings.png
--------------------------------------------------------------------------------
/docs/images/02-key-macro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/docs/images/02-key-macro.png
--------------------------------------------------------------------------------
/docs/images/heping-settings.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/docs/images/heping-settings.jpg
--------------------------------------------------------------------------------
/docs/images/tcg-settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/docs/images/tcg-settings.png
--------------------------------------------------------------------------------
/docs/官方资料/TCG单段,时间间隔压枪配置(推荐设置比较简单).zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/docs/官方资料/TCG单段,时间间隔压枪配置(推荐设置比较简单).zip
--------------------------------------------------------------------------------
/docs/官方资料/TCG多段,指定像素压枪配置(不推荐调像素较麻烦).zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/docs/官方资料/TCG多段,指定像素压枪配置(不推荐调像素较麻烦).zip
--------------------------------------------------------------------------------
/docs/官方资料/TCG多段,时间间隔压枪配置(推荐设置较简单).zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/docs/官方资料/TCG多段,时间间隔压枪配置(推荐设置较简单).zip
--------------------------------------------------------------------------------
/docs/键位配置/2880x1800/TG_Keys_XiaoMiPad6Max14_2023-12-31.properties:
--------------------------------------------------------------------------------
1 | ID=89515
2 | SCRIPT_DESCRIPTION=和平-小米6max-2023-12-30
3 | SCRIPT_EXPLAIN=
4 | SCRIPT_V=false
5 | SCRIPT_IMAGE=
6 | appKeyScriptVersion=0
7 | HOTKEY_PANEL_SIZE=997,621
8 | RESOLUTION=2880,1800
9 | MOUSEAIM_CUT_IN_OUT_M=True
10 | MOUSEAIM_CUT_IN_OUT_TAB=True
11 | ROTATETYPE=
12 | SPECIAL_DEVICE_STUCK_POINT=False
13 | AIM_STATIC_RESETAIM=True
14 | MOUSEAIM_DPAD_RESET=True
15 | SINGLE_POINT_FIREAIM=False
16 | MOUSEAIM_KEYBOARD_RESET=True
17 | MACRO_SHOW_OR_HIDE_COMMAND_TEXT=True
18 | GAME_CONTROL_RANDOM_THRESHOLD=6
19 | HOT_KEY_SYNC_VAL=50
20 | DIRECTION_MODE=False
21 | DIRECTION_ROCK_MODE_BIND_SHIFT=True
22 | DIRECTION_ROCK_MODE_VAL=3
23 | DIRECTION_ROCK_MODE_WLAK_RUN_MODE=DEFRUN
24 | DIRECTION_ROCK_MODE_WLAK_RUN_SELECTED=0
25 | DIRECTION=87,UP,462,1344,81,385,158,158;83,DOWN,462,1344,81,385,158,158;68,RIGHT,462,1344,81,385,158,158;65,LEFT,462,1344,81,385,158,158;$Sync;
26 | AIM_X=26
27 | AIM_Y=26
28 | BOUNDARYPOINTERBACK=False
29 | AREARANGE=1031,-67,549,550
30 | MOUSEAIM_BACK_MODE=2
31 | AIM=192,CENTER,1305,209,357,-23,190,190;
32 | DEFAULT=90,CENTER$Sync,2736,1688,920,555,55,55;67,CENTER$Sync,2777,1351,934,439,55,55;16,CENTER$Sync,2447,419,820,117,55,55;77,CENTER$Sync,2748,71,924,-3,55,55;82,CENTER$Sync,2237,1693,747,557,55,55;49,CENTER,1263,1632,410,536,55,55;50,CENTER,1639,1630,540,535,55,55;53,CENTER,928,1708,294,562,55,55;52,CENTER,1956,1696,650,558,55,55;71,CENTER$Sync,2635,859,885,269,55,55;51,CENTER,1746,1514,577,495,55,55;84,CENTER,1994,656,663,199,55,55;66,CENTER,204,1650,43,542,55,55;18,CENTER,2263,474,756,136,55,55;-234,CENTER,2029,1320,675,428,55,55;73,CENTER,2618,508,879,148,55,55;69,CENTER,602,833,181,260,55,55;88,CENTER,2600,1198,873,386,55,55;89,CENTER,2118,387,706,106,55,55;85,CENTER,625,1719,189,566,55,55;70,CENTER,2034,920,677,290,55,55;32,CENTER,2475,1682,824,553,66,55;86,CENTER,2283,1169,763,376,55,55;81,CENTER,374,833,102,260,55,55;74,CENTER,1440,1201,471,387,55,55;
33 | MACRO=-111,CENTER,2473,1401,829,456,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.fire()&*s*&\n })&*s*&\n} ())&*s*&\n;123,CENTER,2185,71,729,-3,55,55, (function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.toggleEnableOfTip()&*s*&\n })&*s*&\n} ())&*s*&\n;-123,CENTER,2173,1435,725,468,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.toggleX6Sight()&*s*&\n })&*s*&\n} ())&*s*&\n;72,CENTER,1980,77,658,-1,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.hideGun()&*s*&\n })&*s*&\n} ())&*s*&\n;9,CENTER,175,818,33,255,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.switchGun()&*s*&\n })&*s*&\n} ())&*s*&\n;38,CENTER,1751,210,579,45,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.addDelayOfGunPressArgs()&*s*&\n })&*s*&\n} ())&*s*&;40,CENTER,1907,210,633,45,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.subtractDelay()&*s*&\n })&*s*&\n} ())&*s*&\n;122,CENTER,2185,196,729,40,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.logErrorPressArgs()&*s*&\n })&*s*&\n} ())&*s*&\n;-333,CENTER,2771,1068,932,341,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.bindKeyMouseRight()&*s*&\n })&*s*&\n} ())&*s*&\n;17,CENTER,2312,74,773,-2,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.reset()&*s*&\n })&*s*&\n} ())&*s*&\n;97,CENTER,756,674,228,205,67,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.eatEnergyDrink()&*s*&\n })&*s*&\n} ())&*s*&\n;98,CENTER,903,671,279,204,67,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.eatPainkiller()&*s*&\n })&*s*&\n} ())&*s*&\n;99,CENTER,1051,671,330,204,67,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.eatEpinephrineInjection()&*s*&\n })&*s*&\n} ())&*s*&\n;100,CENTER,750,552,226,163,67,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.eatBandage()&*s*&\n })&*s*&\n} ())&*s*&\n;101,CENTER,900,543,278,160,67,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.eatFirstAidKit()&*s*&\n })&*s*&\n} ())&*s*&\n;102,CENTER,1045,540,328,159,67,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.eatMedicalFirstAidKit()&*s*&\n })&*s*&\n} ())&*s*&\n;103,CENTER,744,424,224,119,67,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.switchFragmentBomb()&*s*&\n })&*s*&\n} ())&*s*&\n;104,CENTER,892,424,275,119,67,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.switchSmokeBomb()&*s*&\n })&*s*&\n} ())&*s*&\n;105,CENTER,1042,422,327,118,67,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.switchMolotovCocktail()&*s*&\n })&*s*&\n} ())&*s*&\n;107,CENTER,2800,624,942,188,55,55,(function() {\nvar result =#& mapi.keyispress('shift')&*s*&\nmapi.tip(result)\n} ())&*s*&\n;116,CENTER,2286,196,764,40,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.swapGuns()&*s*&\n })&*s*&\n} ())&*s*&\n;120,CENTER,1774,352,587,94,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.toggleFlashMirror()&*s*&\n })&*s*&\n} ())&*s*&\n;115,CENTER,160,957,28,303,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.hideGun()&*s*&\n })&*s*&\n} ())&*s*&\n;112,CENTER,1751,523,579,153,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.bindKeyF1()&*s*&\n })&*s*&\n} ())&*s*&;113,CENTER,1749,665,578,202,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.bindKeyF2()&*s*&\n })&*s*&\n} ())&*s*&;114,CENTER,1746,804,577,250,55,55,(function() {\n import('keymap')\n .then(({ default: keymap }) =#&> {\n keymap.bindKeyF3()&*s*&\n })&*s*&\n} ())&*s*&;
34 |
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | const buildScripts = require('./builds/buildScripts');
2 | const buildImages = require('./builds/buildImages');
3 | const insertKeymap = require('./builds/insertKeymap');
4 |
5 | exports.buildScripts = buildScripts;
6 | exports.buildImages = buildImages;
7 | exports.insertKeymap = insertKeymap;
8 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tc-games-scripts",
3 | "version": "1.0.0",
4 | "description": "TC Games 压枪脚本",
5 | "main": "index.js",
6 | "directories": {
7 | "doc": "docs",
8 | "test": "test"
9 | },
10 | "scripts": {
11 | "build:image": "gulp buildImages",
12 | "build:script:nova9": "cross-env DEVICE=Nova9 gulp buildScripts",
13 | "build:script:matepad11": "cross-env DEVICE=MatePad11 gulp buildScripts",
14 | "build:script:XiaoMiPad6Max14": "cross-env DEVICE=XiaoMiPad6Max14 gulp buildScripts",
15 | "insert-keymap": "gulp insertKeymap"
16 | },
17 | "repository": {
18 | "type": "git",
19 | "url": "git+https://github.com/forwardNow/tc-games-scripts.git"
20 | },
21 | "keywords": [],
22 | "author": "",
23 | "license": "ISC",
24 | "bugs": {
25 | "url": "https://github.com/forwardNow/tc-games-scripts/issues"
26 | },
27 | "homepage": "https://github.com/forwardNow/tc-games-scripts#readme",
28 | "dependencies": {
29 | "gulp": "^4.0.2",
30 | "gulp-rename": "^2.0.0",
31 | "gulp-replace": "^1.1.4",
32 | "gulp-typescript": "^6.0.0-alpha.1"
33 | },
34 | "devDependencies": {
35 | "cross-env": "^7.0.3"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/qodana.yaml:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------------------------------------#
2 | # Qodana analysis is configured by qodana.yaml file #
3 | # https://www.jetbrains.com/help/qodana/qodana-yaml.html #
4 | #-------------------------------------------------------------------------------#
5 | version: "1.0"
6 |
7 | #Specify inspection profile for code analysis
8 | profile:
9 | name: qodana.starter
10 |
11 | #Enable inspections
12 | #include:
13 | # - name:
14 |
15 | #Disable inspections
16 | #exclude:
17 | # - name:
18 | # paths:
19 | # -
20 |
21 | #The following options are only applied in CI/CD environment
22 | #These options are ignored during local run
23 |
24 | #Execute shell command before Qodana execution
25 | #bootstrap: sh ./prepare-qodana.sh
26 |
27 | #Install IDE plugins before Qodana execution
28 | #plugins:
29 | # - id: #(plugin id can be found at https://plugins.jetbrains.com)
30 |
31 | #Specify Qodana linter for analysis
32 | linter: jetbrains/qodana-js:latest
33 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # TC Games JS 脚本
2 |
3 | ## 1. 介绍
4 |
5 | 说明:
6 |
7 | * [TC Games](http://www.tcgames.com.cn/) 和平精英 自动压枪 辅助脚本,其他辅助功能见“宏按键绑定”
8 | * TC Games: 将安卓移动设备投屏到电脑,用电脑操作安卓设备 的软件
9 |
10 | 安装:
11 |
12 | 1. 下载此项目并解压,建议解压到桌面
13 | 2. 下载并安装 [node.js v16.20.1](https://nodejs.org/download/release/v16.20.1/node-v16.20.1-x64.msi)
14 | 3. 使用 windows 搜索 “cmd”,打开 “命令提示符”
15 | 4. 执行如下命令:(`#` 打头的不用执行)
16 |
17 | ```text
18 | # 切换盘符
19 | C:\Users\abc> W:
20 |
21 | # 切换到项目根目录
22 | W:\> cd W:\dev\tc-games-scripts
23 |
24 | # 安装 gulp-cli
25 | W:\dev\tc-games-scripts> npm i -g gulp-cli
26 |
27 | # 安装 gulp
28 | W:\dev\tc-games-scripts> npm i gulp
29 |
30 | # 安装项目依赖
31 | W:\dev\tc-games-scripts> npm i
32 |
33 | # 构建图片:
34 | # 1. 删除 "TC Games\resource\game\smartkey\com.tencent.tmgp.pubgmhd" 目录
35 | # 2. 将 "src/images/" 下的图片拷贝过去
36 | W:\dev\tc-games-scripts> npm run build:image
37 |
38 | # 构建 nova9 可以使用的脚本(根据自己的设备选择,执行一个即可)
39 | W:\dev\tc-games-scripts> npm run build:script:nova9
40 |
41 | # 构建 matepad11 可以使用的脚本(根据自己的设备选择,执行一个即可)
42 | W:\dev\tc-games-scripts> npm run build:script:matepad11
43 |
44 | # 构建 XiaoMiPad6Max14 可以使用的脚本(根据自己的设备选择,执行一个即可)
45 | W:\dev\tc-games-scripts> npm run build:script:XiaoMiPad6Max14
46 | ```
47 |
48 | 键位:
49 |
50 | * 位置:[./docs/键位配置/2880x1800/TG_Keys_XiaoMiPad6Max14_2023-12-31.properties](./docs/键位配置/2880x1800/TG_Keys_XiaoMiPad6Max14_2023-12-31.properties)
51 |
52 | 宏按键绑定:
53 |
54 |
55 |
56 | | 按键 | 说明 | 宏 |
57 | | --- | --- | --- |
58 | | Ctrl | 1. 重置 准心
2. 重置 方向键
3. 重置点头操作 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.reset();`
` });`
`} ());` |
59 | | F1 | 1. 拾取
2. 切 雷 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.bindKeyF1();`
` });`
`} ());` |
60 | | F11 | 记录不准确的压枪参数 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.logErrorPressArgs();`
` });`
`} ());` |
61 | | F12 | 启用/禁用 utils.showTip() | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.toggleEnableOfTip();`
` });`
`} ());` |
62 | | F2 | 1. 拾取
2. 切 烟 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.bindKeyF2();`
` });`
`} ());` |
63 | | F3 | 1. 拾取
2. 切 火 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.bindKeyF3();`
` });`
`} ());` |
64 | | F4 | 收枪 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.hideGun();`
` });`
`} ());` |
65 | | F5 | 左右枪互换 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.swapGuns();`
` });`
`} ());` |
66 | | Num1 | 吃 能量饮料 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.eatEnergyDrink();`
` });`
`} ());` |
67 | | Num2 | 吃 止痛药 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.eatPainkiller();`
` });`
`} ());` |
68 | | Num3 | 吃 肾上腺素注射剂 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.eatEpinephrineInjection();`
` });`
`} ());` |
69 | | Num4 | 吃 绷带 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.eatBandage();`
` });`
`} ());` |
70 | | Num5 | 吃 急救包 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.eatFirstAidKit();`
` });`
`} ());` |
71 | | Num6 | 吃 医疗急救箱 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.eatMedicalFirstAidKit();`
` });`
`} ());` |
72 | | Num7 | 切换 破片手榴弹 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.switchFragmentBomb();`
` });`
`} ());` |
73 | | Num8 | 切换 烟雾弹 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.switchSmokeBomb();`
` });`
`} ());` |
74 | | Num9 | 切换 燃烧瓶 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.switchMolotovCocktail();`
` });`
`} ());` |
75 | | Tab | 切枪 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.switchGun();`
` });`
`} ());` |
76 | | 上箭头 | 动态调整压枪参数, +1 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.addDelayOfGunPressArgs();`
` });`
`} ());` |
77 | | 下箭头 | 动态调整压枪参数, -1 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.subtractDelay();`
` });`
`} ());` |
78 | | 鼠标右键 | 复合按键:
1. 丢弃背包中光标所指位置的配件 (一旦执行,后续操作都取消)
2. 取消投掷 (一旦执行,后续操作都取消)
3. 开镜
4. 更新压枪参数 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.bindKeyMouseRight();`
` });`
`} ());` |
79 | | 鼠标左键 | 开火 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.fire();`
` });`
`} ());` |
80 | | 鼠标滚轮-滚上 | 调整 6 倍镜
并存储调整过 6 倍镜倍率的枪及倍率 | `(function() {`
` import('keymap')`
` .then(({ default: keymap }) => {`
` keymap.toggleX6Sight();`
` });`
`} ());` |
81 |
82 |
83 |
84 | ## 2. 环境
85 |
86 | ### 2.1. 和平精英
87 |
88 | 说明:
89 |
90 | * 灵敏度 及 按键 都使用默认即可
91 |
92 | 图示:
93 |
94 | 
95 |
96 | ### 2.2. TC Games
97 |
98 | 
99 |
100 | ### 2.3. 移动设备
101 |
102 | 目前主要使用
103 |
104 | * 小米 Pad 6 max 14
105 | * 华为 matepad11
106 | * 华为 nova9(没有做适配)
107 |
108 | #### 2.3.1. Mi6ProMax
109 |
110 | 参数:
111 |
112 | | 类别 | 描述 |
113 | |-----|-----------------|
114 | | 品牌 | 小米 Pad 6 Max 14 |
115 | | 分辨率 | 2880 × 1800 |
116 |
117 | #### 2.3.2. matepad11
118 |
119 | 参数:
120 |
121 | | 类别 | 描述 |
122 | |-----|---------------|
123 | | 品牌 | 华为 MatePad 11 |
124 | | 分辨率 | 2560 × 1600 |
125 |
126 | #### 2.3.3. nova9
127 |
128 | 参数:
129 |
130 | | 类别 | 描述 |
131 | |--------|---------------------|
132 | | 品牌 | 华为 nova9 (NAM-AL00) |
133 | | 分辨率 | 2430 × 1080 |
134 | | 刷新率 | 智能(最高 120 Hz) |
135 | | 屏幕顶部显示 | 自动匹配 |
136 |
137 |
138 | ### 2.4. 电脑
139 |
140 | #### 2.4.1. 笔记本
141 |
142 | 参数:
143 |
144 | | 类别 | 描述 |
145 | |-----|----------------------|
146 | | 品牌 | 联想笔记本,拯救者 R7000 2021 |
147 | | 系统 | win10 |
148 | | 分辨率 | 2560 × 1600 |
149 |
150 |
151 | #### 2.4.2. 一体机
152 |
153 | 参数:
154 |
155 | | 类别 | 描述 |
156 | |-----|----------------------|
157 | | 品牌 | iMac,2017年款 |
158 | | 系统 | win10 |
159 | | 分辨率 | 4096 × 2304, 缩放 200% |
160 |
161 | ## 3. JS 文件
162 |
163 | ### 3.1. 存放位置
164 |
165 | 位置:
166 |
167 | * `C:\Users\abc\AppData\Roaming\Sigma-RT\TC Games\resource\Scripts` (简称“脚本目录”)
168 | * 
169 |
170 | 说明:
171 |
172 | * 在 “脚本目录” 中存放的 JS 文件都会被加载
173 |
174 | ### 3.2. 刷新
175 |
176 | 输入设置 中 快捷键:
177 |
178 | * 键位一键恢复: Ctrl + F5
179 |
180 | 修改了 “脚本目录” 中的 JS 文件后,按 `Ctrl + F5` 后就生效了
181 |
182 | ### 3.3. 模块化语法
183 |
184 | 说明:
185 |
186 | * 使用 ES6 模块化语法
187 | * 不能使用相对路径
188 |
189 | 示例:
190 |
191 | * 目录:
192 |
193 | ```text
194 | .../TC Games/resource/Scripts/
195 | main.js
196 | gun.js
197 | ```
198 |
199 | * gun.js:
200 |
201 | ```javascript
202 | // 暴露一个函数
203 | export function getCurrentGunName() {
204 | // ...
205 | }
206 | ```
207 |
208 | * main.js:
209 |
210 | ```javascript
211 | // 导入 gun 模块(gun.js)
212 | import gun from 'gun';
213 |
214 | const gunName = gun.getCurrentGunName();
215 |
216 | mapi.tip(gunName, 2);
217 | ```
218 |
219 | ## 4. 宏按键
220 |
221 | 什么是宏按键:
222 |
223 | * 键位设置 -> 宏按键
224 | * 
225 |
226 | 宏按键里的 JS 代码必须用**立即执行的函数**包裹起来:
227 |
228 | ```javascript
229 | (function() {
230 |
231 | // 你的代码
232 |
233 | }());
234 | ```
235 |
236 | 在宏按键里使用 “脚本目录” 中的 JS 文件(模块):
237 |
238 | ```javascript
239 | // 使用 gun.js
240 | (function() {
241 | import('gun').then((gun) =>{
242 |
243 | const gunName = gun.getCurrentGunName();
244 |
245 | mapi.tip(gunName, 2);
246 |
247 | });
248 | }());
249 | ```
250 |
251 | 模块实例问题:
252 |
253 | ```javascript
254 | // test.js
255 | export default {
256 | count: 1,
257 | add() {
258 | this.count += 1;
259 | }
260 | };
261 |
262 | // 绑定 num1
263 | (function() {
264 | import('test').then(({ default: test }) => {
265 | const prev = test.count;
266 | test.add();
267 | const curr = test.count;
268 |
269 | mapi.tip(`prev = ${prev}; curr = ${curr}`); // 显示累加的结果
270 | });
271 | }());
272 |
273 | // 绑定 num2
274 | (function() {
275 | import('test').then(({ default: test }) => {
276 | mapi.tip(`count = ${test.count}`); // 一直显示初始值
277 | });
278 | }());
279 |
280 |
281 | // num1 宏,多次执行只产生一个 test 模块对象 A
282 | // num2 宏,多次执行只产生一个 test 模块对象 B
283 | // A !== B
284 | ```
285 |
286 | JS 宏日志:
287 |
288 | * 作用:JS 代码报错都会记录在日志文件
289 | * 位置:`C:\Users\abc\AppData\Roaming\Sigma-RT\TC Games\log\macro_javascript.log`
290 | * 查看:`tail -f ~/AppData/Roaming/Sigma-RT/TC\ Games/log/macro_javascript.log`
291 |
292 | ## 5. 图片
293 |
294 | 说明:
295 |
296 | * “简单找图” 用到的图片,`mapi.findimage(图片名称, ....)`
297 |
298 | 注意:
299 |
300 | * 纯文字找图,相似度要调低
301 |
302 | 位置:
303 |
304 | * `C:\Users\abc\AppData\Roaming\Sigma-RT\TC Games\resource\game\smartkey\com.tencent.tmgp.pubgmhd`
305 |
306 | 目录:
307 |
308 | ```text
309 | com.tencent.tmgp.pubgmhd/
310 | 1080/ # 存放分辨率高度为 1080 设备的图片
311 | 1600/ # 存放分辨率高度为 1600 设备的图片
312 | ```
313 |
314 | 查找图片的规则:
315 |
316 | * `mapi.findimage('AKM', ....)`
317 | * 如果当前设备是 1080 的手机,则优先去 `1080` 目录找,找不到则去 `1600` 目录找
318 | * 所以可以使用 1600 的平板,然后降低相似度就可以在 1080 的设备上用了
319 |
320 | ## 6. JS API
321 |
322 | ### 6.1. mapi
323 |
324 | 全局对象,JSAPI 接口
325 |
326 | 类型说明文件:[types/mapi.d.ts](./types/mapi.d.ts)
327 |
328 | 官方文档:[http://www.sigma-rt.com/tcgames/help/?u=15](http://www.sigma-rt.com/tcgames/help/?u=15)
329 |
330 | ### 6.2. 多点找色
331 |
332 | 说明:
333 |
334 | * 那个点 是否 是那个色
335 | * 配合
336 |
337 | API:
338 |
339 | * `mapi.findcolor`
340 |
341 | 示例:
342 |
343 | ```javascript
344 | const point = mapi.findimage('255:254:247:142', '1475:648+1477:648+1475:650+1477:650');
345 |
346 | if (point.X !== 0 || point.Y !== 0) {
347 | // 找到了
348 | }
349 | ```
350 |
351 | ### 6.3. 全局 map
352 |
353 | 说明:
354 |
355 | * 读写全局变量
356 |
357 | API:
358 |
359 | * `mapi.setglobalmap`: 写
360 | * `mapi.getglobalmap`: 读
361 |
362 | 示例:
363 |
364 | ### 6.4. 日志
365 |
366 | 说明:
367 |
368 | * 日志输出路径:%appdata%\Sigma-RT\TC Games\Log\macro_javascript.log
369 |
370 | API:
371 |
372 | * `logdebug`
373 | * `loginfo`
374 | * `logwarning`
375 | * `logerror`
376 | * `logfatal`
377 |
378 | 注意:
379 |
380 | * API 是全局方法,不需要 mapi
381 |
382 | ## 7. bug
383 |
384 | ### 7.1. 分段压枪,自动开枪
385 |
386 | 描述:
387 |
388 | * 分段压枪,切换 蹲/站 时,点一下开火键会自动打二三十发子弹
389 |
390 | ## 其他
391 |
392 | 拾取方案:
393 |
394 | *
395 |
396 | ## 8. 参考
397 |
398 | * [和平精英手游物资及事件场景中英文对照(持续更新,务必收藏!)](https://zhuanlan.zhihu.com/p/359768662)
399 | * [官方文档](https://www.sigma-rt.com/tcgames/help/?u=15)
400 |
--------------------------------------------------------------------------------
/src/images/1600/bag/拾取列表关闭按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/bag/拾取列表关闭按钮.png
--------------------------------------------------------------------------------
/src/images/1600/bag/背包已打开的标志.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/bag/背包已打开的标志.png
--------------------------------------------------------------------------------
/src/images/1600/car/下车按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/car/下车按钮.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图ACVAL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图ACVAL.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图AKM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图AKM.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图AUG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图AUG.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图DP28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图DP28.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图GROZA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图GROZA.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图M249.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图M249.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图M4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图M4.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图M417.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图M417.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图M762.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图M762.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图MG3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图MG3.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图MIGUAN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图MIGUAN.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图MK20H.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图MK20H.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图P90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图P90.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图PKM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图PKM.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图SCARL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图SCARL.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图TANGMUXUN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图TANGMUXUN.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图UMP45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图UMP45.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图UZI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图UZI.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图VECTOR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图VECTOR.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图VSS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图VSS.png
--------------------------------------------------------------------------------
/src/images/1600/guns/delicate/大图YENIU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/delicate/大图YENIU.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/ACVAL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/ACVAL.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/AK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/AK.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/AKM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/AKM.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/AUG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/AUG.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/DP28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/DP28.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/GOZA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/GOZA.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/GROZA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/GROZA.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/M249.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/M249.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/M4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/M4.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/M417.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/M417.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/M762.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/M762.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/MG3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/MG3.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/MIGUAN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/MIGUAN.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/MK20H.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/MK20H.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/P90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/P90.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/PKM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/PKM.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/SCARL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/SCARL.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/TANGMUXUN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/TANGMUXUN.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/UMP45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/UMP45.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/UZI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/UZI.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/VECTOR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/VECTOR.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/VSS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/VSS.png
--------------------------------------------------------------------------------
/src/images/1600/guns/flat/YENIU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/guns/flat/YENIU.png
--------------------------------------------------------------------------------
/src/images/1600/medicine/急救包.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/medicine/急救包.png
--------------------------------------------------------------------------------
/src/images/1600/medicine/止痛药.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/medicine/止痛药.png
--------------------------------------------------------------------------------
/src/images/1600/medicine/绷带.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/medicine/绷带.png
--------------------------------------------------------------------------------
/src/images/1600/medicine/肾上腺素注射剂.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/medicine/肾上腺素注射剂.png
--------------------------------------------------------------------------------
/src/images/1600/medicine/能量饮料.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/medicine/能量饮料.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/6倍镜调距按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/6倍镜调距按钮.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/delicate/大图2倍镜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/delicate/大图2倍镜.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/delicate/大图3倍镜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/delicate/大图3倍镜.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/delicate/大图4倍镜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/delicate/大图4倍镜.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/delicate/大图6倍镜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/delicate/大图6倍镜.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/delicate/大图8倍镜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/delicate/大图8倍镜.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/delicate/大图全息.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/delicate/大图全息.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/delicate/大图红点.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/delicate/大图红点.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/text/2倍镜文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/text/2倍镜文本.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/text/3倍镜文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/text/3倍镜文本.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/text/4倍镜文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/text/4倍镜文本.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/text/6倍镜文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/text/6倍镜文本.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/text/8倍镜文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/text/8倍镜文本.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/text/全息文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/text/全息文本.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/text/机瞄文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/text/机瞄文本.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/text/红点文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/text/红点文本.png
--------------------------------------------------------------------------------
/src/images/1600/mirrors/第一人称文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/mirrors/第一人称文本.png
--------------------------------------------------------------------------------
/src/images/1600/missile/取消投掷按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/missile/取消投掷按钮.png
--------------------------------------------------------------------------------
/src/images/1600/missile/投掷物展开按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/missile/投掷物展开按钮.png
--------------------------------------------------------------------------------
/src/images/1600/missile/投掷物折叠按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/missile/投掷物折叠按钮.png
--------------------------------------------------------------------------------
/src/images/1600/missile/烟雾弹.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/missile/烟雾弹.png
--------------------------------------------------------------------------------
/src/images/1600/missile/燃烧瓶.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/missile/燃烧瓶.png
--------------------------------------------------------------------------------
/src/images/1600/missile/碎片手榴弹.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1600/missile/碎片手榴弹.png
--------------------------------------------------------------------------------
/src/images/1800/bag/拾取列表关闭按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/bag/拾取列表关闭按钮.png
--------------------------------------------------------------------------------
/src/images/1800/bag/拾取列表关闭按钮备用2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/bag/拾取列表关闭按钮备用2.png
--------------------------------------------------------------------------------
/src/images/1800/bag/背包已打开的标志.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/bag/背包已打开的标志.png
--------------------------------------------------------------------------------
/src/images/1800/car/下车按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/car/下车按钮.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图ACVAL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图ACVAL.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图AKM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图AKM.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图AUG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图AUG.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图DP28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图DP28.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图GROZA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图GROZA.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图M249.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图M249.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图M4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图M4.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图M417.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图M417.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图M762.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图M762.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图MG3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图MG3.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图MIGUAN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图MIGUAN.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图MK20H.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图MK20H.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图P90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图P90.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图PKM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图PKM.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图SCARL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图SCARL.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图TANGMUXUN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图TANGMUXUN.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图UMP45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图UMP45.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图UZI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图UZI.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图VECTOR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图VECTOR.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图VSS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图VSS.png
--------------------------------------------------------------------------------
/src/images/1800/guns/delicate/大图YENIU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/delicate/大图YENIU.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/ACVAL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/ACVAL.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/AK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/AK.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/AKM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/AKM.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/AUG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/AUG.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/DP28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/DP28.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/GOZA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/GOZA.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/GROZA.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/GROZA.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/M249.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/M249.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/M4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/M4.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/M417.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/M417.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/M762.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/M762.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/MG3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/MG3.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/MIGUAN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/MIGUAN.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/MK14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/MK14.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/MK20H.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/MK20H.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/P90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/P90.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/PKM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/PKM.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/SCARL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/SCARL.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/TANGMUXUN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/TANGMUXUN.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/UMP45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/UMP45.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/UZI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/UZI.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/VECTOR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/VECTOR.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/VSS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/VSS.png
--------------------------------------------------------------------------------
/src/images/1800/guns/flat/YENIU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/guns/flat/YENIU.png
--------------------------------------------------------------------------------
/src/images/1800/medicine/急救包.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/medicine/急救包.png
--------------------------------------------------------------------------------
/src/images/1800/medicine/止痛药.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/medicine/止痛药.png
--------------------------------------------------------------------------------
/src/images/1800/medicine/绷带.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/medicine/绷带.png
--------------------------------------------------------------------------------
/src/images/1800/medicine/肾上腺素注射剂.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/medicine/肾上腺素注射剂.png
--------------------------------------------------------------------------------
/src/images/1800/medicine/能量饮料.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/medicine/能量饮料.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/6倍镜调距按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/6倍镜调距按钮.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/delicate/大图2倍镜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/delicate/大图2倍镜.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/delicate/大图3倍镜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/delicate/大图3倍镜.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/delicate/大图4倍镜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/delicate/大图4倍镜.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/delicate/大图6倍镜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/delicate/大图6倍镜.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/delicate/大图8倍镜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/delicate/大图8倍镜.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/delicate/大图全息.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/delicate/大图全息.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/delicate/大图红点.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/delicate/大图红点.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/text/2倍镜文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/text/2倍镜文本.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/text/3倍镜文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/text/3倍镜文本.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/text/4倍镜文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/text/4倍镜文本.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/text/6倍镜文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/text/6倍镜文本.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/text/8倍镜文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/text/8倍镜文本.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/text/全息文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/text/全息文本.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/text/机瞄文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/text/机瞄文本.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/text/红点文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/text/红点文本.png
--------------------------------------------------------------------------------
/src/images/1800/mirrors/第一人称文本.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/mirrors/第一人称文本.png
--------------------------------------------------------------------------------
/src/images/1800/missile/取消投掷按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/missile/取消投掷按钮.png
--------------------------------------------------------------------------------
/src/images/1800/missile/投掷物展开按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/missile/投掷物展开按钮.png
--------------------------------------------------------------------------------
/src/images/1800/missile/投掷物折叠按钮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/missile/投掷物折叠按钮.png
--------------------------------------------------------------------------------
/src/images/1800/missile/烟雾弹.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/missile/烟雾弹.png
--------------------------------------------------------------------------------
/src/images/1800/missile/燃烧瓶.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/missile/燃烧瓶.png
--------------------------------------------------------------------------------
/src/images/1800/missile/碎片手榴弹.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/forwardNow/tc-games-scripts/5f16084aab4c7423a7e79b501e0479d4899b198c/src/images/1800/missile/碎片手榴弹.png
--------------------------------------------------------------------------------
/src/scripts/bag.ts:
--------------------------------------------------------------------------------
1 | import { utils } from './utils';
2 | import constant, { BindKeys } from './constant';
3 | import { ImageArgs, Point } from '../../types';
4 |
5 | export class Bag {
6 | static ImageArgs: { [name: string]: ImageArgs } = {
7 | BagOpenFlagIcon: ['背包已打开的标志', 0.75, 4, 4, 4, 1],
8 | PickupCloseIcon: ['拾取列表关闭按钮', 0.75, 4, 4, 3, 1],
9 | PickupCloseBackupIcon: ['拾取列表关闭按钮备用2', 0.75, 4, 4, 3, 1],
10 | }
11 |
12 | static Points: { [prop: string]: Point } = {
13 | BagLeftGunCenterPoint: { x: 1788, y: 325 } as Point,
14 | BagRightGunCenterPoint: { x: 1788, y: 973 } as Point,
15 | };
16 |
17 | openBag() {
18 | if (this.isBagOpen()) {
19 | return;
20 | }
21 |
22 | utils.clickKey(BindKeys.Bag);
23 | }
24 |
25 | closeBag() {
26 | if (!this.isBagOpen()) {
27 | return;
28 | }
29 |
30 | utils.clickKey(BindKeys.Bag)
31 | }
32 |
33 | isBagOpen() {
34 | return utils.isImageExist(...Bag.ImageArgs.BagOpenFlagIcon);
35 | }
36 |
37 | /**
38 | * 丢弃光标所指的物资
39 | * @returns {boolean} true - 执行成功
40 | */
41 | discardMaterialsUnderCursor = () => {
42 | if (!this.isBagOpen()) {
43 | return false;
44 | }
45 |
46 | const startPoint = utils.getMousePosition();
47 |
48 | const startX = startPoint.X;
49 | const startY = startPoint.Y;
50 | const endX = constant.BagDustbinX;
51 | const endY = startPoint.Y;
52 |
53 | const total = 200;
54 | const pointNum = 10;
55 | const interval = total / pointNum;
56 |
57 | utils.slide(startX, startY, endX, endY, interval, pointNum);
58 |
59 | return true;
60 | }
61 |
62 | swapGuns() {
63 | this.openBag();
64 |
65 | utils.delay();
66 |
67 | const {
68 | BagLeftGunCenterPoint: { x: startX, y: startY },
69 | BagRightGunCenterPoint: { x: endX, y: endY },
70 | } = Bag.Points;
71 |
72 | const total = 300;
73 | const pointNum = 20;
74 | const interval = total / pointNum;
75 |
76 | utils.slide(startX, startY, endX, endY, interval, pointNum);
77 |
78 | utils.delay(400);
79 |
80 | this.closeBag();
81 | }
82 |
83 | /** 是否可以拾取东西 */
84 | canPickUp() {
85 | return utils.isImageExist(...Bag.ImageArgs.PickupCloseIcon)
86 | || utils.isImageExist(...Bag.ImageArgs.PickupCloseBackupIcon);
87 | }
88 | }
89 |
90 | export const bag = new Bag();
91 |
--------------------------------------------------------------------------------
/src/scripts/car.ts:
--------------------------------------------------------------------------------
1 | import { ImageArgs } from '../../types';
2 | import { utils } from './utils';
3 | import { BindKeys } from './constant';
4 |
5 | export class Car {
6 | static ImageArgs: { [name: string]: ImageArgs } = {
7 | GetOffButton: ['下车按钮', 0.75, 4, 3, 4, 2]
8 | }
9 |
10 | /** 是否在车上 */
11 | isOnCar() {
12 | const point = utils.findImage(...Car.ImageArgs.GetOffButton);
13 |
14 | const result = utils.isPointExist(point);
15 |
16 | return { point, result };
17 | }
18 |
19 | /** 上车 */
20 | getOn() {
21 | utils.clickKey(BindKeys.GetOnDriver);
22 |
23 | utils.resetAimAndDirection(100);
24 |
25 | return true;
26 | }
27 |
28 | /** 下车 */
29 | getOff = () => {
30 | const { result, point } = this.isOnCar();
31 |
32 | if (!result) {
33 | return;
34 | }
35 |
36 | utils.clickPoint(point);
37 |
38 | utils.resetAimAndDirection(100);
39 |
40 | return true;
41 | }
42 | }
43 |
44 | export const car = new Car();
45 |
--------------------------------------------------------------------------------
/src/scripts/constant.ts:
--------------------------------------------------------------------------------
1 | import { ColorArgs, Point } from '../../types';
2 | export const Keyboard = {
3 | Shift: 'shift',
4 |
5 | B: 'B',
6 | F: 'F',
7 | G: 'G',
8 |
9 | Num5: '5',
10 |
11 | SmallNum1: 'num1'
12 | }
13 |
14 | export const BindKeys = {
15 | /** 背包 */
16 | Bag: Keyboard.B,
17 |
18 | /** 上车,驾驶*/
19 | GetOnDriver: Keyboard.F,
20 |
21 | /** 上车,乘坐*/
22 | GetOnPassenger: Keyboard.G,
23 |
24 | /** 打药 */
25 | TakeMedicine: Keyboard.Num5,
26 | };
27 |
28 |
29 | export const NodHeadConfig = {
30 | Interval: 300,
31 | MaxDuration: 2000,
32 | };
33 |
34 | // 华为 nova9, 2430 × 1080
35 | const Nova9 = {
36 | SquatIconColorArgs: [ '255:255:241:119', '1305:653+1307:658+1307:665+1312:672+1313:681+1313:684' ] as ColorArgs,
37 | ProstrateIconColorArgs: [ '255:253:237:119', '1421:639+1426:644+1437:649+1445:652' ] as ColorArgs,
38 |
39 | LeftGunHighlightColorArgs: [ '255:255:221:0', '613:613' ] as ColorArgs,
40 | RightGunHighlightColorArgs: [ '255:254:220:1', '786:614' ] as ColorArgs,
41 |
42 | LeftGunPositionPoint: { x: 1036, y: 946 } as Point,
43 | RightGunPositionPoint: { x: 1263, y: 961 } as Point,
44 |
45 | X6MirrorZoomBarX3PositionPoint: { x: 678, y: 597 } as Point,
46 | X6MirrorZoomBarX6PositionPoint: { x: 678, y: 346 } as Point,
47 |
48 | MirrorHighlightColorArgs: [ '255:255:241:126', '1094:413+1109:408+1108:407+1108:408' ] as ColorArgs,
49 |
50 | MirrorTextImageSim: {
51 | X8Sight: 0.65,
52 | X6Sight: 0.60,
53 | X4Sight: 0.68,
54 | X3Sight: 0.56,
55 | X2Sight: 0.68,
56 | MachineSight: 0.65,
57 | HolographicSight: 0.65,
58 | RedDotSight: 0.65,
59 | },
60 |
61 | BagDustbinX: 2350,
62 |
63 | RescueButtonPoint: { x: 1, y: 1 } as Point,
64 |
65 | OpenMirrorButtonPoint: { x: 1, y: 1 } as Point,
66 |
67 | SquatIconPoint: { x: 1, y: 1 } as Point,
68 | };
69 |
70 |
71 | // 华为 MatePad 11, 2560 × 1600
72 | const MatePad11 = {
73 | SquatIconColorArgs: [ '255:254:239:111', '983:694+984:682+993:690+992:691' ] as ColorArgs,
74 | ProstrateIconColorArgs: [ '255:254:225:114', '1076:655+1100:661+1107:661+1112:659' ] as ColorArgs,
75 |
76 | LeftGunHighlightColorArgs: [ '255:242:211:4', '437:629' ] as ColorArgs,
77 | RightGunHighlightColorArgs: [ '255:255:222:0', '582:629' ] as ColorArgs,
78 |
79 | LeftGunPositionPoint: { x: 1125, y: 1450 } as Point,
80 | RightGunPositionPoint: { x: 1430, y: 1450 } as Point,
81 |
82 | X6MirrorZoomBarX3PositionPoint: { x: 746, y: 882 } as Point,
83 | X6MirrorZoomBarX6PositionPoint: { x: 748, y: 538 } as Point,
84 |
85 | MirrorHighlightColorArgs: [ '255:255:241:126', '1094:413+1109:408+1108:407+1108:408' ] as ColorArgs,
86 |
87 | MirrorTextImageSim: {
88 | X8Sight: 0.75,
89 | X6Sight: 0.85,
90 | X4Sight: 0.75,
91 | X3Sight: 0.75,
92 | X2Sight: 0.75,
93 | MachineSight: 0.65,
94 | HolographicSight: 0.75,
95 | RedDotSight: 0.75,
96 | },
97 |
98 | BagDustbinX: 2500,
99 |
100 | RescueButtonPoint: { x: 1282, y: 1070 } as Point,
101 |
102 | OpenMirrorButtonPoint: { x: 2465, y: 954 } as Point,
103 |
104 | /** 蹲 */
105 | SquatIconPoint: { x: 2200, y: 1500 } as Point,
106 | };
107 |
108 | // 小米 6 pro max, 2800 × 1800
109 | const XiaoMiPad6Max14 = {
110 | SquatIconColorArgs: [ '255:254:239:111', '983:694+984:682+993:690+992:691' ] as ColorArgs,
111 | ProstrateIconColorArgs: [ '255:254:225:114', '1076:655+1100:661+1107:661+1112:659' ] as ColorArgs,
112 |
113 | LeftGunHighlightColorArgs: [ '255:242:211:4', '437:629' ] as ColorArgs,
114 | RightGunHighlightColorArgs: [ '255:255:222:0', '582:629' ] as ColorArgs,
115 |
116 | LeftGunPositionPoint: { x: 1280, y: 1620 } as Point,
117 | RightGunPositionPoint: { x: 1620, y: 1620 } as Point,
118 |
119 | X6MirrorZoomBarX3PositionPoint: { x: 832, y: 986 } as Point,
120 | X6MirrorZoomBarX6PositionPoint: { x: 832, y: 609 } as Point,
121 |
122 | MirrorHighlightColorArgs: [ '255:255:241:126', '1094:413+1109:408+1108:407+1108:408' ] as ColorArgs,
123 |
124 | MirrorTextImageSim: {
125 | X8Sight: 0.80,
126 | X6Sight: 0.85,
127 | X4Sight: 0.75,
128 | X3Sight: 0.75,
129 | X2Sight: 0.75,
130 | MachineSight: 0.65,
131 | HolographicSight: 0.75,
132 | RedDotSight: 0.75,
133 | },
134 |
135 | BagDustbinX: 2800,
136 |
137 | RescueButtonPoint: { x: 1282, y: 1070 } as Point,
138 |
139 | OpenMirrorButtonPoint: { x: 2465, y: 954 } as Point,
140 |
141 | /** 蹲 */
142 | SquatIconPoint: { x: 2200, y: 1500 } as Point,
143 | };
144 |
145 | export default /* replace start */ XiaoMiPad6Max14 /* replace end */;
146 |
--------------------------------------------------------------------------------
/src/scripts/gun.ts:
--------------------------------------------------------------------------------
1 | import { GunCategory, GunPosition, ImageAreaArgs } from '../../types';
2 | import { utils } from './utils';
3 | import constant from './constant';
4 |
5 | export class Gun {
6 | /** 枪的类型 */
7 | static Categories: { [key in GunCategory]: GunCategory } = {
8 | M4: 'M4',
9 | SCARL: 'SCARL',
10 | DP28: 'DP28',
11 |
12 | UMP45: 'UMP45',
13 | YENIU: 'YENIU',
14 | UZI: 'UZI',
15 | VECTOR: 'VECTOR',
16 | TANGMUXUN: 'TANGMUXUN', // 汤姆逊枪
17 |
18 | AKM: 'AKM',
19 |
20 | ACVAL: 'ACVAL',
21 |
22 | PKM: 'PKM',
23 |
24 | VSS: 'VSS',
25 | MK20H: 'MK20H',
26 | M417: 'M417',
27 |
28 | M249: 'M249',
29 |
30 | M762: 'M762',
31 |
32 | AUG: 'AUG',
33 | GROZA: 'GROZA',
34 | MG3: 'MG3',
35 | P90: 'P90',
36 |
37 | MIGUAN: 'MIGUAN', // 蜜罐
38 |
39 | MK14: 'MK14',
40 | };
41 |
42 | static X8SightGuns: GunCategory[] = [ 'M417', 'MK20H' ];
43 |
44 | /** 持枪位置 */
45 | static GunPosition: { [key in GunPosition]: GunPosition } = {
46 | /** 左边枪 */
47 | Left: 'Left',
48 | /** 右边枪 */
49 | Right: 'Right',
50 | }
51 |
52 |
53 | /** 持枪位置-图片区域 */
54 | static GunPositionImageArea: { [key in GunPosition]: ImageAreaArgs } = {
55 | Left: [ 0.85, 4, 4, 2, 4 ],
56 | Right: [ 0.85, 4, 4, 3, 4 ],
57 | }
58 |
59 | /**
60 | * 获取当前持枪的位置
61 | * @return { string | null }
62 | */
63 | getGunPosition() {
64 | if (this.isLeftGun()) {
65 | return Gun.GunPosition.Left;
66 | }
67 |
68 | if (this.isRightGun()) {
69 | return Gun.GunPosition.Right;
70 | }
71 |
72 | return null;
73 | }
74 |
75 | /** 是否持 左 枪 */
76 | isLeftGun() {
77 | return utils.isColorExist(...constant.LeftGunHighlightColorArgs);
78 | }
79 |
80 | /** 是否持 右 枪 */
81 | isRightGun() {
82 | return utils.isColorExist(...constant.RightGunHighlightColorArgs);
83 | }
84 |
85 | /** 是否 持枪 */
86 | isHoldGun() {
87 | return Boolean(this.getGunPosition());
88 | }
89 |
90 | /** 是否持有已配置的枪 */
91 | isHoldConfiguredGun() {
92 | return Boolean(this.getCurrentGun());
93 | }
94 |
95 |
96 | /** 获取当前枪械的名称 */
97 | getCurrentGun() {
98 | const gunPosition = this.getGunPosition();
99 |
100 | if (!gunPosition) {
101 | return;
102 | }
103 |
104 | const imageArgs: ImageAreaArgs = Gun.GunPositionImageArea[gunPosition];
105 |
106 | const guns = Object.keys(Gun.Categories) as GunCategory[];
107 |
108 | return guns.find((gun) => utils.isImageExist(gun, ...imageArgs));
109 | }
110 |
111 | identityGunsInBag() {
112 | let leftGuns: string[] = [];
113 | let rightGuns: string[] = [];
114 |
115 | Object.keys(Gun.Categories).forEach((cate) => {
116 | const imageName = `大图${ cate }`;
117 |
118 | if (utils.isImageExist(imageName, 0.85, 2, 2, 2, 1)) {
119 | leftGuns.push(cate);
120 | }
121 | if (utils.isImageExist(imageName, 0.85, 2, 2, 2, 2)) {
122 | rightGuns.push(cate);
123 | }
124 | });
125 |
126 | const result = { leftGuns, rightGuns };
127 |
128 | loginfo(JSON.stringify(result));
129 |
130 | return result;
131 | }
132 |
133 | identityFlatGuns() {
134 | let leftGuns: string[] = [];
135 | let rightGuns: string[] = [];
136 |
137 | Object.keys(Gun.Categories).forEach((cate) => {
138 | if (utils.isImageExist(cate, 0.85, 4, 4, 2, 4)) {
139 | leftGuns.push(cate);
140 | }
141 | if (utils.isImageExist(cate, 0.85, 4, 4, 3, 4)) {
142 | rightGuns.push(cate);
143 | }
144 | });
145 |
146 | const result = { leftGuns, rightGuns };
147 |
148 | loginfo(JSON.stringify(result));
149 |
150 | return result;
151 | }
152 |
153 | /**
154 | * 收枪
155 | */
156 | hideGun() {
157 | const gunPosition = this.getGunPosition();
158 |
159 | if (!gunPosition) {
160 | return;
161 | }
162 |
163 | if (gunPosition === Gun.GunPosition.Left) {
164 | this.clickLeftGun();
165 | return;
166 | }
167 |
168 | if (gunPosition === Gun.GunPosition.Right) {
169 | this.clickRightGun();
170 | }
171 | }
172 |
173 | /**
174 | * 切枪
175 | */
176 | switchGun() {
177 | const gunPosition = this.getGunPosition();
178 |
179 | if (!gunPosition) {
180 | this.clickLeftGun();
181 | return;
182 | }
183 |
184 | if (gunPosition === Gun.GunPosition.Left) {
185 | this.clickRightGun();
186 | return;
187 | }
188 |
189 | if (gunPosition === Gun.GunPosition.Right) {
190 | this.clickLeftGun();
191 | }
192 | }
193 |
194 | clickLeftGun() {
195 | utils.clickPoint(constant.LeftGunPositionPoint);
196 | }
197 |
198 | clickRightGun() {
199 | utils.clickPoint(constant.RightGunPositionPoint)
200 | }
201 |
202 | }
203 |
204 | export const gun = new Gun();
205 |
--------------------------------------------------------------------------------
/src/scripts/keymap.ts:
--------------------------------------------------------------------------------
1 | import { utils } from './utils';
2 | import { gun } from './gun';
3 | import store from './store';
4 | import { medicine } from './medicine';
5 | import { missile } from './missile';
6 | import { bag } from './bag';
7 | import { pressCtrl } from './pressCtrl';
8 |
9 | export default {
10 | /**
11 | * @description 开火
12 | * @bind 鼠标左键
13 | */
14 | fire() {
15 | pressCtrl.fire();
16 | },
17 |
18 | /**
19 | * @description 复合按键:
20 | * 1. 丢弃背包中光标所指位置的配件 (一旦执行,后续操作都取消)
21 | * 2. 取消投掷 (一旦执行,后续操作都取消)
22 | * 3. 开镜
23 | * 4. 更新压枪参数
24 | * @bind 鼠标右键
25 | */
26 | bindKeyMouseRight() {
27 | utils.series([
28 | // 丢弃背包物资
29 | bag.discardMaterialsUnderCursor,
30 |
31 | // 取消投掷
32 | missile.cancelThrow,
33 |
34 | utils.clickCurrentKey,
35 |
36 | // 更新压枪参数
37 | () => {
38 | // 点击当前按键后,准镜不会马上打开
39 | // if (mirror.isOpen()) {
40 | // return;
41 | // }
42 | pressCtrl.updatePressArgs();
43 | },
44 | ]);
45 | },
46 |
47 |
48 | /**
49 | * @description 调整 6 倍镜
50 | * 并存储调整过 6 倍镜倍率的枪及倍率
51 | * @bind 鼠标滚轮-滚上
52 | */
53 | toggleX6Sight() {
54 | const result = pressCtrl.toggleX6Sight();
55 |
56 | if (result) {
57 | return;
58 | }
59 |
60 | utils.clickCurrentKey();
61 | },
62 |
63 | /**
64 | * @description 启用/禁用 utils.showTip()
65 | * @bind F12
66 | */
67 | toggleEnableOfTip() {
68 | store.mutations.toggleEnableOfTip();
69 | },
70 |
71 | /**
72 | * @description 切枪
73 | * @bind Tab
74 | */
75 | switchGun() {
76 | utils.switchToShotMode();
77 | gun.switchGun();
78 | },
79 |
80 | /**
81 | * @description 收枪
82 | * @bind F4
83 | */
84 | hideGun() {
85 | gun.hideGun();
86 | },
87 |
88 | /**
89 | * @description
90 | * 1. 拾取
91 | * 2. 切 雷
92 | * @bind F1
93 | */
94 | bindKeyF1() {
95 | if (bag.canPickUp()) {
96 | utils.clickCurrentKey();
97 | return;
98 | }
99 |
100 | missile.switchFragmentBomb()
101 | },
102 |
103 | /**
104 | * @description
105 | * 1. 拾取
106 | * 2. 切 烟
107 | * @bind F2
108 | */
109 | bindKeyF2() {
110 | if (bag.canPickUp()) {
111 | utils.clickCurrentKey();
112 | return;
113 | }
114 |
115 | missile.switchSmokeBomb();
116 | },
117 |
118 | /**
119 | * @description
120 | * 1. 拾取
121 | * 2. 切 火
122 | * @bind F3
123 | */
124 | bindKeyF3() {
125 | if (bag.canPickUp()) {
126 | utils.clickCurrentKey();
127 | return;
128 | }
129 |
130 | missile.switchMolotovCocktail();
131 | },
132 |
133 | /**
134 | * @description 左右枪互换
135 | * @bind F5
136 | */
137 | swapGuns() {
138 | bag.swapGuns();
139 | },
140 |
141 | /**
142 | * @description 动态调整压枪参数, +1
143 | * @bind 上箭头
144 | */
145 | addDelayOfGunPressArgs() {
146 | store.mutations.addDelayOfGunPressArgs(1);
147 | },
148 |
149 | /**
150 | * @description 动态调整压枪参数, -1
151 | * @bind 下箭头
152 | */
153 | subtractDelay() {
154 | store.mutations.addDelayOfGunPressArgs(-1);
155 | },
156 |
157 | /**
158 | * @description 记录不准确的压枪参数
159 | * @bind F11
160 | */
161 | logErrorPressArgs() {
162 | pressCtrl.logErrorPressArgs();
163 | },
164 |
165 | /**
166 | * @description
167 | * 1. 重置 准心
168 | * 2. 重置 方向键
169 | * 3. 重置点头操作
170 | * @bind Ctrl
171 | */
172 | reset() {
173 | utils.resetAimAndDirection();
174 | },
175 |
176 | /**
177 | * @description 吃 能量饮料
178 | * @bind Num1
179 | */
180 | eatEnergyDrink() {
181 | medicine.eatEnergyDrink();
182 | },
183 |
184 | /**
185 | * @description 吃 止痛药
186 | * @bind Num2
187 | */
188 | eatPainkiller() {
189 | medicine.eatPainkiller();
190 | },
191 |
192 | /**
193 | * @description 吃 肾上腺素注射剂
194 | * @bind Num3
195 | */
196 | eatEpinephrineInjection() {
197 | medicine.eatEpinephrineInjection();
198 | },
199 |
200 | /**
201 | * @description 吃 绷带
202 | * @bind Num4
203 | */
204 | eatBandage() {
205 | medicine.eatBandage();
206 | },
207 |
208 | /**
209 | * @description 吃 急救包
210 | * @bind Num5
211 | */
212 | eatFirstAidKit() {
213 | medicine.eatFirstAidKit();
214 | },
215 |
216 | /**
217 | * @description 吃 医疗急救箱
218 | * @bind Num6
219 | */
220 | eatMedicalFirstAidKit() {
221 | medicine.eatMedicalFirstAidKit();
222 | },
223 |
224 | /**
225 | * @description 切换 破片手榴弹
226 | * @bind Num7
227 | */
228 | switchFragmentBomb() {
229 | missile.switchFragmentBomb();
230 | },
231 |
232 | /**
233 | * @description 切换 烟雾弹
234 | * @bind Num8
235 | */
236 | switchSmokeBomb() {
237 | missile.switchSmokeBomb();
238 | },
239 |
240 | /**
241 | * @description 切换 燃烧瓶
242 | * @bind Num9
243 | */
244 | switchMolotovCocktail() {
245 | missile.switchMolotovCocktail();
246 | },
247 | }
248 |
--------------------------------------------------------------------------------
/src/scripts/medicine.ts:
--------------------------------------------------------------------------------
1 | import { utils } from './utils';
2 | import { ImageArgs, MedicineCategory } from '../../types';
3 | import { BindKeys } from './constant';
4 |
5 | export class Medicine {
6 | /**
7 | * 药物类别
8 | */
9 | static Categories: { [key in MedicineCategory]: MedicineCategory } = {
10 | // 能量饮料
11 | EnergyDrink: 'EnergyDrink',
12 |
13 | // 止痛药
14 | Painkiller: 'Painkiller',
15 |
16 | // 肾上腺素注射剂
17 | EpinephrineInjection: 'EpinephrineInjection',
18 |
19 | // 绷带
20 | Bandage: 'Bandage',
21 |
22 | // 急救包
23 | FirstAidKit: 'FirstAidKit',
24 |
25 | // 医疗急救箱
26 | MedicalFirstAidKit: 'MedicalFirstAidKit',
27 | };
28 |
29 | static ImageNames: { [key in MedicineCategory]: string } = {
30 | // 能量饮料
31 | EnergyDrink: '能量饮料',
32 | // 止痛药
33 | Painkiller: '止痛药',
34 | // 肾上腺素注射剂
35 | EpinephrineInjection: '肾上腺素注射剂',
36 | // 绷带
37 | Bandage: '绷带',
38 | // 急救包
39 | FirstAidKit: '急救包',
40 | // 医疗急救箱
41 | MedicalFirstAidKit: '医疗急救箱',
42 | };
43 |
44 | static ImageArgs: { [name: string]: ImageArgs } = {
45 | ExpandListButton: [ '投掷物展开按钮', 0.75, 4, 4, 2, 4 ],
46 | CollapseListButton: [ '投掷物折叠按钮', 0.75, 4, 2, 2, 2 ],
47 |
48 | EnergyDrink: [ Medicine.ImageNames.EnergyDrink, 0.75, 4, 2, 2, 2 ],
49 | Painkiller: [ Medicine.ImageNames.Painkiller, 0.75, 4, 2, 2, 2 ],
50 | EpinephrineInjection: [ Medicine.ImageNames.EpinephrineInjection, 0.75, 4, 2, 2, 2 ],
51 |
52 | Bandage: [ Medicine.ImageNames.Bandage, 0.75, 4, 2, 2, 2 ],
53 | FirstAidKit: [ Medicine.ImageNames.FirstAidKit, 0.75, 4, 2, 2, 2 ],
54 | MedicalFirstAidKit: [ Medicine.ImageNames.MedicalFirstAidKit, 0.75, 4, 2, 2, 2 ],
55 | };
56 |
57 |
58 | // 吃药
59 | takeMedicine(medicine: MedicineCategory) {
60 | this.expandList();
61 |
62 | utils.delay(200);
63 |
64 | const point = utils.findImage(...Medicine.ImageArgs[medicine]);
65 |
66 | if (utils.isPointNotExist(point)) {
67 | utils.showTip('未找到药品:' + Medicine.ImageNames[medicine]);
68 | this.collapseList();
69 | return;
70 | }
71 |
72 | utils.clickPoint(point);
73 |
74 | utils.delay();
75 |
76 | utils.clickKey(BindKeys.TakeMedicine)
77 | }
78 |
79 | expandList() {
80 | utils.clickImagePosition(...Medicine.ImageArgs.ExpandListButton);
81 | }
82 |
83 | collapseList() {
84 | utils.clickImagePosition(...Medicine.ImageArgs.CollapseListButton);
85 | }
86 |
87 | /** 吃 能量饮料 */
88 | eatEnergyDrink() {
89 | this.takeMedicine(Medicine.Categories.EnergyDrink);
90 | }
91 |
92 | /** 吃 止痛药 */
93 | eatPainkiller() {
94 | this.takeMedicine(Medicine.Categories.Painkiller);
95 | }
96 |
97 | /** 吃 肾上腺素注射剂 */
98 | eatEpinephrineInjection() {
99 | this.takeMedicine(Medicine.Categories.EpinephrineInjection);
100 | }
101 |
102 | /** 吃 绷带 */
103 | eatBandage() {
104 | this.takeMedicine(Medicine.Categories.Bandage);
105 | }
106 |
107 | /** 吃 急救包 */
108 | eatFirstAidKit() {
109 | this.takeMedicine(Medicine.Categories.FirstAidKit);
110 | }
111 |
112 | /** 吃 医疗急救箱 */
113 | eatMedicalFirstAidKit() {
114 | this.takeMedicine(Medicine.Categories.MedicalFirstAidKit);
115 | }
116 | }
117 |
118 | export const medicine = new Medicine();
119 |
--------------------------------------------------------------------------------
/src/scripts/mirror.ts:
--------------------------------------------------------------------------------
1 | import { ImageArgs, MirrorCategory, CnMirrorCategory } from '../../types';
2 | import { utils } from './utils';
3 | import constant from './constant';
4 | import Constant from './constant';
5 |
6 | type DelicateMirror = Exclude;
7 |
8 | export class Mirror {
9 | /** 准镜类型 */
10 | static Categories: { [key in MirrorCategory | 'X6X3Sight']: MirrorCategory | 'X6X3Sight'; } = {
11 | /** 机瞄 */
12 | MachineSight: 'MachineSight',
13 | /** 红点 */
14 | RedDotSight: 'RedDotSight',
15 | /** 全息 */
16 | HolographicSight: 'HolographicSight',
17 | /** 2倍镜 */
18 | X2Sight: 'X2Sight',
19 | /** 3倍镜 */
20 | X3Sight: 'X3Sight',
21 | /** 4倍镜 */
22 | X4Sight: 'X4Sight',
23 | /** 6倍镜,未调整过的 */
24 | X6Sight: 'X6Sight',
25 |
26 | /** 6倍镜,3倍率 */
27 | X6X3Sight: 'X6X3Sight',
28 |
29 | X8Sight: 'X8Sight',
30 | };
31 |
32 |
33 | /** 准镜映射,对应官方名称 */
34 | static Mapping: { [key in (keyof (typeof Mirror.Categories))]: CnMirrorCategory } = {
35 | MachineSight: '',
36 | RedDotSight: '',
37 | HolographicSight: '',
38 | X2Sight: '2倍',
39 | X3Sight: '3倍',
40 | X4Sight: '4倍',
41 | X6Sight: '6倍6',
42 | X6X3Sight: '6倍3',
43 | X8Sight: '8倍',
44 | };
45 |
46 | static ImageArgs: { [name: string]: ImageArgs } = {
47 | /** 第一(三)人称图标 */
48 | FirstPersonIcon: [ '第一人称文本', 0.65, 4, 4, 1, 4 ],
49 |
50 | /** 打开 6 倍镜缩放条 的按钮 */
51 | OpenX6MirrorZoomBarIcon: [ '6倍镜调距按钮', 0.75, 4, 3, 2, 1 ],
52 |
53 | /** 6 倍镜缩放条 */
54 | X6SightZoomBar: [ '6倍镜调距条', 0.75, 4, 1, 2, 1 ],
55 | }
56 |
57 | static MirrorTextImageNames: { [key in MirrorCategory]: string } = {
58 | MachineSight: '机瞄文本',
59 | RedDotSight: '红点文本',
60 | HolographicSight: '全息文本',
61 | X2Sight: '2倍镜文本',
62 | X3Sight: '3倍镜文本',
63 | X4Sight: '4倍镜文本',
64 | X6Sight: '6倍镜文本',
65 | X8Sight: '8倍镜文本',
66 | };
67 |
68 | static DelicateMirrorImageNames: { [key in DelicateMirror]: string } = {
69 | RedDotSight: '大图红点',
70 | HolographicSight: '大图全息',
71 | X2Sight: '大图2倍镜',
72 | X3Sight: '大图3倍镜',
73 | X4Sight: '大图4倍镜',
74 | X6Sight: '大图6倍镜',
75 | X8Sight: '大图8倍镜',
76 | };
77 |
78 | static AvailableMirrors: MirrorCategory[] = [
79 | 'RedDotSight',
80 | 'HolographicSight',
81 | 'X8Sight',
82 | 'X6Sight',
83 | 'X3Sight',
84 | 'X4Sight',
85 | 'X2Sight',
86 | 'MachineSight',
87 | ];
88 |
89 | /**
90 | * 是否开镜
91 | *
92 | * @return {boolean}
93 | */
94 | isOpen() {
95 | return utils.isColorExist(...Constant.MirrorHighlightColorArgs);
96 |
97 | // 第一(三)人称图标 如果存在 则说明未开镜
98 | // return !utils.isImageExist(...Mirror.ImageArgs.FirstPersonIcon);
99 | }
100 |
101 | /** 是否有可用准镜 */
102 | hasAvailableMirror() {
103 | // TODO
104 | }
105 |
106 | /** 获取当前准镜名称 */
107 | getCurrentMirror(disabledMirrors = [ 'X8Sight' as MirrorCategory ], availableMirrors = Mirror.AvailableMirrors) {
108 | return this.getCurrentBySightText(disabledMirrors, availableMirrors);
109 | }
110 |
111 | getCurrentBySightText(disabledMirrors: MirrorCategory[], availableMirrors: MirrorCategory[]) {
112 | const areaArgs: [ number, number, number, number ] = [ 4, 4, 4, 2 ];
113 |
114 | const mirrors = availableMirrors.filter((mirror) => {
115 | if (!Mirror.MirrorTextImageNames[mirror]) {
116 | return false;
117 | }
118 |
119 | if (disabledMirrors.includes(mirror)) {
120 | return false;
121 | }
122 |
123 | return true;
124 | });
125 |
126 | const mirrorArgsList = mirrors.map((mirror) => {
127 | const imageName = Mirror.MirrorTextImageNames[mirror];
128 | const sim = constant.MirrorTextImageSim[mirror];
129 |
130 | return [ imageName, sim, ...areaArgs ] as ImageArgs;
131 | });
132 |
133 | const targetIndex = mirrorArgsList.findIndex((args: ImageArgs) => utils.isImageExist(...args));
134 |
135 | if (targetIndex === -1) {
136 | return null;
137 | }
138 |
139 | return mirrors[targetIndex];
140 | }
141 |
142 | isX6Sight() {
143 | const mirror = this.getCurrentMirror();
144 |
145 | return mirror === Mirror.Categories.X6Sight;
146 | }
147 |
148 | /** 识别出所有可用准镜 */
149 | identityAvailableMirror() {
150 | const result: string[] = [];
151 |
152 | const delicateMirrors = Object.keys(Mirror.DelicateMirrorImageNames) as DelicateMirror[];
153 |
154 | delicateMirrors.forEach((mirror) => {
155 | const imageName = Mirror.DelicateMirrorImageNames[mirror];
156 |
157 | if (utils.isImageExist(imageName, 0.75, 4, 1, 4, 1)) {
158 | result.push(mirror);
159 | }
160 | });
161 |
162 | // loginfo(JSON.stringify(result));
163 | return result;
164 | }
165 |
166 | /** 识别背包中的准镜 */
167 | identityMirrorOfBag() {
168 | let leftGunMirrors: DelicateMirror[] = [];
169 | let rightGunMirrors: DelicateMirror[] = [];
170 |
171 | const delicateMirrors = Object.keys(Mirror.DelicateMirrorImageNames) as DelicateMirror[];
172 |
173 | delicateMirrors.forEach((mirror) => {
174 | const imageName = Mirror.DelicateMirrorImageNames[mirror].replace('大图', '背包');
175 |
176 | if (utils.isImageExist(imageName, 0.75, 4, 4, 3, 1)) {
177 | leftGunMirrors.push(mirror);
178 | }
179 | if (utils.isImageExist(imageName, 0.75, 4, 3, 3, 2)) {
180 | rightGunMirrors.push(mirror);
181 | }
182 | });
183 |
184 | const result = { leftGunMirrors, rightGunMirrors };
185 |
186 | // loginfo(JSON.stringify(result));
187 |
188 | if (leftGunMirrors.length !== 1 || rightGunMirrors.length !== 1) {
189 | logerror(JSON.stringify(result));
190 | }
191 |
192 | return result;
193 | }
194 |
195 | /** 打开 6 倍瞄准镜的缩放栏 */
196 | openZoomBarOf6XSight() {
197 | const zoomBarPoint = utils.findImage(...Mirror.ImageArgs.X6SightZoomBar);
198 |
199 | if (utils.isPointExist(zoomBarPoint)) {
200 | return;
201 | }
202 |
203 | // TODO 平板,图片寻找区域调整,手机可能也需要调整
204 | const openX6MirrorZoomBarIconPoint = utils.findImage(...Mirror.ImageArgs.OpenX6MirrorZoomBarIcon);
205 |
206 | if (!utils.isPointExist(openX6MirrorZoomBarIconPoint)) {
207 | loginfo('openZoomBarOf6XSight(): 未找到图片 - ' + Mirror.ImageArgs.OpenX6MirrorZoomBarIcon[0]);
208 | return;
209 | }
210 |
211 | utils.clickPoint(openX6MirrorZoomBarIconPoint);
212 |
213 | return true;
214 | }
215 |
216 | /** 调整六倍镜,设置为 3 倍率 */
217 | adjustX6ToX3() {
218 | if (this.openZoomBarOf6XSight()) {
219 | utils.delay();
220 | }
221 |
222 | utils.clickPoint(constant.X6MirrorZoomBarX3PositionPoint);
223 |
224 | return Mirror.Categories.X6X3Sight;
225 | }
226 |
227 | /** 调整六倍镜,设置为 6 倍率 */
228 | adjustX6ToX6() {
229 | if (this.openZoomBarOf6XSight()) {
230 | utils.delay();
231 | }
232 |
233 | utils.clickPoint(constant.X6MirrorZoomBarX6PositionPoint);
234 |
235 | return Mirror.Categories.X6Sight;
236 | }
237 | }
238 |
239 | export const mirror = new Mirror();
240 |
--------------------------------------------------------------------------------
/src/scripts/missile.ts:
--------------------------------------------------------------------------------
1 | import { ImageArgs, MissileCategory } from '../../types';
2 | import { utils } from './utils';
3 |
4 | export class Missile {
5 | /**
6 | * 投掷物类别
7 | */
8 | static Categories: { [key in MissileCategory]: MissileCategory } = {
9 | // 碎片手榴弹
10 | FragmentBomb: 'FragmentBomb',
11 |
12 | // 烟雾弹
13 | SmokeBomb: 'SmokeBomb',
14 |
15 | // 燃烧瓶
16 | MolotovCocktail: 'MolotovCocktail',
17 | };
18 |
19 | static ImageNames: { [key in MissileCategory]: string } = {
20 | // 碎片手榴弹
21 | FragmentBomb: '碎片手榴弹',
22 |
23 | // 烟雾弹
24 | SmokeBomb: '烟雾弹',
25 |
26 | // 燃烧瓶
27 | MolotovCocktail: '燃烧瓶',
28 | };
29 |
30 | static ImageArgs: { [name: string]: ImageArgs } = {
31 | CancelThrowButton: [ '取消投掷按钮', 0.75, 3, 4, 1, 3 ],
32 |
33 | ExpandListButton: [ '投掷物展开按钮', 0.75, 4, 4, 3, 4 ],
34 | CollapseListButton: [ '投掷物折叠按钮', 0.75, 4, 2, 3, 2 ],
35 |
36 | FragmentBomb: [ Missile.ImageNames.FragmentBomb, 0.75, 4, 2, 3, 2 ],
37 | SmokeBomb: [ Missile.ImageNames.SmokeBomb, 0.75, 4, 2, 3, 2 ],
38 | MolotovCocktail: [ Missile.ImageNames.MolotovCocktail, 0.75, 4, 2, 3, 2 ],
39 | };
40 |
41 | /**
42 | * 取消投掷
43 | */
44 | cancelThrow = () => {
45 | const point = utils.findImage(...Missile.ImageArgs.CancelThrowButton);
46 |
47 | if (utils.isPointNotExist(point)) {
48 | return false;
49 | }
50 |
51 | utils.clickPoint(point);
52 |
53 | utils.resetAim();
54 |
55 | return true;
56 | }
57 |
58 | switchMissile(missile: MissileCategory) {
59 | this.expandList();
60 |
61 | utils.delay(200);
62 |
63 | const point = utils.findImage(...Missile.ImageArgs[missile]);
64 |
65 | if (utils.isPointNotExist(point)) {
66 | utils.showTip('未找到投掷物:' + Missile.ImageNames[missile]);
67 | this.collapseList();
68 | return;
69 | }
70 |
71 | utils.clickPoint(point);
72 | }
73 |
74 | expandList() {
75 | utils.clickImagePosition(...Missile.ImageArgs.ExpandListButton);
76 | }
77 |
78 | collapseList() {
79 | utils.clickImagePosition(...Missile.ImageArgs.CollapseListButton);
80 | }
81 |
82 | /**切换 碎片手榴弹*/
83 | switchFragmentBomb() {
84 | this.switchMissile(Missile.Categories.FragmentBomb);
85 | }
86 |
87 | /**切换 烟雾弹*/
88 | switchSmokeBomb() {
89 | this.switchMissile(Missile.Categories.SmokeBomb);
90 | }
91 |
92 | /**切换 燃烧瓶*/
93 | switchMolotovCocktail() {
94 | this.switchMissile(Missile.Categories.MolotovCocktail);
95 | }
96 | }
97 |
98 | export const missile = new Missile();
99 |
--------------------------------------------------------------------------------
/src/scripts/posture.ts:
--------------------------------------------------------------------------------
1 | import { utils } from './utils';
2 | import constant from './constant'
3 | import { ColorArgs, CnPostureCategory, PostureCategory } from '../../types';
4 |
5 | export class Posture {
6 | /** 姿势类别 */
7 | static Categories: { [key in PostureCategory]: PostureCategory } = {
8 | /** 站 */
9 | Stand: 'Stand',
10 | /** 蹲 */
11 | Squat: 'Squat',
12 | /** 趴 */
13 | Prostrate: 'Prostrate'
14 | };
15 |
16 | /** 姿势映射,对应官方名称 */
17 | static Mapping: { [key in PostureCategory]: CnPostureCategory } = {
18 | Stand: '站',
19 | Squat: '蹲',
20 | Prostrate: '趴',
21 | };
22 |
23 | /** 姿势类别-颜色点 */
24 | static ColorPoint: { [key in Exclude]: ColorArgs } = {
25 | Squat: constant.SquatIconColorArgs,
26 | Prostrate: constant.ProstrateIconColorArgs,
27 | }
28 |
29 | /** 获取姿势 */
30 | getCurrentPostureCategory() {
31 | if (this.isSquat()) {
32 | return Posture.Categories.Squat;
33 | }
34 |
35 | if (this.isProstrate()) {
36 | return Posture.Categories.Prostrate;
37 | }
38 |
39 | return Posture.Categories.Stand;
40 | }
41 |
42 | isSquat() {
43 | return utils.isColorExist(...Posture.ColorPoint.Squat);
44 | }
45 |
46 | isProstrate() {
47 | return utils.isColorExist(...Posture.ColorPoint.Prostrate);
48 | }
49 |
50 | clickSquatKey() {
51 | utils.clickPoint(constant.SquatIconPoint);
52 | }
53 |
54 | }
55 |
56 | export const posture = new Posture();
57 |
--------------------------------------------------------------------------------
/src/scripts/pressArgs.ts:
--------------------------------------------------------------------------------
1 | import { GunCategory, CnMirrorCategory, CnPostureCategory, PressConfig } from '../../types';
2 |
3 | /**
4 | * 压枪参数
5 | *
6 | * changecustomaimpar(x: number, y: number, delay: number)
7 | */
8 | const Nova9: PressConfig = {
9 | 'M4': {
10 | 'M4蹲6倍6': [0, 1, 5],
11 | 'M4蹲6倍3': [0, 1, 10],
12 | 'M4蹲4倍': [0, 1, 6],
13 | 'M4蹲3倍': [0, 1, 10],
14 | 'M4蹲2倍': [0, 1, 14],
15 | 'M4蹲': [0, 1, 25],
16 | 'M4趴6倍6': [0, 1, 7],
17 | 'M4趴6倍3': [0, 1, 12],
18 | 'M4趴4倍': [0, 1, 8],
19 | 'M4趴3倍': [0, 1, 12],
20 | 'M4趴2倍': [0, 1, 16],
21 | 'M4趴': [0, 1, 28],
22 | 'M4站6倍6': [0, 1, 3],
23 | 'M4站6倍3': [0, 1, 8],
24 | 'M4站4倍': [0, 1, 5],
25 | 'M4站3倍': [0, 1, 8],
26 | 'M4站2倍': [0, 1, 12],
27 | 'M4站': [0, 1, 19],
28 | },
29 | 'AKM': {
30 | 'AKM蹲6倍6': [0, 5, 4],
31 | 'AKM蹲6倍3': [0, 5, 7],
32 | 'AKM蹲4倍': [0, 1, 4],
33 | 'AKM蹲3倍': [0, 1, 7],
34 | 'AKM蹲2倍': [0, 1, 9],
35 | 'AKM蹲': [0, 1, 15],
36 | 'AKM趴6倍6': [0, 1, 5],
37 | 'AKM趴6倍3': [0, 1, 10],
38 | 'AKM趴4倍': [0, 1, 6],
39 | 'AKM趴3倍': [0, 1, 10],
40 | 'AKM趴2倍': [0, 1, 13],
41 | 'AKM趴': [0, 1, 22],
42 | 'AKM站6倍6': [0, 1, 2],
43 | 'AKM站6倍3': [0, 1, 5],
44 | 'AKM站4倍': [0, 2, 3],
45 | 'AKM站3倍': [0, 1, 5],
46 | 'AKM站2倍': [0, 1, 7],
47 | 'AKM站': [0, 1, 13],
48 | },
49 | 'AUG': {
50 | 'AUG蹲6倍6': [0, 1, 5],
51 | 'AUG蹲6倍3': [0, 1, 10],
52 | 'AUG蹲4倍': [0, 1, 6],
53 | 'AUG蹲3倍': [0, 1, 10],
54 | 'AUG蹲2倍': [0, 1, 14],
55 | 'AUG蹲': [0, 1, 22],
56 | 'AUG趴6倍6': [0, 1, 6],
57 | 'AUG趴6倍3': [0, 1, 13],
58 | 'AUG趴4倍': [0, 1, 8],
59 | 'AUG趴3倍': [0, 1, 13],
60 | 'AUG趴2倍': [0, 1, 17],
61 | 'AUG趴': [0, 1, 29],
62 | 'AUG站6倍6': [0, 1, 4],
63 | 'AUG站6倍3': [0, 1, 8],
64 | 'AUG站4倍': [0, 1, 5],
65 | 'AUG站3倍': [0, 1, 8],
66 | 'AUG站2倍': [0, 1, 11],
67 | 'AUG站': [0, 1, 19],
68 | },
69 | 'ACVAL': {
70 | 'ACVAL蹲6倍6': [0, 1, 5],
71 | 'ACVAL蹲6倍3': [0, 1, 12],
72 | 'ACVAL蹲4倍': [0, 1, 7],
73 | 'ACVAL蹲3倍': [0, 1, 12],
74 | 'ACVAL蹲2倍': [0, 1, 16],
75 | 'ACVAL蹲': [0, 1, 26],
76 | 'ACVAL趴6倍6': [0, 1, 4],
77 | 'ACVAL趴6倍3': [0, 1, 16],
78 | 'ACVAL趴4倍': [0, 1, 10],
79 | 'ACVAL趴3倍': [0, 1, 16],
80 | 'ACVAL趴2倍': [0, 1, 20],
81 | 'ACVAL趴': [0, 1, 33],
82 | 'ACVAL站6倍6': [0, 1, 4],
83 | 'ACVAL站6倍3': [0, 1, 10],
84 | 'ACVAL站4倍': [0, 1, 5],
85 | 'ACVAL站3倍': [0, 1, 10],
86 | 'ACVAL站2倍': [0, 1, 13],
87 | 'ACVAL站': [0, 1, 24],
88 | },
89 | 'SCARL': {
90 | 'SCARL蹲6倍6': [0, 1, 5],
91 | 'SCARL蹲6倍3': [0, 1, 10],
92 | 'SCARL蹲4倍': [0, 1, 6],
93 | 'SCARL蹲3倍': [0, 1, 10],
94 | 'SCARL蹲2倍': [0, 1, 14],
95 | 'SCARL蹲': [0, 1, 24],
96 | 'SCARL趴6倍6': [0, 1, 7],
97 | 'SCARL趴6倍3': [0, 1, 14],
98 | 'SCARL趴4倍': [0, 1, 9],
99 | 'SCARL趴3倍': [0, 1, 14],
100 | 'SCARL趴2倍': [0, 1, 19],
101 | 'SCARL趴': [0, 1, 30],
102 | 'SCARL站6倍6': [0, 1, 3],
103 | 'SCARL站6倍3': [0, 1, 8],
104 | 'SCARL站4倍': [0, 1, 4],
105 | 'SCARL站3倍': [0, 1, 8],
106 | 'SCARL站2倍': [0, 1, 11],
107 | 'SCARL站': [0, 1, 19],
108 | },
109 | 'M762': {
110 | 'M762蹲6倍6': [0, 1, 2],
111 | 'M762蹲6倍3': [0, 1, 5],
112 | 'M762蹲4倍': [0, 1, 3],
113 | 'M762蹲3倍': [0, 1, 5],
114 | 'M762蹲2倍': [0, 1, 7],
115 | 'M762蹲': [0, 1, 12],
116 | 'M762趴6倍6': [0, 1, 3],
117 | 'M762趴6倍3': [0, 1, 6],
118 | 'M762趴4倍': [0, 1, 4],
119 | 'M762趴3倍': [0, 1, 6],
120 | 'M762趴2倍': [0, 1, 9],
121 | 'M762趴': [0, 1, 14],
122 | 'M762站6倍6': [0, 1, 2],
123 | 'M762站6倍3': [0, 1, 4],
124 | 'M762站4倍': [0, 1, 2],
125 | 'M762站3倍': [0, 1, 4],
126 | 'M762站2倍': [0, 1, 5],
127 | 'M762站': [0, 1, 10],
128 | },
129 | 'GROZA': {
130 | 'GROZA蹲6倍6': [0, 1, 4],
131 | 'GROZA蹲6倍3': [0, 1, 9],
132 | 'GROZA蹲4倍': [0, 1, 5],
133 | 'GROZA蹲3倍': [0, 1, 9],
134 | 'GROZA蹲2倍': [0, 1, 12],
135 | 'GROZA蹲': [0, 1, 19],
136 | 'GROZA趴6倍6': [0, 1, 6],
137 | 'GROZA趴6倍3': [0, 1, 12],
138 | 'GROZA趴4倍': [0, 1, 7],
139 | 'GROZA趴3倍': [0, 1, 12],
140 | 'GROZA趴2倍': [0, 1, 15],
141 | 'GROZA趴': [0, 1, 25],
142 | 'GROZA站6倍6': [0, 1, 3],
143 | 'GROZA站6倍3': [0, 1, 7],
144 | 'GROZA站4倍': [0, 1, 4],
145 | 'GROZA站3倍': [0, 1, 7],
146 | 'GROZA站2倍': [0, 1, 10],
147 | 'GROZA站': [0, 1, 16],
148 | },
149 | 'MIGUAN': {
150 | 'MIGUAN蹲6倍6': [0, 1, 2],
151 | 'MIGUAN蹲6倍3': [0, 1, 5],
152 | 'MIGUAN蹲4倍': [0, 1, 3],
153 | 'MIGUAN蹲3倍': [0, 1, 5],
154 | 'MIGUAN蹲2倍': [0, 1, 8],
155 | 'MIGUAN蹲': [0, 1, 14],
156 | 'MIGUAN趴6倍6': [0, 1, 3],
157 | 'MIGUAN趴6倍3': [0, 1, 7],
158 | 'MIGUAN趴4倍': [0, 1, 4],
159 | 'MIGUAN趴3倍': [0, 1, 7],
160 | 'MIGUAN趴2倍': [0, 1, 10],
161 | 'MIGUAN趴': [0, 1, 17],
162 | 'MIGUAN站6倍6': [0, 5, 2],
163 | 'MIGUAN站6倍3': [0, 5, 4],
164 | 'MIGUAN站4倍': [0, 1, 2],
165 | 'MIGUAN站3倍': [0, 1, 4],
166 | 'MIGUAN站2倍': [0, 1, 6],
167 | 'MIGUAN站': [0, 1, 11],
168 | },
169 | 'YENIU': {
170 | 'YENIU蹲6倍6': [0, 1, 7],
171 | 'YENIU蹲6倍3': [0, 1, 14],
172 | 'YENIU蹲4倍': [0, 1, 9],
173 | 'YENIU蹲3倍': [0, 1, 14],
174 | 'YENIU蹲2倍': [0, 1, 19],
175 | 'YENIU蹲': [0, 1, 30],
176 | 'YENIU趴6倍6': [0, 1, 9],
177 | 'YENIU趴6倍3': [0, 1, 17],
178 | 'YENIU趴4倍': [0, 1, 11],
179 | 'YENIU趴3倍': [0, 1, 17],
180 | 'YENIU趴2倍': [0, 1, 24],
181 | 'YENIU趴': [0, 1, 36],
182 | 'YENIU站6倍6': [0, 1, 6],
183 | 'YENIU站6倍3': [0, 1, 11],
184 | 'YENIU站4倍': [0, 1, 7],
185 | 'YENIU站3倍': [0, 1, 11],
186 | 'YENIU站2倍': [0, 1, 15],
187 | 'YENIU站': [0, 1, 25],
188 | },
189 | 'P90': {
190 | 'P90蹲6倍6': [0, 1, 7],
191 | 'P90蹲6倍3': [0, 1, 14],
192 | 'P90蹲4倍': [0, 1, 9],
193 | 'P90蹲3倍': [0, 1, 14],
194 | 'P90蹲2倍': [0, 1, 19],
195 | 'P90蹲': [0, 1, 44],
196 | 'P90趴6倍6': [0, 1, 9],
197 | 'P90趴6倍3': [0, 1, 17],
198 | 'P90趴4倍': [0, 1, 11],
199 | 'P90趴3倍': [0, 1, 17],
200 | 'P90趴2倍': [0, 1, 24],
201 | 'P90趴': [0, 1, 51],
202 | 'P90站6倍6': [0, 1, 6],
203 | 'P90站6倍3': [0, 1, 11],
204 | 'P90站4倍': [0, 1, 7],
205 | 'P90站3倍': [0, 1, 11],
206 | 'P90站2倍': [0, 1, 15],
207 | 'P90站': [0, 1, 35],
208 | },
209 | 'TANGMUXUN': {
210 | 'TANGMUXUN蹲6倍6': [0, 1, 4],
211 | 'TANGMUXUN蹲6倍3': [0, 1, 20],
212 | 'TANGMUXUN蹲4倍': [0, 1, 15],
213 | 'TANGMUXUN蹲3倍': [0, 1, 20],
214 | 'TANGMUXUN蹲2倍': [0, 1, 25],
215 | 'TANGMUXUN蹲': [0, 1, 21],
216 | 'TANGMUXUN趴6倍6': [0, 1, 4],
217 | 'TANGMUXUN趴6倍3': [0, 1, 20],
218 | 'TANGMUXUN趴4倍': [0, 1, 15],
219 | 'TANGMUXUN趴3倍': [0, 1, 20],
220 | 'TANGMUXUN趴2倍': [0, 1, 25],
221 | 'TANGMUXUN趴': [0, 1, 24],
222 | 'TANGMUXUN站6倍6': [0, 1, 4],
223 | 'TANGMUXUN站6倍3': [0, 1, 20],
224 | 'TANGMUXUN站4倍': [0, 1, 15],
225 | 'TANGMUXUN站3倍': [0, 1, 20],
226 | 'TANGMUXUN站2倍': [0, 1, 25],
227 | 'TANGMUXUN站': [0, 1, 16],
228 | },
229 | 'VECTOR': {
230 | 'VECTOR蹲6倍6': [0, 1, 5],
231 | 'VECTOR蹲6倍3': [0, 1, 10],
232 | 'VECTOR蹲4倍': [0, 1, 6],
233 | 'VECTOR蹲3倍': [0, 1, 10],
234 | 'VECTOR蹲2倍': [0, 1, 15],
235 | 'VECTOR蹲': [0, 1, 24],
236 | 'VECTOR趴6倍6': [0, 1, 6],
237 | 'VECTOR趴6倍3': [0, 1, 12],
238 | 'VECTOR趴4倍': [0, 1, 7],
239 | 'VECTOR趴3倍': [0, 1, 12],
240 | 'VECTOR趴2倍': [0, 1, 18],
241 | 'VECTOR趴': [0, 1, 27],
242 | 'VECTOR站6倍6': [0, 1, 4],
243 | 'VECTOR站6倍3': [0, 1, 7],
244 | 'VECTOR站4倍': [0, 1, 5],
245 | 'VECTOR站3倍': [0, 1, 7],
246 | 'VECTOR站2倍': [0, 1, 11],
247 | 'VECTOR站': [0, 1, 18],
248 | },
249 | 'UMP45': {
250 | 'UMP45蹲6倍6': [0, 1, 5],
251 | 'UMP45蹲6倍3': [0, 1, 10],
252 | 'UMP45蹲4倍': [0, 1, 6],
253 | 'UMP45蹲3倍': [0, 1, 10],
254 | 'UMP45蹲2倍': [0, 1, 15],
255 | 'UMP45蹲': [0, 1, 25],
256 | 'UMP45趴6倍6': [0, 1, 6],
257 | 'UMP45趴6倍3': [0, 1, 12],
258 | 'UMP45趴4倍': [0, 1, 8],
259 | 'UMP45趴3倍': [0, 1, 12],
260 | 'UMP45趴2倍': [0, 1, 18],
261 | 'UMP45趴': [0, 1, 28],
262 | 'UMP45站6倍6': [0, 1, 4],
263 | 'UMP45站6倍3': [0, 1, 8],
264 | 'UMP45站4倍': [0, 1, 5],
265 | 'UMP45站3倍': [0, 1, 8],
266 | 'UMP45站2倍': [0, 1, 12],
267 | 'UMP45站': [0, 1, 20],
268 | },
269 | 'UZI': {
270 | 'UZI蹲6倍6': [0, 1, 4],
271 | 'UZI蹲6倍3': [0, 1, 20],
272 | 'UZI蹲4倍': [0, 1, 15],
273 | 'UZI蹲3倍': [0, 1, 20],
274 | 'UZI蹲2倍': [0, 1, 25],
275 | 'UZI蹲': [0, 1, 26],
276 | 'UZI趴6倍6': [0, 1, 4],
277 | 'UZI趴6倍3': [0, 1, 20],
278 | 'UZI趴4倍': [0, 1, 15],
279 | 'UZI趴3倍': [0, 1, 20],
280 | 'UZI趴2倍': [0, 1, 25],
281 | 'UZI趴': [0, 1, 36],
282 | 'UZI站6倍6': [0, 1, 4],
283 | 'UZI站6倍3': [0, 1, 20],
284 | 'UZI站4倍': [0, 1, 15],
285 | 'UZI站3倍': [0, 1, 20],
286 | 'UZI站2倍': [0, 1, 25],
287 | 'UZI站': [0, 1, 24],
288 | },
289 | 'MG3': {
290 | 'MG3蹲6倍6': [0, 1, 11],
291 | 'MG3蹲6倍3': [0, 1, 17],
292 | 'MG3蹲4倍': [0, 1, 12],
293 | 'MG3蹲3倍': [0, 1, 17],
294 | 'MG3蹲2倍': [0, 1, 25],
295 | 'MG3蹲': [0, 1, 44],
296 | 'MG3趴6倍6': [0, 1, 16],
297 | 'MG3趴6倍3': [0, 1, 31],
298 | 'MG3趴4倍': [0, 1, 22],
299 | 'MG3趴3倍': [0, 1, 31],
300 | 'MG3趴2倍': [0, 1, 46],
301 | 'MG3趴': [0, 1, 85],
302 | 'MG3站6倍6': [0, 1, 5],
303 | 'MG3站6倍3': [0, 1, 9],
304 | 'MG3站4倍': [0, 1, 6],
305 | 'MG3站3倍': [0, 1, 9],
306 | 'MG3站2倍': [0, 1, 13],
307 | 'MG3站': [0, 1, 23],
308 | },
309 | 'M249': {
310 | 'M249蹲6倍6': [0, 1, 9],
311 | 'M249蹲6倍3': [0, 1, 18],
312 | 'M249蹲4倍': [0, 1, 11],
313 | 'M249蹲3倍': [0, 1, 18],
314 | 'M249蹲2倍': [0, 1, 25],
315 | 'M249蹲': [0, 1, 44],
316 | 'M249趴6倍6': [0, 1, 30],
317 | 'M249趴6倍3': [0, 1, 48],
318 | 'M249趴4倍': [0, 1, 35],
319 | 'M249趴3倍': [0, 1, 48],
320 | 'M249趴2倍': [0, 1, 80],
321 | 'M249趴': [0, 1, 155],
322 | 'M249站6倍6': [0, 1, 4],
323 | 'M249站6倍3': [0, 1, 8],
324 | 'M249站4倍': [0, 1, 5],
325 | 'M249站3倍': [0, 1, 8],
326 | 'M249站2倍': [0, 1, 13],
327 | 'M249站': [0, 1, 21],
328 | },
329 | 'DP28': {
330 | 'DP28蹲6倍6': [0, 1, 8],
331 | 'DP28蹲6倍3': [0, 1, 16],
332 | 'DP28蹲4倍': [0, 1, 10],
333 | 'DP28蹲3倍': [0, 1, 16],
334 | 'DP28蹲2倍': [0, 1, 23],
335 | 'DP28蹲': [0, 1, 37],
336 | 'DP28趴6倍6': [0, 1, 12],
337 | 'DP28趴6倍3': [0, 1, 24],
338 | 'DP28趴4倍': [0, 1, 14],
339 | 'DP28趴3倍': [0, 1, 24],
340 | 'DP28趴2倍': [0, 1, 33],
341 | 'DP28趴': [0, 1, 54],
342 | 'DP28站6倍6': [0, 1, 6],
343 | 'DP28站6倍3': [0, 1, 12],
344 | 'DP28站4倍': [0, 1, 7],
345 | 'DP28站3倍': [0, 1, 12],
346 | 'DP28站2倍': [0, 1, 17],
347 | 'DP28站': [0, 1, 28],
348 | },
349 | PKM: {}, VSS: {}, MK20H: {}, M417: {}
350 | }
351 |
352 | // 比 nova9 , 第三个参数 除以 1.4
353 | const MatePad11: PressConfig = {
354 | 'M4': {
355 | 'M4蹲6倍6': [0, 1, 4],
356 | 'M4蹲6倍3': [0, 1, 8],
357 | 'M4蹲4倍': [0, 1, 7],
358 | 'M4蹲3倍': [0, 1, 8],
359 | 'M4蹲2倍': [0, 1, 10],
360 | 'M4蹲': [0, 1, 18],
361 | 'M4趴6倍6': [0, 1, 5],
362 | 'M4趴6倍3': [0, 1, 10],
363 | 'M4趴4倍': [0, 1, 9],
364 | 'M4趴3倍': [0, 1, 10],
365 | 'M4趴2倍': [0, 1, 14],
366 | 'M4趴': [0, 1, 24],
367 | 'M4站6倍6': [0, 1, 3],
368 | 'M4站6倍3': [0, 1, 6],
369 | 'M4站4倍': [0, 1, 5],
370 | 'M4站3倍': [0, 1, 6],
371 | 'M4站2倍': [0, 1, 8],
372 | 'M4站': [0, 1, 14],
373 | },
374 |
375 | 'SCARL': {
376 | 'SCARL蹲6倍6': [0, 1, 4],
377 | 'SCARL蹲6倍3': [0, 1, 8],
378 | 'SCARL蹲4倍': [0, 1, 7],
379 | 'SCARL蹲3倍': [0, 1, 8],
380 | 'SCARL蹲2倍': [0, 1, 10],
381 | 'SCARL蹲': [0, 1, 18],
382 | 'SCARL趴6倍6': [0, 1, 6],
383 | 'SCARL趴6倍3': [0, 1, 10],
384 | 'SCARL趴4倍': [0, 1, 9],
385 | 'SCARL趴3倍': [0, 1, 10],
386 | 'SCARL趴2倍': [0, 1, 14],
387 | 'SCARL趴': [0, 1, 24],
388 | 'SCARL站6倍6': [0, 1, 3],
389 | 'SCARL站6倍3': [0, 1, 6],
390 | 'SCARL站4倍': [0, 1, 6],
391 | 'SCARL站3倍': [0, 1, 6],
392 | 'SCARL站2倍': [0, 1, 8],
393 | 'SCARL站': [0, 1, 14],
394 | },
395 |
396 | 'DP28': {
397 | 'DP28蹲6倍6': [0, 1, 7],
398 | 'DP28蹲6倍3': [0, 1, 13],
399 | 'DP28蹲4倍': [0, 1, 12],
400 | 'DP28蹲3倍': [0, 1, 13],
401 | 'DP28蹲2倍': [0, 1, 19],
402 | 'DP28蹲': [0, 1, 31],
403 | 'DP28趴6倍6': [0, 1, 10],
404 | 'DP28趴6倍3': [0, 1, 20],
405 | 'DP28趴4倍': [0, 1, 17],
406 | 'DP28趴3倍': [0, 1, 19],
407 | 'DP28趴2倍': [0, 1, 28],
408 | 'DP28趴': [0, 1, 44],
409 | 'DP28站6倍6': [0, 1, 5],
410 | 'DP28站6倍3': [0, 1, 10],
411 | 'DP28站4倍': [0, 1, 9],
412 | 'DP28站3倍': [0, 1, 10],
413 | 'DP28站2倍': [0, 1, 14],
414 | 'DP28站': [0, 1, 22],
415 | },
416 |
417 | 'UMP45': {
418 | 'UMP45蹲6倍6': [0, 1, 5],
419 | 'UMP45蹲6倍3': [0, 1, 9],
420 | 'UMP45蹲4倍': [0, 1, 8],
421 | 'UMP45蹲3倍': [0, 1, 9],
422 | 'UMP45蹲2倍': [0, 1, 11],
423 | 'UMP45蹲': [0, 1, 19],
424 | 'UMP45趴6倍6': [0, 1, 5],
425 | 'UMP45趴6倍3': [0, 1, 10],
426 | 'UMP45趴4倍': [0, 1, 8],
427 | 'UMP45趴3倍': [0, 1, 10],
428 | 'UMP45趴2倍': [0, 1, 13],
429 | 'UMP45趴': [0, 1, 22],
430 | 'UMP45站6倍6': [0, 1, 4],
431 | 'UMP45站6倍3': [0, 1, 7],
432 | 'UMP45站4倍': [0, 1, 6],
433 | 'UMP45站3倍': [0, 1, 7],
434 | 'UMP45站2倍': [0, 1, 9],
435 | 'UMP45站': [0, 1, 15],
436 | },
437 |
438 | 'AKM': {
439 | 'AKM蹲6倍6': [0, 5, 15],
440 | 'AKM蹲6倍3': [0, 1, 5],
441 | 'AKM蹲4倍': [0, 1, 5],
442 | 'AKM蹲3倍': [0, 1, 5],
443 | 'AKM蹲2倍': [0, 1, 8],
444 | 'AKM蹲': [0, 1, 12],
445 | 'AKM趴6倍6': [0, 1, 4],
446 | 'AKM趴6倍3': [0, 1, 7],
447 | 'AKM趴4倍': [0, 1, 6],
448 | 'AKM趴3倍': [0, 1, 7],
449 | 'AKM趴2倍': [0, 1, 10],
450 | 'AKM趴': [0, 1, 17],
451 | 'AKM站6倍6': [0, 1, 2],
452 | 'AKM站6倍3': [0, 1, 4],
453 | 'AKM站4倍': [0, 2, 8],
454 | 'AKM站3倍': [0, 1, 4],
455 | 'AKM站2倍': [0, 1, 5],
456 | 'AKM站': [0, 1, 10],
457 | },
458 |
459 | 'PKM': {
460 | 'PKM蹲6倍6': [0, 1, 4],
461 | 'PKM蹲6倍3': [0, 1, 7],
462 | 'PKM蹲4倍': [0, 1, 7],
463 | 'PKM蹲3倍': [0, 1, 7],
464 | 'PKM蹲2倍': [0, 1, 10],
465 | 'PKM蹲': [0, 1, 17],
466 |
467 | 'PKM趴6倍6': [0, 1, 7],
468 | 'PKM趴6倍3': [0, 1, 13],
469 | 'PKM趴4倍': [0, 1, 12],
470 | 'PKM趴3倍': [0, 1, 13],
471 | 'PKM趴2倍': [0, 1, 19],
472 | 'PKM趴': [0, 1, 33],
473 |
474 | 'PKM站6倍6': [0, 1, 2],
475 | 'PKM站6倍3': [0, 1, 4],
476 | 'PKM站4倍': [0, 1, 4],
477 | 'PKM站3倍': [0, 1, 4],
478 | 'PKM站2倍': [0, 1, 6],
479 | 'PKM站': [0, 1, 11],
480 | },
481 |
482 | 'YENIU': {
483 | 'YENIU蹲6倍6': [0, 1, 6],
484 | 'YENIU蹲6倍3': [0, 1, 11],
485 | 'YENIU蹲4倍': [0, 1, 10],
486 | 'YENIU蹲3倍': [0, 1, 11],
487 | 'YENIU蹲2倍': [0, 1, 15],
488 | 'YENIU蹲': [0, 1, 25],
489 | 'YENIU趴6倍6': [0, 1, 6],
490 | 'YENIU趴6倍3': [0, 1, 13],
491 | 'YENIU趴4倍': [0, 1, 11],
492 | 'YENIU趴3倍': [0, 1, 13],
493 | 'YENIU趴2倍': [0, 1, 16],
494 | 'YENIU趴': [0, 1, 28],
495 | 'YENIU站6倍6': [0, 1, 4],
496 | 'YENIU站6倍3': [0, 1, 8],
497 | 'YENIU站4倍': [0, 1, 8],
498 | 'YENIU站3倍': [0, 1, 8],
499 | 'YENIU站2倍': [0, 1, 11],
500 | 'YENIU站': [0, 1, 18],
501 | },
502 |
503 | 'UZI': {
504 | 'UZI蹲': [0, 1, 22],
505 | 'UZI趴': [0, 1, 26],
506 | 'UZI站': [0, 1, 20],
507 | },
508 |
509 | 'TANGMUXUN': {
510 | 'TANGMUXUN蹲': [0, 1, 15],
511 | 'TANGMUXUN趴': [0, 1, 18],
512 | 'TANGMUXUN站': [0, 1, 12],
513 | },
514 |
515 | 'M249': {
516 | 'M249蹲6倍6': [0, 1, 7],
517 | 'M249蹲6倍3': [0, 1, 12],
518 | 'M249蹲4倍': [0, 1, 11],
519 | 'M249蹲3倍': [0, 1, 12],
520 | 'M249蹲2倍': [0, 1, 18],
521 | 'M249蹲': [0, 1, 31],
522 | 'M249趴6倍6': [0, 1, 11],
523 | 'M249趴6倍3': [0, 1, 23],
524 | 'M249趴4倍': [0, 1, 20],
525 | 'M249趴3倍': [0, 1, 23],
526 | 'M249趴2倍': [0, 1, 32],
527 | 'M249趴': [0, 1, 52],
528 | 'M249站6倍6': [0, 1, 3],
529 | 'M249站6倍3': [0, 1, 6],
530 | 'M249站4倍': [0, 1, 6],
531 | 'M249站3倍': [0, 1, 6],
532 | 'M249站2倍': [0, 1, 9],
533 | 'M249站': [0, 1, 16],
534 | },
535 |
536 | 'VECTOR': {
537 | 'VECTOR蹲6倍3': [0, 1, 9],
538 | 'VECTOR蹲3倍': [0, 1, 9],
539 | 'VECTOR蹲2倍': [0, 1, 11],
540 | 'VECTOR蹲': [0, 1, 17],
541 | 'VECTOR趴6倍3': [0, 1, 10],
542 | 'VECTOR趴3倍': [0, 1, 10],
543 | 'VECTOR趴2倍': [0, 1, 12],
544 | 'VECTOR趴': [0, 1, 21],
545 | 'VECTOR站6倍3': [0, 1, 7],
546 | 'VECTOR站3倍': [0, 1, 7],
547 | 'VECTOR站2倍': [0, 1, 9],
548 | 'VECTOR站': [0, 1, 14],
549 | },
550 |
551 | 'M762': {
552 | 'M762蹲6倍6': [0, 1, 2],
553 | 'M762蹲6倍3': [0, 1, 5],
554 | 'M762蹲4倍': [0, 1, 3],
555 | 'M762蹲3倍': [0, 1, 5],
556 | 'M762蹲2倍': [0, 1, 7],
557 | 'M762蹲': [0, 1, 12],
558 | 'M762趴6倍6': [0, 1, 3],
559 | 'M762趴6倍3': [0, 1, 6],
560 | 'M762趴4倍': [0, 1, 5],
561 | 'M762趴3倍': [0, 1, 6],
562 | 'M762趴2倍': [0, 1, 8],
563 | 'M762趴': [0, 1, 13],
564 | 'M762站6倍6': [0, 1, 2],
565 | 'M762站6倍3': [0, 1, 4],
566 | 'M762站4倍': [0, 1, 3],
567 | 'M762站3倍': [0, 1, 4],
568 | 'M762站2倍': [0, 1, 6],
569 | 'M762站': [0, 1, 9],
570 | },
571 |
572 | 'VSS': {
573 | 'VSS蹲6倍6': [0, 1, 15],
574 | 'VSS蹲6倍3': [0, 1, 15],
575 | 'VSS蹲4倍': [0, 1, 15],
576 | 'VSS蹲3倍': [0, 1, 15],
577 | 'VSS蹲2倍': [0, 1, 15],
578 | 'VSS蹲': [0, 1, 15],
579 |
580 | 'VSS趴6倍6': [0, 1, 22],
581 | 'VSS趴6倍3': [0, 1, 22],
582 | 'VSS趴4倍': [0, 1, 22],
583 | 'VSS趴3倍': [0, 1, 22],
584 | 'VSS趴2倍': [0, 1, 22],
585 | 'VSS趴': [0, 1, 22],
586 |
587 | 'VSS站6倍6': [0, 1, 11],
588 | 'VSS站6倍3': [0, 1, 11],
589 | 'VSS站4倍': [0, 1, 11],
590 | 'VSS站3倍': [0, 1, 11],
591 | 'VSS站2倍': [0, 1, 11],
592 | 'VSS站': [0, 1, 11],
593 | },
594 |
595 | 'MK20H': {
596 | 'MK20H蹲8倍': [0, 1, 17],
597 | 'MK20H蹲6倍6': [0, 1, 21],
598 | 'MK20H蹲6倍3': [0, 1, 37],
599 | 'MK20H蹲4倍': [0, 1, 34],
600 | 'MK20H蹲3倍': [0, 1, 37],
601 | 'MK20H蹲2倍': [0, 1, 51],
602 | 'MK20H蹲': [0, 1, 86],
603 |
604 | 'MK20H趴8倍': [0, 1, 30],
605 | 'MK20H趴6倍6': [0, 1, 32],
606 | 'MK20H趴6倍3': [0, 1, 68],
607 | 'MK20H趴4倍': [0, 1, 51],
608 | 'MK20H趴3倍': [0, 1, 58],
609 | 'MK20H趴2倍': [0, 1, 82],
610 | 'MK20H趴': [0, 1, 110],
611 |
612 | 'MK20H站8倍': [0, 1, 13],
613 | 'MK20H站6倍6': [0, 1, 15],
614 | 'MK20H站6倍3': [0, 1, 32],
615 | 'MK20H站4倍': [0, 1, 27],
616 | 'MK20H站3倍': [0, 1, 32],
617 | 'MK20H站2倍': [0, 1, 44],
618 | 'MK20H站': [0, 1, 64],
619 | },
620 |
621 | 'M417': { // 趴着准一些
622 | 'M417蹲8倍': [0, 1, 8],
623 | 'M417蹲6倍6': [0, 1, 10],
624 | 'M417蹲6倍3': [0, 1, 19],
625 | 'M417蹲4倍': [0, 1, 17],
626 | 'M417蹲3倍': [0, 1, 19],
627 | 'M417蹲2倍': [0, 1, 25],
628 | 'M417蹲': [0, 1, 42],
629 |
630 | 'M417趴8倍': [0, 1, 17],
631 | 'M417趴6倍6': [0, 1, 19],
632 | 'M417趴6倍3': [0, 1, 37],
633 | 'M417趴4倍': [0, 1, 32],
634 | 'M417趴3倍': [0, 1, 37],
635 | 'M417趴2倍': [0, 1, 52],
636 | 'M417趴': [0, 1, 82],
637 |
638 | 'M417站8倍': [0, 1, 6],
639 | 'M417站6倍6': [0, 1, 8],
640 | 'M417站6倍3': [0, 1, 15],
641 | 'M417站4倍': [0, 1, 13],
642 | 'M417站3倍': [0, 1, 15],
643 | 'M417站2倍': [0, 1, 20],
644 | 'M417站': [0, 1, 33],
645 | },
646 |
647 | 'ACVAL': {
648 | 'ACVAL蹲4倍': [0, 1, 8],
649 | 'ACVAL蹲3倍': [0, 1, 9],
650 | 'ACVAL蹲2倍': [0, 1, 12],
651 | 'ACVAL蹲': [0, 1, 21],
652 | 'ACVAL趴4倍': [0, 1, 11],
653 | 'ACVAL趴3倍': [0, 1, 13],
654 | 'ACVAL趴2倍': [0, 1, 17],
655 | 'ACVAL趴': [0, 1, 30],
656 | 'ACVAL站4倍': [0, 1, 7],
657 | 'ACVAL站3倍': [0, 1, 7],
658 | 'ACVAL站2倍': [0, 1, 10],
659 | 'ACVAL站': [0, 1, 18],
660 | },
661 |
662 | 'MIGUAN': {
663 | 'MIGUAN蹲6倍3': [0, 1, 5],
664 | 'MIGUAN蹲4倍': [0, 1, 4],
665 | 'MIGUAN蹲3倍': [0, 1, 5],
666 | 'MIGUAN蹲2倍': [0, 1, 6],
667 | 'MIGUAN蹲': [0, 1, 10],
668 | 'MIGUAN趴6倍3': [0, 1, 6],
669 | 'MIGUAN趴4倍': [0, 1, 5],
670 | 'MIGUAN趴3倍': [0, 1, 6],
671 | 'MIGUAN趴2倍': [0, 1, 8],
672 | 'MIGUAN趴': [0, 1, 13],
673 | 'MIGUAN站6倍3': [0, 1, 3],
674 | 'MIGUAN站4倍': [0, 1, 3],
675 | 'MIGUAN站3倍': [0, 1, 3],
676 | 'MIGUAN站2倍': [0, 1, 5],
677 | 'MIGUAN站': [0, 1, 8],
678 | },
679 |
680 | 'AUG': {
681 | 'AUG蹲6倍6': [0, 1, 4],
682 | 'AUG蹲6倍3': [0, 1, 8],
683 | 'AUG蹲4倍': [0, 1, 7],
684 | 'AUG蹲3倍': [0, 1, 8],
685 | 'AUG蹲2倍': [0, 1, 11],
686 | 'AUG蹲': [0, 1, 18],
687 | 'AUG趴6倍6': [0, 1, 5],
688 | 'AUG趴6倍3': [0, 1, 10],
689 | 'AUG趴4倍': [0, 1, 9],
690 | 'AUG趴3倍': [0, 1, 10],
691 | 'AUG趴2倍': [0, 1, 14],
692 | 'AUG趴': [0, 1, 23],
693 | 'AUG站6倍6': [0, 1, 3],
694 | 'AUG站6倍3': [0, 1, 6],
695 | 'AUG站4倍': [0, 1, 5],
696 | 'AUG站3倍': [0, 1, 6],
697 | 'AUG站2倍': [0, 1, 8],
698 | 'AUG站': [0, 1, 14],
699 | },
700 |
701 | 'P90': {
702 | 'P90蹲6倍6': [0, 1, 34],
703 | 'P90蹲6倍3': [0, 1, 34],
704 | 'P90蹲4倍': [0, 1, 34],
705 | 'P90蹲3倍': [0, 1, 34],
706 | 'P90蹲2倍': [0, 1, 34],
707 | 'P90蹲': [0, 1, 34],
708 |
709 | 'P90趴6倍6': [0, 1, 37],
710 | 'P90趴6倍3': [0, 1, 37],
711 | 'P90趴4倍': [0, 1, 37],
712 | 'P90趴3倍': [0, 1, 37],
713 | 'P90趴2倍': [0, 1, 37],
714 | 'P90趴': [0, 1, 37],
715 |
716 | 'P90站6倍6': [0, 1, 26],
717 | 'P90站6倍3': [0, 1, 26],
718 | 'P90站4倍': [0, 1, 26],
719 | 'P90站3倍': [0, 1, 26],
720 | 'P90站2倍': [0, 1, 26],
721 | 'P90站': [0, 1, 26],
722 | },
723 |
724 | 'GROZA': {
725 | 'GROZA蹲6倍3': [0, 1, 6],
726 | 'GROZA蹲4倍': [0, 1, 6],
727 | 'GROZA蹲3倍': [0, 1, 6],
728 | 'GROZA蹲2倍': [0, 1, 8],
729 | 'GROZA蹲': [0, 1, 16],
730 |
731 | 'GROZA趴6倍3': [0, 1, 9],
732 | 'GROZA趴4倍': [0, 1, 8],
733 | 'GROZA趴3倍': [0, 1, 9],
734 | 'GROZA趴2倍': [0, 1, 12],
735 | 'GROZA趴': [0, 1, 20],
736 |
737 | 'GROZA站6倍3': [0, 1, 6],
738 | 'GROZA站4倍': [0, 1, 5],
739 | 'GROZA站3倍': [0, 1, 6],
740 | 'GROZA站2倍': [0, 1, 7],
741 | 'GROZA站': [0, 1, 12],
742 | },
743 |
744 | 'MG3': { // 990
745 | 'MG3蹲6倍6': [0, 1, 7],
746 | 'MG3蹲6倍3': [0, 1, 12],
747 | 'MG3蹲4倍': [0, 1, 12],
748 | 'MG3蹲3倍': [0, 1, 12],
749 | 'MG3蹲2倍': [0, 1, 19],
750 | 'MG3蹲': [0, 1, 35],
751 |
752 | 'MG3趴6倍6': [0, 1, 16],
753 | 'MG3趴6倍3': [0, 1, 31],
754 | 'MG3趴4倍': [0, 1, 22],
755 | 'MG3趴3倍': [0, 1, 31],
756 | 'MG3趴2倍': [0, 1, 46],
757 | 'MG3趴': [0, 1, 78],
758 |
759 | 'MG3站6倍6': [0, 1, 4],
760 | 'MG3站6倍3': [0, 1, 7],
761 | 'MG3站4倍': [0, 1, 6],
762 | 'MG3站3倍': [0, 1, 7],
763 | 'MG3站2倍': [0, 1, 10],
764 | 'MG3站': [0, 1, 16],
765 | },
766 | }
767 |
768 | const XiaoMiPad6Max14 = {
769 | 'M4': {
770 | 'M4蹲6倍6': [0, 1, 3],
771 | 'M4蹲6倍3': [0, 1, 5],
772 | 'M4蹲4倍': [0, 1, 7],
773 | 'M4蹲3倍': [0, 1, 6],
774 | 'M4蹲2倍': [0, 1, 8],
775 | 'M4蹲': [0, 1, 15],
776 | 'M4趴6倍6': [0, 1, 4],
777 | 'M4趴6倍3': [0, 1, 9],
778 | 'M4趴4倍': [0, 1, 8],
779 | 'M4趴3倍': [0, 1, 9],
780 | 'M4趴2倍': [0, 1, 12],
781 | 'M4趴': [0, 1, 21],
782 | 'M4站6倍6': [0, 1, 2],
783 | 'M4站6倍3': [0, 1, 5],
784 | 'M4站4倍': [0, 1, 4],
785 | 'M4站3倍': [0, 1, 5],
786 | 'M4站2倍': [0, 1, 7],
787 | 'M4站': [0, 1, 12],
788 | },
789 |
790 | 'SCARL': {
791 | 'SCARL蹲6倍6': [0, 1, 3],
792 | 'SCARL蹲6倍3': [0, 1, 6],
793 | 'SCARL蹲4倍': [0, 1, 5],
794 | 'SCARL蹲3倍': [0, 1, 6],
795 | 'SCARL蹲2倍': [0, 1, 9],
796 | 'SCARL蹲': [0, 1, 15],
797 | 'SCARL趴6倍6': [0, 1, 4],
798 | 'SCARL趴6倍3': [0, 1, 9],
799 | 'SCARL趴4倍': [0, 1, 8],
800 | 'SCARL趴3倍': [0, 1, 9],
801 | 'SCARL趴2倍': [0, 1, 12],
802 | 'SCARL趴': [0, 1, 20],
803 | 'SCARL站6倍6': [0, 1, 2],
804 | 'SCARL站6倍3': [0, 1, 5],
805 | 'SCARL站4倍': [0, 1, 4],
806 | 'SCARL站3倍': [0, 1, 5],
807 | 'SCARL站2倍': [0, 1, 7],
808 | 'SCARL站': [0, 1, 12],
809 | },
810 |
811 | 'DP28': {
812 | 'DP28蹲6倍6': [0, 1, 6],
813 | 'DP28蹲6倍3': [0, 1, 12],
814 | 'DP28蹲4倍': [0, 1, 11],
815 | 'DP28蹲3倍': [0, 1, 12],
816 | 'DP28蹲2倍': [0, 1, 15],
817 | 'DP28蹲': [0, 1, 27],
818 | 'DP28趴6倍6': [0, 1, 8],
819 | 'DP28趴6倍3': [0, 1, 16],
820 | 'DP28趴4倍': [0, 1, 14],
821 | 'DP28趴3倍': [0, 1, 16],
822 | 'DP28趴2倍': [0, 1, 25],
823 | 'DP28趴': [0, 1, 42],
824 | 'DP28站6倍6': [0, 1, 4],
825 | 'DP28站6倍3': [0, 1, 8],
826 | 'DP28站4倍': [0, 1, 7],
827 | 'DP28站3倍': [0, 1, 8],
828 | 'DP28站2倍': [0, 1, 12],
829 | 'DP28站': [0, 1, 20],
830 | },
831 |
832 | 'UMP45': {
833 | 'UMP45蹲6倍6': [0, 1, 3],
834 | 'UMP45蹲6倍3': [0, 1, 7],
835 | 'UMP45蹲4倍': [0, 1, 6],
836 | 'UMP45蹲3倍': [0, 1, 7],
837 | 'UMP45蹲2倍': [0, 1, 9],
838 | 'UMP45蹲': [0, 1, 16],
839 | 'UMP45趴6倍6': [0, 1, 4],
840 | 'UMP45趴6倍3': [0, 1, 8],
841 | 'UMP45趴4倍': [0, 1, 6],
842 | 'UMP45趴3倍': [0, 1, 8],
843 | 'UMP45趴2倍': [0, 1, 11],
844 | 'UMP45趴': [0, 1, 18],
845 | 'UMP45站6倍6': [0, 1, 3],
846 | 'UMP45站6倍3': [0, 1, 5],
847 | 'UMP45站4倍': [0, 1, 5],
848 | 'UMP45站3倍': [0, 1, 5],
849 | 'UMP45站2倍': [0, 1, 8],
850 | 'UMP45站': [0, 1, 13],
851 | },
852 |
853 | 'AKM': {
854 | 'AKM蹲6倍6': [0, 5, 14],
855 | 'AKM蹲6倍3': [0, 1, 4],
856 | 'AKM蹲4倍': [0, 1, 3],
857 | 'AKM蹲3倍': [0, 1, 4],
858 | 'AKM蹲2倍': [0, 1, 6],
859 | 'AKM蹲': [0, 1, 11],
860 | 'AKM趴6倍6': [0, 1, 3],
861 | 'AKM趴6倍3': [0, 1, 7],
862 | 'AKM趴4倍': [0, 1, 5],
863 | 'AKM趴3倍': [0, 1, 7],
864 | 'AKM趴2倍': [0, 1, 8],
865 | 'AKM趴': [0, 1, 15],
866 | 'AKM站6倍6': [0, 1, 2],
867 | 'AKM站6倍3': [0, 1, 3],
868 | 'AKM站4倍': [0, 2, 3],
869 | 'AKM站3倍': [0, 1, 3],
870 | 'AKM站2倍': [0, 1, 5],
871 | 'AKM站': [0, 1, 9],
872 | },
873 |
874 | 'PKM': {
875 | 'PKM蹲6倍6': [0, 1, 4],
876 | 'PKM蹲6倍3': [0, 1, 6],
877 | 'PKM蹲4倍': [0, 1, 5],
878 | 'PKM蹲3倍': [0, 1, 6],
879 | 'PKM蹲2倍': [0, 1, 9],
880 | 'PKM蹲': [0, 1, 15],
881 |
882 | 'PKM趴6倍6': [0, 1, 7],
883 | 'PKM趴6倍3': [0, 1, 10],
884 | 'PKM趴4倍': [0, 1, 9],
885 | 'PKM趴3倍': [0, 1, 10],
886 | 'PKM趴2倍': [0, 1, 16],
887 | 'PKM趴': [0, 1, 30],
888 |
889 | 'PKM站6倍6': [0, 1, 2],
890 | 'PKM站6倍3': [0, 1, 3],
891 | 'PKM站4倍': [0, 1, 3],
892 | 'PKM站3倍': [0, 1, 3],
893 | 'PKM站2倍': [0, 1, 5],
894 | 'PKM站': [0, 1, 9],
895 | },
896 |
897 | 'YENIU': {
898 | 'YENIU蹲6倍6': [0, 1, 6],
899 | 'YENIU蹲6倍3': [0, 1, 9],
900 | 'YENIU蹲4倍': [0, 1, 8],
901 | 'YENIU蹲3倍': [0, 1, 9],
902 | 'YENIU蹲2倍': [0, 1, 12],
903 | 'YENIU蹲': [0, 1, 22],
904 |
905 | 'YENIU趴6倍6': [0, 1, 6],
906 | 'YENIU趴6倍3': [0, 1, 10],
907 | 'YENIU趴4倍': [0, 1, 9],
908 | 'YENIU趴3倍': [0, 1, 10],
909 | 'YENIU趴2倍': [0, 1, 13],
910 | 'YENIU趴': [0, 1, 25],
911 |
912 | 'YENIU站6倍6': [0, 1, 4],
913 | 'YENIU站6倍3': [0, 1, 7],
914 | 'YENIU站4倍': [0, 1, 6],
915 | 'YENIU站3倍': [0, 1, 7],
916 | 'YENIU站2倍': [0, 1, 10],
917 | 'YENIU站': [0, 1, 17],
918 | },
919 |
920 | 'UZI': {
921 | 'UZI蹲': [0, 1, 20],
922 | 'UZI趴': [0, 1, 24],
923 | 'UZI站': [0, 1, 18],
924 | },
925 |
926 | 'TANGMUXUN': {
927 | 'TANGMUXUN蹲': [0, 1, 15],
928 | 'TANGMUXUN趴': [0, 1, 18],
929 | 'TANGMUXUN站': [0, 1, 12],
930 | },
931 |
932 | 'M249': {
933 | 'M249蹲6倍6': [0, 1, 7],
934 | 'M249蹲6倍3': [0, 1, 12],
935 | 'M249蹲4倍': [0, 1, 11],
936 | 'M249蹲3倍': [0, 1, 12],
937 | 'M249蹲2倍': [0, 1, 18],
938 | 'M249蹲': [0, 1, 31],
939 | 'M249趴6倍6': [0, 1, 11],
940 | 'M249趴6倍3': [0, 1, 23],
941 | 'M249趴4倍': [0, 1, 20],
942 | 'M249趴3倍': [0, 1, 23],
943 | 'M249趴2倍': [0, 1, 32],
944 | 'M249趴': [0, 1, 52],
945 | 'M249站6倍6': [0, 1, 3],
946 | 'M249站6倍3': [0, 1, 6],
947 | 'M249站4倍': [0, 1, 6],
948 | 'M249站3倍': [0, 1, 6],
949 | 'M249站2倍': [0, 1, 9],
950 | 'M249站': [0, 1, 16],
951 | },
952 |
953 | 'VECTOR': {
954 | 'VECTOR蹲6倍3': [0, 1, 9],
955 | 'VECTOR蹲3倍': [0, 1, 9],
956 | 'VECTOR蹲2倍': [0, 1, 11],
957 | 'VECTOR蹲': [0, 1, 17],
958 | 'VECTOR趴6倍3': [0, 1, 10],
959 | 'VECTOR趴3倍': [0, 1, 10],
960 | 'VECTOR趴2倍': [0, 1, 12],
961 | 'VECTOR趴': [0, 1, 21],
962 | 'VECTOR站6倍3': [0, 1, 7],
963 | 'VECTOR站3倍': [0, 1, 7],
964 | 'VECTOR站2倍': [0, 1, 9],
965 | 'VECTOR站': [0, 1, 14],
966 | },
967 |
968 | 'M762': {
969 | 'M762蹲6倍6': [0, 1, 2],
970 | 'M762蹲6倍3': [0, 1, 5],
971 | 'M762蹲4倍': [0, 1, 3],
972 | 'M762蹲3倍': [0, 1, 5],
973 | 'M762蹲2倍': [0, 1, 7],
974 | 'M762蹲': [0, 1, 12],
975 | 'M762趴6倍6': [0, 1, 3],
976 | 'M762趴6倍3': [0, 1, 6],
977 | 'M762趴4倍': [0, 1, 5],
978 | 'M762趴3倍': [0, 1, 6],
979 | 'M762趴2倍': [0, 1, 8],
980 | 'M762趴': [0, 1, 13],
981 | 'M762站6倍6': [0, 1, 2],
982 | 'M762站6倍3': [0, 1, 4],
983 | 'M762站4倍': [0, 1, 3],
984 | 'M762站3倍': [0, 1, 4],
985 | 'M762站2倍': [0, 1, 6],
986 | 'M762站': [0, 1, 9],
987 | },
988 |
989 | 'VSS': {
990 | 'VSS蹲6倍6': [0, 1, 15],
991 | 'VSS蹲6倍3': [0, 1, 15],
992 | 'VSS蹲4倍': [0, 1, 15],
993 | 'VSS蹲3倍': [0, 1, 15],
994 | 'VSS蹲2倍': [0, 1, 15],
995 | 'VSS蹲': [0, 1, 15],
996 |
997 | 'VSS趴6倍6': [0, 1, 22],
998 | 'VSS趴6倍3': [0, 1, 22],
999 | 'VSS趴4倍': [0, 1, 22],
1000 | 'VSS趴3倍': [0, 1, 22],
1001 | 'VSS趴2倍': [0, 1, 22],
1002 | 'VSS趴': [0, 1, 22],
1003 |
1004 | 'VSS站6倍6': [0, 1, 11],
1005 | 'VSS站6倍3': [0, 1, 11],
1006 | 'VSS站4倍': [0, 1, 11],
1007 | 'VSS站3倍': [0, 1, 11],
1008 | 'VSS站2倍': [0, 1, 11],
1009 | 'VSS站': [0, 1, 11],
1010 | },
1011 |
1012 | 'MK20H': {
1013 | 'MK20H蹲8倍': [0, 1, 17],
1014 | 'MK20H蹲6倍6': [0, 1, 21],
1015 | 'MK20H蹲6倍3': [0, 1, 37],
1016 | 'MK20H蹲4倍': [0, 1, 34],
1017 | 'MK20H蹲3倍': [0, 1, 37],
1018 | 'MK20H蹲2倍': [0, 1, 51],
1019 | 'MK20H蹲': [0, 1, 86],
1020 |
1021 | 'MK20H趴8倍': [0, 1, 30],
1022 | 'MK20H趴6倍6': [0, 1, 32],
1023 | 'MK20H趴6倍3': [0, 1, 68],
1024 | 'MK20H趴4倍': [0, 1, 51],
1025 | 'MK20H趴3倍': [0, 1, 58],
1026 | 'MK20H趴2倍': [0, 1, 82],
1027 | 'MK20H趴': [0, 1, 110],
1028 |
1029 | 'MK20H站8倍': [0, 1, 13],
1030 | 'MK20H站6倍6': [0, 1, 15],
1031 | 'MK20H站6倍3': [0, 1, 32],
1032 | 'MK20H站4倍': [0, 1, 27],
1033 | 'MK20H站3倍': [0, 1, 32],
1034 | 'MK20H站2倍': [0, 1, 44],
1035 | 'MK20H站': [0, 1, 64],
1036 | },
1037 |
1038 | 'M417': { // 趴着准一些
1039 | 'M417蹲8倍': [0, 1, 8],
1040 | 'M417蹲6倍6': [0, 1, 10],
1041 | 'M417蹲6倍3': [0, 1, 19],
1042 | 'M417蹲4倍': [0, 1, 17],
1043 | 'M417蹲3倍': [0, 1, 19],
1044 | 'M417蹲2倍': [0, 1, 25],
1045 | 'M417蹲': [0, 1, 42],
1046 |
1047 | 'M417趴8倍': [0, 1, 17],
1048 | 'M417趴6倍6': [0, 1, 19],
1049 | 'M417趴6倍3': [0, 1, 37],
1050 | 'M417趴4倍': [0, 1, 32],
1051 | 'M417趴3倍': [0, 1, 37],
1052 | 'M417趴2倍': [0, 1, 52],
1053 | 'M417趴': [0, 1, 82],
1054 |
1055 | 'M417站8倍': [0, 1, 6],
1056 | 'M417站6倍6': [0, 1, 8],
1057 | 'M417站6倍3': [0, 1, 15],
1058 | 'M417站4倍': [0, 1, 13],
1059 | 'M417站3倍': [0, 1, 15],
1060 | 'M417站2倍': [0, 1, 20],
1061 | 'M417站': [0, 1, 33],
1062 | },
1063 |
1064 | 'ACVAL': {
1065 | 'ACVAL蹲4倍': [0, 1, 8],
1066 | 'ACVAL蹲3倍': [0, 1, 9],
1067 | 'ACVAL蹲2倍': [0, 1, 12],
1068 | 'ACVAL蹲': [0, 1, 21],
1069 | 'ACVAL趴4倍': [0, 1, 11],
1070 | 'ACVAL趴3倍': [0, 1, 13],
1071 | 'ACVAL趴2倍': [0, 1, 17],
1072 | 'ACVAL趴': [0, 1, 30],
1073 | 'ACVAL站4倍': [0, 1, 7],
1074 | 'ACVAL站3倍': [0, 1, 7],
1075 | 'ACVAL站2倍': [0, 1, 10],
1076 | 'ACVAL站': [0, 1, 18],
1077 | },
1078 |
1079 | 'MIGUAN': {
1080 | 'MIGUAN蹲6倍3': [0, 1, 5],
1081 | 'MIGUAN蹲4倍': [0, 1, 4],
1082 | 'MIGUAN蹲3倍': [0, 1, 5],
1083 | 'MIGUAN蹲2倍': [0, 1, 6],
1084 | 'MIGUAN蹲': [0, 1, 10],
1085 | 'MIGUAN趴6倍3': [0, 1, 6],
1086 | 'MIGUAN趴4倍': [0, 1, 5],
1087 | 'MIGUAN趴3倍': [0, 1, 6],
1088 | 'MIGUAN趴2倍': [0, 1, 8],
1089 | 'MIGUAN趴': [0, 1, 13],
1090 | 'MIGUAN站6倍3': [0, 1, 3],
1091 | 'MIGUAN站4倍': [0, 1, 3],
1092 | 'MIGUAN站3倍': [0, 1, 3],
1093 | 'MIGUAN站2倍': [0, 1, 5],
1094 | 'MIGUAN站': [0, 1, 8],
1095 | },
1096 |
1097 | 'AUG': {
1098 | 'AUG蹲6倍6': [0, 1, 4],
1099 | 'AUG蹲6倍3': [0, 1, 8],
1100 | 'AUG蹲4倍': [0, 1, 7],
1101 | 'AUG蹲3倍': [0, 1, 8],
1102 | 'AUG蹲2倍': [0, 1, 11],
1103 | 'AUG蹲': [0, 1, 18],
1104 | 'AUG趴6倍6': [0, 1, 5],
1105 | 'AUG趴6倍3': [0, 1, 10],
1106 | 'AUG趴4倍': [0, 1, 9],
1107 | 'AUG趴3倍': [0, 1, 10],
1108 | 'AUG趴2倍': [0, 1, 14],
1109 | 'AUG趴': [0, 1, 23],
1110 | 'AUG站6倍6': [0, 1, 3],
1111 | 'AUG站6倍3': [0, 1, 6],
1112 | 'AUG站4倍': [0, 1, 5],
1113 | 'AUG站3倍': [0, 1, 6],
1114 | 'AUG站2倍': [0, 1, 8],
1115 | 'AUG站': [0, 1, 14],
1116 | },
1117 |
1118 | 'P90': {
1119 | 'P90蹲6倍6': [0, 1, 34],
1120 | 'P90蹲6倍3': [0, 1, 34],
1121 | 'P90蹲4倍': [0, 1, 34],
1122 | 'P90蹲3倍': [0, 1, 34],
1123 | 'P90蹲2倍': [0, 1, 34],
1124 | 'P90蹲': [0, 1, 34],
1125 |
1126 | 'P90趴6倍6': [0, 1, 37],
1127 | 'P90趴6倍3': [0, 1, 37],
1128 | 'P90趴4倍': [0, 1, 37],
1129 | 'P90趴3倍': [0, 1, 37],
1130 | 'P90趴2倍': [0, 1, 37],
1131 | 'P90趴': [0, 1, 37],
1132 |
1133 | 'P90站6倍6': [0, 1, 26],
1134 | 'P90站6倍3': [0, 1, 26],
1135 | 'P90站4倍': [0, 1, 26],
1136 | 'P90站3倍': [0, 1, 26],
1137 | 'P90站2倍': [0, 1, 26],
1138 | 'P90站': [0, 1, 26],
1139 | },
1140 |
1141 | 'GROZA': {
1142 | 'GROZA蹲6倍3': [0, 1, 6],
1143 | 'GROZA蹲4倍': [0, 1, 6],
1144 | 'GROZA蹲3倍': [0, 1, 6],
1145 | 'GROZA蹲2倍': [0, 1, 8],
1146 | 'GROZA蹲': [0, 1, 16],
1147 |
1148 | 'GROZA趴6倍3': [0, 1, 9],
1149 | 'GROZA趴4倍': [0, 1, 8],
1150 | 'GROZA趴3倍': [0, 1, 9],
1151 | 'GROZA趴2倍': [0, 1, 12],
1152 | 'GROZA趴': [0, 1, 20],
1153 |
1154 | 'GROZA站6倍3': [0, 1, 6],
1155 | 'GROZA站4倍': [0, 1, 5],
1156 | 'GROZA站3倍': [0, 1, 6],
1157 | 'GROZA站2倍': [0, 1, 7],
1158 | 'GROZA站': [0, 1, 12],
1159 | },
1160 |
1161 | 'MG3': { // 990
1162 | 'MG3蹲6倍6': [0, 1, 7],
1163 | 'MG3蹲6倍3': [0, 1, 12],
1164 | 'MG3蹲4倍': [0, 1, 12],
1165 | 'MG3蹲3倍': [0, 1, 12],
1166 | 'MG3蹲2倍': [0, 1, 19],
1167 | 'MG3蹲': [0, 1, 35],
1168 |
1169 | 'MG3趴6倍6': [0, 1, 16],
1170 | 'MG3趴6倍3': [0, 1, 31],
1171 | 'MG3趴4倍': [0, 1, 22],
1172 | 'MG3趴3倍': [0, 1, 31],
1173 | 'MG3趴2倍': [0, 1, 46],
1174 | 'MG3趴': [0, 1, 78],
1175 |
1176 | 'MG3站6倍6': [0, 1, 4],
1177 | 'MG3站6倍3': [0, 1, 7],
1178 | 'MG3站4倍': [0, 1, 6],
1179 | 'MG3站3倍': [0, 1, 7],
1180 | 'MG3站2倍': [0, 1, 10],
1181 | 'MG3站': [0, 1, 16],
1182 | },
1183 |
1184 | 'MK14': {
1185 | 'MK14蹲6倍6': [0, 2, 5],
1186 | 'MK14蹲6倍3': [0, 1, 4],
1187 | 'MK14蹲4倍': [0, 2, 8],
1188 | 'MK14蹲3倍': [0, 1, 4],
1189 | 'MK14蹲2倍': [0, 1, 6],
1190 | 'MK14蹲': [0, 1, 10],
1191 |
1192 | 'MK14趴6倍6': [0, 2, 7],
1193 | 'MK14趴6倍3': [0, 1, 9],
1194 | 'MK14趴4倍': [0, 2, 14],
1195 | 'MK14趴3倍': [0, 1, 9],
1196 | 'MK14趴2倍': [0, 1, 15],
1197 | 'MK14趴': [0, 1, 18],
1198 |
1199 | 'MK14站6倍6': [0, 1, 1],
1200 | 'MK14站6倍3': [0, 1, 4],
1201 | 'MK14站4倍': [0, 1, 3],
1202 | 'MK14站3倍': [0, 1, 4],
1203 | 'MK14站2倍': [0, 1, 5],
1204 | 'MK14站': [0, 1, 8],
1205 | },
1206 | };
1207 |
1208 | export class PressArgs {
1209 | static PressConfig =/* replace start */ MatePad11 /* replace end */
1210 |
1211 | /**
1212 | * 获取压强配置
1213 | */
1214 | getGunPressArgs(gunCategory: GunCategory, cnPostureCategory: CnPostureCategory, cnMirrorCategory: CnMirrorCategory) {
1215 | const argsMap = PressArgs.PressConfig[gunCategory];
1216 |
1217 | if (!argsMap) {
1218 | logerror(`getGunPressArgs: ${gunCategory} 没有相应配置。`)
1219 | return null;
1220 | }
1221 |
1222 | const key = gunCategory + cnPostureCategory + cnMirrorCategory;
1223 |
1224 | const args = argsMap[key];
1225 |
1226 | if (!args) {
1227 | return null;
1228 | }
1229 |
1230 | const [ x, y, delay ] = args;
1231 |
1232 | return { x, y, delay };
1233 | }
1234 | }
1235 |
1236 | export const pressArgs = new PressArgs();
1237 |
--------------------------------------------------------------------------------
/src/scripts/pressCtrl.ts:
--------------------------------------------------------------------------------
1 | import { GunCategory, MirrorCategory, PostureCategory } from '../../types';
2 | import { gun, Gun } from './gun';
3 | import { Posture, posture } from './posture';
4 | import { mirror, Mirror } from './mirror';
5 | import { utils } from './utils';
6 | import { pressArgs } from './pressArgs';
7 | import store from './store';
8 | import { skill } from './skill';
9 |
10 | export class PressCtrl {
11 | currGunCategory = null as ( null | GunCategory )
12 | currPostureCategory = null as ( null | PostureCategory )
13 | currMirrorCategory = null as ( null | MirrorCategory )
14 |
15 | fire() {
16 | utils.holdPressCurrentKey();
17 | utils.pauseCustomAim();
18 |
19 | this.doCustomAim();
20 | }
21 |
22 | doCustomAim() {
23 | if (!this.check()) {
24 | return;
25 | }
26 |
27 | utils.startCustomAim();
28 | utils.playCustomAim();
29 | }
30 |
31 | /** 检查准镜和枪械 */
32 | check({ mirrorCategory = true, gunCategory = true } = {}) {
33 | if (gunCategory && !gun.isHoldConfiguredGun()) {
34 | return false;
35 | }
36 |
37 | if (mirrorCategory && !mirror.isOpen()) {
38 | return false;
39 | }
40 |
41 | return true;
42 | }
43 |
44 | toggleX6Sight() {
45 | if (!mirror.isOpen()) {
46 | return false;
47 | }
48 |
49 | if (!mirror.isX6Sight()) {
50 | return false;
51 | }
52 |
53 | const currGunCategory = gun.getCurrentGun();
54 |
55 | if (!currGunCategory) {
56 | return false;
57 | }
58 |
59 | const currMirrorCategory = this.getCurrentMirrorByGun(currGunCategory);
60 |
61 | let adjustedMirror;
62 |
63 | if (currMirrorCategory === Mirror.Categories.X6X3Sight) {
64 | adjustedMirror = mirror.adjustX6ToX6();
65 | } else {
66 | adjustedMirror = mirror.adjustX6ToX3();
67 | }
68 |
69 | store.mutations.setMirrorOfAdjustedGun(currGunCategory, adjustedMirror)
70 |
71 | return true;
72 | }
73 |
74 | logErrorPressArgs() {
75 | const status = this.getStatus();
76 |
77 | if (!status) {
78 | // logerror(`logErrorPressArgs(): status 为 None`)
79 | return;
80 | }
81 |
82 | const { gunCategory, cnPostureCategory, cnMirrorCategory } = status;
83 | const args = pressArgs.getGunPressArgs(gunCategory, cnPostureCategory, cnMirrorCategory);
84 |
85 | logerror(`logErrorPressArgs: ${ gunCategory }${ cnPostureCategory }${ cnMirrorCategory }: ${ JSON.stringify(args) }`)
86 | }
87 |
88 | updatePressArgs = () => {
89 | try {
90 | const args = this.getArgsOfCustomAimPar();
91 |
92 | if (!args) {
93 | return false;
94 | }
95 |
96 | const { x, y, delay } = args;
97 |
98 | utils.updateCustomAim(x, y, delay);
99 |
100 | return true;
101 | } catch (e) {
102 | return false;
103 | }
104 | }
105 |
106 | getArgsOfCustomAimPar() {
107 | const status = this.getStatus();
108 |
109 | if (!status) {
110 | // logerror(`getArgsOfCustomAimPar(): status 为 None`)
111 | return;
112 | }
113 |
114 | const { gunCategory, cnPostureCategory, cnMirrorCategory } = status;
115 |
116 | const args = pressArgs.getGunPressArgs(gunCategory, cnPostureCategory, cnMirrorCategory);
117 |
118 | const argsFullKey = `${ gunCategory }${ cnPostureCategory }${ cnMirrorCategory }`;
119 |
120 | if (!args) {
121 | logerror(`getArgsOfCustomAimPar: ${argsFullKey}: 没有对应的配置`)
122 | return;
123 | }
124 |
125 | args.delay += store.state.deltaDelayOfGunPressArgs;
126 |
127 | utils.showTip(`${argsFullKey}: ${ JSON.stringify(args) }`)
128 |
129 | return args;
130 | }
131 |
132 | /**
133 | * 此方法在开镜后执行,
134 | *
135 | * 如未获取到 gun、posture、mirror,则会使用上次识别到的值
136 | */
137 | getStatus() {
138 | const {
139 | currGunCategory: lastGunCategory,
140 | currMirrorCategory: lastMirrorCategory
141 | } = this;
142 |
143 | let gunCategory = gun.getCurrentGun();
144 |
145 | if (!gunCategory) {
146 | // logwarning('getStatus: 未识别出当前枪械!尝试使用上次识别出来的枪械');
147 |
148 | if (!lastGunCategory) {
149 | // logwarning('getStatus: 上次识别出来的枪械为 None');
150 | return;
151 | }
152 |
153 | gunCategory = lastGunCategory;
154 | }
155 |
156 | let postureCategory = posture.getCurrentPostureCategory();
157 |
158 | let mirrorCategory = this.getCurrentMirrorByGun(gunCategory);
159 |
160 | if (!mirrorCategory) {
161 | // logwarning('getStatus: 未识别出当前准镜!尝试使用上次识别出来的准镜!');
162 |
163 | if (!lastMirrorCategory) {
164 | // logwarning('getStatus: 上次识别出来的准镜为 None');
165 | return;
166 | }
167 |
168 | mirrorCategory = lastMirrorCategory;
169 | }
170 |
171 | this.currGunCategory = gunCategory;
172 | this.currPostureCategory = postureCategory;
173 | this.currMirrorCategory = mirrorCategory;
174 |
175 | const cnPostureCategory = Posture.Mapping[postureCategory];
176 | const cnMirrorCategory = Mirror.Mapping[mirrorCategory];
177 |
178 | return { gunCategory, cnPostureCategory, cnMirrorCategory };
179 | }
180 |
181 | getCurrentMirrorByGun(gunCategory: GunCategory) {
182 | let disabledMirrors: MirrorCategory[] = ['X8Sight'];
183 |
184 | if (Gun.X8SightGuns.includes(gunCategory)) {
185 | disabledMirrors = ['X2Sight', 'RedDotSight', 'HolographicSight', 'MachineSight']
186 | }
187 |
188 | let mirrorCategory = mirror.getCurrentMirror(disabledMirrors);
189 |
190 | if (mirrorCategory === Mirror.Categories.X6Sight) {
191 | mirrorCategory = store.getters.getMirrorOfAdjustedGun(gunCategory) || Mirror.Categories.X6Sight;
192 | }
193 |
194 | return mirrorCategory;
195 | }
196 |
197 | }
198 |
199 | export const pressCtrl = new PressCtrl();
200 |
--------------------------------------------------------------------------------
/src/scripts/skill.ts:
--------------------------------------------------------------------------------
1 | import store from './store';
2 | import { mirror } from './mirror';
3 | import { gun } from './gun';
4 | import constant, { Keyboard, NodHeadConfig } from './constant';
5 | import { posture } from './posture';
6 | import { utils } from './utils';
7 |
8 | export class Skill {
9 |
10 |
11 |
12 | clickOpenMirrorButton() {
13 | utils.clickPoint(constant.OpenMirrorButtonPoint)
14 | }
15 |
16 | isPressShift() {
17 | return utils.isPressingKey(Keyboard.Shift);
18 | }
19 |
20 | }
21 |
22 | export const skill = new Skill();
23 |
--------------------------------------------------------------------------------
/src/scripts/store.ts:
--------------------------------------------------------------------------------
1 | import { IGetters, IMutations } from '../../types';
2 | import { utils } from './utils';
3 |
4 | const state = {
5 | /** 控制 utils.showTip */
6 | tip: true,
7 |
8 | /** 调整过 6 倍镜倍率 的 枪及倍率 */
9 | adjust6XSightGuns: {} as Record, // { gun: sight, ... }
10 |
11 | /** 动态调整压枪参数,存储差值 */
12 | deltaDelayOfGunPressArgs: 0,
13 |
14 | currGun: '',
15 |
16 | leftGun: '',
17 | rightGun: '',
18 |
19 | leftGunMirror: '',
20 | rightGunMirror: '',
21 |
22 | availMirrorList: [],
23 |
24 | };
25 |
26 |
27 | const getters: IGetters = {
28 | /**
29 | * 获取调整过 6 倍镜倍率的枪的准镜
30 | */
31 | getMirrorOfAdjustedGun(this: typeof store, gun: string) {
32 | const adjustedX6SightsGuns = this.state.adjust6XSightGuns || {}
33 | return adjustedX6SightsGuns[gun];
34 | }
35 | };
36 |
37 | const mutations: IMutations = {
38 | /**
39 | * 设置调整过 6 倍镜倍率的枪及准镜
40 | */
41 | setMirrorOfAdjustedGun(this: typeof store, gun: string, mirror: string) {
42 | const adjustedX6SightsGuns = this.state.adjust6XSightGuns;
43 |
44 | adjustedX6SightsGuns[gun] = mirror;
45 |
46 | this.state.adjust6XSightGuns = adjustedX6SightsGuns;
47 | },
48 |
49 | addDelayOfGunPressArgs(this: typeof store, num: number) {
50 | this.state.deltaDelayOfGunPressArgs = this.state.deltaDelayOfGunPressArgs + num;
51 | },
52 |
53 | /**
54 | * 切换 utils.showTip() 的启用和禁止
55 | */
56 | toggleEnableOfTip(this: typeof store, ) {
57 | this.state.tip = !this.state.tip;
58 | },
59 | }
60 |
61 | const store = {
62 | state,
63 | getters,
64 | mutations,
65 | };
66 |
67 | store.state = new Proxy(state, {
68 | get(target, propName) {
69 | const value = utils.getValueFromGlobalMap(propName);
70 |
71 | // loginfo(`${propName} = ${value}`);
72 |
73 | if (value == null) {
74 | const defaultValue = Reflect.get(target, propName);
75 | // loginfo(`${propName} = ${defaultValue} (default)`);
76 | return defaultValue;
77 | }
78 |
79 | return value;
80 | },
81 |
82 | set(target, propName, value) {
83 | utils.setValueToGlobalMap(propName, value);
84 | return true;
85 | },
86 |
87 | deleteProperty(target, propName) {
88 | utils.setValueToGlobalMap(propName, null);
89 | return true;
90 | }
91 | });
92 |
93 | // 更改 this 的指向
94 | Object.keys(store.mutations).forEach((methodName) => {
95 | if (!store.mutations.hasOwnProperty(methodName)) {
96 | return;
97 | }
98 |
99 | store.mutations[methodName] = store.mutations[methodName].bind(store);
100 | });
101 |
102 | // 更改 this 的指向
103 | Object.keys(store.getters).forEach((methodName) => {
104 | if (!store.getters.hasOwnProperty(methodName)) {
105 | return;
106 | }
107 |
108 | store.getters[methodName] = store.getters[methodName].bind(store);
109 | });
110 |
111 |
112 | export default store;
113 |
--------------------------------------------------------------------------------
/src/scripts/utils.ts:
--------------------------------------------------------------------------------
1 | import { Point } from '../../types';
2 | import store from './store';
3 |
4 | export class Utils {
5 | /**
6 | * mapi.point 是否 存在
7 | *
8 | * @param point { mapi.point }
9 | * @returns {boolean}
10 | */
11 | isPointExist(point: mapi.point) {
12 | return point.X !== 0 || point.Y !== 0;
13 | }
14 |
15 | /**
16 | * mapi.point 是否 不存在
17 | *
18 | * @param point { mapi.point }
19 | * @returns {boolean}
20 | */
21 | isPointNotExist(point: mapi.point) {
22 | return point.X === 0 || point.Y === 0;
23 | }
24 |
25 | isImageExist(imgName: string, sim: number, setCol: number, setRow: number, selectCol: number, selectRow: number) {
26 | return this.isPointExist(this.findImage(imgName, sim, setCol, setRow, selectCol, selectRow));
27 | }
28 | isColorExist(color: string, posList: string) {
29 | return this.isPointExist(mapi.findcolor(color, posList));
30 | }
31 |
32 | /**
33 | * 包装 mapi.tip(content)
34 | */
35 | showTip(content: string, duration = 1) {
36 | if (!store.state.tip) {
37 | return;
38 | }
39 | mapi.tip(content, duration);
40 | }
41 |
42 | findImage(imgName: string, sim: number, columnTotal: number, rowTotal: number, selectCol: number, selectRow: number) {
43 | return mapi.findimage(imgName, sim, columnTotal, rowTotal, selectCol, selectRow);
44 | }
45 |
46 | clickImagePosition(imgName: string, sim: number, columnTotal: number, rowTotal: number, selectCol: number, selectRow: number) {
47 | const point = this.findImage(imgName, sim, columnTotal, rowTotal, selectCol, selectRow);
48 |
49 | if (this.isPointNotExist(point)) {
50 | return false;
51 | }
52 |
53 | mapi.click(point);
54 | }
55 |
56 | clickPoint(point: mapi.point | Point) {
57 | let x: number;
58 | let y: number;
59 |
60 | if ('x' in point) {
61 | ({ x, y } = point);
62 | } else {
63 | ({ X: x, Y: y } = point);
64 | }
65 |
66 | mapi.click(x, y);
67 | }
68 |
69 | /** 点击当前按键所在位置 */
70 | clickCurrentKey() {
71 | mapi.click();
72 | }
73 |
74 | /** 按 key 按键 pressDuration 毫秒 */
75 | clickKey(key: string, pressDuration: number = 100) {
76 | mapi.key(key, pressDuration);
77 | }
78 |
79 | /** 重置 准心、方向键 */
80 | resetAimAndDirection(delay?: number) {
81 | if (delay) {
82 | mapi.delay(delay)
83 | }
84 | mapi.aimreset();
85 | mapi.directionreset();
86 | }
87 |
88 | resetAim(delay?: number) {
89 | if (delay) {
90 | mapi.delay(delay)
91 | }
92 | mapi.aimreset();
93 | }
94 |
95 | /**
96 | * 顺序执行多个函数
97 | */
98 | series(funcList: Function[], interruptReturnValue = true) {
99 | funcList.some((func) => {
100 | const result = func();
101 |
102 | return result === interruptReturnValue;
103 | });
104 | }
105 |
106 | switchToShotMode() {
107 | mapi.shotmode(true);
108 | }
109 |
110 | switchToMouseMode() {
111 | mapi.shotmode(true);
112 | }
113 |
114 | /** 按住当前按键,松开后释放 */
115 | holdPressCurrentKey() {
116 | mapi.holdpress();
117 | }
118 |
119 | /** 启动 自定义准心调节 */
120 | startCustomAim() {
121 | mapi.startcustomaimpar();
122 | }
123 |
124 | /** 运行 自定义准心调节 */
125 | playCustomAim() {
126 | mapi.customaimpar(false);
127 | }
128 |
129 | /** 暂停 自定义准心调节 */
130 | pauseCustomAim() {
131 | mapi.customaimpar(true);
132 | }
133 |
134 | /** 更新 自定义准心调节 参数 */
135 | updateCustomAim(x: number, y: number, delay: number) {
136 | mapi.changecustomaimpar(x, y, delay);
137 | }
138 |
139 | /** 获取光标的位置 */
140 | getMousePosition() {
141 | return mapi.getmousepos()
142 | }
143 |
144 | /** 滑动操作 */
145 | slide(startX: number, startY: number, endX: number, endY: number, interval: number, pointNum: number) {
146 | mapi.slide(startX, startY, endX, endY, interval, pointNum);
147 | }
148 |
149 | /** 延迟 */
150 | delay(milliseconds: number = 100) {
151 | mapi.delay(milliseconds)
152 | }
153 |
154 | isPressingKey(keyName: string): boolean {
155 | return mapi.keyispress(keyName)
156 | }
157 |
158 | isPressingCurrentKey() {
159 | return mapi.keyispress();
160 | }
161 |
162 | getValueFromGlobalMap(key: string | Object): any {
163 | return mapi.getglobalmap(key);
164 | }
165 |
166 | setValueToGlobalMap(key: string | Object, value: any) {
167 | mapi.setglobalmap(key, value)
168 | }
169 | }
170 |
171 | export const utils = new Utils();
172 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es6",
4 | "lib": [
5 | "dom",
6 | "dom.iterable",
7 | "esnext"
8 | ],
9 | "allowJs": true,
10 | "skipLibCheck": true,
11 | "esModuleInterop": true,
12 | "allowSyntheticDefaultImports": true,
13 | "strict": true,
14 | "forceConsistentCasingInFileNames": true,
15 | "noFallthroughCasesInSwitch": true,
16 | "module": "esnext",
17 | "moduleResolution": "node",
18 | "resolveJsonModule": true,
19 | "isolatedModules": true,
20 | "noEmit": false,
21 | "outDir": "dist"
22 | },
23 | "include": [
24 | "src/scripts",
25 | "types"
26 | ]
27 | }
28 |
--------------------------------------------------------------------------------
/types/index.d.ts:
--------------------------------------------------------------------------------
1 | export type Point = { x: number, y: number };
2 |
3 | export type ImageArgs = [ string, number, number, number, number, number ]
4 |
5 | /** [sim, setCol, setRow, selectCol, selectRow] */
6 | export type ImageAreaArgs = [ number, number, number, number, number ];
7 |
8 | export type ColorArgs = [ string, string ];
9 |
10 | export type PointArgs = [ number, number ];
11 |
12 | export interface IState {
13 | [prop: string]: any,
14 | }
15 |
16 | export interface IGetters {
17 | [prop: string]: Function,
18 | }
19 |
20 | export interface IMutations {
21 | [prop: string]: Function,
22 | }
23 |
24 |
25 | export type GunCategory =
26 | 'M4'
27 | | 'SCARL'
28 | | 'DP28'
29 | | 'UMP45'
30 | | 'YENIU'
31 | | 'UZI'
32 | | 'VECTOR'
33 | | 'TANGMUXUN'
34 | | 'AKM'
35 | | 'ACVAL'
36 | | 'PKM'
37 | | 'VSS'
38 | | 'MK20H'
39 | | 'M417'
40 | | 'M249'
41 | | 'M762'
42 | | 'AUG'
43 | | 'GROZA'
44 | | 'MG3'
45 | | 'P90'
46 | | 'MIGUAN'
47 | | 'MK14'
48 | ;
49 |
50 | export type GunPosition = 'Left' | 'Right';
51 |
52 | export type MirrorCategory =
53 | 'MachineSight'
54 | | 'RedDotSight'
55 | | 'HolographicSight'
56 | | 'X2Sight'
57 | | 'X3Sight'
58 | | 'X4Sight'
59 | | 'X6Sight'
60 | | 'X8Sight'
61 | ;
62 |
63 | export type CnMirrorCategory =
64 | ''
65 | | '2倍'
66 | | '3倍'
67 | | '4倍'
68 | | '6倍6'
69 | | '6倍3'
70 | | '8倍'
71 | ;
72 |
73 |
74 | export type MissileCategory = 'FragmentBomb' | 'SmokeBomb' | 'MolotovCocktail';
75 |
76 | export type MedicineCategory =
77 | 'EnergyDrink'
78 | | 'Painkiller'
79 | | 'EpinephrineInjection'
80 | | 'Bandage'
81 | | 'FirstAidKit'
82 | | 'MedicalFirstAidKit'
83 |
84 | export type PostureCategory =
85 | 'Stand'
86 | | 'Squat'
87 | | 'Prostrate'
88 |
89 | export type CnPostureCategory =
90 | '站'
91 | | '蹲'
92 | | '趴'
93 |
94 | export type PressConfig = {
95 | [key in GunCategory]: IMirrorPressArgs
96 | }
97 |
98 | export interface IMirrorPressArgs {
99 | [prop: string]: [ number, number, number ];
100 | }
101 |
--------------------------------------------------------------------------------
/types/mapi.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace mapi {
2 | /**
3 | * 多点找色、简单找图等返回的 point,
4 | *
5 | * 通过 ( point.X !== 0 || point.Y !== 0 ) 判断是否合法
6 | */
7 | interface point {
8 | X: number,
9 | Y: number,
10 | }
11 |
12 | /**
13 | * 延时操作,milliseconds为整型,单位毫秒
14 | * @param milliseconds
15 | */
16 | function delay(milliseconds: number);
17 |
18 | /**
19 | * 长按当前宏按键所指的手机位置
20 | * @param milliseconds
21 | */
22 | function longpress(milliseconds: number);
23 |
24 | /**
25 | * 长按指定坐标的位置
26 | */
27 | function longpress(x: number, y: number, milliseconds: number);
28 |
29 | /**
30 | * 弹出消息框
31 | *
32 | * @param info 内容
33 | * @param closeTime 单位 秒,默认 3 秒
34 | */
35 | function tip(info: string, closeTime?: number): void;
36 |
37 |
38 | /**
39 | * 单点找色,返回当前颜色的坐标
40 | *
41 | * 主要解决部分图标按下后会变色的场景,
42 | * 如要要区分按钮变色状态可以通过此接口处理
43 | *
44 | * @param color
45 | * @param point
46 | */
47 | function findcolor(color: string, point: point): point;
48 |
49 | /**
50 | * 多点找色,返回当前颜色的坐标点。
51 | *
52 | * 配合 TCG界面里的“取色工具” 一起使用
53 | *
54 | * @param color
55 | * @param poslist
56 | */
57 | function findcolor(color: string, poslist: string): point;
58 |
59 | /**
60 | * 简单找图,返回当前图标在屏幕的坐标点
61 | *
62 | * @param imgName 图片的名称
63 | * @param sim 相似度
64 | * @param setCol 屏幕分几列
65 | * @param setRow 屏幕分几行
66 | * @param selectCol 取第几列
67 | * @param selectRow 取第几行
68 | */
69 | function findimage(
70 | imgName: string,
71 | sim: number,
72 | setCol: number,
73 | setRow: number,
74 | selectCol: number,
75 | selectRow: number
76 | ): point;
77 |
78 | /**
79 | * 启动(多段动态调整)鼠标宏 参数获取
80 | *
81 | * 在代码起始位置,写一次就好,参数调节需要使用。
82 | */
83 | function startsectionaimpar(): void;
84 |
85 | /**
86 | * 改变(多段动态调整)鼠标宏的参数
87 | *
88 | * @param name 当前的名称,相同则不处理
89 | * @param totalTime 弹夹打完所需要的总耗时,单位 毫秒
90 | * @param par 多段参数,数组字符串
91 | * @param offsetPixel 每次压枪像素偏移值,模式二的写法
92 | * @param mode true 使用模式一,false 使用模式二
93 | */
94 | function changesectionaimpar(
95 | name: string,
96 | totalTime: number,
97 | par: string,
98 | offsetPixel?: number,
99 | mode?: boolean
100 | ): void;
101 |
102 | /**
103 | * 启动自定义鼠标宏,
104 | *
105 | * 在代码起始位置,写一次就好,
106 | *
107 | * 参数调节需要使用 changecustomaimpar,
108 | *
109 | * 启停需要配合使用 customaimpar。
110 | */
111 | function startcustomaimpar();
112 |
113 | /**
114 | * 动态调整自定义的鼠标宏参数
115 | *
116 | * @param x 水平方向,每次移动 x 像素
117 | * @param y 垂直方向,每次移动 y 像素
118 | * @param delay 每隔多少毫秒移动一次
119 | */
120 | function changecustomaimpar(x: number, y: number, delay: number);
121 |
122 | /**
123 | * 控制鼠标宏的启停
124 | *
125 | * @param isPause true 是停止;false 是开始
126 | */
127 | function customaimpar(isPause: boolean): void;
128 |
129 | /**
130 | * 按住操作,按住当前宏按键所指的手机位置
131 | */
132 | function holdpress();
133 |
134 | /**
135 | * 按住操作,按键松开后才会释放此接口
136 | */
137 | function holdpress(x: number, y: number);
138 |
139 | /**
140 | * 按住操作,按键松开后才会释放此接口
141 | */
142 | function holdpress(point: point);
143 |
144 | /**
145 | * 执行其他按键的操作,
146 | * 当前按键松开 才会释放 其他按键
147 | *
148 | * @param keyName { string } 如 "W"
149 | */
150 | function key(keyName: string);
151 |
152 | /**
153 | * 执行其他按键的操作
154 | * releaseTime 毫秒后,释放 其他按键
155 | *
156 | * @param keyName { string } 如 "W"
157 | * @param releaseTime {number} 毫秒数
158 | */
159 | function key(keyName: string, releaseTime: number);
160 |
161 | /**
162 | * 当前按键按键是否被按下
163 | */
164 | function keyispress(): boolean;
165 |
166 | /**
167 | * 获取 指定的按键是否被按下
168 | * @param keyName
169 | */
170 | function keyispress(keyName: string): boolean;
171 |
172 | /**
173 | * 设置全局缓存 map 的键值对
174 | * @param key
175 | * @param value
176 | */
177 | function setglobalmap(key: string | Object, value: any);
178 |
179 | /**
180 | * 获取全局缓存 map 指定 key 的值,没有则返回 null
181 | * @param key
182 | */
183 | function getglobalmap(key: string | Object): any;
184 |
185 | /**
186 | * 设置是否为射击模式。射击模式没有鼠标
187 | *
188 | * @param isShotMode { boolean } 是否为射击模式
189 | * @example 按 Tab 键,默认会退出,可用通过 mapi.shotmode(true) 进入射击模式
190 | */
191 | function shotmode(isShotMode: boolean);
192 |
193 | /**
194 | * 点击当前宏按键所指的手机位置
195 | */
196 | function click();
197 |
198 | /**
199 | * 点击操作
200 | * @param point
201 | */
202 | function click(point: point);
203 |
204 | /**
205 | * 点击操作
206 | *
207 | * @param x {number}
208 | * @param y {number}
209 | */
210 | function click(x: number, y: number);
211 |
212 | /**
213 | * 获取当前宏按键所指手机屏幕上的坐标
214 | */
215 | function getkeypos(): point;
216 |
217 | /**
218 | * 获取当前鼠标所指手机屏幕上的坐标
219 | */
220 | function getmousepos(): point;
221 |
222 | /**
223 | * 准心重置操作,
224 | * 在隐藏鼠标控制视角时,使用此接口会释放视角然后立即在准心位置重新按下,
225 | * 主要解决某些游戏因为点击其他位置导致视角失灵的情况
226 | */
227 | function aimreset();
228 |
229 | /**
230 | * 从 (startX, startY) 滑动到 (endX, endY),
231 | * 这段距离总共有 pointNum 个点,
232 | * 两点间所需时间为 interval
233 | */
234 | function slide(startX: number, startY: number, endX: number, endY: number, interval: number, pointNum: number);
235 |
236 | /**
237 | * WASD方向键重置
238 | *
239 | * 200 毫秒后 重新按WASD
240 | */
241 | function directionreset();
242 | /**
243 | * WASD方向键重置
244 | *
245 | * delay 毫秒后 重新按WASD
246 | */
247 | function directionreset(delay: number);
248 | }
249 |
250 |
251 | /**
252 | * 日志,类别 debug
253 | * @param content {string} 内容
254 | */
255 | declare function logdebug(content: string): void;
256 |
257 | /**
258 | * 日志,类别 info
259 | * @param content {string} 内容
260 | */
261 | declare function loginfo(content: string): void;
262 |
263 | /**
264 | * 日志,类别 warning
265 | * @param content {string} 内容
266 | */
267 | declare function logwarning(content: string): void;
268 |
269 | /**
270 | * 日志,类别 error
271 | * @param content {string} 内容
272 | */
273 | declare function logerror(content: string): void;
274 |
275 | /**
276 | * 日志,类别 fatal
277 | * @param content {string} 内容
278 | */
279 | declare function logfatal(content: string): void;
280 |
281 |
--------------------------------------------------------------------------------