Input
From Hercules Wiki
Syntax
- input <variable>[, <min value>[, <max value>]];
- input(<variable>[, <min value>[, <max value>]]);
Description
This command will make an input box pop up on the client connected to the invoking character, to allow entering of a string or digits only, depending on variable's type.
Normally you cannot input a negative number with this command, to prevent exploits in badly written scripts, which would let people, for example, put negative amounts of Zeny into a bank script and receive free Zeny as result. The default values for min value and max value are specified as input_min_value and input_max_value respectively in conf/script.conf.
The command has two additional optional arguments and a return value to safely override this behavior, when required. Depending on the variable type used, the min, max, and return value have different meanings:
- For strings min and max specify the minimum and maximum string length. The return value is -1, if the string was too short, 1, if it was too long, otherwise 0.
- For numbers min and max specify the minimum and maximum value, the variable is allowed to be set to. If the entered value is outside the specified range [min,max], it is capped to the nearest valid value. The return value is -1 for too small values, 1 for too large values, otherwise 0.
Examples
mes "[Woman]"; mes "Try and guess the number I am thinking of."; mes "The number will be between 1 and 10."; next; set .@number, rand(1, 10); while(input(.@guess, 1, 10)) { mes "[Woman]"; mes "Didn't you listen before? The number is between 1 and 10."; next; } mes "[Woman]"; if(.@guess==.@number) { mes "Well done, that was the number I was thinking of."; } else { mes "Sorry, that wasn't the number I was thinking of."; } close;
mes "[Man]"; mes "You need a password to pass."; next; input .@pwd$; if(.@pwd$!="s3cr3t") { mes "[Man]"; mes "Get out."; close; }