|
|
Line 1: |
Line 1: |
− | <onlyinclude>{{{{{format|Function2}}}
| + | == Summary == |
− | |name=run_choice
| + | Please rename this plist to "Ash.plist" and place in your ~/Library/Application Support/BBEdit/Language Modules/ folder. |
− | |function1.return_type=buffer
| |
− | |function1.description=Run the current choice adventure by selecting a choice number.
| |
− | |function1.param1=choice
| |
− | |function1.param1.type=int
| |
− | |function1.param1.description=the number of the choice option you wish to take. Use <code>-1</code> to automate the rest of the choice using the current [[Choice Adventures|choice adventure preferences]].
| |
− | |function1.param2=automate_fights
| |
− | |function1.param2.type=boolean
| |
− | |function1.param2.optional=yes
| |
− | |function1.param2.default=true
| |
− | |function1.param2.description=If <code>true</code> and the choice resunts in a combat, KoLmafia will automate the fight. If <code>false</code>, KoLmafia will stop when the fight begins.
| |
− | |function2.return_type=buffer
| |
− | |function2.description=Run the current choice adventure by selecting a choice number and specifying additional URL parameters.
| |
− | |function2.param1=choice
| |
− | |function2.param1.type=int
| |
− | |function2.param1.description=the number of the choice option you wish to take. Use <code>-1</code> to automate the rest of the choice using the current [[Choice Adventures|choice adventure preferences]].
| |
− | |function2.param2=url_params
| |
− | |function2.param2.type=string
| |
− | |function2.param2.description=URL parameter string to append when submitting the choice request.
| |
− | |description=
| |
− | <p>Proceeds to run a choice by selecting the provided choice number. If the provided number is <code>-1</code>, KoLmafia will use your current [[Choice Adventures|choice adventure preferences]]. This function returns the HTML of the choice result page (not just what is displayed, but all markup). This is most commonly used to finish up choices started via {{f|visit_url}}.</p>
| |
− | | |
− | <p>The second form (with the {{pspan|url_params}} parameter) can be used to automate fights that require additional URL parameters. For example, if you are in choice adventure #1182 and call <kbd>run_choice(1, "piece=1936")</kbd>, KoLmafia will send a request to the server using <samp>choice.php?option=1&pwd=<pwd_hash>&whichchoice=1182&piece=1936</samp>. You can specify multiple parameters separated by ampersands (<code>&</code>).</p>
| |
− | | |
− | <p>A handy use for this function is to finish up choices that were started in the relay browser, or were interrupted (i.e. mafia aborted for you to manually make a choice selection). Typing <kbd>ashq run_choice(choice)</kbd> into the gCLI will finish up the choice for you using your selected choice. Note that <code>ashq</code> is necessary rather than <code>ash</code> to avoid spewing the entire choice results page into the gCLI.</p>
| |
− | | |
− | <p>The second form was added in [https://kolmafia.us/threads/19537-law-of-averages-is-reusable-add-ability-to-specify-extra-fields-when-automati.24204/ r19537].</p>
| |
− | |code1={{CodeSample
| |
− | |title=Code Samples
| |
− | |description=This is a personalized version of {{f|adv1}} that is capable of returning information about which adventure is encountered so that you can look for a specific choice adventure. If a choice is encountered, it selects the appropriate choice per your settings for that choice adventure, and assigns the results to the <code>page_text</code> variable. (Effectively the same as using <code>run_choice(-1)</code>). If a combat is encountered instead of a choice adventure, {{f|run_combat}} is used.
| |
− | |code=
| |
− | {{{!}} class="wikitable"
| |
− | ! style="width: 50%" {{!}} ASH
| |
− | ! style="width: 50%" {{!}} JavaScript
| |
− | {{!}}- style="vertical-align: top"
| |
− | {{!}}
| |
− | <syntaxhighlight lang="d" line highlight="14">
| |
− | int run_adv( location place ) {
| |
− | string page_text = to_url( place ).visit_url();
| |
− | string choiceAdventure = "-1";
| |
− | matcher m_choice = create_matcher( "whichchoice value=(\\d+)", page_text );
| |
− | while ( page_text.contains_text( "choice.php" ) ) {
| |
− | m_choice.reset( page_text );
| |
− | m_choice.find();
| |
− | choiceAdventure = m_choice.group( 1 );
| |
− | string choice_num = get_property( "choiceAdventure" + choiceAdventure );
| |
− | | |
− | if ( choice_num == "0" ) abort( "Manual control for " + choiceAdventure );
| |
− | if ( choice_num == "" ) abort( "Unsupported choice adventure!" );
| |
− | | |
− | page_text = run_choice( choice_num );
| |
− | }
| |
− | if ( page_text.contains_text( "Combat" ) )
| |
− | run_combat();
| |
− | return choiceAdventure.to_int();
| |
− | }
| |
− | </syntaxhighlight>
| |
− | {{!}}
| |
− | <syntaxhighlight lang="js" line highlight="14">
| |
− | const {abort, getProperty, toUrl, visitUrl} = require("kolmafia");
| |
− | | |
− | function runAdv(place) {
| |
− | const pageText = visitUrl(toUrl(place));
| |
− | let choiceAdventure = -1;
| |
− | while (pageText.includes("choice.php")) {
| |
− | let match = pageText.match(/whichchoice value=(\d+)/);
| |
− | choiceAdventure = parseInt(match[1]);
| |
− | let choiceNum = Number(getProperty("choiceAdventure" + choiceAdventure));
| |
− | | |
− | if (choiceNum === 0) abort("Manual control for " + choiceAdventure);
| |
− | if (Number.isNaN(choiceNum)) abort("Unsupported choice adventure!");
| |
− | | |
− | pageText = runChoice(choiceNum);
| |
− | }
| |
− | if (pageText.includes("Combat"))
| |
− | runCombat();
| |
− | return choiceAdventure;
| |
− | }
| |
− | </syntaxhighlight>
| |
− | {{!}}}
| |
− | |moreinfo=
| |
− | }}
| |
− | |see_also={{SeeAlso|adventure|adv1|visit_url|run_combat|run_turn}}
| |
− | |cli_equiv=The CLI command <kbd>choice</kbd> works similarly.
| |
− | |more_info=
| |
− | |special=
| |
− | |{{{1|}}}
| |
− | }}</onlyinclude>
| |
− | [[Category:Adventuring]]
| |