搜尋


返回清單
12下一頁
切換到指定樓層
通知這文章過時或找檔案 發表主題

巨集指令

  [複製連結]
1
debbie9421 ( Lv.10 見習生 ) 發表於 2010-11-19 22:36:11 | 只看該作者 回覆獎勵 |升序瀏覽 |閱讀模式
本帖最後由 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 只支援這三種關鍵字。因為沒有(可見的)行號,所以你必須使用冒號後面加一名稱來命名一個標籤。





大家正在看啥


收藏收藏 分享文章到FB上分享
複製專屬你的推廣連結:發至FB與各論壇宣傳:累積點數換GP商品 & 藍鑽
每五點閱率就可以兌換藍鑽積分或遊戲點卡 夢遊推廣文章換GP商品
12
th30246 ( Lv.20 天使 ) 發表於 2011-9-20 16:44:55 | 只看該作者
本帖最後由 th30246 於 2011-9-20 16:54 編輯

回復 1# debbie9421


macro check {
    [
            $mon = $.lastMonster
            $monID = $.lastMonsterID
            $dist = $.lastMonsterDist
            $monPos = $.lastMonsterPos
            $map = $.map
            $myPos = $.pos
            $myPosX = @arg ("$myPos", 1)
            $myPosY = @arg ("$myPos", 2)
            $monPosX = @arg ("$monPos", 1)
            $monPosY = @arg ("$monPos", 2)
            $map = $.map
            do eval message T("Macro Avoid: $::Macro::Data::varStack{mon} \($::Macro::Data::varStack{monID}\)
"), "teleport"; message T("魔物距離\= $::Macro::Data::varStack{dist} \, 魔物座標\: \($::Macro::Data::varStack{monPosX},$::Macro::Data::varStack{monPosY}\) 地圖名\= $::Macro::Data::varStack{map}
"), "teleport";


不知道大大能幫我看看這個巨集嗎?
能告訴我紅色是在說甚麼嗎?
我想要改成隊員是否能改呢!
回覆 使用道具 檢舉
11
th30246 ( Lv.20 天使 ) 發表於 2011-9-20 16:36:24 | 只看該作者
本帖最後由 th30246 於 2011-9-20 16:41 編輯

謝謝分享
我還是很多含數變數搞不懂
不過沒有我想要的變數語法
回覆 使用道具 檢舉
10
*龍≠ ( Lv.10 見習生 ) 發表於 2011-1-24 19:21:43 | 只看該作者
想請問一下
有沒有辦法抓自己開的商店標題呀

還有商店的物品名稱

因為現在自己在寫巨集

都是擺什麼就去改巨集的物品名稱一次

可能是剛開始學的關係

很多都不太懂
回覆 使用道具 檢舉
9
laucewind ( Lv.10 見習生 ) 發表於 2011-1-10 19:53:28 | 只看該作者
回復 1# debbie9421


    大大,如果要设定听到“玩家A”说“buff”,然后我的机器自动帮忙++的巨集要怎样写啊?
回覆 使用道具 檢舉
8
jiahao01708 ( Lv.10 見習生 ) 發表於 2011-1-10 05:47:35 | 只看該作者
我看到母煞煞...目前在研究火煙!! 但是 寫玩都是開完倉庫就呆住 斷線30秒!!是怎ㄇㄌ ZZ
回覆 使用道具 檢舉
7
 樓主| debbie9421 ( Lv.10 見習生 ) 發表於 2010-11-21 20:50:01 | 只看該作者
有需要各樣的巨集都可以發表阿
我有空的時候可以寫範例給你看著學

畢竟我希望的是大家會寫,不是大家都會掛
回覆 使用道具 檢舉
6
R0G3 ( Lv.10 見習生 ) 發表於 2010-11-21 09:09:04 | 只看該作者
巨集對我目前來說.還是有給他深澳了點.在努力的認識他了 感謝嚕
回覆 使用道具 檢舉
5
 樓主| debbie9421 ( Lv.10 見習生 ) 發表於 2010-11-19 22:44:09 | 只看該作者
補充
巨集需要配合plugin資料夾

同時感謝yumeday大大的分享
在此貼上大大的PLUGIN連結
http://www.moyuzone.org/bbs/thread-10122-1-1.html
回覆 使用道具 檢舉
4
 樓主| debbie9421 ( Lv.10 見習生 ) 發表於 2010-11-19 22:40:00 | 只看該作者
因為實在是太長了
發言規定最多10000字句
所以利用了2次回復來貼完這24089個字節
這些只是巨集基礎,以後會在貼上一些細部教學
還有其他功能的巨集
EX:大家最常遇到的掛龜島或是蟻洞,要通過npc對話才可以去到的地方的自動路徑
回覆 使用道具 檢舉

你需要登入後才可以回覆 登入 | 加入會員

本版積分規則

Copyright (C) 2010-2020 夢遊電玩論壇

廣告合作:請直接聯繫我們,並附上您預刊登位置的預算。  

快速回覆 返回頂端 返回清單