20080105 edit: 增加 "找不到 NPC 就重登" 的巨集(其實我分享的巨集裡都有)
20080106 edit: 新增不會被玩家以公頻擾亂的判定
20080107 edit: 不會被玩家以公頻擾亂的判定小修正
20080111 edit: 新增 release all 在自動巨集 relogOnNpcNoRespond 裡以避免重登後不會重新啟動
       提醒大家 portals.txt 要增加的資訊
20080113 edit: 小錯誤修正
20080121 edit: 改為單雙競賽都有。另外記錄檔改為 /logs/raceResultSingle.txt 與 /logs/raceResultDouble.txt。以及其它一些小修正。


 


 


#####
automacro initial {
        map hugel
        exclusive 1
        run-once 1
        call {
                do conf squelchDomains emotion,skill,publicchat
                do conf autoTalkCont 0
                do conf cachePlayerNames_maxSize 300
                $betNumber = 1
                # 設定單人魔物賭注號碼 betNumber
                $betNumber1 = 1
                # 設定雙人魔物賭注號碼1 betNumber1
                $betNumber2 = 2
                # 設定雙人魔物賭注號碼2 betNumber2
        }
}

automacro relogOnNpcNoRespond {
        console /^無法在座標.*找到 NPC.$/i
        exclusive 1
        call {
                release all
                do relog
        }
}

automacro dropTicketInHugel {
        map hugel
        inventory "魔物票券" == 1
        run-once 1
        call {
                do drop @inventory(魔物票券)
                pause 1
                do move 63 73 hugel
        }
}

# 單人賽外場進入內場的觸發字句
automacro singleAnnouncement {
        location hugel
        zeny > 50000
        console /^魔物賽跑單人賽比賽競賽場/
        call singleRace
}

# 雙人賽外場進入內場的觸發字句
automacro doubleAnnouncement {
        location hugel
        zeny > 50000
        console /^魔物賽跑雙人賽比賽競賽場/
        call doubleRace
}

# 進入單人賽內場,並選擇要賭的號碼
macro singleRace {
        lock singleAnnouncement
        lock doubleAnnouncement
        pause @rand(1,10)
        do move p_track01
        pause 2
        do move @rand(70,76) @rand(31,36) p_track01
        pause 8
#        記錄各魔物素質(暫時註解掉)
#        do talk @npc (73 22)
#        pause 1
#        do talk cont
#        pause 1
#        do conf logConsole 1
#        do talk resp 0
#        do conf logConsole 0
#        pause 1
        do talknpc 73 22 c r$betNumber n
        # 賭號碼為 $betNumber 的魔物會贏
        do sit
        release singleAnnouncement
        release doubleAnnouncement
}

# 進入雙人賽內場,並選擇要賭的號碼
macro doubleRace {
        $betNumber1Temp = $betNumber1
        $betNumber2Temp = $betNumber2
        $betNumber1Temp--
        $betNumber2Temp--
        do eval if ($::Macro::Data::varStack{betNumber1Temp} < $::Macro::Data::varStack{betNumber2Temp}) {$::Macro::Data::varStack{betNumber2Temp}--}
        lock singleAnnouncement
        lock doubleAnnouncement
        pause @rand(1,10)
        do move p_track02
        pause 2
        do move @rand(70,76) @rand(31,36) p_track02
        pause 8
#        記錄各魔物素質(暫時註解掉)
#        do talk @npc (73 22)
#        pause 1
#        do talk cont
#        pause 1
#        do conf logConsole 1
#        do talk resp 0
#        do conf logConsole 0
#        pause 1
        do talknpc 73 22 c r1 c c r$betNumber1Temp c r0 c r$betNumber2Temp c r0 n
        # 賭魔物的號碼
        do sit
        release singleAnnouncement
        release doubleAnnouncement
}

# 單人賽結果揭曉後的觸發
automacro singleBetResult {
        location p_track01
        inventory "魔物票券" == 1
        console /^第1名進來的魔物是 (\d)號 魔物~!!$/
        call singleResultProcessing
}

# 雙人賽結果第一名揭曉後的觸發
automacro doubleBetResult1 {
        location p_track02
        inventory "魔物票券" == 1
        console /^(\d)號魔物 有進到終點了$/
        call doubleResultProcessing1
}
# 雙人賽結果第二名揭曉後的觸發
automacro doubleBetResult2 {
        location p_track02
        inventory "魔物票券" == 1
        console /^在等(\d)號魔物 跟隨著進到終點的話 競賽就結束了$/
        call doubleResultProcessing2
}

