diff options
Diffstat (limited to 'doc/script_commands.txt')
-rw-r--r-- | doc/script_commands.txt | 321 |
1 files changed, 288 insertions, 33 deletions
diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 0efe238c4..d7795b7a6 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>) @@ -2658,7 +2687,7 @@ Example 2: check party count (with a next() pause), before warping to event } // Finally, it's safe to start the event! - warpparty("event_map", 0, 0, getcharid(CHAR_ID_PARTY)); + warpparty("event_map", 0, 0, getcharid(CHAR_ID_PARTY), true); --------------------------------------- @@ -3244,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 +4355,7 @@ See also warp(). --------------------------------------- -*warpparty("<to_mapname>", <x>, <y>, <party_id>, {"<from_mapname>"}) +*warpparty("<to_mapname>", <x>, <y>, <party_id>, "<from_mapname>", <include_leader>) Warps a party to specified map and coordinate given the party ID, which you can get with getcharid(CHAR_ID_PARTY). You can also request another party id given @@ -4312,13 +4375,15 @@ Leader: All party members are warped to the leader's position. The If you specify a from_mapname, warpparty() will only affect those on that map. +You can exclude Party leader from warping, by keeping include_leader option as false. + Example: mes("[Party Warper]"); mes("Here you go!"); close2(); .@id = getcharid(CHAR_ID_PARTY); - warpparty("prontera", 150, 100, .@id); + warpparty("prontera", 150, 100, .@id, true); close(); --------------------------------------- @@ -4336,7 +4401,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 @@ -4350,9 +4415,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. --------------------------------------- @@ -4551,26 +4619,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. --------------------------------------- @@ -6499,17 +6558,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. @@ -6533,6 +6589,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>} } | @@ -8090,6 +8179,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 @@ -9370,3 +9479,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. |