EZScript語法簡介

EZScript II 【Script語法】 by Li-chieh Wang ([email protected])

——————————————————————————–

 

【變數】

目前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"

或如我要列出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 座標

MouseMoveEX 座標

用途:

模擬滑鼠移動到座標處。

範例:

//移動游標到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