# 單人賽記錄並判斷要換獎牌或直接離場
macro singleResultProcessing {
        $resultNumber = $.lastMatch1
        # 記錄至檔案 /logs/raceResultSingle.txt
        do eval if (open(FILE, ">>:utf8", $::Settings::logs_folder . "/raceResultSingle.txt")) {$::Macro::Data::varStack{datetime} = "[".getFormattedDate(int(time))."]";print FILE "\n$::Macro::Data::varStack{datetime} 賭注號碼: $::Macro::Data::varStack{betNumber} 號; 中獎號碼: $::Macro::Data::varStack{resultNumber} 號.";close FILE;}
        if ($resultNumber == $betNumber) goto win
        # 若號碼為 $betNumber 的魔物跑贏,則去換獎牌
                call Exit
                goto end
        :win
                call singleRedemption
        :end
}

# 雙人賽記錄第一名魔物並判斷是否要直接離場
macro doubleResultProcessing1 {
        $resultNumber1 = $.lastMatch1
        # 若有沒中的號碼出現,但想知道一二名結果,則請將以下全部註解掉
#        do eval if (open(FILE, ">>:utf8", $::Settings::logs_folder . "/raceResultDouble.txt")) {$::Macro::Data::varStack{datetime} = "[".getFormattedDate(int(time))."]";print FILE "\n$::Macro::Data::varStack{datetime} 賭注號碼: $::Macro::Data::varStack{betNumber1}, $::Macro::Data::varStack{betNumber2}; 中獎號碼: $::Macro::Data::varStack{resultNumber1}, 未知";close FILE;}
#        if ($resultNumber1 == $betNumber1) goto wait
#        if ($resultNumber1 == $betNumber2) goto wait
#                call Exit
#        :wait
}

# 雙人賽記錄第二名魔物並判斷要換獎牌或離場
macro doubleResultProcessing2 {
        $resultNumber2 = $.lastMatch1
        # 記錄至檔案 /logs/raceResultDouble.txt
        do eval if (open(FILE, ">>:utf8", $::Settings::logs_folder . "/raceResultDouble.txt")) {$::Macro::Data::varStack{datetime} = "[".getFormattedDate(int(time))."]";print FILE "\n$::Macro::Data::varStack{datetime} 賭注號碼: $::Macro::Data::varStack{betNumber1}, $::Macro::Data::varStack{betNumber2}; 中獎號碼: $::Macro::Data::varStack{resultNumber1}, $::Macro::Data::varStack{resultNumber2}";close FILE;}
        # 判斷要換獎牌或離場
        if ($resultNumber1 == $betNumber1) goto halfWin
        if ($resultNumber2 == $betNumber1) goto halfWin
                call Exit
                goto end
        :halfWin
                if ($resultNumber2 == $betNumber2) goto totallyWin
                if ($resultNumber1 == $betNumber2) goto totallyWin
                call Exit
                goto end
        :totallyWin
                call doubleRedemption
        :end
}

# 若魔物單人賽賭中了,則呼叫此巨集進行獎牌兌換
macro singleRedemption {
        do stand
        #停 10 秒,等待兌換服務人員出現
        pause 10
        do talknpc 67 45 c c c c c r0 c n
        #兌換 服務人員
        call Exit
}
# 若魔物雙人賽賭中了,則呼叫此巨集進行獎牌兌換
macro doubleRedemption {
        do stand
        #停 10 秒,等待兌換服務人員出現
        pause 10
        do talknpc 67 45 c c c c r0 c n
        #兌換 服務人員
        call Exit
}

# 若沒賭中,或換完獎牌後,呼叫此巨集離開內場
macro Exit {
        release singleAnnouncement
        release doubleAnnouncement
        release singleBetResult
        release doubleBetResult1
        release doubleBetResult2
        do stand
        # 小範圍移動以改善偵測不到入場 NPC
        do move @rand(63,68) @rand(73,78) hugel
        pause @rand(1,10)
        do move @rand(63,68) @rand(73,78) hugel       
}

automacro medalChange {
        map ein_in01
        inventory "神奇的獎牌" > 0        
        run-once 1
        call {
                do move 81 206 ein_in01
                do talknpc 85 208 c r0 c c c c c r0 c c r1 c c n
                # 其中r1為換job值 要換經驗請改為r0
                pause 2
                release medalChange
        }
}

 

 

 

記得在 portals.txt 內新增以下傳點資訊:


p_track01 76 36 hugel 63 73 0 c c r0 n
p_track02 76 38 hugel 63 73 0 c c r0 n
hugel 58 72 p_track01 75 41 2000 c r1 c c r0 n
hugel 62 69 p_track02 75 41 2000 c r1 c c r0 n

 

 

以上原創人為littlewens 大大,若要轉帖請註明l出處及 ittlewens 大大的大名,謝謝!
創作者介紹
創作者 aaa1314 的頭像
aaa1314

RO相關資料資訊♂外掛腳本討論&請勿發表其他廣告(請保持畫面清爽)感謝

aaa1314 發表在 痞客邦 留言(0) 人氣()