宏按键 JS 接口
参考视频教程:视频
模块说明
假设你的模块文件名为:main.js,有一个名为start()的方法。(mapi的所有接口都可以在文件内编写,文件内可使用ES6标准的代码)
TCG右上角-设置-Js设置-可以通过界面上的设置,切换module加载的路径,或者打开存放module的路径。甚至可以通过加密工具为你的.js脚本进行TCG加密,加密后,会在当前源文件所处的目录生成一个加密文件夹,新的加密文件就会存放在这里。只需要将加密文件,放到module的路径内,TCG就会自动加载和解密了。在TCG内使用的方式也很简单,请见示例。
var main = import('main'); function autostart(){ if(null != main){ main.then((module) =>{ module.start(); }) .catch((err)=> { mapi.tip(err); }); } } autostart();
特殊说明
当JS块内包含此方法时,每次加载按键后会自动启动脚本,无需手动点击宏按键启动(如何手动关闭:1.打开按键编辑,2.或者在宏编辑框屏蔽掉代码即可)
function autostart(){ // 你的代码 }
click();
说明
点击当前宏按键所指的手机位置
示例
mapi.click();
click(int x,int y);
说明
点击操作,参数x和y为整型
示例
mapi.click(100,200);
click(mapi.point pos);
说明
点击操作,参数pos为坐标对象,可通过获取findimage或findcolor的返回值传入,也可以通过mapi.point的返回值new一个坐标对象。
示例
var pos = mapi.point(100, 200); mapi.click(pos); 或 var imgpos = mapi.findimage(...); mapi.click(imgpos); 或 var corpos = mapi.findcolor(...); mapi.click(corpos);
delay(int milliseconds);
说明
延时操作,milliseconds为整型,单位毫秒
示例
mapi.delay(1000);
longpress();
说明
长按当前宏按键所指的手机位置,delay为长按的时间
示例
mapi.longpress(2000);
longpress(int x, int y, int delay);
说明
长按坐标操作,按住一个坐标delay毫秒后松开,参数x和y和delay为整型
示例
mapi.longpress(100,200,2000);
slide(int sx, int sy, int ex, int ey, int delay, int num);
说明
滑动操作,从点A滑动到点B,不可中断,sx和sy为起始坐标,ex和xy为结束坐标,delay是坐标间隔时间单位毫秒,num为坐标的点数,最少2个,delay*num=实际滑动需要的时间,releaseByKey为释放开关,不填或false为执行滑动后立即释放、true为执行完后,松开当前宏按键才释放。
示例
mapi.slide(100,200,500,600,10,5); 或mapi.slide(100,200,500,600,10,5, true);
holdpress();
说明
按住当前宏按键所指的手机位置
示例
mapi.holdpress();
holdpress(int x, int y);
说明
按住操作,按键松开后才会释放此接口,参数x和y为整型
示例
mapi.holdpress(100,200);
holdpress(mapi.point pos);
说明
按住操作,按键松开后才会释放此接口,参数pos为坐标对象,可通过获取findimage或findcolor的返回值传入,也可以通过mapi.point的返回值new一个坐标对象。
示例
var pos = mapi.point(100, 200); mapi.holdpress(pos); 或 var imgpos = mapi.findimage(...); mapi.holdpress(imgpos); 或 var corpos = mapi.findcolor(...); mapi.holdpress(corpos);
key(string keyName, int? releaseTime = null);
说明
执行其他按键的操作,当设置了其他按键,假如你想操作其他按键,可以使用此接口,releasetime为空的情况下,其他按键的释放需要当前按键松开才会释放,当releasetime不为空的情况下,单位毫秒后自动释放
示例
mapi.key('W'); 或 mapi.key('W+1', 1000);
aimreset();
说明
准心重置操作,在隐藏鼠标控制视角时,使用此接口会释放视角然后立即在准心位置重新按下,主要解决某些游戏因为点击其他位置导致视角失灵的情况
示例
mapi.aimreset();
directionreset(long delay = 200);
说明
WASD方向键重置,当某些场景或接口操作导致WASD方向键失灵时,使用此接口会重新按WASD,delay不填的时候默认200毫秒延时后重按,延时是为了等待游戏场景切换的时间
示例
mapi.directionrest(); 或 mapi.directionrest(500);
direction(bool isOpen);
说明
WASD方向键开关,当使用了逻辑判断场景时,如果某个游戏场景需要屏蔽WASD,可以使用此接口,true为打开,false为关闭
示例
mapi.direction(false); 或 mapi.direction(true);
shotmodeswitch();
说明
在隐藏鼠标控制视角时,可以通过此开关控制鼠标的隐藏或显示,自动切换,无需传参。
示例
mapi.shotmodeswitch();
shotmode(bool isEnter);
说明
在隐藏鼠标控制视角时,可以通过此开关控制鼠标的隐藏或显示,传参切换。
示例
mapi.shotmode(true); 或 mapi.shotmode(false);
keyrefresh(string keyName, int x, int y, int offsetx = 0, int offsety = 0);
说明
按键显示位置刷新,keyName按键名称,x和y是坐标,offsetx和offsety是坐标偏移值
示例
mapi.keyrefresh('Q',100, 200, 0 ,0);
keyrefresh(string keyName, mapi.point pos, mapi.point offsetPos);
说明
按键显示位置刷新,keyName按键名称,pos是设置的坐标,offsetPos是偏移值
示例
var imgpos = mapi.findimage(...); var posOffset = mapi.point(0, 0); mapi.keyrefresh('Q',imgpos,posOffset );
mouseleftswitch();
说明
鼠标左键默认是控制整个TCG窗口,假如按键里设置了鼠标左键,需要通过此接口来切换
示例
mapi.mouseleftswitch();
mouseleft(bool isOpen);
说明
自定义鼠标左键控制模式,true或false控制
示例
mapi.mouseleft(true); 或mapi.mouseleft(false);
directionrunfast(float val);
说明
自定义键盘行走快跑。例:按shift人物快跑,松开走路。val是shift按下后滑动范围的倍率,也就是手搓时拇指滑动快跑的范围
示例
mapi.directionrunfast(2);
directionrunslowly(float val);
说明
自定义键盘行走慢走。例:按shift人物静步或慢走,松开快跑。val是shift按下后滑动范围的倍率,也就是手搓时拇指滑静步或慢走的范围。
示例
mapi.directionrunslowly(2);
startsimpleaimpar(int x, int y, int delay);
说明
模拟鼠标宏,控制鼠标的移动方向,x和y是鼠标移动的方向,可以为0,delay是每隔多少毫秒移动一次。
示例
mapi.startsimpleaimpar(0,1,20);
startcustomaimpar();
说明
启动自定义鼠标宏,在代码起始位置,写一次就好,参数调节需要使用changecustomaimpar,启停需要配合使用customaimpar。
示例
mapi.startcustomaimpar();
changecustomaimpar(int x, int y, int delay);
说明
动态调整自定义的鼠标宏参数,x和y是鼠标移动的方向,可以为0,delay是每隔多少毫秒移动一次,可以通过逻辑处理不同场景下的鼠标参数
示例
mapi.changecustomaimpar(0,1,20);
startsectionaimpar();
说明
启动多段参数获取,在代码起始位置,写一次就好,参数调节需要使用。
示例
mapi.startsectionaimpar();
changesectionaimpar(string name, int totalTime, string par, bool offsetPixel = 1, bool mode = true)
说明
多段动态调整自定义鼠标宏参数,name为当前的名称,相同则不处理,totalTime为弹夹打完所需要的总耗时,par为多段参数的数组,offsetPixel为模式二的写法,默认可以不写,表示每次压枪像素偏移值,mode默认为true使用模式一,false使用模式二。。。。模式一示例解释:list有3个数字,总时间3000毫秒除以3,那么每一段耗时1000毫秒执行250个像素,也就是3秒内执行750个像素压枪幅度,调节多段时保证总时间不变,可以为每一段增加不同的像素处理。。。。模式二示例解释:分段仍然为3段,3000除3等于1000,每一个分段执行1秒。压枪的幅度是5个像素,1秒内,每隔5毫毛执行5个像素。
示例
模式一: var list1 = [250,250,250]; mapi.changesectionaimpar('测试', 3000, list1.toString()); 模式二: var list2 = [5,4,3]; mapi.changesectionaimpar('测试', 3000, list2.toString(), 5, false);
customaimpar(bool isOpen);
说明
控制鼠标宏的启停,在某些场景下,不需要使用鼠标宏,通过控制isOpen,来处理逻辑,true是停止,false是取消停止
示例
mapi.customaimpar(true); 或 mapi.customaimpar(false);
tip(string info, int closeTime = 3);
说明
在TCGAME显示的上方显示一个不会影响操作的弹窗,方便查看当前逻辑执行的内容。info是提示内容,closeTime是弹窗隐藏的时间(单位秒)
示例
mapi.tip('当前模式鼠标下压'); 或mapi.tip('当前模式鼠标下压',3);
mapi.point findimage(string imgName, float sim, int setCol, int setRow, int selectCol, int selectRow);
说明
简单找图,返回当前图标在屏幕的坐标点。imgName是图片的名称,sim是相似度当图片达到后就判断为找到,setCol和setRow设置图片的分块,最大4*4,electCol和 selectRow是选中当前图片所在的块,最大4*4
示例
mapi.findimage('目标', 0.75, 4, 4, 1, 4);
mapi.point findcolor(string color, string poslist);
说明
多点找色,返回当前颜色的坐标点。可以通过TCG界面里的取色工具,直接获取,点击+号后添加到代码里。color是颜色,poslist是坐标
示例
mapi.findimage('255:254:247:142', '1475:648+1477:648+1475:650+1477:650');
mapi.point findcolor(string color, mapi.point point);
说明
单点找色,返回当前颜色的坐标。point参数可以为找图后的坐标,或者为point接口新建的对象。主要解决部分图标按下后会变色的场景,如要要区分按钮变色状态可以通过此接口处理
示例
var img = mapi.findimage('目标', 0.75, 4, 4, 1, 4); mapi.findimage('255:254:247:142',img );
mapi.point getmousepos();
说明
获取当前鼠标所指手机屏幕上的坐标
示例
var mousepos = mapi.getmousepos();
mapi.point getkeypos();
说明
获取当前宏按键所指手机屏幕上的坐标
示例
var keypos = mapi.getkeypos();
setglobalmap(object key, object val);
说明
设置全局缓存map,搭配下面的get使用。
示例
mapi.setglobalmap('目标', true);
object getglobalmap(object key);
说明
获取全局缓存map,搭配上面的set使用,作用效果可以是宏按键A=>get=>宏按键B=>set的内容。
示例
var result = Boolean(mapi.getglobalmap('目标'));
bool keyispress(string srcKeyCode = null)
说明
获取当前按键或者指定的按键是否被按下,srcKeyCode可为空,为空时获取当前按键,有值时获取指定按键
示例
var result = mapi.keyispress(); 或 var result = mapi.keyispress('A');
point(int x, int y);
说明
new 一个新的point坐标对象,x和y为整型,循环的代码尽量不用
示例
var pos = mapi.point(100, 200);
loginfo(string info);
说明
日志输出路径:%appdata%\Sigma-RT\TC Games\Log\macro_javascript.log
示例
loginfo('info日志');
logwarning(string warning);
说明
日志输出路径:%appdata%\Sigma-RT\TC Games\Log\macro_javascript.log
示例
logwarning('warning日志');
logerror(string error);
说明
日志输出路径:%appdata%\Sigma-RT\TC Games\Log\macro_javascript.log
示例
logerror('error日志');
logdebug(string debug);
说明
日志输出路径:%appdata%\Sigma-RT\TC Games\Log\macro_javascript.log
示例
logdebug('debug日志');
logfatal(string fatal);
说明
日志输出路径:%appdata%\Sigma-RT\TC Games\Log\macro_javascript.log
示例
logfatal('fatal日志');