- Removed a duplicate entry in item_trade.txt (bugreport:2720)
- Documented more script commands and fixed some typos. (bugreport:1554, bugreport:2619, bugreport:2692, bugreport:3034) git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13732 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
09914e3ce6
commit
8c09676863
@ -453,9 +453,6 @@
|
|||||||
7875,83,100 // Pirate_Box
|
7875,83,100 // Pirate_Box
|
||||||
5305,91,100 // Pirate_Dagger
|
5305,91,100 // Pirate_Dagger
|
||||||
|
|
||||||
// Battle Badge
|
|
||||||
7773,115,100 // War_Badge
|
|
||||||
|
|
||||||
// Moscovia Quest Items -----
|
// Moscovia Quest Items -----
|
||||||
2707,91,100 // Gusli
|
2707,91,100 // Gusli
|
||||||
7761,115,100 // Magic_Gourd_Bottle
|
7761,115,100 // Magic_Gourd_Bottle
|
||||||
|
@ -1787,6 +1787,92 @@ optimisation.
|
|||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
|
*while (<condition>) <statement>;
|
||||||
|
|
||||||
|
This is probably the simplest and most frequently used loop structure. The 'while'
|
||||||
|
statement can be interpreted as "while <condition> is true, perform <statement>".
|
||||||
|
It is a pretest loop, meaning the conditional expression is tested before any of the
|
||||||
|
statements in the body of the loop are performed. If the condition evaluates to
|
||||||
|
false, the statement(s) in the body of the loop is/are never executed. If the
|
||||||
|
condition evaluates to true, the statement(s) are executed, then control transfers
|
||||||
|
back to the conditional expression, which is reevaluated and the cycle continues.
|
||||||
|
|
||||||
|
Multiple statements can be grouped with { }, curly braces, just like with the 'if' statement.
|
||||||
|
|
||||||
|
Example 1:
|
||||||
|
while (switch(select("Yes:No") == 2 ))
|
||||||
|
mes "You picked no.";
|
||||||
|
|
||||||
|
Example 2: multiple statements
|
||||||
|
while (switch(select("Yes:No") == 2 )) {
|
||||||
|
mes "Why did you pick no?";
|
||||||
|
mes "You should pick yes instead!";
|
||||||
|
}
|
||||||
|
|
||||||
|
Example 3: counter-controlled loop
|
||||||
|
set .@i, 1;
|
||||||
|
while (.@i <= 5) {
|
||||||
|
mes "This line will print 5 times.";
|
||||||
|
set .@i, .@i +1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Example 4: sentinel-controlled loop
|
||||||
|
mes "Input 0 to stop";
|
||||||
|
input .@num;
|
||||||
|
while (.@num != 0) {
|
||||||
|
mes "You entered " + .@num;
|
||||||
|
input .@num;
|
||||||
|
}
|
||||||
|
close;
|
||||||
|
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
*for (<variable initialization>; <condition>; <variable update>) <statement>;
|
||||||
|
|
||||||
|
Another pretest looping structure is the 'for' statement. It is considered a
|
||||||
|
specialized form of the 'while' statement, and is usually associated with counter-
|
||||||
|
controlled loops. Here are the steps of the 'for' statement: the initialize
|
||||||
|
statement is executed first and only once. The condition test is performed.
|
||||||
|
When the condition evaluates to false, the rest of the for statement is skipped.
|
||||||
|
When the condition evaluates to true, the body of the loop is executed, then the
|
||||||
|
update statement is executed (this usually involves incrementing a variable).
|
||||||
|
Then the condition is reevaluated and the cycle continues.
|
||||||
|
|
||||||
|
Example 1:
|
||||||
|
for( set .@i, 1; .@i <= 5; set .@i, .@i +1 )
|
||||||
|
mes "This line will print 5 times.";
|
||||||
|
|
||||||
|
Example 2:
|
||||||
|
mes "This will print the numbers 1 - 5.";
|
||||||
|
for( set .@i, 1; .@i <= 5; set .@i, .@i +1 )
|
||||||
|
mes .@i;
|
||||||
|
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
*do { <statement>; } while (<condition>);
|
||||||
|
|
||||||
|
The 'do...while' is the only posttest loop structure available in this script
|
||||||
|
language. With a posttest, the statements are executed once before the condition
|
||||||
|
is tested. When the condition is true, the statement(s) are repeated. When the
|
||||||
|
condition is false, control is transferred to the statement following the
|
||||||
|
'do...while' loop expression.
|
||||||
|
|
||||||
|
Example 1: sentinel-controlled loop
|
||||||
|
mes "This menu will keep appearing until you pick Cancel";
|
||||||
|
do {
|
||||||
|
set .@menu, select("One:Two:Three:Cancel");
|
||||||
|
} while (.@menu != 4);
|
||||||
|
|
||||||
|
Example 2: counter-controlled loop
|
||||||
|
mes "This will countdown from 10 to 1.";
|
||||||
|
set .@i, 10;
|
||||||
|
do {
|
||||||
|
mes .@i;
|
||||||
|
set .@i, .@i - 1;
|
||||||
|
} while (.@i > 0);
|
||||||
|
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
*setarray <array name>[<first value>],<value>{,<value>...<value>};
|
*setarray <array name>[<first value>],<value>{,<value>...<value>};
|
||||||
|
|
||||||
This command will allow you to quickly fill up an array in one go. Check the
|
This command will allow you to quickly fill up an array in one go. Check the
|
||||||
@ -2012,7 +2098,7 @@ if( getcharid(2) == 0 ) mes "Only members of a guild are allowed here!";
|
|||||||
*getmotherid()
|
*getmotherid()
|
||||||
*getfatherid()
|
*getfatherid()
|
||||||
|
|
||||||
These functions return the characters (shild/mother/father) ID
|
These functions return the characters (child/mother/father) ID
|
||||||
|
|
||||||
if (getmotherid()) mes "Oh... I know your mother's ID:"+getmotherid();
|
if (getmotherid()) mes "Oh... I know your mother's ID:"+getmotherid();
|
||||||
|
|
||||||
@ -2234,13 +2320,13 @@ the players would normally see on screen.)
|
|||||||
|
|
||||||
This function will search the invoking character's inventory for any broken
|
This function will search the invoking character's inventory for any broken
|
||||||
items, and will return their item ID numbers. Since the character may have
|
items, and will return their item ID numbers. Since the character may have
|
||||||
several broken items, 0 given as an argument will return the first one found, 1
|
several broken items, 1 given as an argument will return the first one found, 2
|
||||||
will return the second one, etc. Will return 0 if no such item is found.
|
will return the second one, etc. Will return 0 if no such item is found.
|
||||||
|
|
||||||
// Let's see if they have anything broken:
|
// Let's see if they have anything broken:
|
||||||
if (getbrokenid(0)==0) goto Skip;
|
if (getbrokenid(1)==0) goto Skip;
|
||||||
// They do, so let's print the name of the first broken item:
|
// They do, so let's print the name of the first broken item:
|
||||||
mes "Oh, I see you have a broken "+getitemname(getbrokenid(0))+" here!";
|
mes "Oh, I see you have a broken "+getitemname(getbrokenid(1))+" here!";
|
||||||
Skip:
|
Skip:
|
||||||
mes "You don't have anything broken, quit bothering me.";
|
mes "You don't have anything broken, quit bothering me.";
|
||||||
|
|
||||||
@ -2485,7 +2571,7 @@ when you want to check item cards or if it's signed. Useful for such quests as
|
|||||||
"Sign this refined item with players name" etc;
|
"Sign this refined item with players name" etc;
|
||||||
Hat[0] +4 -> Player's Hat[0] +4
|
Hat[0] +4 -> Player's Hat[0] +4
|
||||||
|
|
||||||
--------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
*getitemslots (<item id>);
|
*getitemslots (<item id>);
|
||||||
|
|
||||||
@ -2496,7 +2582,7 @@ Example(s):
|
|||||||
//@slots now has the amount of slots of the item with ID 1205.
|
//@slots now has the amount of slots of the item with ID 1205.
|
||||||
set @slots, getItemSlots(1205);
|
set @slots, getItemSlots(1205);
|
||||||
|
|
||||||
--------------------------------------
|
---------------------------------------
|
||||||
//
|
//
|
||||||
2,1.- End of item-related commands.
|
2,1.- End of item-related commands.
|
||||||
//
|
//
|
||||||
@ -2988,7 +3074,7 @@ deal with timers as there's no guarantee the player will still be logged on
|
|||||||
when the timer triggers. Note that the ID of a player is actually their
|
when the timer triggers. Note that the ID of a player is actually their
|
||||||
account ID.
|
account ID.
|
||||||
|
|
||||||
-------------------------
|
---------------------------------------
|
||||||
|
|
||||||
*isloggedin(<account id>{,<char id>});
|
*isloggedin(<account id>{,<char id>});
|
||||||
|
|
||||||
@ -3598,19 +3684,13 @@ do, but this will only happen in a later SVN revision.
|
|||||||
|
|
||||||
This command will change the gender for the attached character's account. If it
|
This command will change the gender for the attached character's account. If it
|
||||||
was male, it will become female, if it was female, it will become male. The
|
was male, it will become female, if it was female, it will become male. The
|
||||||
change will be written to the character server, but there is no way to send this
|
change will be written to the character server, the player will receive the
|
||||||
information to the client, so the player will continue to see their character as
|
message: "Need disconnection to perform change-sex request..." and the player
|
||||||
the gender it previously was. What the other players will see before the
|
will be immediately kicked to the login screen. When they log back in, they will
|
||||||
relogin is not clear.
|
be the opposite sex.
|
||||||
|
|
||||||
If the character currently connected when this command was invoked was a
|
If there are any Dancer/Gypsy or Bard/Clown characters on the account,
|
||||||
Dancer/Gypsy or Bard/Clown, they will become a Swordman upon 'changesex'.
|
they will also have their skills reset upon 'changesex'.
|
||||||
Whatever happens to their skills is not clear. Whatever happens if another
|
|
||||||
character on the same account was a gender-specific class is not clear either,
|
|
||||||
but it's likely that the client will have serious issues with that, since no
|
|
||||||
other characters on the same account will get altered.
|
|
||||||
|
|
||||||
There's good reasons to be very careful when using this command.
|
|
||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
@ -3637,14 +3717,16 @@ adjusts the gained value. If you want to bypass this, use the 'set' method.
|
|||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
*setlook <look type>,<look value>;
|
*setlook <look type>,<look value>;
|
||||||
|
*changelook <look type>,<look value>;
|
||||||
|
|
||||||
This command will alter the look data for the invoking character. It is used
|
'setlook' will alter the look data for the invoking character. It is used
|
||||||
mainly for changing the palette used on hair and clothes, you specify which look
|
mainly for changing the palette used on hair and clothes: you specify which look
|
||||||
type you want to change, then the palette you want to use. Make sure you specify
|
type you want to change, then the palette you want to use. Make sure you specify
|
||||||
a palette number that exists/is usable by the client you use.
|
a palette number that exists/is usable by the client you use.
|
||||||
|
'changelook' works the same, but is only client side (it doesn't save the look value).
|
||||||
|
|
||||||
// This will change your hair(6), so that it uses palette 8, what ever your
|
// This will change your hair(6), so that it uses palette 8, what ever your
|
||||||
// palette 8 is your hair will use that colour
|
// palette 8 is, your hair will use that colour
|
||||||
|
|
||||||
setlook 6,8;
|
setlook 6,8;
|
||||||
|
|
||||||
@ -3862,6 +3944,20 @@ Example:
|
|||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
|
*rentitem <item id>,<time>;
|
||||||
|
*rentitem "<item name>",<time>;
|
||||||
|
|
||||||
|
Creates a rental item in the attached character's inventory. The item will expire
|
||||||
|
in <time> seconds and be automatically deleted. When receiving a rental item,
|
||||||
|
the character will receive a message in their chat window. The character will
|
||||||
|
also receive warning messages in their chat window before the item disappears.
|
||||||
|
|
||||||
|
This command can not be used to rent stackable items. Rental items cannot be
|
||||||
|
removed from the character's inventory. (i.e. trade mask 123 in ../db/item_trade.txt)
|
||||||
|
Note: 'delitem' in an NPC script can still remove rental items.
|
||||||
|
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
*makeitem <item id>,<amount>,"<map name>",<X>,<Y>;
|
*makeitem <item id>,<amount>,"<map name>",<X>,<Y>;
|
||||||
*makeitem "<item name>",<amount>,"<map name>",<X>,<Y>;
|
*makeitem "<item name>",<amount>,"<map name>",<X>,<Y>;
|
||||||
|
|
||||||
@ -4129,6 +4225,30 @@ before you open storage.
|
|||||||
close2;
|
close2;
|
||||||
openstorage;
|
openstorage;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
*openmail;
|
||||||
|
|
||||||
|
This will open a character's Mail window on the client connected to the
|
||||||
|
invoking character.
|
||||||
|
|
||||||
|
mes "Close this window to open your mail inbox.";
|
||||||
|
close2;
|
||||||
|
openmail;
|
||||||
|
end;
|
||||||
|
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
*openauction;
|
||||||
|
|
||||||
|
This will open the Auction window on the client connected to the invoking character.
|
||||||
|
|
||||||
|
mes "Close this window to open your mail inbox.";
|
||||||
|
close2;
|
||||||
|
openmail;
|
||||||
|
end;
|
||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
\\
|
\\
|
||||||
4,2.- Guild-related commands
|
4,2.- Guild-related commands
|
||||||
@ -4490,7 +4610,7 @@ both of these characters. No rings will be given and no effects will be shown.
|
|||||||
*wedding;
|
*wedding;
|
||||||
|
|
||||||
This command will call up wedding effects - the music and confetti - centered on
|
This command will call up wedding effects - the music and confetti - centered on
|
||||||
the invoking character.
|
the invoking character. Example can be found in the wedding script.
|
||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
@ -5345,7 +5465,7 @@ example.
|
|||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
*waitingroomkickall {"<NPC object name>"};
|
*kickwaitingroomall {"<NPC object name>"};
|
||||||
|
|
||||||
This command would kick everybody out of a specified waiting room chat. IF it
|
This command would kick everybody out of a specified waiting room chat. IF it
|
||||||
was properly linked into the script interpreter which it isn't, even though the
|
was properly linked into the script interpreter which it isn't, even though the
|
||||||
@ -5903,7 +6023,7 @@ set @i, pow(2,3); // @i will be 8
|
|||||||
|
|
||||||
Returns square-root of number.
|
Returns square-root of number.
|
||||||
|
|
||||||
Examlpe:
|
Example:
|
||||||
set @i, sqrt(25); // @i will be 5
|
set @i, sqrt(25); // @i will be 5
|
||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
@ -5950,6 +6070,17 @@ to query the server log tables.
|
|||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
|
*escape_sql("<string>")
|
||||||
|
|
||||||
|
Escapes special characters in the string, so that it is safe to use in query_sql(),
|
||||||
|
and returns the escaped form of the given string.
|
||||||
|
|
||||||
|
Example 1:
|
||||||
|
set .@str$, "John's Laptop";
|
||||||
|
set .@esc_str$, escape_sql(.@name$); // Escaped string: John\'s Laptop
|
||||||
|
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
*setitemscript(<item id>,<"{ new item script }">{,<type>});
|
*setitemscript(<item id>,<"{ new item script }">{,<type>});
|
||||||
|
|
||||||
Set a new script bonus to the Item. Very useful for game events.
|
Set a new script bonus to the Item. Very useful for game events.
|
||||||
@ -5996,7 +6127,7 @@ Example(s):
|
|||||||
if (compare("Blood Butterfly","Bloody"))
|
if (compare("Blood Butterfly","Bloody"))
|
||||||
dothat;
|
dothat;
|
||||||
|
|
||||||
--------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
*charisalpha("<string>",<position>)
|
*charisalpha("<string>",<position>)
|
||||||
|
|
||||||
@ -6005,12 +6136,6 @@ is a letter, 0 if it isn't a letter but a digit or a space.
|
|||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
*wedding_effect;
|
|
||||||
Starts the effect used when a wedding is done (music and everything else)
|
|
||||||
Example can be found in the wedding script.
|
|
||||||
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
* The Pet AI commands
|
* The Pet AI commands
|
||||||
|
|
||||||
These commands will only work if the invoking character has a pet, and are meant
|
These commands will only work if the invoking character has a pet, and are meant
|
||||||
@ -6085,7 +6210,7 @@ buffing items.
|
|||||||
|
|
||||||
Nobody tried this before, so you're essentially on your own here.
|
Nobody tried this before, so you're essentially on your own here.
|
||||||
|
|
||||||
--------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
*bpet;
|
*bpet;
|
||||||
|
|
||||||
@ -6113,18 +6238,6 @@ server and the egg will disappear when anyone tries to hatch it.
|
|||||||
|
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
*openmail;
|
|
||||||
|
|
||||||
This will open a character's Mail window on the client connected to the
|
|
||||||
invoking character.
|
|
||||||
|
|
||||||
mes "Close this window to open your mail inbox.";
|
|
||||||
close2;
|
|
||||||
openmail;
|
|
||||||
end;
|
|
||||||
|
|
||||||
---------------------------------------
|
|
||||||
|
|
||||||
*homshuffle;
|
*homshuffle;
|
||||||
|
|
||||||
This will recalculate the homunculus stats acording to its level, of the
|
This will recalculate the homunculus stats acording to its level, of the
|
||||||
|
Loading…
x
Reference in New Issue
Block a user