宏按键 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日志');