Misc grammar changes to documentation.

Signed-off-by: Akkarinage <akkarin@rathena.org>
This commit is contained in:
Akkarinage 2017-04-19 03:13:17 +01:00 committed by GitHub
parent 33c31ca368
commit 58bad46c32
3 changed files with 53 additions and 74 deletions

View File

@ -199,4 +199,4 @@ OnTouch:
OnInit:
disablenpc strnpcinfo(0);
end;
}
}

View File

@ -13,16 +13,10 @@ This document is a reference manual for all the scripting commands and functions
available in rAthena. It is not a simple tutorial. When people tell you to
"Read The F***ing Manual", they mean this.
The information was mostly acquired through looking up how things actually work
in the source code of the server, which was written by many people over time,
and lots of them don't speak English and never left any notes - or are otherwise
not available for comments. As such, anything written in here might not be
correct, it is only correct to the best of our knowledge, which is limited.
This is not a place to teach you basic programming. This document will not teach
you basic programming by itself. It's more of a reference for those who have at
least a vague idea of what they want to do and want to know what tools they have
available to do it. We've tried to keep it as simple as feasible, but if you
available to do it. We've tried to keep it as simple as possible, but if you
don't understand it, getting a clear book on programming in general will help
better than yelling around the forum for help.
@ -31,9 +25,10 @@ A little learning never caused anyone's head to explode.
Structure
---------
The commands and functions are listed in no particular order:
The script commands are listed in no particular order, but are grouped by
relative function.
*Name of the command and how to call it.
*Name of the command and parameters (if any).
Descriptive text
@ -41,20 +36,19 @@ Descriptive text
give you an idea of how it works in practice.
To find a specific command, use Ctrl+F, (or whatever keys call up a search
function in whatever you're reading this with) put an * followed by the command
function in whatever you're reading this with) put an asterisk (*) followed by the command
name, and it should find the command description for you.
If you find anything omitted, please respond. :)
If you find anything missing, please let us know!
Syntax
------
Throughout this document, wherever a command wants an argument, it is given in
<angle brackets>. This doesn't mean you should type the angle brackets. :) If an
<angle brackets>. This doesn't mean you should type the angle brackets. If an
argument of a command is optional, it is given in {curly brackets}. You've
doubtlessly seen this convention somewhere, if you didn't, get used to it,
that's how big boys do it. If a command can optionally take an unspecified
number of arguments, you'll see a list like this:
doubtlessly seen this convention somewhere. If a command can optionally take
an unspecified number of arguments, you'll see a list like this:
command <argument>{,<argument>...<argument>}
@ -66,8 +60,7 @@ of functions or operators returning a value, in (round brackets) instead of most
numbers. Round brackets will not always be required, but they're often a good
idea.
Wherever you refer to a map name, it's always 'map name' or 'map name.gat'
(although the .gat suffix is deprecated).
Wherever you refer to a map name, it's always 'map name' (.gat suffix is deprecated).
Script loading structure
@ -75,7 +68,7 @@ Script loading structure
Scripts are loaded by the map server as referenced in the 'conf/map_athena.conf'
configuration file, but in the default configuration, it doesn't load any script
files itself. Instead, it loads the file 'npc/scripts_main.conf' which itself
files itself. Instead, it loads the file 'npc/(pre-)re/scripts_main.conf' which itself
contains references to other files. The actual scripts are loaded from txt
files, which are linked up like this:
@ -83,7 +76,7 @@ npc: <path to a filename>
Any line like this, invoked, ultimately, by 'map_athena.conf' will load up the
script contained in this file, which will make the script available. No file
will get loaded twice, to prevent possible errors.
will get loaded twice to prevent possible errors.
Another configuration file option of relevance is:
@ -107,15 +100,15 @@ Example:
* is ignored, until the following
* symbol is encountered: */
The asterisks (*) in front of each line is a personal preference, and is not required.
The asterisks (*) in front of each line is a personal preference and is not required.
Upon loading all the files, the server will execute all the top-level commands
in them. No variables exist yet at this point, no commands can be called other
than those given in this section. These commands set up the basic server script
structure - create NPC objects, spawn monster objects, set map flags, etc. No
code is actually executed at this point except them. The top-level commands the
scripting are pretty confusing, since they aren't structured like you would
expect commands, command name first, but rather, normally start with a map name.
than those given in this section. These commands set up the basic structure - create
NPC objects, spawn monster objects, set map flags, etc. No code is actually
executed at this point. The top-level commands are pretty confusing, since
they aren't structured like you would expect (command name first), but rather,
normally start with a map name.
What's more confusing about the top-level commands is that most of them use a
tab symbol to divide their arguments.
@ -123,7 +116,7 @@ tab symbol to divide their arguments.
To prevent problems and confusion, the tab symbols are written as '%TAB%'
throughout this document, even though this makes the text a bit less readable.
Using an invisible symbol to denote arguments is one of the bad things about
this language, but we're stuck with it for now. :)
this language.
Here is a list of valid top-level commands:
@ -247,14 +240,13 @@ degrees, where 0 means facing towards the top of the map. (So to turn the sprite
towards the bottom of the map, you use facing 4, and to make it look southeast
it's facing 5.)
Sprite id is the sprite number used to display this particular NPC. For a full
list of sprite id numbers see http://kalen.s79.xrea.com/npc/npce.shtml You may
also use a monster's ID number instead to display a monster sprite for this NPC.
Sprite ID is the sprite number or constant used to display this particular NPC.
You may also use a monster's ID instead to display a monster sprite for this NPC.
It is possible to use a job sprite as well, but you must first define it as a
monster sprite in 'mob_avail.txt', a full description on how to do this is not
in the scope of this manual.
A '-1' sprite id will make the NPC invisible (and unclickable).
A '111' sprite id will make an NPC which does not have a sprite, but is still
A '-1' Sprite ID will make the NPC invisible (and unclickable).
A '111' Sprite ID will make an NPC which does not have a sprite, but is still
clickable, which is useful if you want to make a clickable object of the 3D
terrain.
@ -299,28 +291,25 @@ these floating NPC objects are for. More on that below.
This will define a shop NPC, which, when triggered (which can only be done by
clicking) will cause a shop window to come up. No code whatsoever runs in shop
NPCs and you can't change the prices otherwise than by editing the script
itself. (No variables even exist at this point of scripting, so don't even
bother trying to use them.)
itself.
The item id is the number of item in the 'item_db.txt' database. If Price is set
The Item ID is the number of item in the 'item_db.txt' database. If Price is set
to -1, the 'buy price' given in the item database will be used. Otherwise, the
price you gave will be used for this item, which is how you create differing
prices for items in different shops.
Since trunk r12264 you can alternatively use "cashshop" in place of "shop"
to use the Cash Shop interface, allowing you to buy items with special points
(Currently stored as account variables in global_reg #CASHPOINTS and #KAFRAPOINTS.)
This type of shop will not allow you to sell items at it, you may only
purchase items here. The layout used to define sale items still count, and
There are other types of shops available:
cashshop - use "cashshop" in place of "shop" to use the Cash Shop interface, allowing
you to buy items with special points that are stored as account variables
called #CASHPOINTS and #KAFRAPOINTS. This type of shop will not allow you to sell
items at it, only make purchases. The layout used to define sale items still count, and
"<price>" refers to how many points will be spent purchasing the them.
Since trunk rX you can alternatively use "itemshop" or "pointshop" in place
of "shop" to use the Shop interface, allowing you to buy items with a specific
item or special points from a variable. 'pointshop' only supported variable types
are permanent character variables, temporary character variables, permanent
local account variables, or permanent global account variables. These variables
must be of integer type, not string. 'discount' flag is an option, makes the price
at that shop is affected by discount skill.
"itemshop" and "pointshop" use the Shop interface, allowing you to buy items with a specific
item or special points from a variable. 'pointshop' only supports permanent character variables,
temporary character variables, permanent local account variables or permanent global account
variables. These variables must be of integer type, not string. 'discount' flag is an
optional value which makes the price at that shop become affected by discount skill.
** Define an warp/shop/cashshop/itemshop/pointshop/NPC duplicate.
@ -589,9 +578,7 @@ constants such as server defines and status options:
Assigning variables
--------- ---------
As of rAthena revision 15982, variables can be accessed and assigned values directly
without the use of the built-in 'set' function. This means that variables can be
accessed and modified much like other programming languages.
Variables can be accessed and modified much like in other programming languages.
@x = 100;
@x = @y = 100;
@ -644,8 +631,8 @@ variable as if it was a normal variable:
set @arrayofnumbers[0],1;
You can also do sneaky things like using a variable (or an expression, or even a
value from an another array) to get at an array value:
You can also do things like using a variable (or an expression, or even a
value from another array) to get at an array value:
set @x,100;
set @arrayofnumbers[@x],10;
@ -658,7 +645,7 @@ range 0 ~ 2147483647.
And array indexes probably can't be negative. Nobody tested what happens when
you try to get a negatively numbered variable from an array, but it's not going
to be pretty. :)
to be pretty.
Arrays can naturally store strings:
@ -871,7 +858,7 @@ OnDay<month><day>:
This will execute when the server clock hits the specified date or time. Hours
and minutes are given in military time. ('0105' will mean 01:05 AM). Weekdays
are Sun,Mon,Tue,Wed,Thu,Fri,Sat. Months are 01 to 12, days are 01 to 31.
Remember the zero. :)
Remember the zero.
OnInit:
OnInterIfInit:
@ -1025,10 +1012,7 @@ but is not advised, as this can lead to some hard to track errors. Calling
functions as if they were commands will mess up the stack, so 'return' command
will not return correctly after this happens in a particular script.
All commands must end with a ';'. Actually, you may expect to have multiple
commands on one line if you properly terminate them with a ';', but it's better
if you don't, since it is not certain just whether the scripting engine will
behave nicely if you do.
All commands must end with a ';'.
-------------------------
@ -1327,7 +1311,7 @@ with other command, such as "if", but often used on its own.
Label:
mes "This will be seen";
Note by FlavioJS: goto's are "evil" and should be avoided if possible (ò_ó)
This command should be avoided and only used if there is no other option.
---------------------------------------
@ -1975,8 +1959,7 @@ you forget to use the curly braces (the { } ), the second action will be execute
the output of the condition, unless of course, you stop the execution of the script if the
condition is true (that is, in the first grouping using a return; , and end; or a close; )
Also, you can have multiple conditions nested or chained, and don't worry about limits as to
how many nested if you can have, there is no spoon ;)
Also, you can have multiple conditions nested or chained.
if (<condition 1>)
dothis;
@ -2442,7 +2425,7 @@ This function will return the number for the current character look value
specified by type. See 'setlook' for valid look types.
This can be used to make a certain script behave differently for characters
dressed in black. :)
dressed in black.
---------------------------------------
@ -3293,7 +3276,7 @@ invoking character has. Here's what you get:
While 'getskillv' is probably more useful for most situations, this is the
easiest way to store all the skills and make the character something else for a
while. Advanced job for a day? :) This could also be useful to see how many
while. Advanced job for a day? This could also be useful to see how many
skills a character has.
This command does not count skills which are set as flag 4 (permament granted) (ALL_BUYING_STORE/ALL_INCCARRY)
@ -3980,10 +3963,9 @@ warpguild "prontera",x,y,Guild_ID;
*warppartner("<map name>",<x>,<y>);
This function will find the invoking character's marriage partner, if any, and
warp them to the map and coordinates given. Go kidnap that spouse. :) It will
return 1 upon success and 0 if the partner is not online, the character is not
married, or if there's no invoking character (no RID). 0,0 will, as usual,
normally translate to random coordinates.
warp them to the map and coordinates given. It will return 1 upon success and
0 if the partner is not online, the character is not married, or if there's no
invoking character (no RID). 0,0 will, as usual, normally translate to random coordinates.
---------------------------------------
@ -4445,7 +4427,7 @@ this. Careful, minor magic ahead.
@card4 = @charid >> 16;
// If you're inscribing non-equipment, @card1 must be 254.
// Arrows are also not equipment. :)
// Arrows are also not equipment.
@card1 = 254;
// For named equipment, card2 means the Star Crumbs and elemental
@ -5204,7 +5186,7 @@ the end.
You might want to make a quest for getting a certain guild skill, make it hard
enough that all the guild needs to help or something. Doing this for the Glory
of the Guild skill, which allows your guild to use an emblem, is a good idea for
a fun quest. (Wasting a level point on that is really annoying :D)
a fun quest.
---------------------------------------
//
@ -9462,6 +9444,3 @@ else false if the leave failed.
If <char id> is specified, the specified player is used rather than the attached one.
---------------------------------------
Whew.
That's about all of them.

View File

@ -104,13 +104,13 @@ RequiredAmmoAmount: Amount of ammo needed to use the skill.
RequiredState: The active 'State' needed to use the skill.
none = Nothing special.
none = Nothing.
hidden = Requires hidden status by using Hiding, Cloaking, or Chasewalk.
riding = Requires the player to ride either a Peco or a Dragon.
falcon = Requires a Falcon.
cart = Requires a Pushcart.
For renewal, this state can be replaced by SC_PUSH_CART in 'RequiredStatuses' field.
shield = Requires a shield equipped.
shield = Requires an equipped shield.
recover_weight_rate = Requires to be less than 50% weight.
move_enable = Requires to be able to move.
water = Requires to be standing on a water cell.