东天霸自动脚本 – AutoAHK |
您所在的位置:网站首页 › 剑灵自动脚本怎么设置中文 › 东天霸自动脚本 – AutoAHK |
这次的供学习使用,请自行研究: ;以管理员身份运行 if !A_IsAdmin { Run *RunAs “%A_ScriptFullPath%” ExitApp } IniRead,tj,技能数据.ini,起手,一次 IniRead,gk,技能数据.ini,输出循环,技能 IniRead,ds,技能数据.ini,等待时间,打怪 IniRead,dz,技能数据.ini,等待捡取,物品 Gui, Add, Text, x10 y32 w80 h20 +Center, 起手技能 Gui, Add, Text, x10 y59 w80 h20 +Center, 输出循环技能 Gui, Add, Text, x10 y85 w80 h20 +Center, 打怪等待时间 Gui, Add, Text, x10 y110 w80 h20 +Center, 等待捡取物品 Gui, Add, Text, x30 y10 w100 h20 +Center, F11查看简要说明 Gui, Add, Edit, x85 y30 w50 h20 Lowercase vtj -Multi, %tj% Gui, Add, Edit, w50 h20 Lowercase vgk -Multi, %gk% Gui, Add, Edit, w50 h20 Number vds, %ds% Gui, Add, Edit, w50 h20 Number vdz, %dz% Gui, Add, Button, x50 y145 w70 h30 g确定, 确定 Gui, Show, Center w150 h180, 东天霸 Return 确定: Gui,Submit ,NoHide FileDelete 技能数据.ini IniWrite,%tj%,技能数据.ini,起手,一次 IniWrite,%gk%,技能数据.ini,输出循环,技能 IniWrite,%ds%,技能数据.ini,等待时间,打怪 IniWrite,%dz%,技能数据.ini,等待捡取,物品 MsgBox 设置已保存 return F11:: MsgBox,游戏中设置:`n 游戏/界面/无视因分辨率对界面大小的调节打√ ,操作镜头横轴必须为30`n 使用前游戏里面的右上角地图要关闭透明化并且最大化,必要的话过滤器里面把好友,门派好友选项关闭。建议用简化模式`n 脚本按键说明:`n F1为启动,F12为关闭脚本,tab为9键,星为“脚本默认释放星无需设置。使用前记得以管理员身份运行此脚本,不然无法使用`n 功能说明:`n 支持武器修理,将修理工具放在7键。如果长时间没进入暴徒之岛,2分钟后会自动传送到武神塔。初次使用前建议先自己在游戏中先打开ctrl+j 一次`n 打怪等待时间:`n (打完一个怪后等待下一个怪出现的时间):输入19000(即19秒)`n 等待捡取物品:`n 为开始打老四到打完老四一共用多久,输入9000(即9秒)脚本内置8秒基础,等于一共17秒,不够的小号可以自行增加时间`n 作者:弎番流水异乡人 return SetBatchLines,-1 F1:: ;启动键 Gosub,dt SetTimer,wst,On SetTimer,btd,On SetTimer,CZ,1000 Return dt: Sleep 2000 sendinput ^j Sleep 1000 Text:=”|*121$31.zDz03z7z01k03bytztk0Qk4s0+E2Qzx/xC00ZybztmzHzwtTdU00U4yzCE6TjjDzDnrbw7z3rz7zlw” ;向导 if (ok:=FindText(542-150000, 164-150000, 542+150000, 164+150000, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x+511, Y:=ok.1.y+733, Comment:=ok.1.id Click, %X%, %Y% Sleep 1000 Text:=”|*121$31.zDz03z7z01k03bytztk0Qk4s0+E2Qzx/xC00ZybztmzHzwtTdU00U4yzCE6TjjDzDnrbw7z3rz7zlw” ;向导 if (ok:=FindText(542-150000, 164-150000, 542+150000, 164+150000, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x+268, Y:=ok.1.y+487, Comment:=ok.1.id Click, %X%, %Y% sleep 1000 Text:=”|*127$19.zAzzwTzsDzwTzwNzyMzzsTzsTzszzslzsszwQTyD7t72sa3Ay3US3sDzsVzsM70z00w” ;传送 if (ok:=FindText(1211-150000, 901-150000, 1211+150000, 901+150000, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% Sleep 1000 Text:=”|*141$24.XDzjr3bjqHvjY1jjWp7j+1r7eprLe1rLepkPWpktxlpwU” ;确定 if (ok:=FindText(915-150000, 178-150000, 915+150000, 178+150000, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% } } } } Sleep 10000 Return wst: Text:=”|*168$29.zzzzzzzzz7zzzsTzzz0zzzs3zzz0Dzzs0Tzy01zzk03zy00Dzw00Tzw00TTy00yTz00wzzU1tzzs1lzzw3Xzzy37zzz6DzzzYTzzzw|*151$50.0000000008020004HuU00C010001+60009jdGU1m0YH0kDTo01UE1+003t9Y2GU000mN6kDjwRwYE9C300000WHVU3rsyMUU0000sA8MTzDzs” ;出生地角色位置 if (ok:=FindText(1637, 307, 1680, 342, 0, 0, Text)) { Sleep 2000 Text:=”|*87$27.zzzxwBkw1U4rXM5iw10/bcM9ww11DPf8Bn9Xt9wV4″ ;武器修复 if (ok:=FindText(1613-150000, 1066-150000, 1613+150000, 1066+150000, 0, 0, Text)) { SendInput 7 Sleep 6000 } Sleep 3000 mouseXY(-500, 0) sendinput {Up Down} sendinput {Shift Down} Sleep 4800 sendinput {Up Up} sendinput {Shift Up} Sleep 1000 mouseXY(750, 0) Sleep 1000 sendinput {Up Down} sendinput {Shift Down} Sleep 2800 sendinput {Up Up} sendinput {Shift Up} Sleep 1000 sendinput {f Down} Sleep 500 sendinput {f Up} Sleep 2000 Text:=”|*139$39.bRs0t06NDTr2xy0u0uIDrr07Gd6yzzuJCk603Gdr/zjuFCvTg3G9pPtjs4iHOJzPxos70DQA|*105$39.zzzzzrs03zzqTyTzzykTnzzzqzyDzzs07ky01qTyNzzyrjnjzzatyTzztrTnzzySnyTzzzlznzzzUTU|*143$38.yxzzyvtrS0DizAbjvUUy0vyvXjji0CtsPvzzgqq0k0OBhmzvynfRjq3iupPtjvDgaofynvHUQ0VUU” ;是呀/完成任务时候的下一步 if (ok:=FindText(1462, 855, 1575, 976, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% sleep 800 Text:=”|*133$25.zTzzrbk0u0RrMryPSvC03E3TxbTc2a0wxvCzQxazkywTsSEl3lU|*132$25.jDU1o0viljwqxqQ06U6zvCzE581tvqRytvBzVxszkwVW7X|*96$24.jTzVc1U1c1rx2znPgWU0c1jyXTc2A0tugvtngXw7j7wD8Q1szzzzU” ;接受 if (ok:=FindText(1624, 856, 1658, 878, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x-36, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% Sleep 800 Text:=”|*133$25.zTzzrbk0u0RrMryPSvC03E3TxbTc2a0wxvCzQxazkywTsSEl3lU|*132$25.jDU1o0viljwqxqQ06U6zvCzE581tvqRytvBzVxszkwVW7X|*96$24.jTzVc1U1c1rx2znPgWU0c1jyXTc2A0tugvtngXw7j7wD8Q1szzzzU” ;接受 if (ok:=FindText(1624, 856, 1658, 878, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x-36, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% Sleep 800 Text:=”|*133$25.zTzzrbk0u0RrMryPSvC03E3TxbTc2a0wxvCzQxazkywTsSEl3lU|*132$25.jDU1o0viljwqxqQ06U6zvCzE581tvqRytvBzVxszkwVW7X|*96$24.jTzVc1U1c1rx2znPgWU0c1jyXTc2A0tugvtngXw7j7wD8Q1szzzzU” ;接受 if (ok:=FindText(1624, 856, 1658, 878, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x-36, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% Sleep 800 } } } Else { sleep 800 Text:=”|*123$26.yTzzs0DtA03U1Dynbw0Qhjzz1P00LEzNxqTqTRbtbIFAtZ92S1Qtzzzzs” ;完成任务 if (ok:=FindText(1620, 853, 1662, 876, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% sleep 800 Text:=”|*105$39.zzzzzrs03zzqTyTzzykTnzzzqzyDzzs07ky01qTyNzzyrjnjzzatyTzztrTnzzySnyTzzzlznzzzUTU” ;下一步 if (ok:=FindText(1512, 947, 1569, 976, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y%,3 Sleep 800 Text:=”|*123$26.yTzzs0DtA03U1Dynbw0Qhjzz1P00LEzNxqTqTRbtbIFAtZ92S1Qtzzzzs” ;完成任务 if (ok:=FindText(1620, 853, 1662, 876, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% sleep 800 Text:=”|*105$39.zzzzzrs03zzqTyTzzykTnzzzqzyDzzs07ky01qTyNzzyrjnjzzatyTzztrTnzzySnyTzzzlznzzzUTU” ;下一步 if (ok:=FindText(1512, 947, 1569, 976, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y%,3 Sleep 800 Text:=”|*123$26.yTzzs0DtA03U1Dynbw0Qhjzz1P00LEzNxqTqTRbtbIFAtZ92S1Qtzzzzs” ;完成任务 if (ok:=FindText(1620, 853, 1662, 876, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% sleep 800 } } } } } } } Else { Sleep 1000 MouseMove 1838,1041 Sleep 500 Click,2 } Sleep 1600 sendinput {up Down} sleep 400 sendinput {Up Up} sleep 1000 sendinput {f Down} Sleep 500 sendinput {f Up} } Return btd: Text:=”|*153$51.00000000000U000000340U01zE0Nhxzu8P/bE000lEE00xy068G004A01V0mqsY00M006U4jkC3Tf5kZU7UH9WVZA1k219b080k00FPbDTxzvyM800A0007U|*156$50.000000000010000000AE2007x03BjjzF3Gto000AI400Sz0349014A01V0phl800k00O0Gz0sByQi4g0w2N8cNH0Q0UEnU40M008PbDTxzvyM” ;判断是否在暴徒之岛 if (ok:=FindText(1317, 7, 1402, 35, 0, 0, Text)) { Sleep 5000 sendinput {Up Down} sendinput {Shift Down} Sleep 1000 sendinput {Space Down} Sleep 2400 sendinput {Space Up} sendinput {Up Up} sendinput {Shift Up} Sleep 1000 sendinput {d Down} Sleep 700 sendinput {d Up} Sleep,2000 Gosub,qs SetTimer,jn,On Sleep,%ds% Gosub,qs SetTimer,jn,On Sleep,%ds% Gosub,qs SetTimer,jn,On Sleep,%ds% Gosub,qs SetTimer,jn,On Sleep,8000 Text:=”|*132$19.MTlU7U1nnVznsztwTwy0Sz17TXnjlwrsyNwTAyDiTHbb87sD7yC|*173$12.kHlXt53UWHCA486Ms5k1k4rsU|*133$20.MTlk3k4QwtDyT3zbkztw0Sz0XjkwvwDaz3tbkyNwDiTNnna1y3szls|*133$19.kzXUD0Hbb/zblznsztw0xy2Cz7bTXtjlwnsyNwTQybDCEDkSDwS” ;打怪 if (ok:=FindText(728-150000, 103-150000, 728+150000, 103+150000, 0, 0, Text)) { Sleep,%dz% } sleep 1000 Text:=”|*138$24.zzzzTk00zzy0kDs0rzk0rzk0rzU0kTU0rz00rz80ryA1ryQ3zyMzzwlzzwVzzx3zU” ;捡取道具 if (ok:=FindText(1152-150000, 679-150000, 1152+150000, 679+150000, 0, 0, Text)) { sendinput {f Down} Sleep 500 sendinput {f Up} Sleep 500 sendinput {f Down} Sleep 500 sendinput {f Up} } Else { send {Up Down} sleep 400 send {Up Up} Sleep 500 sendinput {f Down} Sleep 500 sendinput {f Up} Sleep 500 sendinput {f Down} Sleep 500 sendinput {f Up} } Sleep 1000 sendinput {i Down} Sleep 500 sendinput {i Up} Sleep 1000 MouseMove 1663,741 Sleep 1000 Click Sleep 1000 Text:=”|*113$39.zzzzzrs03zzqTyTzzykTnzzzqzyDzzs07ky01yTyNzzyrjnjzzatyTzztrTnzzySnyTzzzlznzzzUTU” ;下一步 if (ok:=FindText(1512, 947, 1569, 976, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y%,3 sleep 1000 Text:=”|*123$26.yTzzs0DtA03U1Dynbw0Qhjzz1P00LEzNxqTqTRbtbIFAtZ92S1QtU” ;完成 if (ok:=FindText(1620, 853, 1662, 876, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% } } Sleep 2000 sendinput {i Down} Sleep 500 sendinput {i Up} Sleep 1000 sendinput ^j Sleep 1000 Text:=”|*121$31.zDz03z7z01k03bytztk0Qk4s0+E2Qzx/xC00ZybztmzHzwtTdU00U4yzCE6TjjDzDnrbw7z3rz7zlw” ;向导 if (ok:=FindText(542-150000, 164-150000, 542+150000, 164+150000, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x+511, Y:=ok.1.y+733, Comment:=ok.1.id Click, %X%, %Y% Sleep 1000 Text:=”|*121$31.zDz03z7z01k03bytztk0Qk4s0+E2Qzx/xC00ZybztmzHzwtTdU00U4yzCE6TjjDzDnrbw7z3rz7zlw” ;向导 if (ok:=FindText(542-150000, 164-150000, 542+150000, 164+150000, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x+268, Y:=ok.1.y+487, Comment:=ok.1.id Click, %X%, %Y% sleep 1000 Text:=”|*127$19.zAzzwTzsDzwTzwNzyMzzsTzsTzszzslzsszwQTyD7t72sa3Ay3US3sDzsVzsM70z00w” ;传送 if (ok:=FindText(1211-150000, 901-150000, 1211+150000, 901+150000, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% Sleep 1000 Text:=”|*141$24.XDzjr3bjqHvjY1jjWp7j+1r7eprLe1rLepkPWpktxlpwU” ;确定 if (ok:=FindText(915-150000, 178-150000, 915+150000, 178+150000, 0, 0, Text)) { CoordMode, Mouse X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id Click, %X%, %Y% } } } } Sleep 7000 jsq =0 } Return
qs: Text:=”|*132$19.MTlU7U1nnVznsztwTwy0Sz17TXnjlwrsyNwTAyDiTHbb87sD7yC|*173$12.kHlXt53UWHCA486Ms5k1k4rsU|*133$20.MTlk3k4QwtDyT3zbkztw0Sz0XjkwvwDaz3tbkyNwDiTNnna1y3szls|*133$19.kzXUD0Hbb/zblznsztw0xy2Cz7bTXtjlwnsyNwTQybDCEDkSDwS”
;打怪 if (ok:=FindText(694, 71, 748, 122, 0, 0, Text)) { sendinput,“ Sleep 300 sendinput,%tj% } Return jn: Text:=”|*132$19.MTlU7U1nnVznsztwTwy0Sz17TXnjlwrsyNwTAyDiTHbb87sD7yC|*173$12.kHlXt53UWHCA486Ms5k1k4rsU|*133$20.MTlk3k4QwtDyT3zbkztw0Sz0XjkwvwDaz3tbkyNwDiTNnna1y3szls|*133$19.kzXUD0Hbb/zblznsztw0xy2Cz7bTXtjlwnsyNwTQybDCEDkSDwS”
;打怪 if (ok:=FindText(694, 71, 748, 122, 0, 0, Text)) { sendinput,%gk% } Else { SetTimer,jn,Off } Return CZ: jsq+=1 If(jsq=120) { Text:=”|*119$51.vvzrvziQzTTyyTxU1vk7q07c0CIQygzxm7q9D1jy3XorXs0Dxtbas33RziSMkSQvjx08mwTa07j0yIBwzjxzzmiTXhzi0SL6R9dk7nmX79RY4ySTXtnizU3nVySlrw0SszzyTzbvU|*151$65.00000000000000000000EU13Dn000M011jQ0AQx01XM0001kX2Dv4o6xs60000298AW002Swzh2GM4Djltk0O4YbkTT262iUN10U0E8858022Z81U00+F2419030DUU+90KKFw7kzDpVz|*150$37.000000000200009xEzfbs00Eo61nT+2681A490A4221bA2N001A1AVjkA0YEaEA001E8023tU8DxT1bwk” ;是否在武神塔或者在赤霸王副本内 if (ok:=FindText(1385-150000, 355-150000, 1385+150000, 355+150000, 0, 0, Text)) { SetTimer,wst,Off SetTimer,btd,Off sleep 2000 Gosub,dt SetTimer,CZ,Off SetTimer,wst,On SetTimer,btd,On SetTimer,CZ,On } } Return mouseXY(x,y) { DllCall(“mouse_event”,uint,1,int,x,int,y,uint,0,int,0) } return F12:: MsgBox,脚本已关闭 ExitApp Return ;===== Copy The Following Functions To Your Own Code Just once ===== ;——————————– ; FindText – 屏幕找字函数 ;——————————– ; 返回变量 := FindText( ; X1 –> 查找范围的左上角X坐标 ; , Y1 –> 查找范围的左上角Y坐标 ; , X2 –> 查找范围的右下角X坐标 ; , Y2 –> 查找范围的右下角Y坐标 ; , err1 –> 文字的黑点容错百分率(0.1=10%) ; , err0 –> 背景的白点容错百分率(0.1=10%) ; , Text –> 由工具生成的查找图像的数据,可以一次查找多个,用“|”分隔 ; , ScreenShot –> 是否截屏,为0则使用上一次的截屏数据 ; , FindAll –> 是否搜索所有位置,为0则找到一个位置就返回 ; , JoinText –> 是否组合图像,为1则多个数据组合为一幅图来查找 ; , offsetX –> 组合图像的每个字和前一个字的最大横向间隔 ; , offsetY –> 组合图像的每个字和第一个字的最大高低间隔 ; ) ; 返回变量 –> 如果没找到结果会返回0。否则返回一个二级数组, ; 第一级是每个结果对象,第二级是结果对象的具体信息数组: ; { 1:左上角X, 2:左上角Y, 3:图像宽度W, 4:图像高度H ; , x:中心点X, y:中心点Y, id:图像识别文本 } ; 坐标都是相对于屏幕,颜色使用RGB格式,组合查找必须使用统一的颜色模式 ;——————————– FindText( x1, y1, x2, y2, err1, err0, text, ScreenShot:=1 , FindAll:=1, JoinText:=0, offsetX:=20, offsetY:=10 ) { local ; 避免超级全局变量的影响 bch:=A_BatchLines SetBatchLines, -1 x:=(x116)+zy , arr.Push( {1:rx, 2:ry, 3:w1, 4:h1 , x:rx+w1//2, y:ry+h1//2, id:comment} ) } else { For i,j in info { mode:=j.8, color:=j.9, n:=j.10, comment:=j.11 , w1:=j.2, h1:=j.3, v:=j.1 Loop, 7 NumPut((A_Index=1 ? 0 : A_Index=6 and err1 and !j.12 ? Round(j.4*err1) : A_Index=7 and err0 and !j.12 ? Round(j.5*err0) : j[A_Index]), input, 4*(A_Index-1), “int”) ok:=PicFind( mode,color,n,offsetX,offsetY , bits,sx,sy,sw,sh,gs,ss,v,s1,s0 , input,7,allpos,allpos_max ) Loop, % ok pos:=NumGet(allpos, 4*(A_Index-1), “uint”) , rx:=(pos&0xFFFF)+zx, ry:=(pos>>16)+zy , arr.Push( {1:rx, 2:ry, 3:w1, 4:h1 , x:rx+w1//2, y:ry+h1//2, id:comment} ) if (ok and !FindAll) Break } } if (err1=0 and err0=0 and num=1 and !arr.MaxIndex()) { k:=0 For i,j in info k+=(!j.12) IfEqual, k, 0, Break } else Break } SetBatchLines, %bch% return, arr.MaxIndex() ? arr:0 } ; 绑定窗口从而可以后台查找这个窗口的图像 ; 相当于始终在前台。解绑窗口使用 Bindwindow(0) BindWindow(window_id:=0, set_exstyle:=0, get:=0) { static id, old, Ptr:=A_PtrSize ? “UPtr” : “UInt” if (get) return, id if (window_id) { id:=window_id, old:=0 if (set_exstyle) { WinGet, old, ExStyle, ahk_id %id% WinSet, Transparent, 255, ahk_id %id% Loop, 30 { Sleep, 100 WinGet, i, Transparent, ahk_id %id% } Until (i=255) } } else { if (old) WinSet, ExStyle, %old%, ahk_id %id% id:=old:=0 } } xywh2xywh(x1,y1,w1,h1, ByRef x,ByRef y,ByRef w,ByRef h , ByRef zx:=””, ByRef zy:=””, ByRef zw:=””, ByRef zh:=””) { SysGet, zx, 76 SysGet, zy, 77 SysGet, zw, 78 SysGet, zh, 79 left:=x1, right:=x1+w1-1, up:=y1, down:=y1+h1-1 left:=leftzx+zw-1 ? zx+zw-1:right up:=upzy+zh-1 ? zy+zh-1:down x:=left, y:=up, w:=right-left+1, h:=down-up+1 } GetBitsFromScreen(x, y, w, h, ScreenShot:=1 , ByRef zx:=””, ByRef zy:=””, ByRef zw:=””, ByRef zh:=””) { local ; 避免超级全局变量的影响 static hBM, oldzx, oldzy, oldzw, oldzh, bits:=[] static Ptr:=A_PtrSize ? “UPtr” : “UInt” static init:=!GetBitsFromScreen(0,0,0,0,1) if (!ScreenShot) { zx:=oldzx, zy:=oldzy, zw:=oldzw, zh:=oldzh return, bits } bch:=A_BatchLines, cri:=A_IsCritical Critical if (zwoldzh or !hBM) { DllCall(“DeleteObject”, Ptr,hBM), hBM:=””, bpp:=32 VarSetCapacity(bi, 40, 0), NumPut(40, bi, 0, “int”) NumPut(zw, bi, 4, “int”), NumPut(-zh, bi, 8, “int”) NumPut(1, bi, 12, “short”), NumPut(bpp, bi, 14, “short”) hBM:=DllCall(“CreateDIBSection”, Ptr,0, Ptr,&bi , “int”,0, Ptr “*”,ppvBits, Ptr,0, “int”,0, Ptr) Scan0:=(!hBM ? 0:ppvBits), Stride:=((zw*bpp+31)//32)*4 bits.1:=Scan0, bits.2:=Stride oldzx:=zx, oldzy:=zy, oldzw:=zw, oldzh:=zh x:=zx, y:=zy, w:=zw, h:=zh } if (hBM) and !(w>3&1) . (i>>2&1) . (i>>1&1) . (i&1) s:=StrReplace(s,A_LoopField,v) } ListLines, %lls% StringCaseSense, Off s:=SubStr(s,1,InStr(s,”1″,0,0)-1) s:=RegExReplace(s,”[^01]+”) return, s } bit2base64(s) { s:=RegExReplace(s,”[^01]+”) s.=SubStr(“100000″,1,6-Mod(StrLen(s),6)) s:=RegExReplace(s,”.{6}”,”|$0″) Chars:=”0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZ” . “abcdefghijklmnopqrstuvwxyz” SetFormat, IntegerFast, d lls:=A_ListLines=0 ? “Off” : “On” ListLines, Off Loop, Parse, Chars { i:=A_Index-1, v:=”|” . (i>>5&1) . (i>>4&1) . (i>>3&1) . (i>>2&1) . (i>>1&1) . (i&1) s:=StrReplace(s,v,A_LoopField) } ListLines, %lls% return, s } ASCII(s) { if RegExMatch(s,”\$(\d+)\.([\w+/]+)”,r) { s:=RegExReplace(base64tobit(r2),”.{” r1 “}”,”$0`n”) s:=StrReplace(StrReplace(s,”0″,”_”),”1″,”0″) } else s= return, s } ; 可以在脚本的开头用 PicLib(Text,1) 导入字库, ; 然后使用 PicLib(“说明文字1|说明文字2|…”) 获取字库中的数据 PicLib(comments, add_to_Lib:=0, index:=1) { static Lib:=[] SetFormat, IntegerFast, d if (add_to_Lib) { re:=”]*)>[^$]+\$\d+\.[\w+/]+” Loop, Parse, comments, | if RegExMatch(A_LoopField,re,r) { s1:=Trim(r1), s2:=”” Loop, Parse, s1 s2.=”_” . Ord(A_LoopField) Lib[index,s2]:=r } Lib[index,””]:=”” } else { Text:=”” Loop, Parse, comments, | { s1:=Trim(A_LoopField), s2:=”” Loop, Parse, s1 s2.=”_” . Ord(A_LoopField) Text.=”|” . Lib[index,s2] } return, Text } } PicN(Number, index:=1) { return, PicLib(RegExReplace(Number,”.”,”|$0″), 0, index) } ; 使用 PicX(Text) 可以将文字分割成多个单字的组合,从而适应间隔变化 ; 但是不能用于“颜色位置二值化”模式, 因为位置是与整体图像相关的 PicX(Text) { if !RegExMatch(Text,”\|([^$]+)\$(\d+)\.([\w+/]+)”,r) return, Text w:=r2, v:=base64tobit(r3), Text:=”” c:=StrLen(StrReplace(v,”0″)) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |