EZScript II【基本操作】 【执行/停止】 可以执行或停止script。停止後,再换执行则是从头开始。另外可用Alt-Pause来热键启动执行/停止的功能。 【暂停/继续】 可以暂停或继续script,与执行/停止不同的是可以从暂停处继续执行。另外可用Pause来热键启动执行/停止的功能。 【即时取得座标】 只要把动态抓点及颜色选项开启接著把滑鼠游标移到该点再按下Alt+Ctrl+左边的1-8数字键即可把座标存到Pos1-Pos8中了 【即时取得对应座标颜色】 只要把动态抓点及颜色选项开启接著把滑鼠游标移到该点再按下Alt+Ctrl+Shift左边的1-8数字键即可把Pos1-Pos8座标的颜色存到对应的Var1-Var8中了 EZScript II【Script语法】 【运算语法】 【条件语法】 条件语法通常配合if或while使用。 【流程控制】 if...end if 用法: 条件成立则执行if...end if里的叙述。 if 条件 叙述 end if 范例: if var1>3 say "hi!!" end if else 用法: 与if...end if配合使用。 条件成立则执行if...else之间的叙述, 条件不成立则执行else...end if之间的叙述。 if 条件 叙述 else 叙述 end if 范例: if var1>3 say "hi!!" else say "bye!!" end if while...wend 用法: 条件成立则执行while...wend里的叙述。 while 条件 叙述 wend 范例: while var1<100 var1=var1+1 wend repeat...end repeat 用法: 重覆执行repeat...end repeat里的叙述。 次数可直接用数字也可用变数或运算式。 repeat 次数 叙述 end repeat 范例: repeat 100 var1=var1+1 end repeat repeat var2 var1=var1+1 end repeat break 用法: 离开目前的repeat...end repeat或while...wend回圈。 范例: while var1<100 var1=var1+1 var2=var2*var1 if var2>30 break end if wend 标记 标记的格式为名称: 范例: Label: good: jump 标记 跳到指定的标记处。 用法: jump 标记 范例: add: var1=var1+1 jump add on..jump resume 条件成立则触动jump指令。 on...jump检查条件时机在on..jump後的所有指令,直到最後一行或有其他的on...jump。 on...jump之前的script不会检查。 一但触动jump,会停止目前的script,直接jump到指定标记处。 配合resuem可以回到触动条件成立时的script位 用法: On var1=1 Jump ext 范例: on var1=1 jump ext ... ... //下面这行会触动jump而到ext标记处执行 var1=1 //在resume後会从此处继续执行 var2=2 ... ... ext: var1=0 resume stop 结束script执行,即按了停止键。 将stop放在script最後一行,则script只会执行一次 范例: var1=var1+1 stop 【键盘字元相关指令】 SendKey(按键码) KeyPress(按键码) 用途: 模拟按下键盘动作。 范例: //以下皆为送出F1(模拟按了F1键) SendKey(112) KeyPress(112) //alt+F1 SendKey(alt+112) KeyPress(alt+112) //ctrl+alt+F1 SendKey(ctrl+alt+112) KeyPress(ctrl+alt+112) Say "字串" Text "字串" KeyString "字串" 用途: 模拟打字动作。 Text和KeyString功能相似,但Text不会影响你目前的键盘操作。 Say会在送完字串後再送出一个Enter键,Text和KeyString则否。 KeyString可以用"\n"来送出Enter键。 注意,KeyString无法用中文,Say及Text可以是中文字串。 范例: Say "Hi!!你好!!" Text "Hi!!你好!!" KeyString "Hi!!" //打完字後模拟按Enter KeyString "Hi!!\n" 如果想把某个变数或运算式结果说出来,可以用$[运算式(或变数)] 如我要列出var1的值: KeyString "$[var1]\n" 或如我要列出22*33的值: KeyString "$[22*33]\n" KeyDown(按键码) KeyUp(按键码) 用途: 模拟按下或放开某个键。 若用了KeyDown而没用KeyUp放开, 则被按下的按键会一直保持著按下的状态。 范例: //按下按键A不放 KeyDown(65) //放开按键A KeyUp(65) 【mouse指令】 Left Click 座标 Left DbClick 座标(位置) Left Down 座标(位置) Left Up 座标(位置) Right Click 座标 Right DbClick 座标(位置) Right Down 座标(位置) Right Up 座标(位置) 用途: 模拟滑鼠按键动作。 用法和键盘指令类似。 若用了Left Down或Right Down而没用Left Up或Right Up来放开, 则该键会一直保持被按下的状态。 座标若是NoPos,则表示在目前座标处做动作(类似滑鼠连点功能)。 范例: //在Pos1座标处按下点一下左键 Left Click Pos1 //在Pos1座标处按下左键不放 Left Down Pos1 //在目前游标座标处按下左键 Left Click NoPos Left ColorClick 颜色 左上角座标 右下角座标 Left Color DbClick 颜色 左上角座标 右下角座标 用途: 在指定座标范围内点选或双击符合颜色值的第一个座标。 范例: //在Pos1座标及Pos2座标范围内双击符合颜色Var1的第一个座标 Left Color DbClick Var1 Pos1 Pos2 MouseMove 座标 用途: 模拟滑鼠移动到座标处。 范例: //移动游标到Pos1处 MouseMove Pos1 【其他指令】 Delay(时间) 用途: 延迟指定时间。 时间单位为ms(千分之一秒)。 范例: //等待2秒 delay(2000) Color[位置] 用途: 传回指定位置的颜色值。 范例: //取得Pos1座标的颜色值 var1=color[pos1] Rand[范围] 用途: 传回指定范围内的整数乱数。 范例: //取得0-99的整数乱数 var1=rand[100] Xy2Pos[X座标,Y座标] 用途: 把x,y形式表示的座标转成Pos位置格式。 范例: //指定pos1座标为(100,200) pos1=xy2pos[100,200] Time Timer 用途: 传回时间值。 Time传回从西元1970年至现在所经过的秒数。 Timer传回系统的clock时间,单位为ms(千分之一秒) 范例: var1=time GetColorPos[颜色值,左上角,右下角] 用途: 取得范围内符合颜色值的第一个座标。 范例: //取得pos1,pos2范围内符合颜色值var1的第一个座标 var2=GetColorPos[var1,pos1,pos2] Beep 用途: 发出哔声。 范例: //发出哔声 beep EZScript II【UO-Plugin】 以下指令功能只适用在UO。 【延伸指令】 SellItem 数量 用途: 卖指定数量的物品。 若物品可堆叠,则只会卖一个。 在卖之前先把Sell视窗打开,并且不要移动视窗。 范例: //卖前20个物品 sellitem 20 stop SendMacro(编号) 用途需有UOAssist) 送出UOAssist里的对应的编号macro。 macro送出後会等待UOAssist动作完成後再继续下一个指令。 在使用SendMacro时要注意,尽量不要随便对EZScript视窗做操作, 否则可能造成一直呈现等待状态,这时请按暂停/继续按钮即可。 范例: //送出编号#1的macro sendmacro(1) Drag 数量 from 来源 to 目的 用途: 搬指定数量的物品从指定的来源到目的。 数量若输入all表示全部搬过去。 范例: //搬3个物品从pos1到pos2 Drag 3 from pos1 to pos2 WaitForWghtChange(时间) WaitForWghtDec(时间) WaitForWghtInc(时间) 用途需有UOAssist) 和Delay相似,差别在於在身上重量有变化时就不再等待。 WaitForWghtChange(时间)-重量改变 WaitForWghtDec(时间)-重量减少 WaitForWghtInc(时间)-重量增加 范例: //等待10秒,或身上重量改变就结束等待 WaitForWghtChange(10000) Skill[编号] sSkill[编号] 用途需有UOAssist) 取得对应编号的技能值。 编号范围为0~48刚好对应UO里的49个技能。 sskill是表面值,skill是真实值。 范例: var1=skill[11] STR HITS INT MANA DEX STAM WGHT MAXWGHT NowX NowY 用途需有UOAssist) 传回人物目前的状态。 范例: //取得人物目前的加量值 var1=str //传回人物目前所在的X座标 var1=nowx BP BM MR SS SA GA GI NS USER1 USER2 用途需有UOAssist) 传回人物目前的资源数量。 范例: //传回目前有多少药草SS var1=ss ·EZScript 1.07版说明 only for UO EZScript for Ultima Online (by Ajax) ----------------------------------------------------- 功能说用: ----------------------------------------------------- 【Run(执行)】 -按Run(执行)可以重覆不断的执行script -想中断执行中的script可以按Stop(停止)或按键盘上的Pause键 -如果只想执行一次script可以在最後加上end script指令 【暂停/继续(1.1版以上)】 -可以暂停及继续script -也可以在游戏中按Scroll Lock切换 【简易模式/完整模式(1.1版以上)】 -简易模式只有3个按钮,只占萤幕一小部分 【取得座标】 -取得选取的座标值到对应的变数pos1~pos4 【posX颜色】 -取得posX的颜色值到对应的变数var1~var8中 【按键码】 -取得按下按键的扫描码 ----------------------------------------------------- 一般指令说明: ----------------------------------------------------- 【变数】 var1,var2....var8,pos1,pos2,pos3,pos4 运算式用法 var1=var2+var3+3*pos1...... 【运算符号】 +,-,*,/,%(取馀数) 【座标指令】 单位是像素 x(n),y(n) 如: pos1=pos1+x(22)会把pos1的x座标+22 pos1=pos1+x(22)-y(22)会把pos1的x座标+22,把y座标-22 取得posx的x和y的分量值 用法: var1=getx(posx) var2=gety(posx) 以上getx和gety分别会传回posx的x和y分量值 因为有些人也许会用到,所以写了一下 【送按键】 sendkey(key) key的值有2种表示法 虚拟码: f1-f12,left,right,up,down,pageup,pagedown,home,end 按键码: 请参考按键码 如: sendkey(f1)和sendkey(112)都是代表送出F1 sendkey(f12)和sendkey(123)都是代表送出F12 sendkey(left)和sendkey(37)都是代表送出左键 【回圈控制】 repeat n end repeat (n省略,代表无穷回圈) 可以用多层repeat 如: repeat var1 repeat 3 end repeat end repeat 回圈可用break中断 如: repeat 10 var1=var1+1 if var1=10 break end if end repeat 【判断指令】 判断符号有>(大於),<(小於),=(等於),>=(大於等於),<=(小於等於),!=(不等於),and(并且),or(或者) 如: if var1>var2 end if if var1>var2*var3 end if if var1!=3 end if if var1<=1 and var2=1 end if if var1!=1 or var2>2 end if 【延迟指令】 delay(n) n单位为千分之一秒 1000代表1秒 【乱数指令】 rand(n) 产生0-n的正整数乱数 【时间指令】 timer取得系统的clock(1/1000秒) time取得系统时间(秒) 如: var1=timer var2=time 【声音】 beep发出警告声 如: if var1=1 beep end if 【color指令】 color(位置)-取得位置的颜色值 位置可以是变数或数值 如: color(pos1) color(var1) color(1233123) 可以配合if用法 if color(pos1)=var1 end if 或 if var1=color(pos1) end if 或 if color(pos1)=数值 end if ※使用color指令时UO要在最上层视窗 【mouse指令】 mouse状态(测试中) mouse=n(n=1,0) 当n=0时滑鼠不会移动 当n=1时滑鼠会移动 按左键 left click 座标(位置) 座标可以用变数var1...var8,pos1,pos2,pos3,pos4 也可以用数字(参考撷取的值) left click pos1 left click 837233 按左键2下 double left click 座标(位置) double left click pos1 double left click 123987 按住左键不放n秒 left down 时间 座标(位置) 如: left down 2000 pos1 表在pos1按住左键2秒再放开 ※右键和左键一样将left改成right 【Drag指令】 drag 数量 from 座标1(位置) to 座标2(位置) 数量和座标可以用变数也可以用数字 数量如果是all,则代表全部移过去 drag 10 from pos1 to pos2 drag var1 from pos1 to 数字 ※若lag很严重可在drag指令得加上delay time,如drag 10 from pos1 to pos2 delay 500 【DragAll指令】 DragAll 颜色值 from 左上角座标 右下角座标 to 目的地座标 delay 时间(内定为0) 这个指令可以用来搬容器内所有特定颜色值的东西 如把主包包内所有的黑药水全搬到指定的容器内(在练制药时很有用) ※使用DragAll指令时UO要在最上层视窗 【说话指令】 say "讯息" text "讯息" say会送出enter text不会 say "$[变数]"可送出变数的内容 如: say "现在HP=$[hits]" 【注解指令】 //代表後面的不是指令 如: //这是if if var=10 //说话 say "测试" end if 【结束指令】 end script或stop 放在最後一行 script只会执行一次 ----------------------------------------------------- 延伸指令说明(以下指令需有UOAssist): ----------------------------------------------------- 【取得目前状态及身上资源】 取得目前的str,hits,int,mana,dex,stam,wght,maxwght,NowX(目前X座标),NowY(目前Y座标) 以下变数可以取得目前身上的资源(请先用UOAssist中的Count Resources,取得数值再执script): bp,bm,mr,ss,sa,ga,gi,ns,user1,user2 如: if hits<10 end if if mana<10 end if 【送出UOAssist的macro】 SendMacro(编号1-16) 如: SendMacro(1)会送出UOAssist中编号#1的macro 【死亡及断线时自动通知】 当script在执行时,如果断线或死亡会自动发出9声警告声 【取得Skill值(1.09c版以上)】 varx=skill(数值) 数值范围为0-48,刚好对应uo里的49个技能 【等待延伸指令(1.09d版以上)】 WaitForWghtChange(时间) 时间单位为千分之秒,与delay指令功能功相似 差别在於WaitForWghtChange在身上重量有变化时就不再等待 嗯,那这指令有什麽好处??自己想棉..^^ ----------------------------------------------------- UO2指令: ----------------------------------------------------- 当你开了UO2时,你可以用app="视窗名称全名或关键字"来指令macro要送到那个UO视窗 如: //送到有视窗Title有"Ultima"的client app="Ultima" sendkey(f2) //送到有视窗Title有"Origin"的client app="Origin" sendkey(f2) ----------------------------------------------------- 范例: ----------------------------------------------------- 范例1: 持续每秒按一次F1 sendkey(F1) delay(1000) 范例2: 把一堆东西由位置1移10个到位置2 先取得位置1的座标到pos1 再取得位置2的座标到pos2 然後写下面的script drag 10 from pos1 to pos2 end script ·EZScript II 2.1.0.3新增功能 新增热键 以下功能要把动态抓点打勾 CTRL+ALT+HOME 呼叫EZScript视窗并显示 -------------------------------------------------------------------- 新增指令 ReadMemory[address,type] 取得记忆体某位址的值 这功能不能用"工作中视窗"..请注意.... 用法: address为记忆体位址 你可以用10进位或16进位 16进位表示法为 0x0000a 记住"0x"为16进位表示 type为读取格式 共有0,1,2三个值可用 0表示读1个byte 1表示读2个bytes 2表示读4个bytes 这个功能有什麽用呢? 你可以用GM7找到游戏中的某个数值的记忆位址 比如体力好了...位址为004DE19A,大小为1byte 那你想要做到体力如果小於10就补充体力 可以这样写 if ReadMemory[0x004DE19A,0]<10 then ...补充体力.... end if x2pos[x偏移量] y2pos[y偏移量] 以上2个和xy2pos一样,只不过独立出来 waitkey 功能:等待按键并传回按键码 这个指令可单独使用或配合指定或条件式 如: waitkey 或 var1=waitkey 或 while(waitkey!=27) wend scankey 功能:传回按键码 这个指令无法单独使用需配合指定或条件式 PS.这指令功能和waitkey一样,只不过不会等待按键输入,若没按任何键则传回0 如: var1=scankey 或 while(scankey!=27) wend year month hour day minute second 功能:传回目前时间值(年,月,日,时,分,秒) 这个指令无法单独使用需配合指定或条件式 如: //传回目前是几点到var1 var1=hour -------------------------------------------------------------------- 流程控制 if...elseif...else...end if 多了elseif 现在您可以用 if var1=1 .... elseif var1=3 .... elseif var1=5 ... else .... end if -------------------------------------------------------------------- 新增阵列变数 extvar[n] n的范围为0~49 用法: extvar[11]=var1 var2=extvar[3] 您也可以用变数来控制阵列位置 如把extvar[0]~extvar[49]全设为1 var1=0 while var1<50 extvar[var1]=1 var1=var1+1 wend ·EZScript II 2.1.0.4新增功能 新增热键 以下功能要把动态抓点打勾 CTRL+ALT+HOME 呼叫EZScript视窗并显示 -------------------------------------------------------------------- 新增指令 ReadMemory[address,type] 取得记忆体某位址的值 这功能不能用"工作中视窗"..请注意.... 用法: address为记忆体位址 你可以用10进位或16进位 16进位表示法为 0x0000a 记住"0x"为16进位表示 type为读取格式 共有0,1,2三个值可用 0表示读1个byte 1表示读2个bytes 2表示读4个bytes 这个功能有什麽用呢? 你可以用GM7找到游戏中的某个数值的记忆位址 比如体力好了...位址为004DE19A,大小为1byte 那你想要做到体力如果小於10就补充体力 可以这样写 if ReadMemory[0x004DE19A,0]<10 then ...补充体力.... end if x2pos[x偏移量] y2pos[y偏移量] 以上2个和xy2pos一样,只不过独立出来 waitkey 功能:等待按键并传回按键码 这个指令可单独使用或配合指定或条件式 如: waitkey 或 var1=waitkey 或 while(waitkey!=27) wend scankey 功能:传回按键码 这个指令无法单独使用需配合指定或条件式 PS.这指令功能和waitkey一样,只不过不会等待按键输入,若没按任何键则传回0 如: var1=scankey 或 while(scankey!=27) wend mousepos 功能:传回目前滑鼠游标的位置(相对目前程序) 这个指令无法单独使用需配合指定或条件式 如: var1=mousepos year month hour day minute second 功能:传回目前时间值(年,月,日,时,分,秒) 这个指令无法单独使用需配合指定或条件式 如: //传回目前是几点到var1 var1=hour -------------------------------------------------------------------- 流程控制 if...elseif...else...end if 多了elseif 现在您可以用 if var1=1 .... elseif var1=3 .... elseif var1=5 ... else .... end if call return call会跳到标记所指的位置,并记录目前执行的位置 return则是回到上一个call位置 用法 call 标记 stop 标记: return -------------------------------------------------------------------- 新增阵列变数 extvar[n] n的范围为0~49 用法: extvar[11]=var1 var2=extvar[3] 您也可以用变数来控制阵列位置 如把extvar[0]~extvar[49]全设为1 var1=0 while var1<50 extvar[var1]=1 var1=var1+1 wend ·一些使用上的小技巧 对於滑鼠部分 如果发现Left Click或Right Click不起作用,这时可以把滑鼠锁定功能打开 打开後在执行滑鼠相关指令时就无法使用滑鼠了,但却可以解决无法Click 的问题.... Say,Text,Keystring 这3个指令都是送出字串的功能,但应用上还是有点差异... 有些游戏是利用取得字元的讯息来判断是不有输入字... 这些游戏可以用Say,及Text... 但若遇到无法用Say及Text送字串的情况时 就得用keyString了.... KeyString是无法直接输入中文的 您只能利用间接的方式来输入 比如: 先模拟按了Ctrl+Space切换中文输入状态 接著在KeyString里打入输入中文的动作(里面还是英文)...即可 EX: keypress(ctrl+32) keystring "onf vnd " keypress(ctrl+32) 以上3行就是用仓颉输入"你好"2个字 ·EZScript II 2108新增指令 新增一变数MoveFlag 功能 当moveflag=0时(预设) 在执行click动作时和以前一样 当moveflag=1时 则会自动移到该点再执行click动作 如 left click pos1 left click pos2 left click pos3 游标并不会移到pos1~3(除非有把滑鼠锁定打勾) 若要移到该处需用mousemove 如 mousemove pos3 left click pos3 现在你可以用 mouseflag=1 left click pos1 left click pos2 left click pos3 如此,在执行click前游标便会移到pos1~3处... 而不需用mousemove了 在使用时会以最近的一次设定为主 如 moveflag=1 left click pos1 left click pos2 left click pos3 moveflag=0 left click pos4 left click pos5 left click pos6 黄色那3行会做游标移动的动作 而红色3行则不会 ·EZScript II指令整理--New EZScript II 【Script语法】 【变数】 目前EZScript II提供66个变数供使用,分别是Var1~Var8,Pos1~Pos8,ExtVar[n]。 ExtVar[n] n的范围为0~49 用法: extvar[11]=var1 var2=extvar[3] 您也可以用变数来控制阵列位置 如把extvar[0]~extvar[49]全设为1 var1=0 while var1<50 extvar[var1]=1 var1=var1+1 wend 【运算语法】 名称 范例 结果 加法 var1+var2 把var1加上var2 减法 var1-var2 把var1减掉var2 乘法 var1*var2 把var1乘上var2 除法 var1/var2 把var1除以var2 取馀数 var1%var2 把var1除以var2取馀数 【条件语法】 条件 用法 等於(=) var1=var2 大於(>) var1>var2 大於或等於(>=) var1>=var2 小於(<) var1 小於或等於(<=) var1<=var2 不等於(!=) var1!=var2 且(&&) var1=1 && var2=3 或(||) var1=1 || var2=3 条件语法通常配合if或while使用。 【流程控制】 if...elseif...else...end if 用法: 条件成立则执行if...end if里的叙述。 if 条件 叙述 end if 范例: if var1>3 say "hi!!" end if if 条件 叙述 elseif var1=10 叙述 end if if var1>3 say "hi!!" else say "bye!!" end if while...wend 用法: 条件成立则执行while...wend里的叙述。 while 条件 叙述 wend 范例: while var1<100 var1=var1+1 wend repeat...end repeat 用法: 重覆执行repeat...end repeat里的叙述。 次数可直接用数字也可用变数或运算式。 repeat 次数 叙述 end repeat 范例: repeat 100 var1=var1+1 end repeat repeat var2 var1=var1+1 end repeat break 用法: 离开目前的repeat...end repeat或while...wend回圈。 范例: while var1<100 var1=var1+1 var2=var2*var1 if var2>30 break end if wend 标记 标记的格式为名称: 范例: Label: good: jump 标记 跳到指定的标记处。 用法: jump 标记 范例: add: var1=var1+1 jump add on..jump resume 条件成立则触动jump指令。 on...jump检查条件时机在on..jump後的所有指令,直到最後一行或有其他的on...jump。 on...jump之前的script不会检查。 一但触动jump,会停止目前的script,直接jump到指定标记处。 配合resuem可以回到触动条件成立时的script位 用法: On var1=1 Jump ext 范例: on var1=1 jump ext ... ... //下面这行会触动jump而到ext标记处执行 var1=1 //在resume後会从此处继续执行 var2=2 ... ... ext: var1=0 resume stop 结束script执行,即按了停止键。 将stop放在script最後一行,则script只会执行一次 范例: var1=var1+1 stop call return call会跳到标记所指的位置,并记录目前执行的位置 return则是回到上一个call位置 用法 call 标记 stop 标记: return 【键盘字元相关指令】 SendKey(按键码) KeyPress(按键码) 用途: 模拟按下键盘动作。 范例: //以下皆为送出F1(模拟按了F1键) SendKey(112) KeyPress(112) //alt+F1 SendKey(alt+112) KeyPress(alt+112) //ctrl+alt+F1 SendKey(ctrl+alt+112) KeyPress(ctrl+alt+112) Say "字串" Text "字串" KeyString "字串" 用途: 模拟打字动作。 Text和KeyString功能相似,但Text不会影响你目前的键盘操作。 Say会在送完字串後再送出一个Enter键,Text和KeyString则否。 KeyString可以用"\n"来送出Enter键。 注意,KeyString无法用中文,Say及Text可以是中文字串。 范例: Say "Hi!!你好!!" Text "Hi!!你好!!" KeyString "Hi!!" //打完字後模拟按Enter KeyString "Hi!!\n" 如果想把某个变数或运算式结果说出来,可以用$[运算式(或变数)] 如我要列出var1的值: KeyString "$[var1]\n" 或如我要列出
|
2023-10-13
2023-10-24
2023-10-11
2023-10-10
2023-10-11