summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/conf_ref.txt17
-rw-r--r--doc/help.txt29
-rw-r--r--doc/item_db.txt250
-rw-r--r--doc/pccommand_list.txt45
-rw-r--r--doc/script_commands.txt169
5 files changed, 371 insertions, 139 deletions
diff --git a/doc/conf_ref.txt b/doc/conf_ref.txt
index 88886d055..fc4cd72e6 100644
--- a/doc/conf_ref.txt
+++ b/doc/conf_ref.txt
@@ -15,7 +15,22 @@ although it is not a HowTo, it not Those who cannot use Athena even if they see
char_athena.conf A setup of char-server
inter_athena.conf A setup of inter-server
map_athena.conf A setup of map-server
- battle_athena.conf A setup of map-server (setup of a special rule etc.)
+ battle_athena.conf This file has been splitted into 13 files, separating them
+ depending on their function. Those files are:
+
+ *battle.conf Regarding battle system configuration.
+ *client.conf Regarding client configuration.
+ *drops.conf Regarding mob drops configuration
+ *guild.conf Regarding guild configuration.
+ *monster.conf Regarding monsters guidance and settings.
+ *player.conf Regarding player and/or character settings.
+ *exp.conf Regarding exp settings.
+ *items.conf Regarding items settings.
+ *party.conf Regarding party settings.
+ *skill.conf Regarding skill settings
+ *gm.conf Regarding GM settings (not GM commands).
+ *misc.conf Regarding various settings (such as PK)
+ *pet.conf Regarding pet settings.
atcommand_athena.conf A setup of map-server (setup of the GM command or @ command)
ladmin_athena.conf A setup of ladmin ('c' version)
diff --git a/doc/help.txt b/doc/help.txt
index f5e735fec..49ad23506 100644
--- a/doc/help.txt
+++ b/doc/help.txt
@@ -1,5 +1,5 @@
GM Commands Help File
-By Akaru
+By Akaru (updated by erKURITA)
-----------------------
To use these commands, type them inside the message window where you usually type to chat.
@@ -67,6 +67,30 @@ Displays your ignore list
@mapinfo [<1-3> [map]]
Give information about a map (general info +: 0: no more, 1: players, 2: NPC, 3: shops/chat).
+@rates
+Displays the server rates.
+
+@uptime
+Show server uptime
+
+@showdelay
+Shows/Hides the "there is a delay after a skill" message.
+
+@mobinfo / @monsterinfo / @mi
+Show Monster info (rates, stats, drops, MVP stuff)
+
+@iteminfo / @ii
+Show Item info (type, price, etc)
+
+@refresh
+Syncs the position of the player on the client with the one stored in the server.
+
+@time / @date / @server_date / @serverdate / @servertime / @server_time
+Gives server time
+
+@version
+Displays SVN Version of the server
+
<CONTROL COMMANDS>
@die
@@ -400,6 +424,7 @@ Discharges specified character/prisoner
All characters are in darkness
@day
+
@option 00 00 00 are used on all characters
@doom
@@ -450,4 +475,4 @@ Enable a NPC (admin command)
Disable a NPC (admin command)
@email <actual@email> <new@email>
-to change your e-mail (characters protection)
+to change your e-mail (characters protection) \ No newline at end of file
diff --git a/doc/item_db.txt b/doc/item_db.txt
index 13581d63c..33235187d 100644
--- a/doc/item_db.txt
+++ b/doc/item_db.txt
@@ -1,125 +1,125 @@
-(FIXME: Someone give this file better formatting)
-
-- Explanation of the item_db.txt file and structure.
-
-ID: Item id
-JName: Server name to reference the item in scripts and lookups, should use no
-spaces.
-
-Name: Name in english for displaying as output for @ and script commands.
-
-Type:
- 0 Healing item.
- 2 Usable item.
- 3 Etc item
- 4 Weapon
- 5 Armor/Garment/Boots/Headgear
- 6 Card
- 7 Pet egg
- 8 Pet equipment
- 10 Ammo (Arrows/Bullets/etc)
- 11 Usable with delayed consumption (item is lost from inventory after
- selecting a target, for use with skills and pet lures)
-
-Price: Default buying price. When not specified, becomes double the sell price.
-Sell: Default buying price. When not specified, becomes half the buy price.
-
-Weight: Item's weight. Each 10 is 1 weight.
-
-ATK: Weapon's attack
-DEF: Armor's defense
-Range: Weapon's attack range
-Slot: Amount of slots item possesses.
-
-Job: Equippable jobs. Uses the following bitmask table:
-
- (S.) Novice (2^00): 0x00000001
- Swordman (2^01): 0x00000002
- Mage (2^02): 0x00000004
- Archer (2^03): 0x00000008
- Acolyte (2^04): 0x00000010
- Merchant (2^05): 0x00000020
- Thief (2^06): 0x00000040
- Knight (2^07): 0x00000080
- Priest (2^08): 0x00000100
- Wizard (2^09): 0x00000200
- Blacksmith (2^10): 0x00000400
- Hunter (2^11): 0x00000800
- Assassin (2^12): 0x00001000
- Unused (2^13): 0x00002000
- Crusader (2^14): 0x00004000
- Monk (2^15): 0x00008000
- Sage (2^16): 0x00010000
- Rogue (2^17): 0x00020000
- Alchemist (2^18): 0x00040000
- Bard/Dancer (2^19): 0x00080000
- Unused (2^20): 0x00100000
- Taekwon (2^21): 0x00200000
- StarGladi (2^22): 0x00400000
- Soul Linker (2^23): 0x00800000
- Gunslinger (2^24): 0x01000000
- Ninja (2^25): 0x02000000
-
-Upper: Equippable upper-types. Uses the following bitmasks:
- 1: Normal jobs
- 2: Upper jobs
- 4: Baby jobs
-
-Gender: Gender restriction. 0 is female, 1 is male, 2 for both.
-
-Loc: Equipment's placement. Values are:
-
- 2^0 001 = Lower Head
- 2^9 512 = Middle Head
- 2^8 256 = Top head
- 2^1 002 = Right hand
- 2^5 032 = Left hand
- 2^2 004 = mantle
- 2^4 016 = armor
- 2^6 064 = boots
- 2^3 008 = Acc 1
- 2^7 128 = Acc 2
-
-wLV: Weapon level.
-eLV: Base level required to be able to equip.
-Refineable: 1 if the item can be refined, 0 otherwise.
-
-View: For normal items, defines a replacement view-sprite for the item (eg:
- Making apples look like apple juice). The special case are weapons and ammo
- where this value indicates the weapon-class of the item.
-
- For weapons, the types are:
- 0: bare fist
- 1: Daggers
- 2: One-handed swords
- 3: Two-handed swords
- 4: One-handed spears
- 5: Two-handed spears
- 6: One-handed axes
- 7: Two-handed axes
- 8: Maces
- 9: Unused
- 10: Staves
- 11: Bows
- 12: Knuckles
- 13: Musical Instruments
- 14: Whips
- 15: Books
- 16: Katars
- 17: Revolvers
- 18: Rifles
- 19: Shotguns
- 20: Gatling guns
- 21: Grenade launchers
- 22: Huuma
-
- For ammo, the types are:
- 1: Arrows
- 2: Throwable daggers
- 3: Bullets
- 4: Shells
- 5: Grenades
- 6: Shurikens
- 7: Kunais
-
-Script: Script to execute when the item is used/equipped.
+(FIXME: Someone give this file better formatting)
+
+- Explanation of the item_db.txt file and structure.
+
+ID: Item id
+JName: Server name to reference the item in scripts and lookups, should use no
+spaces.
+
+Name: Name in english for displaying as output for @ and script commands.
+
+Type:
+ 0 Healing item.
+ 2 Usable item.
+ 3 Etc item
+ 4 Weapon
+ 5 Armor/Garment/Boots/Headgear
+ 6 Card
+ 7 Pet egg
+ 8 Pet equipment
+ 10 Ammo (Arrows/Bullets/etc)
+ 11 Usable with delayed consumption (item is lost from inventory after
+ selecting a target, for use with skills and pet lures)
+
+Price: Default buying price. When not specified, becomes double the sell price.
+Sell: Default buying price. When not specified, becomes half the buy price.
+
+Weight: Item's weight. Each 10 is 1 weight.
+
+ATK: Weapon's attack
+DEF: Armor's defense
+Range: Weapon's attack range
+Slot: Amount of slots item possesses.
+
+Job: Equippable jobs. Uses the following bitmask table:
+
+ (S.) Novice (2^00): 0x00000001
+ Swordman (2^01): 0x00000002
+ Mage (2^02): 0x00000004
+ Archer (2^03): 0x00000008
+ Acolyte (2^04): 0x00000010
+ Merchant (2^05): 0x00000020
+ Thief (2^06): 0x00000040
+ Knight (2^07): 0x00000080
+ Priest (2^08): 0x00000100
+ Wizard (2^09): 0x00000200
+ Blacksmith (2^10): 0x00000400
+ Hunter (2^11): 0x00000800
+ Assassin (2^12): 0x00001000
+ Unused (2^13): 0x00002000
+ Crusader (2^14): 0x00004000
+ Monk (2^15): 0x00008000
+ Sage (2^16): 0x00010000
+ Rogue (2^17): 0x00020000
+ Alchemist (2^18): 0x00040000
+ Bard/Dancer (2^19): 0x00080000
+ Unused (2^20): 0x00100000
+ Taekwon (2^21): 0x00200000
+ StarGladi (2^22): 0x00400000
+ Soul Linker (2^23): 0x00800000
+ Gunslinger (2^24): 0x01000000
+ Ninja (2^25): 0x02000000
+
+Upper: Equippable upper-types. Uses the following bitmasks:
+ 1: Normal jobs
+ 2: Upper jobs
+ 4: Baby jobs
+
+Gender: Gender restriction. 0 is female, 1 is male, 2 for both.
+
+Loc: Equipment's placement. Values are:
+
+ 2^0 001 = Lower Head
+ 2^9 512 = Middle Head
+ 2^8 256 = Top head
+ 2^1 002 = Right hand
+ 2^5 032 = Left hand
+ 2^2 004 = mantle
+ 2^4 016 = armor
+ 2^6 064 = boots
+ 2^3 008 = Acc 1
+ 2^7 128 = Acc 2
+
+wLV: Weapon level.
+eLV: Base level required to be able to equip.
+Refineable: 1 if the item can be refined, 0 otherwise.
+
+View: For normal items, defines a replacement view-sprite for the item (eg:
+ Making apples look like apple juice). The special case are weapons and ammo
+ where this value indicates the weapon-class of the item.
+
+ For weapons, the types are:
+ 0: bare fist
+ 1: Daggers
+ 2: One-handed swords
+ 3: Two-handed swords
+ 4: One-handed spears
+ 5: Two-handed spears
+ 6: One-handed axes
+ 7: Two-handed axes
+ 8: Maces
+ 9: Unused
+ 10: Staves
+ 11: Bows
+ 12: Knuckles
+ 13: Musical Instruments
+ 14: Whips
+ 15: Books
+ 16: Katars
+ 17: Revolvers
+ 18: Rifles
+ 19: Shotguns
+ 20: Gatling guns
+ 21: Grenade launchers
+ 22: Huuma
+
+ For ammo, the types are:
+ 1: Arrows
+ 2: Throwable daggers
+ 3: Bullets
+ 4: Shells
+ 5: Grenades
+ 6: Shurikens
+ 7: Kunais
+
+Script: Script to execute when the item is used/equipped.
diff --git a/doc/pccommand_list.txt b/doc/pccommand_list.txt
index 8aef5a8f5..0fd00db72 100644
--- a/doc/pccommand_list.txt
+++ b/doc/pccommand_list.txt
@@ -102,4 +102,49 @@ OnPCLoadMapEvent:
1) And as usual... This script runs everytime a player kills a monster It is adviced if
you want to repeatedly use this script, to use a sort of filter.
+-----------------------------------------------------------------------------
+
++ PCCommand: PCDieEvent
++ Code by: Unknown
++ How it works:
+When a player dies, the event will be run as if a npc were clicked. The RID of the person killed
+will be attached. Simple. It can to be used as a floating npc or as a npc placed on a map.
+Notice that this event is server-wide if used as a floating npc, so if you try running it for
+more than one map, and want to make a single npc, you'll have to use some sort of filter, which
+can be getmapxy, something like this:
+
+- script PCDieEvent -1,{
+if (getmapxy(@mapname$,@mapx,@mapy,0) == -1) goto L_Finish;
+if (@mapname$ == "valkyrie.gat") || (@mapname$ == "amatsu.gat") {
+killmonster "valkyrie.gat","All";
+announce "Deep Voice: You have failed.... you have another opportunity though...",bc_self,0x660033;
+if (killtest != 0) enablenpc "Outern Voices";
+if (killedonce == 1) end;
+set killedonce,1;
+} else
+end;
+
+L_Finish:
+ end;
+}
+
+----or---->
+
+OnPCDieEvent:
+if (getmapxy(@mapname$,@mapx,@mapy,0) == -1) goto L_Finish;
+if (@mapname$ == "valkyrie.gat") || (@mapname$ == "amatsu.gat") {
+killmonster "valkyrie.gat","All";
+announce "Deep Voice: You have failed.... you have another opportunity though...",bc_self,0x660033;
+if (killtest != 0) enablenpc "Outern Voices";
+if (killedonce == 1) end;
+set killedonce,1;
+} else
+end;
+
+L_Finish:
+ end;
+
+We're using getmapxy to obtain the mapname, then adjust our commands and actions depending on the
+map. We could also use the command to find if the player died inside a wished area.
+
----------------------------------------------------------------------------- \ No newline at end of file
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index 0d3ad3b72..4a0458177 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -33,6 +33,10 @@
//= 2.7a - delitem2, countitems2 commands [Lupus]
//= 2.7b - clone command [Skotlex]
//= 2.7c - disguise / undisguise, query_sql commands [Lupus]
+
+//= 2.8 - Deleted a copy of the nude command. Added axtoi command (needing a clearer
+//= explanation of atoi.Gave a better explanation of OnLabels and modified
+//= monster explanation due that L_Label isn't working with monster.
//===== Compatible With ===================================
//= LOL, can be used by anyone hopefully
//===== Description =======================================
@@ -671,6 +675,28 @@ Only the special labels which are not associated with any script command are
listed here. There are other kinds of labels which may be triggered in a similar
manner, but they are described with their associated commands.
+On<label name>:
+
+These special labels are used with Mob scripts mostly, and script commands
+that requires you to point/link a command to a mob or another npc, giving a label
+name to start from. The label name can be any of your liking, but must be
+
+Example:
+
+monster "prontera.gat",123,42,"Poringz0rd",2341,23,"Master::OnThisMobDeath";
+
+amatsu.gat,13,152,4 script Master 767,{
+
+mes "Hi there";
+close;
+
+OnThisMobDeath:
+ announce "Hey, "+strcharinfo(0)+" just killed a Poringz0rd!",bc_blue|bc_all;
+ end;
+}
+
+Each time you kill one, that announce will appear in blue to everyone.
+
Scripting commands and functions
--------------------------------
@@ -2593,6 +2619,10 @@ Without the use if 'end' it would travel through the labels until the end of the
script. If you were lvl 10 or less, you would see all the speech lines, the use
of 'end' stops this, and ends the script.
+Note: Break won't work anymore, it has been commented out in src/map/script.c:
+
+// {buildin_end,"break",""}, this might confuse advanced scripting support [Eoe]
+
---------------------------------------
*checkoption(<option number>)
@@ -2851,7 +2881,7 @@ and upon the monster being killed, it will execute the script inside of the
specified NPC object starting from the label given. The RID of the player
attached at this execution will be the RID of the killing character.
- monster "place.gat",60,100,"Poring",1002,1,"NPCNAME::Label";
+ monster "place.gat",60,100,"Poring",1002,1,"NPCNAME::OnLabel";
If you do not specify any event label, a label in the NPC object that ran this
command, called 'OnMyMobDead:' will execute anyway, if present.
@@ -2873,7 +2903,7 @@ Simple monster killing script:
mes "Come back later";
close;
L_Yes:
- monster "prontera.gat",0,0,"Quest Poring",1002,10,"NPCNAME::L_PoringKilled";
+ monster "prontera.gat",0,0,"Quest Poring",1002,10,"NPCNAME::OnPoringKilled";
// By using 0,0 it will spawn them in a random place.
mes "[Summon Man]";
mes "Now go and kill all the Poring I summoned";
@@ -3320,6 +3350,8 @@ unfortunately, not detectable by Ruwach or Sight.
As they are now, these commands are pointless, it is suggested to use
'disablenpc'/'enablenpc', because these two commands actually unload the NPC
sprite location and other accompanying data from memory when it is not used.
+However, you can use these for some quest ideas (such as cloaking npcs talking
+while hidden then revealing.... you can wonder around =P
---------------------------------------
@@ -3497,7 +3529,7 @@ the job number of the wedding sprites.
It would be entered in the equip bonus section of an item
-2338,Wedding_Dress,Wedding Dress,5,43000,0,500,,0,,0,2088958,0,16,,0,0,{(This is for use bonus)},{ bonus bMdef,15; changebase 22; },
+2338,Wedding_Dress,Wedding Dress,5,43000,,500,,0,,0,119529470,7,0,16,,0,1,0,{ bonus bMdef,15; changebase 22; }
This command only works when inside item scripts.
@@ -3724,7 +3756,7 @@ even though WoE itself may or may not actually be in effect.
---------------------------------------
-*emotion <emotion number> <, target>;
+*emotion <emotion number>{, target};
This command makes an object display an emoticon sprite above their own as
if they were doing that emotion. For a full list of emotion numbers,
@@ -4892,7 +4924,6 @@ set @i, distance(100,200,101,202);
---------------------------------------
*query_sql "your MySQL query", <array name>
-
Returns up to 127 values into array.
Example:
@@ -4950,8 +4981,6 @@ PET_INTIMATE
Example:
set @i, petstat(PET_CLASS);
-Whew.
-What's about all of them.
---------------------------------------
@@ -4960,6 +4989,7 @@ What's about all of them.
Set a new script bonus to the Item. Very useful for game events.
Example:
+
setitemscript 2637,"{ bonus bDamageWhenUnequip,40; if(isequipped(2236)==0)end; if(getskilllv(26)){skill 40,1;}else{skill 26,1+isequipped(2636);} }";
---------------------------------------
@@ -4982,12 +5012,33 @@ undisquise; //Yay!!!! You're a human again!!
---------------------------------------
-*nude;
+*axtoi(<hexadecimal_value>);
-This command will unequip anything equipped on the invoking character.
+This command will convert an hexadecimal value into integers (numbers).
+The inputted value must not have neither # or 0x in it, just 6 numbers and/or letters.
+The variable registering this value, if so, must be a string (letter) variable, due that
+it contains letters in some cases.
-It is not required to do this when changing jobs since 'jobchange' will unequip
-everything not equippable by the new job class anyway.
+This is mostly used for the new announce command, which uses hexadecimal values for announce
+colors, using the Ragnarok coloring system.
+
+Example:
+
+amatsu.gat,171,166,4 script Testing npc 767,{
+
+mes "Input hex color";
+input @trying$;
+next;
+set @try2$,axtoi(@trying$);
+announce "zOMG TEH PWNZ0RDZ",bc_all,@try2$;
+close;
+}
+
+If you want a list of hexadecimal colors, check these two links:
+
+http://webmonkey.wired.com/webmonkey/reference/color_codes/
+
+http://www.december.com/html/spec/color.html
---------------------------------------
@@ -4998,3 +5049,99 @@ Good for PCKillEvent where you can convert 'killedrid' to the name of the player
Note: rid2name may not produce correct character names since rid = account id.
It will return the current online character of the account only.
+
+---------------------------------------
+
+*function <function name>;
+*<function name>();
+*function <function name> {
+<code>
+}
+
+(Skotlex stop being so selfish and give us all the commands T~T! J/k lol :P)
+
+This works like callfunc, but doesn't support arguments like callfunc. It's used for cleaner
+and fast script that doesn't require arguments for it to work. Labels must start with SF_
+(SubFunctions I guess). Also they must be inside a script. They're not separated scripts
+and they work more like labels.
+
+Note it looks like the normal declaration
+
+Usage:
+
+You first Declare the function with function <function name>;.
+
+Put the rest of your code. You can use then <function name>(); to call the function. If it returns a value is unsure,
+test it if you want and give us some comments ;3
+
+And at least, but inside the script itself, put the function <function name> {<code>}.
+
+Example:
+
+prontera.gat,154,189,4 script Item seller 767,{
+
+function SF_Selling;
+
+mes "I'll open this now if you have more than 50z and you are level 50 or bigger";
+next;
+
+if (Zeny > 50) && (BaseLevel > 50) {
+ mes "Welcome";
+ next;
+ SF_Selling();
+ close;
+} else
+
+set @needed,50-BaseLevel;
+mes "You either are Level "+BaseLevel+", thus you need "+@needed+" more levels to be able to use this npc; or you don't have enough zeny, so get some please";
+close;
+
+function SF_Selling {
+
+ mes "Would you like to buy a phracon for 50z?";
+ switch(select("Yes","No, thanks")) {
+
+ case 1:
+ mes "Ok, how many?";
+ input @quantity;
+ set @check,Zeny/50;
+ if (@quantity > @check) {
+ mes "Sorry but you can only have "+@check+" Phracons with "+Zeny;
+ close;
+ } else
+ next;
+ mes "here you have";
+ set Zeny,Zeny-@quantity*50;
+ getitem 1010,@quantity;
+ close;
+ case 2:
+ mes "Good bye then";
+ close;
+ }
+ }
+}
+
+
+---------------------------------------
+
+*getequipcardid (<equipment slot>,<card slot>);
+
+Returns value from equipped item slot in the indicated slot:
+
+getequipcardid(num,slot)
+
+where:
+ num = eqip position slot
+ slot = 0,1,2,3 (Card Slot N)
+
+This func returns CARD ID, 255,254,-255 (for card 0, if the item is produced) it's useful
+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;
+ Hat[0] +4 -> Player's Hat[0] +4
+
+By Lupus
+
+---------------------------------------
+
+Whew.
+What's about all of them.