[轉載]EZScript II【基本操作】


版主: GM Saga

回覆文章
fmask
中級玩家
中級玩家
文章: 196
註冊時間: 週三 6月 18, 2003 1:12 am

[轉載]EZScript II【基本操作】

文章 fmask » 週六 9月 26, 2009 10:26 am

EZScript II【基本操作】


【執行/停止】
可以執行或停止script。 停止後,再換執行則是從頭開始。 另外可用Alt-Pause來熱鍵啟動執行/停止的功能。

【暫停/繼續】
可以暫停或繼續script,與執行/停止不同的是可以從暫停處繼續執行。 另外可用Pause來熱鍵啟動執行/停止的功能。

【即時取得座標】
只要把動態抓點及顏色選項開啟接著把滑鼠游標移到該點再按下Alt+Ctrl+左邊的1-8數字鍵即可把座標存到Pos1-Pos8中了

【即時取得對應座標顏色】
只要把動態抓點及顏色選項開啟接著把滑鼠游標移到該點再按下Alt+Ctrl+Shift左邊的1-8數字鍵即可把Pos1-Pos8座標的顏色存到對應的Var1-Var8中了

【變數】

目前EZScript II提供16個變數供使用,分別是Var1~Var8,Pos1~Pos8。
【運算語法】

名稱 範例 結果
加法 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 < td>
小於或等於(<=) var1<=var2
不等於(!=) var1!=var2
且(&&) var1=1 && var2=3
或(||) var1=1 || var2=3


條件語法通常配合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
·一些使用上的小技巧

對於滑鼠部分 <br>如果發現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 < td>
小於或等於(<=) var1<=var2
不等於(!=) var1!=var2
且(&&) var1=1 && var2=3
或(||) var1=1 || var2=3

條件語法通常配合if或while使用。

【流程控制】

if...elseif...else...end if

用法:

條件成立則執行if...end if裡的敘述。

if條件 <br>敘述
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條件 <br>敘述
wend

範例:

while var1<100
var1=var1+1
wend

repeat...end repeat

用法:

重覆執行repeat...end repeat裡的敘述。
次數可直接用數字也可用變數或運算式。

repeat次數 <br>敘述
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"

或如我要列出22*33的值:
KeyString "$[22*33]\n"

Echo "字串"
用途:

模擬打字動作。 用法和Say、Text、KeyString類似。
這個指令較特別,你必須先將滑鼠游標移到要輸入的範圍內(只要是范圍內即可,不用在起點),然後再使用Echo "字串"


範例:

//Pos1為輸入對話框的座標位置
MouseMove pos1
Echo "Hi!!你好!!\n"

KeyDown(按鍵碼)
KeyUp(按鍵碼)

用途:

模擬按下或放開某個鍵。
若用了KeyDown而沒用KeyUp放開,
則被按下的按鍵會一直保持著按下的狀態。

範例:

//按下按鍵A不放
KeyDown(65)
//放開按鍵A
KeyUp(65)

WaitKey

功能:等待按鍵並傳回按鍵碼這個指令可單獨使用或配合指定或條件式如:
waitkey

var1=waitkey

while(waitkey!=27)
wend

ScanKey

功能:傳回按鍵碼這個指令無法單獨使用需配合指定或條件式
PS.這指令功能和waitkey一樣,只不過不會等待按鍵輸入,若沒按任何鍵則傳回0
如:
var1=scankey

while(scankey!=27)
wend

【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

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行則不會

【座標轉換指令】

Xy2Pos[X座標,Y座標]

用途:

把x,y形式表示的座標轉成Pos位置格式。

範例:

//指定pos1座標為(100,200)
pos1=xy2pos[100,200]

x2pos[x偏移量]
y2pos[y偏移量]


以上2個和xy2pos一樣,只不過獨立出來

【顏色相關指令】

Color[位置]

用途:

傳回指定位置的顏色值。

範例:

//取得Pos1座標的顏色值
var1=color[pos1]

GetColorPos[顏色值,左上角,右下角]

用途:

取得範圍內符合顏色值的第一個座標。

範例:

//取得pos1,pos2範圍內符合顏色值var1的第一個座標
var2=GetColorPos[var1,pos1,pos2]

【時間日期指令】

Time
Timer

用途:

傳回時間值。
Time傳回從西元1970年至現在所經過的秒數。
Timer傳回系統的clock時間,單位為ms(千分之一秒)

範例:

var1=time

year
month
hour
day
minute
second

功能:傳回目前時間值(年,月,日,時,分,秒)
這個指令無法單獨使用需配合指定或條件式如:
//傳回目前是幾點到var1

var1=hour
【其他指令】

Delay(時間)

用途:

延遲指定時間。
時間單位為ms(千分之一秒)。

範例:

//等待2秒
delay(2000)

Rand[範圍]

用途:

傳回指定範圍內的整數亂數。

範例:

//取得0-99的整數亂數
var1=rand[100]

Beep

用途:

發出嗶聲。

範例:

//發出嗶聲
beep

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

interval

用法
interval=數值(千分之一秒)


interval=100
//以下每個指令間隔為0.1秒
repeat 10
var1=var1+1
end repeat

interval=1
//以下每個指令間隔為0.001秒
repeat 10
var1=var1+1
end repeat

表示每個指令間的時間間隔為0.1秒

預設內定值為1(即0.001秒)

注意若設成0,會造成CPU被100%佔用住....
所以若非特別需要,請最少設成1

ps:轉載自http://www.blogjava.net/songfei/articles/140891.html
~電捲~
Purple lomance....

專職: 去死去死團...每天都會被龍給踩死一次

回覆文章

回到「輔助軟體討論版」

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 8 位訪客