本帖最後由 debbie9421 於 2010-11-20 04:09 編輯
本手冊中所提到的 VisualKore profile 資料夾都與 OpenKore "control" 資料夾相符合。
要在多個 profiles 中使用相同的巨集,你必須複製你所需的 macros.txt(你的巨集指令)至每一個 profiles 資料夾中。另外,每一個 profile 的 config.txt 必須有一行設定用來避免不載入這個 plugin。
指令
macro <巨集名> [選項] [-- 參數(們)]
執行巨集 <巨集名>。
選項 數值 描述
-repeat n 重覆此巨集 n 次
-overrideAI (none) 優先於 openkore 的 AI
-macro_delay delay 對於此巨集的延遲優先於全域的 macro_delay 延遲
-exclusive (none) 不允許自動巨集中止本次巨集
-orphan method 使用 method 以處理 孤兒巨集
巨集的參數們可在雙破折號 (--) 後指定。這些參數被存放在變數 $.param1 到 $.paramN 中。範例:
macro foo { log 參數 1 是 $.param1 log 參數 2 是 $.param2}當我們下指令 macro foo -- foo bar 以呼叫該巨集時,它們會顯示出
[macro] 參數 1 是 foo[macro] 參數 2 是 barmacro list
可列出所有有效的巨集。
macro stop
中止目前的巨集。
macro pause
暫停目前正在執行中的巨集。
macro resume
繼續已被暫停的巨集。
macro version
顯示版本號碼。
macro reset [<name>]
重設所有只執行一次 (run-once) 的自動巨集或重設指定的自動巨集 <name>。
macro status
Shows whether or not a macro is currently running. If that's the case it shows the delay for the next command, the current line, overrideAI setting, whether or not it has finished and whether or not the macro registered to AI queue
設定各檔案
control/macros.txt
把你的巨集與自動巨集放在此處。
control/timeouts.txt
新增一個 macro_delay 然後以秒為單位設定它的數值,這是你希望本 plugin 在指令與指令間的暫停秒數。
control/config.txt
變數 數值 描述
macro_nowarn 0
1 當你的自動巨集沒有用到 call 時,開啟或取消惱人的警告功能
macro_orphans terminate
reregister
reregister_safe 參見 孤兒巨集這一節
macro_file filename 包含巨集指令的那個檔案(預設是 "macros.txt")
macro_allowDebug 0
1 console-check 亦處理 openkore 的除錯訊息(預設值:0)。注意:這會拖慢本 plugin 的速度。
在撰寫巨集前
請確定你已全部讀過本使用手冊了。
假如你想要在你的巨集裡使用 openkore 的指令,那麼請閱讀相關的 console 指令。注意有些像是操作運用 ai 佇列的指令是不被允許使用的。
最後,請閱讀此 佈告。它們可能包含一些實用的例子。
巨集語法
macro foo { do this.. and that.. yattayatta..}理論上,你可以在巨集裡使用任何 console 端的指令。我用這個 plugin 來測試購買銀箭矢、與 NPC 交談和對其他玩家發密語。懶人們可以用這個 plugin 來完成天津通行證或其它諸如此類的任務。
do <指令>
讓 openkore 執行 <指令>。
範例:
macro foo { do move 123 234 prontera do sit do c "hello world" }log <文字>
送出 <文字> 至 console 端。
範例:
macro foo { log 本行記錄一串文字至 console 端。 log All your base are belong to us!}pause [<n>]
暫停 1 或 <n> 秒。
範例:
macro foo { log 我在這裡,然後... pause 10 log 現在我在這裡了。 }
call <巨集名> [<n>]
呼叫巨集 <巨集名> [<n> 次]。當 <巨集名> 結束後,當前的巨集會繼續執行。
release (<自動巨集名> | all)
重新恢復一個已封鎖的自動巨集(有 "只執行一次 (run-once)" 的關鍵字或由 "lock" 封鎖住)或使用 release all 重新恢復所有的自動巨集。
lock <自動巨集名>
封鎖一個自動巨集並取消它的觸發條件的檢驗。
stop
立刻終結目前正在跑的巨集。
set <選項> <數值>
設定巨集的特徵為:
orphan method
macro_delay timeout
overrideAI [0|1]
repeat times
exclusive [0|1]
請參見 自動巨集 這一節。
變數的宣告與使用
你可以定義與運行自己的變數。
要設定一個變數請用 $variable = value,要呼叫此數值請使用 $variable。
使用 $variable++ 或 $variable-- 來增加或減少變數值是可允許的。
使用 @eval 來做計算。要提取以逗號分隔的項目的第一項的話請使用
macro foo { $list = element one,element two,foo,bar,baz $var = [$list] log var contains $var (element one) log list contains $list (element two,foo,bar,baz)}請注意變數的命名必須以字母做開頭,且全名中不能含有任何字母或數字以外的符號。範例:
macro foo { $var1 = world $var2 = hello $var3 = $var2 $var1 log next line will yell out "hello world . world . hello" do c $var3 . $var1 . $var2 $var4 = 47 log \$var4 is $var4 $var4++ log \$var4 is $var4 $var4 = @eval ($var4 + 52) log \$var4 is $var4}特殊變數
有些具唯讀特性的變數是以小數點為開頭的。
$.map - 你所在的地圖名 ("prontera")
$.pos - 你目前所在的座標 ("123 234")
$.time - 以 unix 時間郵戳方式顯示的時間(自1970年1月1日凌晨0時整開始至目前時刻為止的總秒數) ("1131116304")
$.datetime - 目前的日期與時間 ("Fri Nov 4 1536 2005")
$.hp - 目前的 hp
$.sp - 目前的 sp
$.lvl - 目前的 base 等級
$.joblvl - 目前的 job 等級
$.spirits - 目前的氣球數
$.zeny - 目前的金錢數
$.status - 目前的狀態,各狀態以逗號分隔
$.lastLogMsg - 最近一次以自動巨集的 "console" 為條件所觸發的文字內容
$.lastpub - 最近一次以自動巨集的 "pubm" 為條件所觸發的玩家名稱
$.lastpubMsg - 承上,該玩家用公頻說話的內容
$.lastpm - 最近一次以自動巨集的 "pm" 為條件所觸發的玩家名稱
$.lastpmMsg - 承上,該玩家所密語的內容
$.lastguild - 最近一次以自動巨集的 "guild" 為條件所觸發的玩家名稱
$.lastguildMsg - 承上,該玩家用公會頻說話的內容
$.lastparty - 最近一次以自動巨集的 "party" 為條件所觸發的玩家名稱
$.lastpartyMsg - 承上,該玩家用隊頻說話的內容
$.lastMonster - 最近一次以自動巨集的 "monster" 為條件所觸發的怪物名稱
$.lastMonsterPos - 承上,該怪物最近一次已知的座標 ("123 234 prontera")
$.lastMatchN - 最近一次的 regexp 常規表示式所符合到的 backreferences
$.paramN - 指令行參數(請見 指令)
$.caller - 最近一次觸發的自動巨集名
$.hooksaveN - value of a hash key (argument that's given with hook)
巢狀變數
你可以定義動態的或巢狀變數。
範例:
macro foo { $var = foo log \$var is "foo" ${$var} = bar log \$\$var is \$foo is "bar"}流程控制與標籤
所有的高階程式語言都有像是 "if .. then"、"while"、"repeat"、"for .. next"、"do .. while" 與功能呼叫的結構,它們共同的 denominators 是 "if"、"goto" 與 "while"。這就是為什麼本巨集 plugin 只支援這三種關鍵字。因為沒有(可見的)行號,所以你必須使用冒號後面加一名稱來命名一個標籤。
|