Support OpenKore:
Learn about
the Fund Pool

Macro Plugin Fil

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.

Contents


Ang Pag-iinstall

Installation in OpenKore

  1. I-Download ang macro plugin.
  2. Pumunta ka sa iyong openkore folder (ang folder na naglalaman ng file na openkore.pl).
  3. Sa folder na iyon, gumawa ka ng subfolder na plugins, kung wala pa.
  4. 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.
  5. 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

  1. I-Download ang macro plugin.
  2. 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
  3. Pumunta ka sa the VisualKore Profiles dialog. Pumili ka ng profile at i-click ang "Edit Profile".
  4. 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

Get Firefox with Google Toolbar for better browsing
Download macro plugin version 1.3.6 for OpenKore/VisualKore 2.0.1 and up ONLY
Download macro plugin version 1.2.0 for OpenKore/VisualKore up to 1.6.9

Tingnan din ang this forum post para sa isang mahalagang impormasyon sa pag-iinstall ng plugins.

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.