驱动界面
在某个宝物上吹的神就是那个神的芯片压制枪。即可从workspace页面中移除物件。即可从workspace页面中移除物件。看不到价格膨胀。即可从workspace页面中移除物件。即可从workspace页面中移除物件。
原理很简单。只是很容易根据我用的驱动开枪
另外,自动识别武器装置等将通过着色判断安装了什么样的枪支
下面作者给大家说明具体原理
武器标识符使用Asprise-OCR标识武器名称(也可以上色,但需要不同的颜色点,因此要麻烦)
1.1修剪指定位置的地物
bitmap image=new bitmap(globalparam . wea pon 0 location[‘ basic size ‘])。x,global param . wea pon 0 location[‘ basicsize ‘]。y);bitmap image 1=new bitmap(global param . wea pon 1 location[‘ basic size ‘])。x,global param . wea pon 1 location[‘ basicsize ‘]。y);graphics img graphics=graphics . from image(image);img graphics . copy from screen(global param . wea pon 0 location[‘ basic ‘],new point (0,0),new size(image . wize)1.2裁剪图像/反转颜色
private void cutimage(bitmap source,string image name){ intwidth=global param . idea ponimg . width;//获取地物宽度intheight=global param . idnweaponimg . height;//获取图片高度bitmap new map=new bitmap (width,height);//保存新地物int x=global param . idea ponpoint . x;int y=globalparam . idea ponpoint . y;Int lengthX=x widthInt lengthY=y heightint originX=0;int originY=0;颜色像素;//颜色笔对for(int I=x;IlengthXI){ for(int j=y);JlengthYJ) {pixel=source。GetPixel(i,j);//获取上图的颜色值(ARGB存储方法)int r、g、b、a;R=pixel。r;G=pixel。g;B=pixel。b;//确定白色RGB (255,255,255)、黑色(0,0,0) //白色背景if(r==255g==255 b==255){//确定新电影中指定像素的颜色} elseif (r==0 g==0 b==0) {/)新电影中指定像素的颜色为白色new map.setpixel (orignx,origin,color . from argb(22} else {newmap.setpixel (orignx,origin,color.from argb (255-r,255-g,255-b));} originY} originY=0;OriginX} newmap。save(imageName);}1.3调用OCR将图中的文本标识为武器名称
专用字符串get字符串图像名(ocr){字符串s=marshal . ptrtostring ansi(ocr . getocr(imagename,-1))LogHelper。ShowLog(“图片识别结果{0}”,s);Return Regex。Replace(s,@’s ‘,’ s ‘);}1.4识别附件
Private dictionary string,string query accessories(dictionary string,point DIC,bitmap image) {dictionary stringpoint base point=DIC[‘ basic ‘];point baseSize=DIC[‘ basic size ‘];point point 0=DIC[‘ Qiang kou ‘];point point 1=DIC[‘ woba ‘];point points 2=DIC[‘ Danxia ‘];point point 3=DIC[‘ Qiang tuo ‘];point point 4=DIC[‘ scope ‘];//设定萤幕裁剪区域string color hex4=getimage (image,basepoint,points 4);String color hex3=getimage (image,basepoint,point 3);String color hex2=getimage (image,basepoint,points 2);String color hex1=getimage (image,basepoint,points 1);String color hex0=getimage (image,basepoint,points 0);log helper . show Mog(“get color : { 0 },{1},{2},{3} {4}”,color hex0,color hex1,)Dictionary string、dictionary string、string dict=new dictionary string、dictionary string、string();if(global param . screen beight==1080){ dict=color dict . pixel _ 1080;} else if(global param . screen height==1440){ dict=colordict . pixel _ 1440;} dictionary string,string qiangk oudict=dict[‘ Qiang kou ‘];qiangk oudict . try getvalue(color hex 0,outstring qiangk ouvalue);Result.add (‘Qiang kou ‘,qiangkouvalue!=null?强口值: ‘枪口空白’);Dictionary string,string WOB audict=dict[‘ woba ‘];WOB audict . try getvalue(color hex 1,outstring WOB avaloe);Result.add (‘woba ‘,WOB avaloe!=null?WoBaValue :“清除夹点”);Dictionary string,string magazine dict=dict[‘ magazine ‘];magazine dict . try get value(color hex 2,outstring magazine value);Result.add (‘magazine ‘,magazine value!=null?MagazineValue :“无”);Dictionary string,string qiangtuott=dict[‘ qiangtuo ‘];Qiang tuott . try getvalue(color hex 3,outstring Qiang tuom value);Result.add (‘Qiang tuo ‘,qiangtuomvalue!=null?Qiangtuotalue: ‘总土方’);Dictionary string,string scopedict=dict[‘ scope ‘];scopedict . try get value(color hex 4,outstring scope value);Result .Add(‘scope ‘,scopeValue!=null?Scope值:’ 1倍镜像’);Return result完成绝地生存背包中安装的武器部件的识别
以下是易于飞行的一天,还需要总数据和总压缩算法
二压枪逻辑
作者经过大量测试和优化后更稳定的总逻辑
public static void openfire(){ player player=player . get play();guns view model guns view model=gunsviewmodel . getgunsviewmodel();jichuview model jichuviewmodel=jichuviewmodel . getjichuviewmodel();Bool _ HasAmmo=trueglobal param global param=global param . getglobalparam();mouse status mouse status=mouse status . getmousestatus();appinfo appinfo=appinfo . get appinfo();if(player . runlogic player . is shoot!Player.useMissiles!string . isnullorempty(player . usew eapon . wea pon)!player . usew eapon . wea pon . equals(‘ null ‘){ string[]str=player . usew eapon . model data . datas . split(‘ | ‘)double[]datas=array . convert all(str,double . parse);Int x=0,y=0;int count=(int)datas[6];Int magNum=40int logictime=(int)(datas[7]/datas[6]-1);task . run()={ vali ammo(ref _ has MMO);});If(!player . runxuewulogic jichuviewmodel . xuewu){ player . runxuewulogic=true;Task。run()={ ExecLogic(player);});} int index=0;while(mouse status . left down _ hasm mo player . ISS hoot){ datetime start time=datetime . now;//判断是否没有子弹double j=0;if(magNum==40){ j=datas[0];index=0;} else if(magnum 40 magnum=34){ j=datas[1];index=1;} else if(magnum 34 magnum=27){ j=datas[2];index=2;} else if(magnum 27 magnum=19){ j=datas[3];index=3;} else if(magnum 19 magnum=9){ j=datas[4];index=4;} else { j=datas[5];index=5;} for(int I=0;I countI){ if(_ has MMO player . ISS hoot){ youyisdk . m _ Mover 2(global param . m _ handle,0,(int) j)Task。run()={ if(索引)!=globalparam . dataindex){ globalparam . dataindex=index;gunsviewmodel . raisepropertyschanged(‘ datas ‘);} LogHelper。ShowLog(‘总压力时间{0}总压力阶段:{1}步进:{2} ‘,0,j,I);});Thread .sleep(logic time);} } magNum-=1;task . run()={ vali ammo(ref _ has MMO);task . run()={ vali shoot(global param,player);});});}}}以上是整个totur芯片驱动程序的比较核心的逻辑
Ps: Java后台新人,在闲暇时间学了C#现版代码,请多多谅解。
当前此驱动程序实施的主要功能:
绝地生存支持99%枪自动识别支持绝地生存端游99%附件自动识别自动识别srogan环境设备识别成功语音广播支持1920*1080 2560*1440分辨率针孔倒计时弹道调整2W弹道数据详细来源github可搜索youyiPUBG