summaryrefslogtreecommitdiff
path: root/doc/script_commands.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/script_commands.txt')
-rw-r--r--doc/script_commands.txt357
1 files changed, 327 insertions, 30 deletions
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index a0e3a783d..e4df77051 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -1409,6 +1409,27 @@ getvariableofnpc() should not be used on them.
---------------------------------------
+*getvariableofpc(<variable>, <account id>{, <default value>})
+
+Returns a reference to a PC variable from the target player.
+If <default value> is passed, it will return this value if the player is
+not found.
+
+Examples:
+
+//This will return the value of @var, note that this can't be used, since
+//the value isn't caught.
+ getvariableofpc(@var, getcharid(CHAR_ID_ACCOUNT, "player"));
+
+//This will set the .@v variable to the value of the player's @var
+//variable.
+ .@v = getvariableofpc(@var, getcharid(CHAR_ID_ACCOUNT, "player"));
+
+//This will set the @var variable of the player to 1.
+ set(getvariableofpc(@var, getcharid(CHAR_ID_ACCOUNT, "player")), 1);
+
+---------------------------------------
+
*goto(<label>)
This command will make the script jump to a label, usually used in
@@ -2341,7 +2362,7 @@ deleted.
//=====================================
---------------------------------------
-*strcharinfo(<type>)
+*strcharinfo(<type>{, <default value>{, <GID>}})
This function will return either the name, party name or guild name for
the invoking character. Whatever it returns is determined by type.
@@ -2349,6 +2370,10 @@ the invoking character. Whatever it returns is determined by type.
(1) PC_PARTY - The name of the party they're in if any.
(2) PC_GUILD - The name of the guild they're in if any.
(3) PC_MAP - The name of the map the character is in.
+
+If <GID> is passed, it will return the value of the specified player instead
+the attached player. If the player is not found, it will return
+<default value>, if any, or else return an empty string.
If a character is not a member of any party or guild, an empty string will
be returned when requesting that information.
@@ -2358,7 +2383,7 @@ using only numbers reduces script readability
---------------------------------------
-*strnpcinfo(<type>)
+*strnpcinfo(<type>{, <default value>{, <GID>}})
This function will return the various parts of the name of the calling NPC.
Whatever it returns is determined by type.
@@ -2369,6 +2394,10 @@ Whatever it returns is determined by type.
(3) NPC_NAME_UNIQUE - The NPC's unique name (::name)
(4) NPC_MAP - The name of the map the NPC is in.
+If <GID> is passed, it will return the value of the specified NPC instead of
+the attached NPC. If the NPC is not found, it will return <default value>,
+if any, or else return an empty string.
+
---------------------------------------
*charid2rid(<char id>)
@@ -3133,6 +3162,50 @@ Check sample in doc/sample/getiteminfo.txt
---------------------------------------
+*getequipisenableopt(<equipment slot>)
+
+This function checks if the equipped item allows the use of bonus options.
+
+Returns 1 if allowed, 0 if not.
+
+---------------------------------------
+
+*getequippedoptioninfo(<info_type>);
+
+This function is to be used with the scripts of contents listed in
+db/item_options.conf only.
+
+Returns the value of the current equipment being parsed.
+If the equip was not found or the type is invalid, -1 is returned.
+
+---------------------------------------
+
+*getequipoptioninfo(<equip_index>,<slot>,<type>);
+
+Gets the option information of an equipment.
+
+<equipment_index> For a list of equipment indexes see getequipid().
+<option_slot> can range from 1 to MAX_ITEM_OPTIONS
+<type> can be IT_OPT_INDEX (the ID of the option bonus, @see "Id" or "Name" in db/item_options.conf)
+ or IT_OPT_VALUE (the value of the bonus script of the equipment, @see "Script" in db_item_options.conf).
+
+returns the value of the slot if exists or -1 for invalid slot, type or slots.
+
+---------------------------------------
+
+*setequipoption(<equip_index>,<slot>,<opt_index>,<value>);
+
+Set an equipment's option index or value for the specified option slot.
+
+<equipment_index> For a list of equipment indexes see getequipid().
+<option_slot> can range from 1 to MAX_ITEM_OPTIONS
+<type> can be IT_OPT_INDEX (the ID of the option bonus, @see "Id" or "Name" in db/item_options.conf)
+<value> The value of the type to be set.
+
+returns 0 if value couldn't be set, 1 on success.
+
+---------------------------------------
+
*getequipcardid(<equipment slot>, <card slot>)
Returns value for equipped item slot in the indicated slot (0, 1, 2, or 3).
@@ -3200,6 +3273,40 @@ Notice that NPC objects disabled with disablenpc() will still be located.
---------------------------------------
+*getunits(<type>, <variable>, <limit>, "<map>"{, <x1>, <y1>, <x2>, <y2>})
+
+This function searches a whole map or area for units and adds their GID to
+the provided <variable> array. It filters units by <type> and stops searching
+after <limit> units have been found. Set <limit> to false (0) if you wish to
+disable the limit altogether.
+
+Type is the type of unit to search for:
+
+ BL_PC - Character object
+ BL_MOB - Monster object
+ BL_PET - Pet object
+ BL_HOM - Homunculus object
+ BL_MER - Mercenary object
+ BL_IEM - Item object (item drops)
+ BL_SKILL - Skill object (skill fx & sfx)
+ BL_NPC - NPC object
+ BL_CHAT - Chat object
+ BL_ELEM - Elemental object
+ BL_CHAR - Shorthand for (BL_PC|BL_MOB|BL_HOM|BL_MER|BL_ELEM)
+ BL_ALL - Any kind of object
+
+** Do NOT use UNITTYPE_ constants here, they have different values.
+
+Example:
+
+ .@count = getunits((BL_PC | BL_NPC), .@units, false, "prontera");
+
+The above example would search the map "prontera" for all PC and NPC units and
+add them to the .@units array, while setting .@count to the amount of units
+added to the array (useful in for() loops).
+
+---------------------------------------
+
*getgmlevel()
This function will return the (GM) level of player group the account to
@@ -4292,7 +4399,7 @@ Example:
---------------------------------------
-*warpguild("<mapname>", <x>, <y>, <guild_id>)
+*warpguild("<mapname>", <x>, <y>, <guild_id>, {"<from_mapname>"})
Warps a guild to specified map and coordinate given the guild id, which
you can get with getcharid(CHAR_ID_GUILD). You can also request another guild id given
@@ -4306,9 +4413,12 @@ SavePoint: All guild members are warped to the save point of the
currently attached player (will fail if there's no player
attached).
+If you specify a from_mapname, warpguild() will only affect those on that map.
+
Example:
warpguild("prontera", x, y, Guild_ID);
+ warpguild("prontera", x, y, Guild_ID, "payon"); // warp member from Payon map only.
---------------------------------------
@@ -4507,26 +4617,17 @@ changebase(Class); // Changes player back to default sprite.
---------------------------------------
-*classchange(<view id>, <type>)
+*classchange(<view id>, <type> {, <char id>})
This command is very ancient, it's origins are clouded in mystery.
-It will send a 'display id change' packet to everyone in the immediate
-area of the NPC object, which will supposedly make the NPC look like a
-different sprite, an NPC sprite ID, or a monster ID. This effect is not
-stored anywhere and will not persist (Which is odd, cause it would be
-relatively easy to make it do so) and most importantly, will not work at
-all since this command was broken with the introduction of advanced
-classes. The code is written with the assumption that the lowest sprite
-IDs are the job sprites and the anything beyond them is monster and NPC
-sprites, but since the advanced classes rolled in, they got the ID numbers
-on the other end of the number pool where monster sprites float.
+It will send a 'display id change' packet to player with given char ID
+or to everyone in the immediate area of the NPC object if char ID is 0 or
+not passed, which will make the NPC look like a different sprite, an NPC
+sprite ID, or a monster ID. This effect is not stored anywhere and will
+not persist.
+Note that you can't send a Job sprite ID
-As a result it is currently impossible to call this command with a valid
-view id. It will do nothing whatsoever if the view ID is below 4047.
-Getting it to run will actually just crash the client.
-
-It could be a real gem if it can be gotten to actually do what it's
-supposed to do, but this will only happen in a later Git revision.
+type is not used and should always be 0.
---------------------------------------
@@ -6455,17 +6556,14 @@ Size is 0 = normal 1 = small 2 = big.
//=====================================
---------------------------------------
-*addtimer(<ticks>, "NPC::OnLabel")
-*deltimer("NPC::OnLabel")
-*addtimercount("NPC::OnLabel", <ticks>)
+*addtimer(<ticks>, "NPC::OnLabel"{, <account id>})
-These commands will create, destroy, and delay a countdown timer -
-addtimer() to create, deltimer() to destroy and addtimercount() to delay
-it by the specified number of ticks. For all three cases, the event label
-given is the identifier of that timer. The timer runs on the character
-object that is attached to the script, and can have multiple instances.
-When the label is run, it is run as if the player that the timer runs on
-has clicked the NPC.
+This command will create a countdown timer.
+The event label given is the identifier of that timer.
+The timer runs on the character object that is attached to the script,
+and can have multiple instances. If <acccount id> is passed, this player
+will be used instead. When the label is run, it is run as if the player
+that the timer runs on has clicked the NPC.
When this timer runs out, a new execution thread will start in the
specified NPC object at the specified label.
@@ -6489,6 +6587,39 @@ On5secs:
---------------------------------------
+*deltimer("NPC::OnLabel"{, <account id>})
+
+Deletes timers created by addtimer() that matches the given event
+label. Refer to addtimer() for additional information.
+
+---------------------------------------
+
+*addtimercount("NPC::OnLabel", <ticks>{, <account id>})
+
+Delays a timer that was created with addtimer() by <ticks> ticks
+if it matches the given event label. Refer to addtimer() for additional
+information.
+
+---------------------------------------
+
+*gettimer(<type>{, <account id>{, "<event>"}})
+
+Returns informations on timers that were created by addtimer().
+
+valid <type> for gettimer() are:
+
+(0) TIMER_COUNT
+ Will return the total number of timers for the specified or
+ attached player. Can be filtered by <event>.
+(1) TIMER_TICK_NEXT
+ Will return the number of ticks until the next timer runs
+ for the specified or attached player. Can be filtered by <event>.
+(2) TIMER_TICK_LAST
+ Will return the number of ticks until the last timer runs
+ for the specified or attached player. Can be filtered by <event>.
+
+---------------------------------------
+
*initnpctimer({ "<NPC name>" {, <Attach Flag>} } |
{ "<NPC name>" | <Attach Flag> })
*stopnpctimer({ "<NPC name>" {, <Detach Flag>} } |
@@ -8046,6 +8177,26 @@ Example:
---------------------------------------
+*chr(<int>)
+
+Returns a char from its ASCII value.
+
+Example:
+
+ chr(99); //returns "c"
+
+---------------------------------------
+
+*ord(<chr>)
+
+Returns the ASCII value of char <chr>.
+
+Example:
+
+ ord("c"); //returns 99
+
+---------------------------------------
+
*setchar(<string>, <char>, <index>)
Returns the original string with the char at the specified index set to
@@ -9326,3 +9477,149 @@ to be used within a "OnPayFunds" event of a NST_CUSTOM trader.
Returns the amount of still-available <Item_ID> in the shop (on a NST_MARKET trader).
---------------------------------------
+
+*setunitdata(<GUID>, <DataType>, <Val1> {,<Val2>,<Val3>})
+
+Sets or alters the data in real-time for game objects of the following types -
+NPCs, Pets, Monsters, Homunuculus', Mercenaries, Elementals.
+
+Applicable Data Types (available as constants) -
+ Data Types Description (parameter type)
+ UDT_SIZE: Unit Size (int)
+ UDT_LEVEL: Level (int)
+ UDT_HP: Current HP (int)
+ UDT_MAXHP: Max HP (int)
+ UDT_SP: SP (int)
+ UDT_MAXSP: MAX SP (int)
+ UDT_MASTERAID: Master Account ID (for Summons) (int)
+ UDT_MASTERCID: Master Char ID (for Summons) (int)
+ UDT_MAPIDXY: Warp a Unit to a map. (Val1 = (string) MapName, Val2 = (int) x, Val3 = (int) y)
+ UDT_WALKTOXY: Make a unit walk to certain co-ordinates. (Val1 = (int) x, Val2 = (int) y)
+ UDT_SPEED: Unit Speed. (int)
+ UDT_MODE: Mode (Mobs only) (int)
+ UDT_AI: Unit AI Type (see constants.conf for Unit AI Types)
+ UDT_SCOPTION: Status Options. (see constants.conf for Unit Option Types)
+ UDT_SEX: Gender of the unit. (see constants.conf for Genders)
+ UDT_CLASS: Class of the unit. (Monster ID) (int)
+ UDT_HAIRSTYLE: Hair Style ID. (int)
+ UDT_HAIRCOLOR: Hair Color ID. (int)
+ UDT_HEADBOTTOM: Headgear Bottom Sprite ID. (int)
+ UDT_HEADMIDDLE: Headgear Middle Sprite ID. (int)
+ UDT_HEADTOP: Headgear Top Sprite ID. (int)
+ UDT_CLOTHCOLOR: Cloth Color ID. (int)
+ UDT_SHIELD: Shield Sprite ID. (int)
+ UDT_WEAPON: Weapon Sprite ID. (int)
+ UDT_LOOKDIR: Face direction. (int)
+ UDT_CANMOVETICK: Stop a unit from move for n seconds. (int)
+ UDT_STR: Unit STR. (int)
+ UDT_AGI: Unit AGI. (int)
+ UDT_VIT: Unit VIT. (int)
+ UDT_INT: Unit INT. (int)
+ UDT_DEX: Unit DEX. (int)
+ UDT_LUK: Unit LUK. (int)
+ UDT_ATKRANGE: Attack range of a unit. (int)
+ UDT_ATKMIN: Min Atk of a unit. (int)
+ UDT_ATKMAX: Max Atk of a unit. (int)
+ UDT_MATKMIN: Min MATK of a unit. (int)
+ UDT_MATKMAX: Max MATK of a unit. (int)
+ UDT_DEF: DEF. (int)
+ UDT_MDEF: MDEF. (int)
+ UDT_HIT: HIT. (int)
+ UDT_FLEE: FLEE. (int)
+ UDT_PDODGE: Perfect Dodge. (int)
+ UDT_CRIT: Critical Rate. (int)
+ UDT_RACE: Race. (Eg. string constants RC_DemiHuman or Integer 7).
+ UDT_ELETYPE: Element. (Eg. string constants Ele_Neutral or Integer 0).
+ UDT_ELELEVEL: Element Level (int).
+ UDT_AMOTION: AMotion Rate (int).
+ UDT_ADELAY: ADelay Rate (int).
+ UDT_DMOTION: DMotion Rate (int).
+ UDT_HUNGER: Hunger Rate (int) - for summons.
+ UDT_INTIMACY: Intimacy Rate (int) - for summons.
+ UDT_LIFETIME: LifeTime (int) - for summons.
+ UDT_MERC_KILLCOUNT: Kill count for mercenaries (int).
+ UDT_STATADD: Status Points (int) - for NPCs.
+
+returns 0 if value could not be set, 1 if successful.
+
+---------------------------------------
+
+*getunitdata (<GUID>,<DataType>{,<Variable>})
+
+Retrieves real-time data of a game object. For data with multiple return values,
+an array variable may be passed to store the data in.
+
+Applicable Data types (available as constants) -
+ Data Types Description (return type)
+ UDT_SIZE: Unit Size (int)
+ UDT_LEVEL: Level (int)
+ UDT_HP: Current HP (int)
+ UDT_MAXHP: Max HP (int)
+ UDT_SP: SP (int)
+ UDT_MAXSP: MAX SP (int)
+ UDT_MASTERAID: Master Account ID (for Summons) (int)
+ UDT_MASTERCID: Master Char ID (for Summons) (int)
+ UDT_MAPIDXY: Warp a Unit to a map. (Val1 = (string) MapName, Val2 = (int) x, Val3 = (int) y)
+ UDT_SPEED: Unit Speed. (int)
+ UDT_MODE: Mode (Mobs only) (int)
+ UDT_AI: Unit AI Type (see constants.conf for Unit AI Types)
+ UDT_SCOPTION: Status Options. (see constants.conf for Unit Option Types)
+ UDT_SEX: Gender of the unit. (see constants.conf for Genders)
+ UDT_CLASS: Class of the unit. (Monster ID) (int)
+ UDT_HAIRSTYLE: Hair Style ID. (int)
+ UDT_HAIRCOLOR: Hair Color ID. (int)
+ UDT_HEADBOTTOM: Headgear Bottom Sprite ID. (int)
+ UDT_HEADMIDDLE: Headgear Middle Sprite ID. (int)
+ UDT_HEADTOP: Headgear Top Sprite ID. (int)
+ UDT_CLOTHCOLOR: Cloth Color ID. (int)
+ UDT_SHIELD: Shield Sprite ID. (int)
+ UDT_WEAPON: Weapon Sprite ID. (int)
+ UDT_LOOKDIR: Face direction. (int)
+ UDT_CANMOVETICK: Stop a unit from move for n seconds. (int)
+ UDT_STR: Unit STR. (int)
+ UDT_AGI: Unit AGI. (int)
+ UDT_VIT: Unit VIT. (int)
+ UDT_INT: Unit INT. (int)
+ UDT_DEX: Unit DEX. (int)
+ UDT_LUK: Unit LUK. (int)
+ UDT_ATKRANGE: Attack range of a unit. (int)
+ UDT_ATKMIN: Min Atk of a unit. (int)
+ UDT_ATKMAX: Max Atk of a unit. (int)
+ UDT_MATKMIN: Min MATK of a unit. (int)
+ UDT_MATKMAX: Max MATK of a unit. (int)
+ UDT_DEF: DEF. (int)
+ UDT_MDEF: MDEF. (int)
+ UDT_HIT: HIT. (int)
+ UDT_FLEE: FLEE. (int)
+ UDT_PDODGE: Perfect Dodge. (int)
+ UDT_CRIT: Critical Rate. (int)
+ UDT_RACE: Race. (Eg. string constants RC_DemiHuman or Integer 7).
+ UDT_ELETYPE: Element. (Eg. string constants Ele_Neutral or Integer 0).
+ UDT_ELELEVEL: Element Level (int).
+ UDT_AMOTION: AMotion Rate (int).
+ UDT_ADELAY: ADelay Rate (int).
+ UDT_DMOTION: DMotion Rate (int).
+ UDT_HUNGER: Hunger Rate (int) - for summons.
+ UDT_INTIMACY: Intimacy Rate (int) - for summons.
+ UDT_LIFETIME: LifeTime (int) - for summons.
+ UDT_MERC_KILLCOUNT: Kill count for mercenaries (int).
+
+returns 0 if value could not be retrieved.
+
+---------------------------------------
+
+*getunitname(<GID>)
+
+Retrieve the name of a unit.
+
+returns "Unknown" if the value could not be retrieved.
+
+---------------------------------------
+
+*setunitname(<GID>, <Name>)
+
+Changes the name of a unit.
+
+Supported Types - [ MOB | HOM | PET ].
+
+returns 1 on success, 0 on failure.