Disable

From Kolmafia
Revision as of 23:34, 10 March 2010 by imported>Grotfang
Jump to navigation Jump to search

Function Syntax

void disable(string func )

  • func is the name of the function you wish to disable.

This function allows you to disable commands and/or functions by name. String func specifies the name of a CLI command or ASH function that you do not wish to be carried out. Note these include custom ASH functions (that you name yourself), but not aliases.

Mafia has an internal array of function names which are disabled. At the start of each session, this array starts empty. Disable adds names to this array and mafia will not allow functions to be called that are named after any on the disabled list (with the exception of disable and enable). This is useful for debugging scripts, as you can quickly disable functions from the top of a script without digging through the code. In addition, when a disabled function is called, mafia will print a line informing you of this fact, while not acting on it.

Important considerations:

  1. Mafia cannot differentiate between scripts that call functions of the same name. If function "foo" is disabled from script one, it will still be disabled when you run script two, unless you enable "foo" or restart mafia.
  2. Remember that CLI commands will be disabled if they have the same name (or can be disabled deliberately with this function).
  3. If a disabled function is incorporated into a condition (eg. "if(disabled_function())" ), then mafia will not just skip the entire conditional. If an else statement is present, the condition is treated as false and the else code will be performed.
  4. Using "all" as the string parameter will disable all ASH functions including enable. This will require a restart of KoLmafia to resolve, so use with care. It also disables the usual logout function, so will require exiting mafia by clicking "X".
  5. Despite "all" working in the manner specified above, disable() and enable() cannot be disabled using disable() when specified individually. The only way to disable enable() is to use "disable("all")".

Code Samples

This mini scriptlet has a bug in it that makes it loop. I want to test what is making the script run oddly, but can't see immediately where the looping conditional is. I can use disable to knock out functions sequentially to test where the fault arises.

disable("adventure_me");
void adventure_me(){
   int my_adv = my_adventures();
   while(my_adv > 0){
      adventure(1 , $location[giant's castle]);
   }
   return;
}

void main(){
   adventure_me();
   print("Finish");
}

See Also

enable()