Ano ang Macro plugin??
Sa plugin na ito, maari kang gumawa ng mga magkakasunod na utos(macros) na pinapatakbo manually o naka-depende sa sitwasyon ng trigger. Ang Pinakahuling bersyon ay 1.3.6.
Ang Pag-iinstall
Installation in OpenKore
- I-Download ang macro plugin.
- Pumunta ka sa iyong openkore folder (ang folder na naglalaman ng file na openkore.pl).
- Sa folder na iyon, gumawa ka ng subfolder na plugins, kung wala pa.
- Sa loob ng Macro plugin's zipfile, makikita mo ang mga files na macro.pl, cvsdebug.pm at ang folder na Macro. I-extract ang mga iyon sa plugins folder.
- Sa iyong Openkore control folder, gumawa ka ng blank file na macros.txt. Dito mo ilalagay ang iyong macros/automacros.
Pagkatapos ng pag-iinstall, ang iyong Openkore file tree ay dapat ganito ang itsura:
openkore
|-- openkore.pl
|-- control
| `-- macros.txt
|-- fields
|-- logs
|-- plugins
| |-- Macro
| | |-- Automacro.pm
| | |-- Data.pm
| | |-- Parser.pm
| | |-- Script.pm
| | `-- Utilities.pm
| |-- macro.pl
| `-- cvsdebug.pm
|-- src
`-- tables
Pag-iinstall ng VisualKore
- I-Download ang macro plugin.
- Sa loob ng Macro plugin's zipfile, makikita mo ang mga files na macro.pl, cvsdebug.pm at ang folder na Macro. I-extract ang mga ito saC:\Program Files\VisualKore\plugins
- Pumunta ka sa the VisualKore Profiles dialog. Pumili ka ng profile at i-click ang "Edit Profile".
- May lalabas ngayon na folder. Sa folder na yan, gumawa ka ng blank file na macros.txt. Sa file na ito mo ilalagay ang iyong macros/automacros.
Para ayusin ang plugin, tingnan lang ang mga Configuration files.
Paalala:
- Ang bawat VisualKore Profile folders ay tumutugma sa "control" folder na pinakita nitong manual.
- Para gamitin ang Macro sa maramig Profile, dapat mong kopyahin ang mga kinakailangan na macros.txt(ang iyong macro) sa bawat profile na nais mong gamitan ng macro. Ang bawat profile na config.txt ay dapat merong nakalagay na code na pipigil sa plugin na magload.
- Pakiusap na basahin ang buong manual para sa code na dapat ilagay sa config.txt file sa iyong Profile Folder. Pag hindi ito nailagay, ang plugin ay hindi magloload.
Mga Commands
macro <macroname> [options] [-- parameter(s)]
Pinapatakbo ang <macroname>.
| Option
| Value
| Description
|
| -repeat
| n
| ang macro ng n na ulit
|
| -overrideAI
| (none)
| I-ooverride ang OpenKore's AI
|
| -macro_delay
| delay
| I-ooverride ang buong macro_delay para sa macrong ito
|
| -exclusive
| (none)
| Ito ay espesyal na macro kaya hindi ito maaapektuhan ng mga automacro
|
| -orphan
| method
| Isang paraan sa paghawak ng orphaned macros
|
Parameters para sa macro ay pedeng matukoy pagkatapos ng dalawang dash(--). Ang mga parameters na ito ay na-iisaved sa mga variables na $.param1 hanggang sa $.paramN.
Halimbawa:
macro foo {
log Parameter 1 is $.param1
log Parameter 2 is $.param2
}
Kapag tinawag na macro foo -- foo bar ay lalabas
[macro] Parameter 1 ay foo
[macro] Parameter 2 ay bar
macro list
Ilagay ang lahat na pedeng gamitin na macro.
macro stop
Tuluyang itigil ang tumatakbong macro.
macro pause
Ititigil pangsamantala ang tumatakbong macro.
macro resume
Ibalik ang pinatigil na macro.
macro set variable value
Baguhin ang variable sa value o burahin ang variable kapag walang naibigay a value.
macro version
I-print ang numerong bersyon.
macro reset [<name(s)>]
Ireset ang lahat ng run-once automacros o ang nakatakdang automacro <name>.
macro status
Pinapakita kung meron o walang tumatakbong macro. Kung ganon pinapakita nito ang delay para sa sunod na utos, ang sunod na linya, overrideAI setting, natapos man iyon o hindi at oo man o hindi ang macro ay nakarehistro sa AI queue
Configuration files
control/macros.txt
Dito inalalagay ang iyong macros/automacros.
control/timeouts.txt
Maglalagay ng macro_delay at ayusin ito sa segundong nais mo na tumigil ang plugin sa bawat utos.
control/config.txt
| Variable
| Value
| Description
|
| macro_nowarn
| 0 1
| Paganahin o hindi ang mga nakakainis na babala kapag di gumamit ng call sa iyong automacro(s)
|
| macro_orphans
| terminate reregister reregister_safe
| tingnan ang orphaned macros section
|
| macro_debug
| level(s)
| tingnan ang debugging section
|
| macro_file
| filename
| ang file na naglalaman ng macros ("macros.txt" by default)
|
| macro_allowDebug
| 0 1
| console-check pinoproseso din nito nito ang mensahe ng openkore's debug (default: 0). Babala: Pinapabagal nito ang plugin.
|
Bago magsulat ng macros
Sigaraduhing basahin ang buong manual.
Kung gusto mong gumamit ng openkore's commands sa iyong macro, basahin ang console commands. Paalala na ang ibang utos sa AI queue tulad ng pagmanipulate na ito ay hindi pinapayagan.
Sa wakas, basahin ang mga announcements. Pwede silang maglaman ng mga mahahalagang halimbawa.
Macro syntax
macro foo {
do this..
and that..
yattayatta..
}
Sa totoo, pede kang gumamit ng kahit anong coonsole command sa isang macro. Sinubukan ko ang plugi na ito sa pagbili ng silver arrows, pakikipag-usap sa npc at pagpm ng mga tao. Ang mga tamad na tao ay pedeng gamitin ang plugin na ito para sa pagkumpleto ng amatsu dungeon quest o iba pa.
do <command>
Hayaan ang openkore na magpatakbo ng <command>.
- Example:
-
macro foo {
do move 123 234 prontera
do sit
do c "hello world"
}
log <text>
Nagpapadala ng <text> sa consolee.
- Example:
-
macro foo {
log This line logs a text to console.
log All your base are belong to us!
}
pause [<n>]
Titigil ng isa o <n> na seconds.
- Example:
-
macro foo {
log I'm here and...
pause 10
log now I'm here.
}
call <macroname> [<n>]
Tinatawag ang <macroname> [<n> beses]. Kapag ang <macroname> ay natapos ang sunod na macro ay itutuloy.
release (<name> | all)
Uulitin ang locked automacro ("run-once" keyword or locked by "lock") o uulitin lahat ng automacros kapag gumamit ka ng release all
lock <name>
Itinitigil ang ang automacro pati ang mga checks nito
stop
Madaling ipinapatigil ang tumatakbong macro
set <option> <value>
Isineset ang features ng mga macro:
- orphan method
- macro_delay timeout
- overrideAI [0|1]
- repeat times
- exclusive [0|1]
Tingnan ang seksyon ng automacro.
Variable declaration at usage
Pede kang gumawa/gumamit ng sariling variables.
Para ayusin ang variable gamitin ang $variable = value, para maalala ang variable gamitin ang $variable.
Posible na madagdagan o mabawasan ang isang variable gamit ang $variable++ or $variable--.
Para sa kalkulasyon gamitin ang @eval.Para idikit abg unang item ng isang comma-separated na listahan gamitin ang
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)
}
Paalala na ang variables ay dapat magsimula sa isang letra at hindi dapat maglaman ng kahit ano maliban sa letra at numero.
- Example:
-
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
}
Espesyal na variables
Merong mga espesyal na readonly variables na nagsisimula sa isang dot.
- $.map - ang mapa na iyong kinatatayuan ("prontera")
- $.pos - angkasalukuyang posisyon ("123 234")
- $.time - ang kasalukuyang oras na isang unix timestamp ("1131116304")
- $.datetime - kasalukuyang araw at oras ("Fri Nov 4 15:59:36 2005")
- $.hp - ang hp mo sa kasalakuyan
- $.sp - ang sp mo sa kasalakuyan
- $.lvl - ang base lv mo sa kasalakuyan
- $.joblvl - ang job level mo sa kasalakuyan
- $.spirits - ang bilang ng iyong spirit sphere sa kasalakuyan
- $.zeny - ang bilang ng zeny mo sa kasalakuyan
- $.status - ang mga status mo sa comma-separated list
- $.lastLogMsg - ang teksto na nagpagalaw sa kondisyon ng automacro "console"
- $.lastpub - ang huling player na nagpagalaw sa kondisyon ng automacro "pubm"
- $.lastpubMsg - kug ano ang kanyang isinulat
- $.lastpm - ang manlalaro na nagpagalaw sa kondisyon ng automacro "pm"
- $.lastpmMsg - kung ano ang kanyang isinulat
- $.lastguild - ang pangalan ng player na nagpagalaw sa kondisyon ng automacro "guild"
- $.lastguildMsg - kug ano ang kanyang isinulat
- $.lastparty - ang pangalan ng player na nagpagalaw ng huling kondisyon ng automacro "party"
- $.lastpartyMsg - kug ano ang kanyang isinulat
- $.lastMonster - ang pangalan ng halimaw na nagpagalaw ng huling kondisyon ng automacro "monster"
- $.lastMonsterPos - ang huling posisyon ng halimaw ("123 234 prontera")
- $.lastMatchN - backreferences para sa huling regexp regexp match
- $.paramN - command line parameters (tingnan ang commands)
- $.caller - pangalan ng huling automacrong gumalaw
- $.hooksaveN - ang ibig sabihin ng hash key (argumento na may binigay na hook hook)
Nested variables
Pede kang gumamit ng dynamic o nested variables.
- Example:
-
macro foo {
$var = foo
log \$var is "foo"
${$var} = bar
log \$\$var is \$foo is "bar"
}
Flow control and labels
Habang ang lahat ng mga matataas na programming languages na tulad ng "if .. then", "while", "repeat", "for .. next", "do .. while" at ang mga function calls ang kanilang karaniwang denominator "if", "goto" and "while". Kaya ang macro plugin ay sinusoportahan lang ng tatlong keyword na ito. Dahil walang mga (visible) na linyang numero, dapat kang gumamit ng mga labels na kayang hanapin ng isang colon kasunod ng isang pangalan ng label.
- Example for a "while" construct:
-
macro foo {
$i = 0
log the next lines will loop 11 times (0 .. 10)
while ($i <= 10) as exampleloop
log loop $i
$i++
end exampleloop
}
- Example:
-
macro foo {
$i = @random ("1", "2", "3")
if ($i == 1) goto one
if ($i == 2) goto two
log i is three.
goto end
:one
log i is one
goto end
:two
log i is two
:end
}
Paalala: goto labels ay hindi naglalaman ng kahit ano maliban sa numero at mga letra. Halimbawa: warp_to_payon ay hindi nagana dapat ito ay warpToPayon.
Conditions
| Condition
| Ibig Sabihin
|
| <
| mas mababa
|
| <=
| mas mababa o kapareho
|
| ==
| kapareho
|
| >=
| mas mataas o kapareho
|
| >
| mas mataas
|
| !=
| hindi kapareho
|
| ~
| <ang kaliwang parte> ay elemento ng <kanan na parte (comma-separated list)>
|
Special keywords
- @npc (<x> <y>)
- Pumupunta sa npc's id na nasa (<x>,<y>), o sa -1 kapag hindi nakita ang npc.
- @inventory (<item>)
- Hinahanap sa iyong inventory ang <item> at ibalik ang ID o -1 kapag ang item ay hindi nakita.
- @Inventory (<item>)
- Kapareho ng @inventory pero ibabalik ang lahat ng tumutugmang ID na isang comma-separated list o -1 kapag ang item ay di nakita.
- @cart (<item>)
- Hinahanap sa cart ang <item> at ibalik ang ID o -1 kapag di nakita ang item
- @Cart (<item>)
- Kapareho ng @cart pero ibabalik lahat ng tumutugmang IDs tulad ng comma-separated list o -1 kapag ang item ay di nakita
- @storage (<item>)
- Hinahanap sa storage ng <item> at ibalik ang ID o -1 kapag di nakita ang item
- @Storage (<item>)
- Kapareho ng @storage pero ibabalik lahat ng tumutugmang IDs tulad ng comma-separated list o -1 kapag di nakita ang item
- @player (<name>)
- Hinahanap ng isang player at ibalik ang ID o -1 kapag di nakita ang manlalaro
- @vender (<name>)
- Hinahanap ng vender at ibalik ang ID o -1 kapag di nakita ang vender
- @store (<name>)
- Hinahanap ng item sa store at ibalik ang ID o -1 kapag di nakita ang item
- @random ("<argument1>"[, "<argument2>"[, ...]])
- Ibinabalik ng kahit ano ang mga ibinigay na argumento
- @rand (<n>, <m>)
- Ibinabalik sa gitna ng kahit anong numero ng (at kasama ang) <n> at <m>
- @invamount (<item>)
- Ibinabalik ang naibigay na bilang ng <item> sa inventoy
- @cartamount (<item>)
- Ibinabalik ang naibigay na bilang ng <item> sa cart
- @shopamount (<item>)
- Ibinabalik ang naibigay na bilang ng <item> sa shop
- @storamount (<item>)
- Ibinabalik ang naibigay na bilang ng <item> sa storage
- @eval (<argument>)
- I-eevaluate ang naibigay na argumento <argument>
- @arg ("<argument>", <n>)
- Ibinabalik ang ika- <n> ng salita ng <argument> o isang empty string kapag ang word index ay wala sa range.
- @config (<variable>)
- Ibinabalik ang value ng <variable> na nakaspecify sa config.txt
"Chaining" commands
Pede kang magpatakbo ng maraming utos isa pagkatapos ng isa na hindi na hindi na kailangang maghintay para sa openkore’s ai o sa macro_delay o sa kung anuman. Basta’t lagyan ang mg autos na ito ng [ and ].
- Example (na may mga numerong linya):
-
0 macro foo {
1 do whatever
2 log yet another line
3 [
4 do something
5 do something else
6 log foo
7 ]
8 log done
9 }
Ang Line 3 ang nagsisimula ng chaining mode. Ang linyang ito ay walang delay.Ang mga linyang 4, 5, at 6 ay papatakbuhin agad pagkatapos ng previous n autos na walang delay at hindi sila pedeng guluhin. Ang linyang ika-7 ay ititigil ang chaining mode at ang linyang ika-8 ay patatakbuhin ng $macro_delay segundo pagkatapos.
Simpleng Halimbawa ng macro
- Example:
-
macro foo {
$foobegin = $.pos
do move 168 128 prt_in
do talk @npc (172 130)
do store
do store
do buy @store (Silver Arrow) 10000
do move 280 198 prontera
do talk @npc (282 200)
do talk cont
do talk resp 1
do storage add @inventory (Silver Arrow) @eval (@invamount (Silver Arrow) - 1000)
do move $foobegin
}
Pag isinama ang via na utos "macro foo [times]" gagawin ng macro ang mga sumusunod:
- Itatala ang posisyon mo ngayon sa"foobegin"
- Pupunta sa 168 128 prt_in (weapon shop)
- Kakausapin ang npc na nasa 172 130 (weapon dealer)
- i-type ang "store" ng dalawang beses para Makita kung ano ang kanyang ibinebenta
- bibilhin ang 10,000 silver arrows
- Pupunta sa 280 198 prontera (Prontera east gate)
- Kakausapin ang kafra
- Talk cont at talk resp 1 para buksan ang storage
- Ilalagay ang lahat ng 10,000 silver arrow sa storage at magtitira ng 1000 sa inventory at sa wakas
- Babalik kung nasaan ka bago magsimula ang macro
Automacro syntax
- Example:
-
automacro foo {
<condition> bar
<condition> baz, yatta
call macroname
}
automacro mi {
<condition> moo
<condition> xyz
call {
do this
do that
}
}
Ang automacro ay ang macros na maactivate kapag ang mga binigay na kondisyon ay magkakatugma.
- map <mapname>
- Gumagana kapag ikaw ay nasa <mapname>.
- location [not] <mapname [<x1> <y1> [<x2> <y2>]] [, ...]
- Gumagana kapag ikaw ay [not] sa ibinigay na lokasyon.
- Kapag ang <x1> <y1> o <x2> <y2> ay ibinigay ito ay gagana kapag ikaw ay [not] nasa <mapname>.
- Kapag <x2> <y2> ay hindi naibigay ito ay gagana [not] sa <mapname> na nasa (<x1>,<x2>).
- Kapag parehong naibigay ang <x1> <y1> at <x2> <y2> ito ay gagana kapag ikaw ay nasa <mapname> sa pagitan ng <x1>, <y1> (upper left) at <x2>, <y2> (lower right, kung nasan <x1> < <x2> ang <y1> > <y2>
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon :
-
- Example:
- location geffen, prontera 123 234
- Gumagana kapag ikaw ay nasa geffen o nasa prontera na nasa koordinasyon sa 123 234.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon :
-
- Example:
- location not geffen
location not prontera
- Gumagana kapag ikaw ay wala sa Geffen o wala sa Prontera .
- mapchange (<mapname>|any) [, ...]
- Gumagana kapag magpapalit ng mapa sa <mapname>. Kapag ang argumento ay kahit ano ito ay gumagana sa kahit anong pagpapalit ng mapa.
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon.
- hp <condition> <amount>[%]
- Gumagana kapag ang iyong hp ay tumutugma sa <condition> <amount> (absolute value) o <condition> <amount> persyento (relative value).
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- sp <condition> <amount>[%]
- Gumagana kapag ang iyong sp ay tumutugma sa <condition> <amount> (absolute value) o <condition> <amount> persyento (relative value).
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- spirit <condition> <amount>
- Gumagana kapag ang iyong sp ay tumutugma sa <condition> <amount>.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- weight <condition> <amount>[%]
- Gumagana kapag ang iyong timbang ay tumutugma sa <condition> <amount> (absolute value) o <condition> <amount> persyento (relative value).
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- cartweight <condition> <amount>[%]
- Gumagana kapag ang timbang ng iyong cart ay tumutugma sa <condition> <amount> (absolute value) o <condition> <amount> persyento (relative value).
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- zeny <condition> <amount>
- Gumagana kapag ang bilang ng iyong zeny ay tumutugma sa <condition> <amount>.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- soldout <condition> <slots>
- Gumagana kapag ang iyong mga naibentang itmes sa iyong shop ay tumutugma sa <condition> <slots>.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- status [not] <status> [, ...]
- Gumagana kapag ang status mo ay [not] <status>.
- Kasama din dito ang mga status na “dead” at “muted”.
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- inventory "<item>" <condition> <amount> [, ...]
- Gumagana kapag ikaw ay merong <condition> <amount> na <item> sa iyong inventory.
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- storage "<item>" <condition> <amount> [, ...]
- Gumagana kapag ikaw ay merong <condition> <amount> na <item> sa iyong storage.
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- cart "<item>" <condition> <amount> [, ...]
- Gumagana kapag ikaw ay merong <condition> <amount> na <item> sa iyong cart.
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- shop "<item>" <condition> <amount> [, ...]
- Gumagana kapag ikaw ay merong <condition> <amount> na <item> sa iyong shop.
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- base <condition> <level>
- Gumagana kapag ang iyong base level ay tumutugma sa <condition> <level>.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- job <condition> <level>
- Gumagana kapag ang iyong job level ay tumutugma sa <condition> <level>.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- class <job>
- Gumagana kapag ang iyong jobclass ay <job>
- spell <spell> [, ...]
- Gumagana kapag my nagcast ng <spell> sayo o sa lugar na nasasakupan nito.
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon.
- monster <monstername> [, ...]
- Gumagana kapag ang <monstername> ay malapit sayo.
- Kapag gumana ang mga espesyal na variables na $.lastMonster at $.lastMonsterPos ay na-iiseset.
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- notMonster <monstername> [, ...]
- Gumagana kapag ang monster na nagpakita ay wala sa listahan.
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon.
- aggressives <condition> <number>
- gumagana kapag ang bilang ng mga agresibo ay <number> .
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- player "<playername>" [, <distance> ]
- gumagana kapag ang <playername> ay nasa screen o hindi lalampas sa layo ng <distance>.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- equipped [<slot>] (<item>|none) [, ...]
- gumagana kapag ang <item> o walang naka-equipped [sa slot na <slot>]
- Ang mga Slots ay ang mga topHead, midHead, lowHead, leftHand, rightHand, robe, armor, shoes, leftAccessory, rightAccessory at arrow.
- Ang mga argumento na napaghihiwalay ng kuwit ay tinatanggap bilang isang OR na kondisyon.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- var <variable> (unset|<condition> <value>)
- gumagana kapag ang <variable> ay hindi nakaset o tumutugma sa <condition> <value>.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- varvar <nested variable> (unset|<condition> <value>)
- gumagana kapag ang <nested variable> ay hindi nakaset o tumutugma sa <condition> <value>.
- Ang mga multiple lines ay tinatanggap bilang isang AND na kondisyon.
- console ("<text>"|/<regexp>/[i])
- gumagana kapag ang <text> ay natanggap sa console o ang text na natanggap ay tumutugma sa <regexp>.
- Ang ibig sabihin ng i switch ay ang regexp ay case insensitive.
- Isineset ang $.lastLogMsg.
- pm ("<text>"|/<regexp>/[i]) [, <player>]
- gumagana kapag ang <text> ay natanggap sa pamamagitan ng pm [galing sa <player>] o ang text na natanggap ay tumutugma sa <regexp>.
- Ang ibig sabihin ng i switch ay ang regexp ay case insensitive.
- Isineset ang $.lastpm and $.lastpmMsg.
- pubm ("<text>"|/<regexp>/[i]) [, <distance>]
- gumagana kapag ang isang publikong mensahe [sa loob ng distansya ng <distance>] ay natanggap at ang <text> ay tumutugma sa <regexp>
- Ang ibig sabihin ng i switch ay ang regexp ay case insensitive.
- Isineset ang $.lastpub and $.lastpubMsg.
- party ("<text>"|/<regexp>/[i])
- gumagana kapag ang <text> ay natanggap sa pamamagitan ng party chat o ang text na natanggap ay tumutugma sa <regexp>.
- Ang ibig sabihin ng i switch ay ang regexp ay case insensitive.
- Isineset $.lastparty and $.lastpartyMsg.
- guild ("<text>"|/<regexp>/[i])
- Gumagana kapag ang <text> ay natanggap sa pamamagitan ng guildchat o ang text na natanggap ay tumutugma sa <regexp>.
- Ang ibig sabihin ng i switch ay ang regexp ay case insensitive.
- Isineset $.lastguild and $.lastguildMsg.
- hook <hookname>
- Gumagana kapag tinatawag ng openkore ang <hookname>.
- saveN <hash key>
- (gamitin kasama ng hook)
- Isinasave ang katumbas ng <hash key> sa variable na .hooksave1 hanggang sa .hooksaveN
- run-once (0|1)
- Kapag naiset sa 1 ang automacro ay mawawalang bias pagkatapos gumana.
- Gamitin ang command na release para paganahin ulit ang automacrong ito pag tumugma ulit ang mga kondisyon.
- overrideAI (0|1)
- Kapg naiset sa 1 i-ooveride nito ang Openkore’s AI. Ibig sabihin nito ay hindi ito titigil kapag ang AI ay nasa "move" o "status dead".
- delay <n>
- Maghihintay ng <n> segundo bago tawagin ang dapat tawagin na macro.
- timeout <n>
- Maghihintay ulit ng <n> segundo bago ulit gumana ang automacrong ito.
- macro_delay <n>
- I-ooveride ang global macro_delay setting para sa tinawag na macro.
- priority <num>
- Pipili kung anong automacros ang dapat i-check bago ang iba. Ang mas maliit na <num> ay ang pinakamabilis na automacro para macheck. Kapag ang priority ay hindi naibigay, ang priority ay dapat ng isang zero (zero: i-check muna).
- exclusive (0|1)
- Ang isang exclusive na automacro ay hindi maaapektuhan ng ibang automacro.
- Sa macro na 1.3.0, ang tumatakbong macros ay pwedeng maapektuhan ng automacro. Para maiwasan ang ganong pagkakataon i-set ang option na ito o gumamit ng -exclusive
- set <variable> <value>
- Isineset ang variable <variable> sa <value>. Pede kang magkaroon ng maraming set ng mga linya sa bawat automacro.
- call <name>
- Tatawagin ang macro <name> kapag gumana ang automacro.
- call {
- <instructions>
- }
- Patatakbuhin ang <instructions> kapag ang automacro ay gumana.
- orphan <method>
- Iseset ang method na kung papaano gagana ito kasama ang orphaned macros.
Halimbawa ng isang Automacro
- Example:
-
automacro checkshop {
location prontera
soldout >= 3
delay 60
call reopenshop
}
macro reopenshop {
do closeshop
}
Ang automacrong ito ay gagana kapag ikaw ay may isang shop sa prontera at kapag ang ikaw ay merong tatlo mas madami pang items na naibenta. Kapag napagana, ito ay maghihintay ng isang minuto tapos ay tatawagin naman nito ang macro “reopenshop” na nagpasara ng iyong shop. Kapag ikaw ay may shopAuto_open o autoshop ay nakaset sa 1, ito ay mabubuksan ulit pagkatapos ng ilang sandali.
Comments
Tumatanggap ang macro files ng comments, i.e. Mga linya na hindi pinapansin ng macro. Ang mga linyang nagsisimula sa # ay tatanggapin na isang comment.
- Example:
-
# ito ay isang comment na linya
Orphaned macros
Ito ay mamaring mangyari – halimbawa na lamang ang paggamit ng ai clear habang ang isang macro ay tumatakbo - ang macro nayan ay magiging isang orphaned. Ibig sabihi nito na ang macro object ay na-eexists subalit hindi ito maaaring ituloy dahil kailangan nito ang AI queue para macontain ang entry na “macro” ( or “deal”). Kapag nalinis ang AI queue, ang entry ng “macro” ay mawawala.
Bago ang 1.0.2 ang problemang ito ay malulutas lang kung i-tatype mo manually ang “macro stop”. Ang 1.0.2 pataas ay pede kang pumili kung anong mechanism ang dapat gamitin para mabigyan ng lunas ang isyu na ito. Mayroon itong tatlong method:
| terminate
| ipanapatigil ang macro (kapareho ng macro stop)
|
| reregister
| re-registers to AI queue, i-ooveride ang ibang entries.
Ibig sabihin ito na pipilitin nitong itigil ang gumagalaw na macro.
|
| reregister_safe
| i-reregister sa AI queue kapag ang AI ay na-idle.
Ibig sabihin nito na itutuloy nito ang macro kapag tapos na ang ibang gawain.
|
Ngayon, natapos mo nang basahin ang buong documentation..
.. i-dagdag mo ang mga sumusunod sa config.txt:
macro_readmanual red/chili
o ang plugin ay ma-uunload.
Debugging
Ang debugging ay ginagawa ng cvsdebug.pm package (included).
Magdagdag ng macro_debug <level(s)> sa iyong config.txt. Ang mga debug levels ay:
- variable_trace
- tracks variables
- command_preparsed
- unparsed command line
- command_parsed
- parsed command line
- parser_steps
- parser steps
- function_call_macro
- macro functions (low traffic)
- function_call_auto
- automacro functions (high traffic)
- automacro_checks
- automacro checks (high traffic)
- developers
- debugging messages (only?) magagamit ng mg developers
- full
- full debug, lahat ng levels.
- none
- no debug messages at all.
Ang debug levels ay pinaghihiwalay sa pamamagitan ng mga pipes |
- Example:
macro_debug variable_trace|parser_steps
Todos/Known bugs/Known limitations
- automacro check console hindi nito pinapansin ang mga sumusunod na domains: macro and cvsdebug.
- Huwag gumamit ng closing brackets ")" a mga keyword na argumento maliban na lang kung ito ay ang bracket na magtatapos ng argumento. Halimbawa: @random ("foo", "bar", "@eval (4 + 5)", "yatta") ay pinapayagan, @random ("foo", "bar", ":-)", "yatta") ay hindi pinapayagan.
- Ang macro 1.3.x ay kailangan ang 1.9.1
Kung merong mang kahit anong bugs, pakiusap na ireport ito sa akin. Gamitin ito sa iyong buong pagsisikap, Hindi ako magbibigay na kahit anong guarantee na ang script na ito ay gumagana tulad ng nasabi. Kapag ang halimbawa sa taas ay bibili ng 10.000 main gauche, Hindi ako responsible dito (hindi ito mangyayari, pero dapat ikaw ay nasa ligtas na paraan..^^). Ayan na ang lahat. Have Fun.
Download
Development version (SVN)
Ang development version ay makikita sa OpenKore SVN repository.
Ang mga gamit ang window ay dapat itong basahin the SVN guide.
Linux users ay kayang patakbuhin ang mga sumusunod na utos para makuha ang development version sa SVN:
svn co https://svn.sourceforge.net/svnroot/openkore/macro/trunk/
Gamitin ang https://svn.sourceforge.net/svnroot/openkore/macro/tags/ to checkout older releases.
Ang mga maaring gamitin sa kasalukuyan:
Extras
Kasama ng SVN version ang mga sumusunod na files:
recorder.pl
Isang plugin para sa openkore na maaaring gamitin para makapgrecord ng macros (only commandline).
mconv.pl
Isang (hindi pa natatapos) program para maconvert ang 0.8.x at 0.9.x macros sa 1.x.x.
Mga katanungang laging tinatanong
Pag sinisimukan na ang openkore sinasabi sa akin na basahin ang documentation, tapos bigla itong ma-uunload!
Kung ganon, dapat mong basahin ang documentation. Di ko ibibigay sa iyo ang sagot.
Tulong! Na-install ko na ang plugin pero ayaw magpakita ng mga macros !
Sigaraduhing nakasaved ang mga macros sa macros.txt. Minsan itinatago ng Windows Explorer ang mga kilalang extensions tulad ng txt kaya icheck baka hindi mo naipangalan ang file na iyon na macros.txt.txt.
Tulong! Binibigya ako ng Openkore ng mga wirdong perl errors at sinasabi sa akin na "a plugin failed to load"!
Huwag Kailanman i-save ang iyong macros/automaros sa isang .pl file sa plugins folder. Ilagay ang mga iyon sa file na may pangalan na macros.txt.
Meron akong mga macros na gumagana naman ng mabuti sa 0.9.x, pero ngayon nakakakuha ako ng syntax errors.
Ang syntax ay nabago sa macro 1.0.0. Basahin ang documentation para mapag-aralan mo ang bagong syntax. Halos lahat ng 0.8.x at 0.9.x na macros ay pedeng baguhin gamit ang mconv.pl utility.
Whaaaw! Nakakuha ako ng error "Can't locate encoding.pm"!
- Kung gumagamit ka ng OpenKore, i-upgrade ito sa OpenKore 1.9.1 o mas mataas pa.
- Kung gumagamit ka ng Visual Kore, i-upgrade ito sa VisualKore 1.9.2 o mas mataas pa.
OpenKore/VisualKore 1.6.x ay hindi na sinusuportahan simula pa nung bersyon na 1.3.0. ng macro
San ako makakakuha ng macro na maaring magpasok ng [insert feature here]?
Maghanap sa forum. Kung hindi ka makakita ng macro na kinakailangan mo, magsulat ka. Walang gatasan.
Mayroon akong automacro na nagchcheck para sa bilang ng isang item sa aking inventory / cart na mas mababa sa ibinigay na value o kapareho ng zero (e.g. inventory "red potion" <= 30) pero gumagana din ang automacrona iyon tuwing map change. Bakit ganon at ano dapat ang aking gawin?
Kapag ikaw ay nagpapalit ng map, ang buong item mo ay nawawala. Nangyayari din iyon sa official client. para maiwasan ito, magdagdag ng karagdagang check para sa item na lagi mong dala-dala, tulad ng inventory "Jellopy" > 0
Forum discussion
para sa diskusyon at suporta, pumunta ka sa macro plugin's forum.
License
Ang macro plugin ay nakalisensya sa ilalim ng GNU General Public License v2.
Author
Isinulat nina arachno <arachnophobia at users dot sourceforge dot net>
Isang marangal na pasasalamat kay pachu para sa pagpapalipat ng macro original homepage sa wiki page.