Migrated atcommand aliases and help to YAML (#4487)
Merges atcommand_athena.conf and help.txt into a single file. Removed some leftover settings that were removed before. Removed CLI support for modifying the atcommand configuration file. Moved atcommand and charcommand symbol definition into conf/battle/gm.conf Removed some messages that are not needed anymore Co-authored-by: Aleos <aleos89@users.noreply.github.com>
This commit is contained in:
parent
b967439fa7
commit
64b5c3082b
@ -1,73 +0,0 @@
|
||||
/* Atcommands and charcommands configuration file */
|
||||
|
||||
/* The symbol that will be used to recognize commands.
|
||||
You can set any one character except:
|
||||
- control-characters (0x00-0x1f),
|
||||
- '%' (party chat symbol)
|
||||
- '$' (guild chat symbol)
|
||||
- '/' (client commands symbol)
|
||||
atcommand_symbol represents @commands used locally.
|
||||
charcommand_symbol represents #commands used on other players.
|
||||
*/
|
||||
|
||||
atcommand_symbol : "@"
|
||||
charcommand_symbol: "#"
|
||||
|
||||
/* Command aliases
|
||||
You can define aliases for any command. Aliases work just like original
|
||||
command.
|
||||
Format is
|
||||
<commandname>: ["<alias>", ...]
|
||||
*/
|
||||
|
||||
aliases: {
|
||||
mobinfo: ["monsterinfo", "mi"]
|
||||
iteminfo: ["ii"]
|
||||
time: ["date", "serverdate", "servertime"]
|
||||
autotrade: ["at"]
|
||||
help: ["h"]
|
||||
jumpto: ["goto", "warpto"]
|
||||
mount: ["mountpeco"]
|
||||
who: ["whois"]
|
||||
npctalk: ["npctalkc"]
|
||||
gvgon: ["gpvpon"]
|
||||
gvgoff: ["gpvpoff"]
|
||||
jobchange: ["job"]
|
||||
load: ["return"]
|
||||
warp: ["rura", "mapmove"]
|
||||
dye: ["ccolor"]
|
||||
hairstyle: ["hstyle"]
|
||||
haircolor: ["hcolor"]
|
||||
monster: ["spawn"]
|
||||
blvl: ["lvup", "blevel", "baselvl", "baselvup", "baselevel", "baselvlup"]
|
||||
jlvl: ["jlevel", "joblvl", "joblvup", "joblevel", "joblvlup"]
|
||||
glvl: ["glevel", "guildlvl", "guildlvup", "guildlevel", "guildlvlup"]
|
||||
resetstat: ["streset"]
|
||||
resetskill: ["skreset"]
|
||||
allskill: ["allskills", "skillall", "skillsall"]
|
||||
allstats: ["allstat", "statall", "statsall"]
|
||||
ban: ["banish"]
|
||||
unban: ["unbanish"]
|
||||
unjail: ["discharge"]
|
||||
homlevel: ["hlvl", "hlevel", "homlvl", "homlvup"]
|
||||
homevolution: ["homevolve"]
|
||||
mutearea: ["stfu"]
|
||||
monsterignore: ["battleignore"]
|
||||
raise: ["revive"]
|
||||
kill: ["die"]
|
||||
guildstorage: ["gstorage"]
|
||||
accinfo: ["accountinfo"]
|
||||
itemreset: ["clearinventory"]
|
||||
channel: ["main"]
|
||||
autoloottype: ["aloottype"]
|
||||
cloneequip: ["eqclone"]
|
||||
clonestat: ["stclone"]
|
||||
reloadnpcfile: ["reloadnpc"]
|
||||
changedress: ["nocosplay"]
|
||||
camerainfo: ["viewpointvalue", "setcamera"]
|
||||
}
|
||||
|
||||
/* Commands help file */
|
||||
help: {
|
||||
@include "conf/help.txt"
|
||||
}
|
961
conf/atcommands.yml
Normal file
961
conf/atcommands.yml
Normal file
@ -0,0 +1,961 @@
|
||||
# This file is a part of rAthena.
|
||||
# Copyright(C) 2017 rAthena Development Team
|
||||
# https://rathena.org - https://github.com/rathena
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
###########################################################################
|
||||
# Atcommand Database
|
||||
###########################################################################
|
||||
#
|
||||
# Atcommand Settings
|
||||
#
|
||||
###########################################################################
|
||||
# - Command Command name.
|
||||
# Aliases: Aliases for the command. (Optional)
|
||||
# - <AliasName>
|
||||
# Help Help message for the command. (Optional)
|
||||
###########################################################################
|
||||
|
||||
Header:
|
||||
Type: ATCOMMAND_DB
|
||||
Version: 1
|
||||
|
||||
Body:
|
||||
- Command: help
|
||||
Aliases:
|
||||
- h
|
||||
Help: |
|
||||
Params: <command>
|
||||
Shows help for specified command.
|
||||
- Command: noask
|
||||
Help: |
|
||||
Auto rejects deals/invites.
|
||||
- Command: gmotd
|
||||
Help: |
|
||||
Broadcasts the Message of The Day to all players.
|
||||
- Command: me
|
||||
Help: |
|
||||
Params: <message>
|
||||
Displays normal text as a message in this format: *name message* (like /me in mIRC).
|
||||
- Command: fakename
|
||||
Help: |
|
||||
Params: <name>
|
||||
Changes your name to your choice temporarily.
|
||||
- Command: npctalk
|
||||
Aliases:
|
||||
- npctalkc
|
||||
Help: |
|
||||
Params: <NPC name> <message>
|
||||
Forces a NPC to display a message in normal chat.
|
||||
- Command: broadcast
|
||||
Help: |
|
||||
Params: <message>
|
||||
Broadcasts a message with your name (in yellow).
|
||||
- Command: kami
|
||||
Help: |
|
||||
Params: <message>
|
||||
Broadcasts a message without your name (in yellow).
|
||||
- Command: kamib
|
||||
Help: |
|
||||
Params: <message>
|
||||
Broadcasts a message without your name (in blue).
|
||||
- Command: localbroadcast
|
||||
Help: |
|
||||
Params: <message>
|
||||
Broadcasts a message with your name (in yellow) only on your map.
|
||||
- Command: commands
|
||||
Help: |
|
||||
Displays a list of commands that you can use.
|
||||
- Command: rates
|
||||
Help: |
|
||||
Displays the server's current rates.
|
||||
- Command: uptime
|
||||
Help: |
|
||||
Displays how long the server has been online.
|
||||
- Command: showdelay
|
||||
Help: |
|
||||
Shows/hides the "There is a delay after this skill" message.
|
||||
- Command: exp
|
||||
Help: |
|
||||
Displays current levels and % progress.
|
||||
- Command: mobinfo
|
||||
Aliases:
|
||||
- monsterinfo
|
||||
- mi
|
||||
Help: |
|
||||
Params: <monster name|ID>
|
||||
Shows monster info (stats, exp, drops etc).
|
||||
- Command: iteminfo
|
||||
Aliases:
|
||||
- ii
|
||||
Help: |
|
||||
Params: <item name|ID>
|
||||
Shows item info (type, price etc).
|
||||
- Command: whodrops
|
||||
Help: |
|
||||
Params: <item name|ID>
|
||||
Shows who drops an item (monster with highest drop rates).
|
||||
- Command: version
|
||||
Help: |
|
||||
Displays SVN version of the server.
|
||||
- Command: email
|
||||
Help: |
|
||||
Params: <current email> <new email>
|
||||
Changes your account e-mail address.
|
||||
- Command: where
|
||||
Help: |
|
||||
Params: <char name>
|
||||
Tells you the location of a character.
|
||||
- Command: time
|
||||
Aliases:
|
||||
- date
|
||||
- serverdate
|
||||
- servertime
|
||||
Help: |
|
||||
Shows the date and time of the server.
|
||||
- Command: showexp
|
||||
Help: |
|
||||
Displays/hides experience gained.
|
||||
- Command: showzeny
|
||||
Help: |
|
||||
Displays/hides Zeny gained.
|
||||
- Command: mobsearch
|
||||
Help: |
|
||||
Params: <monster name|ID>
|
||||
Shows the location of a certain mob on the current map.
|
||||
- Command: who
|
||||
Aliases:
|
||||
- whois
|
||||
Help: |
|
||||
Params: [<name>]
|
||||
Shows a list of online players and their party and guild.
|
||||
- Command: who2
|
||||
Help: |
|
||||
Params: [<name>]
|
||||
Shows a list of online players and their job.
|
||||
- Command: who3
|
||||
Help: |
|
||||
Params: [<name>]
|
||||
Shows a list of online players and their location.
|
||||
- Command: whomap
|
||||
Help: |
|
||||
@whomap/@whomap2/@whomap3 [map] - like @who/@who2/@who3 but only for specified map.
|
||||
- Command: whogm
|
||||
Help: |
|
||||
Params: [match_text] - Like @who+@who2+who3, but only for GM.
|
||||
- Command: guildspy
|
||||
Help: |
|
||||
Params: <guild name|id> - You will receive all messages of the guild channel (Chat logging must be enabled)
|
||||
- Command: partyspy
|
||||
Help: |
|
||||
@partyspy <party name|id> - You will receive all messages of the party channel (Chat logging must be enabled)
|
||||
- Command: mapinfo
|
||||
Help: |
|
||||
Params: [<0-3> [map]] - Give information about a map (general info +: 0: no more, 1: players, 2: NPC, 3: chatrooms).
|
||||
- Command: go
|
||||
Help: |
|
||||
Params: <city name|number>
|
||||
Warps you to a city.
|
||||
-3: (Memo point 2) 14: louyang 31: mora
|
||||
-2: (Memo point 1) 15: start point 32: dewata
|
||||
-1: (Memo point 0) 16: prison/jail 33: malangdo island
|
||||
0: prontera 17: jawaii 34: malaya port
|
||||
1: morocc 18: ayothaya 35: eclage
|
||||
2: geffen 19: einbroch 36: lasagna
|
||||
3: payon 20: lighthalzen
|
||||
4: alberta 21: einbech
|
||||
5: izlude 22: hugel
|
||||
6: aldebaran 23: rachel
|
||||
7: xmas (lutie) 24: veins
|
||||
8: comodo 25: moscovia
|
||||
9: yuno 26: midgard camp
|
||||
10: amatsu 27: manuk
|
||||
11: gonryun 28: splendide
|
||||
12: umbala 29: brasilis
|
||||
13: niflheim 30: el dicastes
|
||||
- Command: jumpto
|
||||
Aliases:
|
||||
- goto
|
||||
- warpto
|
||||
Help: |
|
||||
Params: <char name>
|
||||
Warps you to selected character.
|
||||
- Command: follow
|
||||
Help: |
|
||||
Params: <char name>
|
||||
Follow a player.
|
||||
- Command: mount
|
||||
Aliases:
|
||||
- mountpeco
|
||||
Help: |
|
||||
Give/remove a job-based mount (class is required, but not the skill).
|
||||
- Command: mount2
|
||||
Help: |
|
||||
Give/remove a cash mount.
|
||||
- Command: disguise
|
||||
Help: |
|
||||
Params: <monster name|ID>
|
||||
Change your appearence to other players to a mob.
|
||||
- Command: undisguise
|
||||
Help: |
|
||||
Restore your normal appearance.
|
||||
- Command: disguiseguild
|
||||
Help: |
|
||||
Disguises all online characters of a guild.
|
||||
- Command: undisguiseguild
|
||||
Help: |
|
||||
Restore the normal appearance of all characters of a guild.
|
||||
- Command: model
|
||||
Help: |
|
||||
Params: <hair ID: 0-17> <hair color: 0-8> <clothes color: 0-4> - Changes your characters appearence.
|
||||
- Command: size
|
||||
Help: |
|
||||
Params: <0-2> Changes your size (0-Normal 1-Small 2-Large)
|
||||
- Command: sizeall
|
||||
Help: |
|
||||
Changes the size of all players.
|
||||
- Command: sizeguild
|
||||
Help: |
|
||||
Changes the size of all online characters of a guild.
|
||||
- Command: hide
|
||||
Help: |
|
||||
Makes you character invisible (GM invisibility). Type again to become visible.
|
||||
- Command: save
|
||||
Help: |
|
||||
Sets respawn point to current spot.
|
||||
- Command: load
|
||||
Aliases:
|
||||
- return
|
||||
Help: |
|
||||
Warps you to your save point.
|
||||
- Command: warp
|
||||
Aliases:
|
||||
- rura
|
||||
- mapmove
|
||||
Help: |
|
||||
Params: <mapname> [<x> <y>]
|
||||
Warps you to the selected map and position.
|
||||
- Command: jump
|
||||
Help: |
|
||||
Params: [<x> [<y>]]
|
||||
Randomly warps you like a flywing.
|
||||
- Command: jobchange
|
||||
Aliases:
|
||||
- job
|
||||
Help: |
|
||||
Params: <job name|ID>
|
||||
Changes your job.
|
||||
----- Novice / 1st Class -----
|
||||
0 Novice 1 Swordman 2 Magician 3 Archer
|
||||
4 Acolyte 5 Merchant 6 Thief
|
||||
----- 2nd Class -----
|
||||
7 Knight 8 Priest 9 Wizard 10 Blacksmith
|
||||
11 Hunter 12 Assassin 14 Crusader 15 Monk
|
||||
16 Sage 17 Rogue 18 Alchemist 19 Bard
|
||||
20 Dancer
|
||||
----- High Novice / High 1st Class -----
|
||||
4001 Novice High 4002 Swordman High 4003 Magician High 4004 Archer High
|
||||
4005 Acolyte High 4006 Merchant High 4007 Thief High
|
||||
----- Transcendent 2nd Class -----
|
||||
4008 Lord Knight 4009 High Priest 4010 High Wizard 4011 Whitesmith
|
||||
4012 Sniper 4013 Assassin Cross 4015 Paladin 4016 Champion
|
||||
4017 Professor 4018 Stalker 4019 Creator 4020 Clown
|
||||
4021 Gypsy
|
||||
----- 3rd Class (Regular) -----
|
||||
4054 Rune Knight 4055 Warlock 4056 Ranger 4057 Arch Bishop
|
||||
4058 Mechanic 4059 Guillotine Cross 4066 Royal Guard 4067 Sorcerer
|
||||
4068 Minstrel 4069 Wanderer 4070 Sura 4071 Genetic
|
||||
4072 Shadow Chaser
|
||||
----- 3rd Class (Transcendent) -----
|
||||
4060 Rune Knight 4061 Warlock 4062 Ranger 4063 Arch Bishop
|
||||
4064 Mechanic 4065 Guillotine Cross 4073 Royal Guard 4074 Sorcerer
|
||||
4075 Minstrel 4076 Wanderer 4077 Sura 4078 Genetic
|
||||
4079 Shadow Chaser
|
||||
----- Expanded Class -----
|
||||
23 Super Novice 24 Gunslinger 25 Ninja 4045 Super Baby
|
||||
4046 Taekwon 4047 Star Gladiator 4049 Soul Linker 4050 Gangsi
|
||||
4051 Death Knight 4052 Dark Collector 4190 Ex. Super Novice 4191 Ex. Super Baby
|
||||
4211 Kagerou 4212 Oboro 4215 Rebellion 4218 Summoner
|
||||
4239 Star Emperor 4240 Soul Reaper
|
||||
----- Baby Novice And Baby 1st Class -----
|
||||
4023 Baby Novice 4024 Baby Swordman 4025 Baby Magician 4026 Baby Archer
|
||||
4027 Baby Acolyte 4028 Baby Merchant 4029 Baby Thief
|
||||
---- Baby 2nd Class ----
|
||||
4030 Baby Knight 4031 Baby Priest 4032 Baby Wizard 4033 Baby Blacksmith
|
||||
4034 Baby Hunter 4035 Baby Assassin 4037 Baby Crusader 4038 Baby Monk
|
||||
4039 Baby Sage 4040 Baby Rogue 4041 Baby Alchemist 4042 Baby Bard
|
||||
4043 Baby Dancer
|
||||
---- Baby 3rd Class ----
|
||||
4096 Baby Rune Knight 4097 Baby Warlock 4098 Baby Ranger 4099 Baby Arch Bishop
|
||||
4100 Baby Mechanic 4101 Baby Glt. Cross 4102 Baby Royal Guard 4103 Baby Sorcerer
|
||||
4104 Baby Minstrel 4105 Baby Wanderer 4106 Baby Sura 4107 Baby Genetic
|
||||
4108 Baby Shadow Chaser
|
||||
---- Expanded Baby Class ----
|
||||
4220 Baby Summoner 4222 Baby Ninja 4223 Baby Kagero 4224 Baby Oboro
|
||||
4225 Baby Taekwon 4226 Baby Star Glad 4227 Baby Soul Linker 4228 Baby Gunslinger
|
||||
4229 Baby Rebellion 4241 Baby Star Emperor 4242 Baby Soul Reaper
|
||||
---- Modes And Others ----
|
||||
22 Wedding 26 Christmas 27 Summer 28 Hanbok
|
||||
29 Oktoberfest 30 Summer 2
|
||||
4048 Star Gladiator (Union) 4238 Baby Star Glad (Union)
|
||||
- Command: option
|
||||
Help: |
|
||||
Params: <param1> <param2>(stackable) <param3>(stackable)
|
||||
Adds different visual effects on or around your character.
|
||||
<param1> <param2> <param3>
|
||||
01: Stone 01: Sight 01: Sight 512: Cart Lv. 4
|
||||
02: Frozen 02: Curse 02: Hiding 1024: Cart Lv. 5
|
||||
03: Stun 04: Silence 04: Cloaking 2048: Orc Head
|
||||
04: Sleep 08: Signum 08: Cart Lv. 1 4096: Wedding
|
||||
06: Petrify 16: Blind 16: Falcon 8192: Ruwach
|
||||
07: Burning 32: Angelus 32: Riding 16384: Chasewalk
|
||||
08: Imprison 64: Bleeding 64: Invisible
|
||||
16: (Nothing) 128: D. Poison 128: Cart Lv. 2
|
||||
32: (Nothing) 256: Fear 256: Cart Lv. 3
|
||||
- Command: heal
|
||||
Help: |
|
||||
Params: [<HP> <SP>]
|
||||
Heals the desired amount of HP and SP. No value specified will do a full heal.
|
||||
- Command: dye
|
||||
Aliases:
|
||||
- ccolor
|
||||
Help: |
|
||||
Params: <clothes palette no.>
|
||||
Changes your characters clothes color.
|
||||
- Command: hairstyle
|
||||
Aliases:
|
||||
- hstyle
|
||||
Help: |
|
||||
Params: <hairstyle no.>
|
||||
Changes your hair style.
|
||||
- Command: haircolor
|
||||
Aliases:
|
||||
- hcolor
|
||||
Help: |
|
||||
Params <hair palette no.>
|
||||
Changes your hair color.
|
||||
- Command: speed
|
||||
Help: |
|
||||
Params: <1-1000>
|
||||
Changes you walking speed. 1 being the fastest and 1000 the slowest. Default is 150.
|
||||
- Command: effect
|
||||
Help: |
|
||||
Params: <effect id> [<flag>]
|
||||
Give an effect to your character.
|
||||
- Command: dropall
|
||||
Help: |
|
||||
Params: [<item type>]
|
||||
Throws all your possession on the ground. No type specified will drop all items.
|
||||
- Command: storeall
|
||||
Help: |
|
||||
Puts all your possessions in storage.
|
||||
- Command: killable
|
||||
Help: |
|
||||
Make your character killable.
|
||||
- Command: memo
|
||||
Help: |
|
||||
Params: [memo position]
|
||||
Set/change a memo location (no position: display memo points).
|
||||
- Command: spiritball
|
||||
Help: |
|
||||
Params: <1-100>
|
||||
Gives you "spirit spheres" like from the skill "Call Spirits".
|
||||
- Command: questskill
|
||||
Help: |
|
||||
Params: <#>
|
||||
Gives you the specified quest skill
|
||||
Novice = 142: First Aid, 143: Act Dead
|
||||
Archer = 147: Create Arrow, 148: Charge Arrow
|
||||
Swordman = 144: Moving HP Recovery, 145: Attack Weak Point, 146: Auto Berserk
|
||||
Acolyte = 156: Holy Light
|
||||
Thief = 149: Throw Sand, 150: Back Sliding, 151: Take Stone, 152: Throw Stone
|
||||
Merchant = 153: Cart Revolution, 154: Change Cart, 155: Crazy Uproar, 2535: Open Buying Store
|
||||
Magician = 157: Energy Coat
|
||||
Hunter = 1009: Phantasmic Arrow
|
||||
Bard = 1010: Pang Voice
|
||||
Dancer = 1011: Wink of Charm
|
||||
Knight = 1001: Charge Attack
|
||||
Crusader = 1002: Shrink
|
||||
Priest = 1014: Redemptio
|
||||
Monk = 1015: Ki Translation, 1016: Ki Explosio
|
||||
Assassin = 1003: Sonic Acceleration, 1004: Throw Venom Knife
|
||||
Rogue = 1005: Close Confine
|
||||
Blacksmith = 1012: Unfair Trick, 1013: Greed
|
||||
Alchemist = 238: Basis of Life
|
||||
Wizard = 1006: Sight Blaster
|
||||
Sage = 1007: Create Elemental Converter, 1008: Elemental Change (Water), 1017: Elemental Change (Earth), 1018: Elemental Change (Fire), 1019: Elemental Change (Wind)
|
||||
- Command: lostskill
|
||||
Help: |
|
||||
Params: <#>
|
||||
Takes away the specified quest skill from you
|
||||
Novice = 142: First Aid, 143: Act Dead
|
||||
Archer = 147: Create Arrow, 148: Charge Arrow
|
||||
Swordman = 144: Moving HP Recovery, 145: Attack Weak Point, 146: Auto Berserk
|
||||
Acolyte = 156: Holy Light
|
||||
Thief = 149: Throw Sand, 150: Back Sliding, 151: Take Stone, 152: Throw Stone
|
||||
Merchant = 153: Cart Revolution, 154: Change Cart, 155: Crazy Uproar, 2535: Open Buying Store
|
||||
Magician = 157: Energy Coat
|
||||
Hunter = 1009: Phantasmic Arrow
|
||||
Bard = 1010: Pang Voice
|
||||
Dancer = 1011: Wink of Charm
|
||||
Knight = 1001: Charge Attack
|
||||
Crusader = 1002: Shrink
|
||||
Priest = 1014: Redemptio
|
||||
Monk = 1015: Ki Translation, 1016: Ki Explosio
|
||||
Assassin = 1003: Sonic Acceleration, 1004: Throw Venom Knife
|
||||
Rogue = 1005: Close Confine
|
||||
Blacksmith = 1012: Unfair Trick, 1013: Greed
|
||||
Alchemist = 238: Basis of Life
|
||||
Wizard = 1006: Sight Blaster
|
||||
Sage = 1007: Create Elemental Converter, 1008: Elemental Change (Water), 1017: Elemental Change (Earth), 1018: Elemental Change (Fire), 1019: Elemental Change (Wind)
|
||||
- Command: skillid
|
||||
Help: |
|
||||
Params: <name>
|
||||
Look up a skill by name
|
||||
- Command: useskill
|
||||
Help: |
|
||||
Params: <skillid> <skillv> <target>
|
||||
Use a skill on target
|
||||
- Command: skilltree
|
||||
Help: |
|
||||
Params: <skillnum> <charname>
|
||||
Prints the skill tree needed to get a skill for the target player.
|
||||
- Command: marry
|
||||
Help: |
|
||||
Params: <player name>
|
||||
Marry another player.
|
||||
- Command: divorce
|
||||
Help: |
|
||||
Divorce player.
|
||||
- Command: alive
|
||||
Help: |
|
||||
Revives yourself from death.
|
||||
- Command: blvl
|
||||
Aliases:
|
||||
- lvup
|
||||
- blevel
|
||||
- baselvl
|
||||
- baselvup
|
||||
- baselevel
|
||||
- baselvlup
|
||||
Help: |
|
||||
Params: <number of levels>
|
||||
Raises your base level the desired number of levels.
|
||||
- Command: jlvl
|
||||
Aliases:
|
||||
- jlevel
|
||||
- joblvl
|
||||
- joblvup
|
||||
- joblevel
|
||||
- joblvlup
|
||||
Help: |
|
||||
Params: <number of levels>
|
||||
Raises your job level the desired number of levels.
|
||||
- Command: allskill
|
||||
Aliases:
|
||||
- allskills
|
||||
- skillall
|
||||
- skillsall
|
||||
Help: |
|
||||
Give you all skills.
|
||||
- Command: stpoint
|
||||
Help: |
|
||||
Params: <number of points> - Gives you the desired number of stat points.
|
||||
- Command: skpoint
|
||||
Help: |
|
||||
Params: <number of points> - Gives you the desired number of skill points.
|
||||
- Command: zeny
|
||||
Help: |
|
||||
Params: <amount> - Gives you desired amount of Zeny.
|
||||
- Command: cash
|
||||
Help: |
|
||||
Params: <amount> - Gives you the specified amount of cash points.
|
||||
- Command: points
|
||||
Help: |
|
||||
Params: <amount> - Gives you the specified amount of Kafra Points.
|
||||
- Command: str
|
||||
Help: |
|
||||
Params: <amount>
|
||||
Raises STR by given amount.
|
||||
- Command: agi
|
||||
Help: |
|
||||
Params: <amount>
|
||||
Raises AGI by given amount.
|
||||
- Command: dex
|
||||
Help: |
|
||||
Params: <amount>
|
||||
Raises DEX by given amount.
|
||||
- Command: vit
|
||||
Help: |
|
||||
Params: <amount>
|
||||
Raises VIT by given amount.
|
||||
- Command: int
|
||||
Help: |
|
||||
Params: <amount>
|
||||
Raises INT by given amount.
|
||||
- Command: luk
|
||||
Help: |
|
||||
Params: <amount>
|
||||
Raises LUK by given amount.
|
||||
- Command: allstats
|
||||
Aliases:
|
||||
- allstat
|
||||
- statall
|
||||
- statsall
|
||||
Help: |
|
||||
Params: <value>
|
||||
Adds value in all stats (maximum if no value).
|
||||
- Command: addwarp
|
||||
Help: |
|
||||
Params: <map name> <x coord> <y coord> <NPC name>
|
||||
- Command: killmonster2
|
||||
Help: |
|
||||
Kills all monsters of your map (without drops).
|
||||
- Command: monster
|
||||
Aliases:
|
||||
- spawn
|
||||
Help: |
|
||||
Params: <monster name|ID> [<number to spawn> [<desired_monster_name> [<x coord> [<y coord>]]]]
|
||||
@monster2 <desired_monster_name> <monster name|ID> [<number to spawn> [<x coord> [<y coord>]]]
|
||||
@spawn/@monster/@summon/@monster2 "desired monster name" <monster name|ID> [<number to spawn> [<x coord> [<y coord>]]]
|
||||
@spawn/@monster/@summon/@monster2 <monster name|ID> "desired monster name" [<number to spawn> [<x coord> [<y coord>]]]
|
||||
Spawns the desired monster with any desired name.
|
||||
- Command: monstersmall
|
||||
Help: |
|
||||
Params: <monster name|ID>
|
||||
Spawns a smaller version of a monster.
|
||||
- Command: monsterbig
|
||||
Help: |
|
||||
Params: <monster name|ID>
|
||||
Spawns a larger version of a monster.
|
||||
- Command: killmonster
|
||||
Help: |
|
||||
Params: <map>
|
||||
Kill all monsters of the map (they drop)
|
||||
- Command: autoloot
|
||||
Help: |
|
||||
Params: <on|off|#>
|
||||
Makes items go straight into your inventory.
|
||||
- Command: autotrade
|
||||
Aliases:
|
||||
- at
|
||||
Help: |
|
||||
Allows you to vend while you are offline.
|
||||
- Command: changegm
|
||||
Help: |
|
||||
Params: <charname>
|
||||
Changes the leader of your guild (You must be guild leader)
|
||||
- Command: changeleader
|
||||
Help: |
|
||||
Params: <charname>
|
||||
Changes the leader of your party (You must be party leader)
|
||||
- Command: request
|
||||
Help: |
|
||||
Params: <message>
|
||||
Sends a message to all connected GMs (via the gm whisper system)
|
||||
- Command: sound
|
||||
Help: |
|
||||
Params: <path to file in data folder or GRF file>
|
||||
Plays a sound from the data folder or GRF file located on the client.
|
||||
- Command: clone
|
||||
Help: |
|
||||
Params: <charname>
|
||||
Spawns a supportive clone of the given player.
|
||||
- Command: slaveclone
|
||||
Help: |
|
||||
Params: <charname>
|
||||
Spawns a supportive clone of the given player that follows the creator around.
|
||||
- Command: evilclone
|
||||
Help: |
|
||||
Params: <charname>
|
||||
Spawns an aggressive clone of the given player.
|
||||
- Command: changesex
|
||||
Help: |
|
||||
Changes your gender.
|
||||
- Command: duel
|
||||
Help: |
|
||||
Starts a duel.
|
||||
- Command: invite
|
||||
Help: |
|
||||
Invites a player to a duel.
|
||||
- Command: accept
|
||||
Help: |
|
||||
Accepts an invitation to a duel.
|
||||
- Command: reject
|
||||
Help: |
|
||||
Rejects an invitation to a duel.
|
||||
- Command: leave
|
||||
Help: |
|
||||
Leaves a duel.
|
||||
- Command: mail
|
||||
Help: |
|
||||
Open mail box.
|
||||
- Command: storage
|
||||
Help: |
|
||||
Opens storage.
|
||||
- Command: itemreset
|
||||
Aliases:
|
||||
- clearinventory
|
||||
Help: |
|
||||
Remove all your items.
|
||||
- Command: guildstorage
|
||||
Aliases:
|
||||
- gstorage
|
||||
Help: |
|
||||
Opens guild storage.
|
||||
- Command: idsearch
|
||||
Help: |
|
||||
Params: <part_of_item_name>
|
||||
Search all items that name have part_of_item_name
|
||||
- Command: refine
|
||||
Help: |
|
||||
Params: <equip position> <+/- amount>
|
||||
- Command: produce
|
||||
Help: |
|
||||
Params: <equip name or equip ID> <element> <# of very's>
|
||||
Element: 0=None 1=Ice 2=Earth 3=Fire 4=Wind
|
||||
You can add up to 3 Star Crumbs and 1 element
|
||||
- Command: repairall
|
||||
Help: |
|
||||
Repair all items of your inventory
|
||||
- Command: item
|
||||
Help: |
|
||||
Params: <item name or ID> <quantity>
|
||||
Gives you the desired item.
|
||||
- Command: item2
|
||||
Help: |
|
||||
Params: <item name or ID> <quantity> <identified_flag> <refine> <broken_flag> <Card1> <Card2> <Card3> <Card4>
|
||||
Gives you the desired item.
|
||||
- Command: pvpon
|
||||
Help: |
|
||||
Turns pvp on on the current map
|
||||
- Command: pvpoff
|
||||
Help: |
|
||||
Turns pvp off on the current map
|
||||
- Command: gvgon
|
||||
Aliases:
|
||||
- gpvpon
|
||||
Help: |
|
||||
Turns gvg on on the current map
|
||||
- Command: gvgoff
|
||||
Aliases:
|
||||
- gpvpoff
|
||||
Help: |
|
||||
Turns gvg off on the current map
|
||||
- Command: agitstart
|
||||
Help: |
|
||||
Starts War of Emperium
|
||||
- Command: agitend
|
||||
Help: |
|
||||
End War of Emperium
|
||||
- Command: party
|
||||
Help: |
|
||||
Params: <party_name>
|
||||
Create a party.
|
||||
- Command: guild
|
||||
Help: |
|
||||
Params: <guild_name>
|
||||
Create a guild.
|
||||
- Command: glvl
|
||||
Aliases:
|
||||
- glevel
|
||||
- guildlvl
|
||||
- guildlvup
|
||||
- guildlevel
|
||||
- guildlvlup
|
||||
Help: |
|
||||
Params: <# of levels>
|
||||
Raise Guild by desired number of levels
|
||||
- Command: guildrecall
|
||||
Help: |
|
||||
Params: <guild name|ID>
|
||||
Warps all online characters of a guild to you.
|
||||
- Command: partyrecall
|
||||
Help: |
|
||||
Params: <party name|ID>
|
||||
Warps all online characters of a party to you.
|
||||
- Command: petrename
|
||||
Help: |
|
||||
Re-enable pet rename
|
||||
- Command: pettalk
|
||||
Help: |
|
||||
Params: <message>
|
||||
Makes your pet say a message.
|
||||
- Command: petfriendly
|
||||
Help: |
|
||||
Params: <#>
|
||||
Set pet friendly amount (0-1000) 1000 = Max
|
||||
- Command: pethungry
|
||||
Help: |
|
||||
Params: <#>
|
||||
Set pet hungry amount (0-100) 100 = Max
|
||||
- Command: hatch
|
||||
Help: |
|
||||
Create a pet from your inventory eggs list.
|
||||
- Command: makeegg
|
||||
Help: |
|
||||
Params: <pet_id>
|
||||
Gives pet egg for monster number in pet DB
|
||||
- Command: kick
|
||||
Help: |
|
||||
Params: <char name>
|
||||
Kicks specified character off the server
|
||||
- Command: unjail
|
||||
Aliases:
|
||||
- discharge
|
||||
Help: |
|
||||
Params: <char name>
|
||||
Discharges specified character/prisoner
|
||||
- Command: kill
|
||||
Aliases:
|
||||
- die
|
||||
Help: |
|
||||
Kills player.
|
||||
- Command: recall
|
||||
Help: |
|
||||
Params: <char name>
|
||||
Warps target character to you.
|
||||
- Command: raise
|
||||
Aliases:
|
||||
- revive
|
||||
Help: |
|
||||
Params: <char name>
|
||||
Revives target character.
|
||||
- Command: block
|
||||
Help: |
|
||||
Params: <char name>
|
||||
Permanently blocks an account.
|
||||
- Command: unblock
|
||||
Help: |
|
||||
Params: <char name>
|
||||
Unblocks an account.
|
||||
- Command: ban
|
||||
Aliases:
|
||||
- banish
|
||||
Help: |
|
||||
Params: <time> <name>\n" "Temporarily ban an account.
|
||||
time usage: adjustment (+/- value) and element (y/a, m, d/j, h, mn, s)
|
||||
Example: @ban +1m-2mn1s-6y testplayer
|
||||
- Command: unban
|
||||
Aliases:
|
||||
- unbanish
|
||||
Help: |
|
||||
Params: <name> - Unban a account
|
||||
- Command: jail
|
||||
Help: |
|
||||
Params: <char name> - Sends specified character in jails
|
||||
- Command: trade
|
||||
Help: |
|
||||
Params: <char name> - Open a trade window with a another player
|
||||
- Command: recallall
|
||||
Help: |
|
||||
Warps every character online to you.
|
||||
- Command: doom
|
||||
Help: |
|
||||
Kills all NON GM chars on the server.
|
||||
- Command: doommap
|
||||
Help: |
|
||||
Kills all non GM characters on the map.
|
||||
- Command: raisemap
|
||||
Help: |
|
||||
Resurrects all characters on the map.
|
||||
- Command: night
|
||||
Help: |
|
||||
Enables night mode on all maps, all characters are affected.
|
||||
- Command: day
|
||||
Help: |
|
||||
Disables night mode and restores regular lighting, all characters are affected.
|
||||
- Command: skillon
|
||||
Help: |
|
||||
Turn skills on for a map.
|
||||
- Command: skilloff
|
||||
Help: |
|
||||
Turn skills off for a map.
|
||||
- Command: snow
|
||||
Help: |
|
||||
Makes all maps to have the snow weather effect.
|
||||
- Command: clouds
|
||||
Help: |
|
||||
Makes all maps to have the cloudy weather effect.
|
||||
- Command: clouds2
|
||||
Help: |
|
||||
Makes all maps to have another cloudy weather effect.
|
||||
- Command: fog
|
||||
Help: |
|
||||
Makes all maps to have the fog weather effect.
|
||||
- Command: fireworks
|
||||
Help: |
|
||||
Makes all maps to have the fireworks weather effect.
|
||||
- Command: sakura
|
||||
Help: |
|
||||
Makes all maps to have the sakura weather effect.
|
||||
- Command: leaves
|
||||
Help: |
|
||||
Makes all maps to have the leaves weather effect.
|
||||
- Command: shownpc
|
||||
Help: |
|
||||
Params: <NPC name>
|
||||
Enable a NPC.
|
||||
- Command: hidenpc
|
||||
Help: |
|
||||
Params: <NPC name>
|
||||
Disable a NPC.
|
||||
- Command: npcmove
|
||||
Help: |
|
||||
Params: <x coord> <y coord> <NPC name>
|
||||
Move a NPC.
|
||||
- Command: loadnpc
|
||||
Help: |
|
||||
Params: <path to script>
|
||||
Load the specified script file path.
|
||||
- Command: unloadnpc
|
||||
Help: |
|
||||
Params: <NPC name>
|
||||
Unload the specified NPC according to name.
|
||||
- Command: unloadnpcfile
|
||||
Help: |
|
||||
Params: <path>
|
||||
Unload the specified script file path.
|
||||
- Command: adjgroup
|
||||
Help: |
|
||||
Params: <level> <char name>
|
||||
Do a temporary adjustment of the group level of a player.
|
||||
- Command: addperm
|
||||
Help: |
|
||||
Params: <permission_name>
|
||||
Temporarily add a permission to a player.
|
||||
- Command: rmvperm
|
||||
Help: |
|
||||
Params: <permission_name>
|
||||
Temporarily remove a permission from a player.
|
||||
- Command: kickall
|
||||
Help: |
|
||||
Kick all characters off the server
|
||||
- Command: mapexit
|
||||
Help: |
|
||||
Kick all players and shut down map-server.
|
||||
- Command: gat
|
||||
Help: |
|
||||
For debugging (you inspect around gat)
|
||||
- Command: send
|
||||
Help: |
|
||||
Params: <Hex Number> [<value>]
|
||||
For debugging (packet variety)
|
||||
- Command: nuke
|
||||
Help: |
|
||||
Params: <char name>
|
||||
Blow somebody up, including those surrounding them.
|
||||
- Command: reloadatcommand
|
||||
Help: |
|
||||
Reload atcommand settings.
|
||||
- Command: reloadbattleconf
|
||||
Help: |
|
||||
Reload battle settings.
|
||||
- Command: reloaditemdb
|
||||
Help: |
|
||||
Reload item database.
|
||||
- Command: reloadmobdb
|
||||
Help: |
|
||||
Reload monster database.
|
||||
- Command: reloadmotd
|
||||
Help: |
|
||||
Reload Message of the Day.
|
||||
- Command: reloadmsgconf
|
||||
Help: |
|
||||
Reload message configuration.
|
||||
- Command: reloadpcdb
|
||||
Help: |
|
||||
Reload player settings.
|
||||
- Command: reloadquestdb
|
||||
Help: |
|
||||
Reload quest database.
|
||||
- Command: reloadscript
|
||||
Help: |
|
||||
Reload all scripts.
|
||||
- Command: reloadskilldb
|
||||
Help: |
|
||||
Reload skills definition database.
|
||||
- Command: reloadstatusdb
|
||||
Help: |
|
||||
Reload status settings.
|
||||
- Command: reload
|
||||
Help: |
|
||||
Params: <type>
|
||||
Reload a database or configuration file.
|
||||
itemdb mobdb skilldb
|
||||
atcommand battleconf statusdb
|
||||
pcdb motd script
|
||||
questdb msgconf packetdb
|
||||
- Command: langtype
|
||||
Help: |
|
||||
Params: <language>
|
||||
Changes your language setting.
|
||||
- Command: limitedsale
|
||||
Help: |
|
||||
Opens the limited sale window.
|
||||
- Command: changedress
|
||||
Aliases:
|
||||
- nocosplay
|
||||
Help: |
|
||||
Removes all character costumes.
|
||||
- Command: camerainfo
|
||||
Aliases:
|
||||
- viewpointvalue
|
||||
- setcamera
|
||||
Help: |
|
||||
Shows or updates the client's camera settings.
|
||||
- Command: resetstat
|
||||
Aliases:
|
||||
- streset
|
||||
- Command: resetskill
|
||||
Aliases:
|
||||
- skreset
|
||||
- Command: homlevel
|
||||
Aliases:
|
||||
- hlvl
|
||||
- hlevel
|
||||
- homlvl
|
||||
- homlvup
|
||||
- Command: homevolution
|
||||
Aliases:
|
||||
- homevolve
|
||||
- Command: mutearea
|
||||
Aliases:
|
||||
- stfu
|
||||
- Command: monsterignore
|
||||
Aliases:
|
||||
- battleignore
|
||||
- Command: accinfo
|
||||
Aliases:
|
||||
- accountinfo
|
||||
- Command: channel
|
||||
Aliases:
|
||||
- main
|
||||
- Command: autoloottype
|
||||
Aliases:
|
||||
- aloottype
|
||||
- Command: cloneequip
|
||||
Aliases:
|
||||
- eqclone
|
||||
- Command: clonestat
|
||||
Aliases:
|
||||
- stclone
|
||||
- Command: reloadnpcfile
|
||||
Aliases:
|
||||
- reloadnpc
|
||||
|
||||
Footer:
|
||||
Imports:
|
||||
- Path: conf/import/atcommands.yml
|
@ -7,6 +7,17 @@
|
||||
// Note 2: Value is in percents (100 means 100%)
|
||||
//--------------------------------------------------------------
|
||||
|
||||
// The symbol that will be used to recognize commands.
|
||||
// You can set any one character except:
|
||||
// - control-characters (0x00-0x1f),
|
||||
// - '%' (party chat symbol)
|
||||
// - '$' (guild chat symbol)
|
||||
// - '/' (client commands symbol)
|
||||
// atcommand_symbol represents @commands used locally.
|
||||
// charcommand_symbol represents #commands used on other players.
|
||||
atcommand_symbol: @
|
||||
charcommand_symbol: #
|
||||
|
||||
// The maximum quantity of monsters that can be summoned per GM command (0 denotes an unlimited quantity)
|
||||
atcommand_spawn_quantity_limit: 100
|
||||
|
||||
|
328
conf/help.txt
328
conf/help.txt
@ -1,328 +0,0 @@
|
||||
// This is help file that contains help messages for atcommands/charcommands.
|
||||
// Format:
|
||||
// <command>: "<help message>"
|
||||
// This file uses libconfig syntax.
|
||||
|
||||
help: "Params: <command>\n" "Shows help for specified command."
|
||||
noask: "Auto rejects deals/invites."
|
||||
gmotd: "Broadcasts the Message of The Day to all players."
|
||||
me: "Params: <message>\n" "Displays normal text as a message in this format: *name message* (like /me in mIRC)."
|
||||
fakename: "Params: <name>\n" "Changes your name to your choice temporarily."
|
||||
npctalk: "Params: <NPC name> <message>\n" "Forces a NPC to display a message in normal chat."
|
||||
broadcast: "Params: <message>\n" "Broadcasts a message with your name (in yellow)."
|
||||
kami: "Params: <message>\n" "Broadcasts a message without your name (in yellow)."
|
||||
kamib: "Params: <message>\n" "Broadcasts a message without your name (in blue)."
|
||||
localbroadcast: "Params: <message>\n" "Broadcasts a message with your name (in yellow) only on your map."
|
||||
commands: "Displays a list of commands that you can use."
|
||||
rates: "Displays the server's current rates."
|
||||
uptime: "Displays how long the server has been online."
|
||||
showdelay: "Shows/hides the \"There is a delay after this skill\" message."
|
||||
exp: "Displays current levels and % progress."
|
||||
mobinfo: "Params: <monster name|ID>\n" "Shows monster info (stats, exp, drops etc)."
|
||||
iteminfo: "Params: <item name|ID>\n" "Shows item info (type, price etc)."
|
||||
whodrops: "Params: <item name|ID>\n" "Shows who drops an item (monster with highest drop rates)."
|
||||
version: "Displays SVN version of the server."
|
||||
email: "Params: <current email> <new email>\n" "Changes your account e-mail address."
|
||||
where: "Params: <char name>\n" "Tells you the location of a character."
|
||||
time: "Shows the date and time of the server."
|
||||
showexp: "Displays/hides experience gained."
|
||||
showzeny: "Displays/hides Zeny gained."
|
||||
mobsearch: "Params: <monster name|ID>\n" "Shows the location of a certain mob on the current map."
|
||||
who: "Params: [<name>]\n" "Shows a list of online players and their party and guild."
|
||||
who2: "Params: [<name>]\n" "Shows a list of online players and their job."
|
||||
who3: "Params: [<name>]\n" "Shows a list of online players and their location."
|
||||
whomap: "@whomap/@whomap2/@whomap3 [map] - like @who/@who2/@who3 but only for specified map."
|
||||
whogm: "Params: [match_text] - Like @who+@who2+who3, but only for GM."
|
||||
guildspy: "Params: <guild name|id> - You will receive all messages of the guild channel (Chat logging must be enabled)"
|
||||
partyspy: "@partyspy <party name|id> - You will receive all messages of the party channel (Chat logging must be enabled)"
|
||||
mapinfo: "Params: [<0-3> [map]] - Give information about a map (general info +: 0: no more, 1: players, 2: NPC, 3: chatrooms)."
|
||||
go: "Params: <city name|number>\n" "Warps you to a city.\n"
|
||||
" -3: (Memo point 2) 14: louyang 31: mora\n"
|
||||
" -2: (Memo point 1) 15: start point 32: dewata\n"
|
||||
" -1: (Memo point 0) 16: prison/jail 33: malangdo island\n"
|
||||
" 0: prontera 17: jawaii 34: malaya port\n"
|
||||
" 1: morocc 18: ayothaya 35: eclage\n"
|
||||
" 2: geffen 19: einbroch 36: lasagna\n"
|
||||
" 3: payon 20: lighthalzen\n"
|
||||
" 4: alberta 21: einbech\n"
|
||||
" 5: izlude 22: hugel\n"
|
||||
" 6: aldebaran 23: rachel\n"
|
||||
" 7: xmas (lutie) 24: veins\n"
|
||||
" 8: comodo 25: moscovia\n"
|
||||
" 9: yuno 26: midgard camp\n"
|
||||
" 10: amatsu 27: manuk\n"
|
||||
" 11: gonryun 28: splendide\n"
|
||||
" 12: umbala 29: brasilis\n"
|
||||
" 13: niflheim 30: el dicastes\n"
|
||||
jumpto: "Params: <char name>\n" "Warps you to selected character."
|
||||
follow: "Params: <char name>\n" "Follow a player."
|
||||
mount: "Give/remove a job-based mount (class is required, but not the skill)."
|
||||
mount2: "Give/remove a cash mount."
|
||||
disguise: "Params: <monster name|ID>\n" "Change your appearence to other players to a mob."
|
||||
undisguise: "Restore your normal appearance."
|
||||
disguiseguild: "Disguises all online characters of a guild."
|
||||
undisguiseguild: "Restore the normal appearance of all characters of a guild."
|
||||
model: "Params: <hair ID: 0-17> <hair color: 0-8> <clothes color: 0-4> - Changes your characters appearence."
|
||||
size: "Params: <0-2> Changes your size (0-Normal 1-Small 2-Large)"
|
||||
sizeall: "Changes the size of all players."
|
||||
sizeguild: "Changes the size of all online characters of a guild."
|
||||
hide: "Makes you character invisible (GM invisibility). Type again to become visible."
|
||||
save: "Sets respawn point to current spot."
|
||||
load: "Warps you to your save point."
|
||||
warp: "Params: <mapname> [<x> <y>]\n" "Warps you to the selected map and position."
|
||||
jump: "Params: [<x> [<y>]]\n" "Randomly warps you like a flywing."
|
||||
jobchange: "Params: <job name|ID>\n" "Changes your job.\n"
|
||||
"----- Novice / 1st Class -----\n"
|
||||
" 0 Novice 1 Swordman 2 Magician 3 Archer\n"
|
||||
" 4 Acolyte 5 Merchant 6 Thief\n"
|
||||
"----- 2nd Class -----\n"
|
||||
" 7 Knight 8 Priest 9 Wizard 10 Blacksmith\n"
|
||||
" 11 Hunter 12 Assassin 14 Crusader 15 Monk\n"
|
||||
" 16 Sage 17 Rogue 18 Alchemist 19 Bard\n"
|
||||
" 20 Dancer\n"
|
||||
"----- High Novice / High 1st Class -----\n"
|
||||
"4001 Novice High 4002 Swordman High 4003 Magician High 4004 Archer High\n"
|
||||
"4005 Acolyte High 4006 Merchant High 4007 Thief High\n"
|
||||
"----- Transcendent 2nd Class -----\n"
|
||||
"4008 Lord Knight 4009 High Priest 4010 High Wizard 4011 Whitesmith\n"
|
||||
"4012 Sniper 4013 Assassin Cross 4015 Paladin 4016 Champion\n"
|
||||
"4017 Professor 4018 Stalker 4019 Creator 4020 Clown\n"
|
||||
"4021 Gypsy\n"
|
||||
"----- 3rd Class (Regular) -----\n"
|
||||
"4054 Rune Knight 4055 Warlock 4056 Ranger 4057 Arch Bishop\n"
|
||||
"4058 Mechanic 4059 Guillotine Cross 4066 Royal Guard 4067 Sorcerer\n"
|
||||
"4068 Minstrel 4069 Wanderer 4070 Sura 4071 Genetic\n"
|
||||
"4072 Shadow Chaser\n"
|
||||
"----- 3rd Class (Transcendent) -----\n"
|
||||
"4060 Rune Knight 4061 Warlock 4062 Ranger 4063 Arch Bishop\n"
|
||||
"4064 Mechanic 4065 Guillotine Cross 4073 Royal Guard 4074 Sorcerer\n"
|
||||
"4075 Minstrel 4076 Wanderer 4077 Sura 4078 Genetic\n"
|
||||
"4079 Shadow Chaser\n"
|
||||
"----- Expanded Class -----\n"
|
||||
" 23 Super Novice 24 Gunslinger 25 Ninja 4045 Super Baby\n"
|
||||
"4046 Taekwon 4047 Star Gladiator 4049 Soul Linker 4050 Gangsi\n"
|
||||
"4051 Death Knight 4052 Dark Collector 4190 Ex. Super Novice 4191 Ex. Super Baby\n"
|
||||
"4211 Kagerou 4212 Oboro 4215 Rebellion 4218 Summoner\n"
|
||||
"4239 Star Emperor 4240 Soul Reaper\n"
|
||||
"----- Baby Novice And Baby 1st Class -----\n"
|
||||
"4023 Baby Novice 4024 Baby Swordman 4025 Baby Magician 4026 Baby Archer\n"
|
||||
"4027 Baby Acolyte 4028 Baby Merchant 4029 Baby Thief\n"
|
||||
"---- Baby 2nd Class ----\n"
|
||||
"4030 Baby Knight 4031 Baby Priest 4032 Baby Wizard 4033 Baby Blacksmith\n"
|
||||
"4034 Baby Hunter 4035 Baby Assassin 4037 Baby Crusader 4038 Baby Monk\n"
|
||||
"4039 Baby Sage 4040 Baby Rogue 4041 Baby Alchemist 4042 Baby Bard\n"
|
||||
"4043 Baby Dancer\n"
|
||||
"---- Baby 3rd Class ----\n"
|
||||
"4096 Baby Rune Knight 4097 Baby Warlock 4098 Baby Ranger 4099 Baby Arch Bishop\n"
|
||||
"4100 Baby Mechanic 4101 Baby Glt. Cross 4102 Baby Royal Guard 4103 Baby Sorcerer\n"
|
||||
"4104 Baby Minstrel 4105 Baby Wanderer 4106 Baby Sura 4107 Baby Genetic\n"
|
||||
"4108 Baby Shadow Chaser\n"
|
||||
"---- Expanded Baby Class ----\n"
|
||||
"4220 Baby Summoner 4222 Baby Ninja 4223 Baby Kagero 4224 Baby Oboro\n"
|
||||
"4225 Baby Taekwon 4226 Baby Star Glad 4227 Baby Soul Linker 4228 Baby Gunslinger\n"
|
||||
"4229 Baby Rebellion 4241 Baby Star Emperor 4242 Baby Soul Reaper\n"
|
||||
"---- Modes And Others ----\n"
|
||||
" 22 Wedding 26 Christmas 27 Summer 28 Hanbok\n"
|
||||
" 29 Oktoberfest 30 Summer 2\n"
|
||||
" 4048 Star Gladiator (Union) 4238 Baby Star Glad (Union)\n"
|
||||
option: "Params: <param1> <param2>(stackable) <param3>(stackable)\n" "Adds different visual effects on or around your character.\n"
|
||||
" <param1> <param2> <param3>\n"
|
||||
"01: Stone 01: Sight 01: Sight 512: Cart Lv. 4\n"
|
||||
"02: Frozen 02: Curse 02: Hiding 1024: Cart Lv. 5\n"
|
||||
"03: Stun 04: Silence 04: Cloaking 2048: Orc Head\n"
|
||||
"04: Sleep 08: Signum 08: Cart Lv. 1 4096: Wedding\n"
|
||||
"06: Petrify 16: Blind 16: Falcon 8192: Ruwach\n"
|
||||
"07: Burning 32: Angelus 32: Riding 16384: Chasewalk\n"
|
||||
"08: Imprison 64: Bleeding 64: Invisible\n"
|
||||
"16: (Nothing) 128: D. Poison 128: Cart Lv. 2\n"
|
||||
"32: (Nothing) 256: Fear 256: Cart Lv. 3"
|
||||
heal: "Params: [<HP> <SP>]\n" "Heals the desired amount of HP and SP. No value specified will do a full heal."
|
||||
dye: "Params: <clothes palette no.>\n" "Changes your characters clothes color."
|
||||
hairstyle: "Params: <hairstyle no.>\n" "Changes your hair style."
|
||||
haircolor: "Params <hair palette no.>\n" "Changes your hair color."
|
||||
speed: "Params: <1-1000>\n" "Changes you walking speed. 1 being the fastest and 1000 the slowest. Default is 150."
|
||||
effect: "Params: <effect id> [<flag>]\n" "Give an effect to your character."
|
||||
dropall: "Params: [<item type>]\n" "Throws all your possession on the ground. No type specified will drop all items."
|
||||
storeall: "Puts all your possessions in storage."
|
||||
killable: "Make your character killable."
|
||||
memo: "Params: [memo position]\n" "Set/change a memo location (no position: display memo points)."
|
||||
spiritball: "Params: <1-100>\n" "Gives you \"spirit spheres\" like from the skill \"Call Spirits\".\n"
|
||||
questskill: "Params: <#>\n" "Gives you the specified quest skill\n"
|
||||
"Novice = 142: First Aid, 143: Act Dead\n"
|
||||
"Archer = 147: Create Arrow, 148: Charge Arrow\n"
|
||||
"Swordman = 144: Moving HP Recovery, 145: Attack Weak Point, 146: Auto Berserk\n"
|
||||
"Acolyte = 156: Holy Light\n"
|
||||
"Thief = 149: Throw Sand, 150: Back Sliding, 151: Take Stone, 152: Throw Stone\n"
|
||||
"Merchant = 153: Cart Revolution, 154: Change Cart, 155: Crazy Uproar, 2535: Open Buying Store\n"
|
||||
"Magician = 157: Energy Coat\n"
|
||||
"Hunter = 1009: Phantasmic Arrow\n"
|
||||
"Bard = 1010: Pang Voice\n"
|
||||
"Dancer = 1011: Wink of Charm\n"
|
||||
"Knight = 1001: Charge Attack\n"
|
||||
"Crusader = 1002: Shrink\n"
|
||||
"Priest = 1014: Redemptio\n"
|
||||
"Monk = 1015: Ki Translation, 1016: Ki Explosio\n"
|
||||
"Assassin = 1003: Sonic Acceleration, 1004: Throw Venom Knife\n"
|
||||
"Rogue = 1005: Close Confine\n"
|
||||
"Blacksmith = 1012: Unfair Trick, 1013: Greed\n"
|
||||
"Alchemist = 238: Basis of Life\n"
|
||||
"Wizard = 1006: Sight Blaster\n"
|
||||
"Sage = 1007: Create Elemental Converter, 1008: Elemental Change (Water), 1017: Elemental Change (Earth), 1018: Elemental Change (Fire), 1019: Elemental Change (Wind)"
|
||||
lostskill: "Params: <#>\n" "Takes away the specified quest skill from you\n"
|
||||
"Novice = 142: First Aid, 143: Act Dead\n"
|
||||
"Archer = 147: Create Arrow, 148: Charge Arrow\n"
|
||||
"Swordman = 144: Moving HP Recovery, 145: Attack Weak Point, 146: Auto Berserk\n"
|
||||
"Acolyte = 156: Holy Light\n"
|
||||
"Thief = 149: Throw Sand, 150: Back Sliding, 151: Take Stone, 152: Throw Stone\n"
|
||||
"Merchant = 153: Cart Revolution, 154: Change Cart, 155: Crazy Uproar, 2535: Open Buying Store\n"
|
||||
"Magician = 157: Energy Coat\n"
|
||||
"Hunter = 1009: Phantasmic Arrow\n"
|
||||
"Bard = 1010: Pang Voice\n"
|
||||
"Dancer = 1011: Wink of Charm\n"
|
||||
"Knight = 1001: Charge Attack\n"
|
||||
"Crusader = 1002: Shrink\n"
|
||||
"Priest = 1014: Redemptio\n"
|
||||
"Monk = 1015: Ki Translation, 1016: Ki Explosio\n"
|
||||
"Assassin = 1003: Sonic Acceleration, 1004: Throw Venom Knife\n"
|
||||
"Rogue = 1005: Close Confine\n"
|
||||
"Blacksmith = 1012: Unfair Trick, 1013: Greed\n"
|
||||
"Alchemist = 238: Basis of Life\n"
|
||||
"Wizard = 1006: Sight Blaster\n"
|
||||
"Sage = 1007: Create Elemental Converter, 1008: Elemental Change (Water), 1017: Elemental Change (Earth), 1018: Elemental Change (Fire), 1019: Elemental Change (Wind)"
|
||||
skillid: "Params: <name>\n" "Look up a skill by name"
|
||||
useskill: "Params: <skillid> <skillv> <target>\n" "Use a skill on target"
|
||||
skilltree: "Params: <skillnum> <charname>\n" "Prints the skill tree needed to get a skill for the target player."
|
||||
marry: "Params: <player name>\n" "Marry another player."
|
||||
divorce: "Divorce player."
|
||||
alive: "Revives yourself from death."
|
||||
blvl: "Params: <number of levels>\n" "Raises your base level the desired number of levels."
|
||||
jlvl: "Params: <number of levels>\n" "Raises your job level the desired number of levels."
|
||||
allskill: "Give you all skills."
|
||||
stpoint: "Params: <number of points> - Gives you the desired number of stat points."
|
||||
skpoint: "Params: <number of points> - Gives you the desired number of skill points."
|
||||
zeny: "Params: <amount> - Gives you desired amount of Zeny."
|
||||
cash: "Params: <amount> - Gives you the specified amount of cash points."
|
||||
points: "Params: <amount> - Gives you the specified amount of Kafra Points."
|
||||
str: "Params: <amount>\n" "Raises STR by given amount."
|
||||
agi: "Params: <amount>\n" "Raises AGI by given amount."
|
||||
dex: "Params: <amount>\n" "Raises DEX by given amount."
|
||||
vit: "Params: <amount>\n" "Raises VIT by given amount."
|
||||
int: "Params: <amount>\n" "Raises INT by given amount."
|
||||
luk: "Params: <amount>\n" "Raises LUK by given amount."
|
||||
allstats: "Params: <value>\n" "Adds value in all stats (maximum if no value)."
|
||||
addwarp: "Params: <map name> <x coord> <y coord> <NPC name>\n"
|
||||
killmonster2: "Kills all monsters of your map (without drops)."
|
||||
monster: "Params: <monster name|ID> [<number to spawn> [<desired_monster_name> [<x coord> [<y coord>]]]]\n"
|
||||
"@monster2 <desired_monster_name> <monster name|ID> [<number to spawn> [<x coord> [<y coord>]]]\n"
|
||||
"@spawn/@monster/@summon/@monster2 \"desired monster name\" <monster name|ID> [<number to spawn> [<x coord> [<y coord>]]]\n"
|
||||
"@spawn/@monster/@summon/@monster2 <monster name|ID> \"desired monster name\" [<number to spawn> [<x coord> [<y coord>]]]\n"
|
||||
" Spawns the desired monster with any desired name."
|
||||
monstersmall: "Params: <monster name|ID>\n" "Spawns a smaller version of a monster."
|
||||
monsterbig: "Params: <monster name|ID>\n" "Spawns a larger version of a monster."
|
||||
killmonster: "Params: <map>\n" "Kill all monsters of the map (they drop)"
|
||||
autoloot: "Params: <on|off|#>\n" "Makes items go straight into your inventory."
|
||||
autotrade: "Allows you to vend while you are offline."
|
||||
changegm: "Params: <charname>\n" "Changes the leader of your guild (You must be guild leader)"
|
||||
changeleader: "Params: <charname>\n" "Changes the leader of your party (You must be party leader)"
|
||||
request: "Params: <message>\n" "Sends a message to all connected GMs (via the gm whisper system)"
|
||||
sound: "Params: <path to file in data folder or GRF file>\n" "Plays a sound from the data folder or GRF file located on the client."
|
||||
clone: "Params: <charname>\n" "Spawns a supportive clone of the given player."
|
||||
slaveclone: "Params: <charname>\n" "Spawns a supportive clone of the given player that follows the creator around."
|
||||
evilclone: "Params: <charname>\n" "Spawns an aggressive clone of the given player."
|
||||
changesex: "Changes your gender."
|
||||
duel: "Starts a duel."
|
||||
invite: "Invites a player to a duel."
|
||||
accept: "Accepts an invitation to a duel."
|
||||
reject: "Rejects an invitation to a duel."
|
||||
leave: "Leaves a duel."
|
||||
mail: "Open mail box."
|
||||
storage: "Opens storage."
|
||||
itemreset: "Remove all your items."
|
||||
guildstorage: "Opens guild storage."
|
||||
idsearch: "Params: <part_of_item_name>\n" "Search all items that name have part_of_item_name"
|
||||
refine: "Params: <equip position> <+/- amount>"
|
||||
produce: "Params: <equip name or equip ID> <element> <# of very's>\n"
|
||||
" Element: 0=None 1=Ice 2=Earth 3=Fire 4=Wind\n"
|
||||
" You can add up to 3 Star Crumbs and 1 element\n"
|
||||
repairall: "Repair all items of your inventory"
|
||||
item: "Params: <item name or ID> <quantity>\n" "Gives you the desired item."
|
||||
item2: "Params: <item name or ID> <quantity> <identified_flag> <refine> <broken_flag> <Card1> <Card2> <Card3> <Card4>\n" "Gives you the desired item."
|
||||
pvpon: "Turns pvp on on the current map"
|
||||
pvpoff: "Turns pvp off on the current map"
|
||||
gvgon: "Turns gvg on on the current map"
|
||||
gvgoff: "Turns gvg off on the current map"
|
||||
agitstart: "Starts War of Emperium"
|
||||
agitend: "End War of Emperium"
|
||||
party: "Params: <party_name>\n" "Create a party."
|
||||
guild: "Params: <guild_name>\n" "Create a guild."
|
||||
glvl: "Params: <# of levels>\n" "Raise Guild by desired number of levels"
|
||||
guildrecall: "Params: <guild name|ID>\n" "Warps all online characters of a guild to you."
|
||||
partyrecall: "Params: <party name|ID>\n" "Warps all online characters of a party to you."
|
||||
petrename: "Re-enable pet rename"
|
||||
pettalk: "Params: <message>\n" "Makes your pet say a message."
|
||||
petfriendly: "Params: <#>\n" "Set pet friendly amount (0-1000) 1000 = Max"
|
||||
pethungry: "Params: <#>\n" "Set pet hungry amount (0-100) 100 = Max"
|
||||
hatch: "Create a pet from your inventory eggs list."
|
||||
makeegg: "Params: <pet_id>\n" "Gives pet egg for monster number in pet DB"
|
||||
kick: "Params: <char name>\n" "Kicks specified character off the server"
|
||||
unjail: "Params: <char name>\n" "Discharges specified character/prisoner"
|
||||
kill: "Kills player."
|
||||
recall: "Params: <char name>\n" "Warps target character to you."
|
||||
raise: "Params: <char name>\n" "Revives target character."
|
||||
block: "Params: <char name>\n" "Permanently blocks an account."
|
||||
unblock: "Params: <char name>\n" "Unblocks an account."
|
||||
ban: "Params: <time> <name>\n" "Temporarily ban an account.\n"
|
||||
" time usage: adjustment (+/- value) and element (y/a, m, d/j, h, mn, s)\n"
|
||||
" Example: @ban +1m-2mn1s-6y testplayer\n"
|
||||
unban: "Params: <name> - Unban a account"
|
||||
jail: "Params: <char name> - Sends specified character in jails"
|
||||
trade: "Params: <char name> - Open a trade window with a another player"
|
||||
recallall: "Warps every character online to you."
|
||||
doom: "Kills all NON GM chars on the server."
|
||||
doommap: "Kills all non GM characters on the map."
|
||||
raisemap: "Resurrects all characters on the map."
|
||||
night: "Enables night mode on all maps, all characters are affected."
|
||||
day: "Disables night mode and restores regular lighting, all characters are affected."
|
||||
skillon: "Turn skills on for a map."
|
||||
skilloff: "Turn skills off for a map."
|
||||
snow: "Makes all maps to have the snow weather effect."
|
||||
clouds: "Makes all maps to have the cloudy weather effect."
|
||||
clouds2: "Makes all maps to have another cloudy weather effect."
|
||||
fog: "Makes all maps to have the fog weather effect."
|
||||
fireworks: "Makes all maps to have the fireworks weather effect."
|
||||
sakura: "Makes all maps to have the sakura weather effect."
|
||||
leaves: "Makes all maps to have the leaves weather effect."
|
||||
shownpc: "Params: <NPC name>\n" "Enable a NPC."
|
||||
hidenpc: "Params: <NPC name>\n" "Disable a NPC."
|
||||
npcmove: "Params: <x coord> <y coord> <NPC name>\n" "Move a NPC."
|
||||
loadnpc: "Params: <path to script>\n" "Load the specified script file path."
|
||||
unloadnpc: "Params: <NPC name>\n" "Unload the specified NPC according to name."
|
||||
unloadnpcfile: "Params: <path>\n" "Unload the specified script file path."
|
||||
adjgroup: "Params: <level> <char name>\n" "Do a temporary adjustment of the group level of a player."
|
||||
addperm: "Params: <permission_name>\n" "Temporarily add a permission to a player."
|
||||
rmvperm: "Params: <permission_name>\n" "Temporarily remove a permission from a player."
|
||||
kickall: "Kick all characters off the server"
|
||||
mapexit: "Kick all players and shut down map-server."
|
||||
gat: "For debugging (you inspect around gat)"
|
||||
send: "Params: <Hex Number> [<value>]\n" "For debugging (packet variety)"
|
||||
nuke: "Params: <char name>\n" "Blow somebody up, including those surrounding them."
|
||||
reloadatcommand: "Reload atcommand settings."
|
||||
reloadbattleconf: "Reload battle settings."
|
||||
reloaditemdb: "Reload item database."
|
||||
reloadmobdb: "Reload monster database."
|
||||
reloadmotd: "Reload Message of the Day."
|
||||
reloadmsgconf: "Reload message configuration."
|
||||
reloadpcdb: "Reload player settings."
|
||||
reloadquestdb: "Reload quest database."
|
||||
reloadscript: "Reload all scripts."
|
||||
reloadskilldb: "Reload skills definition database."
|
||||
reloadstatusdb: "Reload status settings."
|
||||
reload: "Params: <type>\n" "Reload a database or configuration file.\n"
|
||||
" itemdb mobdb skilldb\n"
|
||||
" atcommand battleconf statusdb\n"
|
||||
" pcdb motd script\n"
|
||||
" questdb msgconf packetdb\n"
|
||||
langtype: "Params: <language>\n" "Changes your language setting."
|
||||
limitedsale: "Opens the limited sale window."
|
||||
changedress: "Removes all character costumes."
|
||||
camerainfo: "Shows or updates the client's camera settings."
|
33
conf/import-tmpl/atcommands.yml
Normal file
33
conf/import-tmpl/atcommands.yml
Normal file
@ -0,0 +1,33 @@
|
||||
# This file is a part of rAthena.
|
||||
# Copyright(C) 2017 rAthena Development Team
|
||||
# https://rathena.org - https://github.com/rathena
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
###########################################################################
|
||||
# Atcommand Database
|
||||
###########################################################################
|
||||
#
|
||||
# Atcommand Settings
|
||||
#
|
||||
###########################################################################
|
||||
# - Command Command name.
|
||||
# Aliases: Aliases for the command. (Optional)
|
||||
# - <AliasName>
|
||||
# Help Help message for the command. (Optional)
|
||||
###########################################################################
|
||||
|
||||
Header:
|
||||
Type: ATCOMMAND_DB
|
||||
Version: 1
|
@ -117,8 +117,6 @@ save_settings: 4095
|
||||
motd_txt: conf/motd.txt
|
||||
|
||||
// When @help or @h is typed when you are a gm, this is displayed for helping new gms understand gm commands.
|
||||
help_txt: conf/help.txt
|
||||
help2_txt: conf/help2.txt
|
||||
charhelp_txt: conf/charhelp.txt
|
||||
|
||||
// Load channel config from
|
||||
|
@ -41,7 +41,7 @@
|
||||
24: Job level raised.
|
||||
25: Job level lowered.
|
||||
26: Help commands:
|
||||
27: Commands help is not available.
|
||||
//27: free
|
||||
28: No player found.
|
||||
29: 1 player found.
|
||||
30: %d players found.
|
||||
@ -1046,7 +1046,7 @@
|
||||
|
||||
// @reloadatcommand
|
||||
1036: Error reading groups.conf, reload failed.
|
||||
1037: Error reading atcommand_athena.conf, reload failed.
|
||||
//1037 free
|
||||
|
||||
// @mapinfo
|
||||
1038: Please enter at least one valid list number (usage: @mapinfo <0-3> <map>).
|
||||
|
@ -45,7 +45,7 @@
|
||||
24: 職業等級 上升
|
||||
25: 職業等級 下降
|
||||
26: 求助指令:
|
||||
27: 找不到檔案: help.txt
|
||||
//27: free
|
||||
28: 沒有玩家
|
||||
29: 有 1 位玩家
|
||||
30: 有 %d 位玩家
|
||||
@ -867,7 +867,7 @@
|
||||
|
||||
// @reloadatcommand
|
||||
1036: Error reading groups.conf, reload failed.
|
||||
1037: Error reading atcommand_athena.conf, reload failed.
|
||||
//1037 free
|
||||
|
||||
// @mapinfo
|
||||
1038: 請至少輸入一個有效的列表數字 (使用方法: @mapinfo <0-3> [地圖名稱])
|
||||
|
@ -45,7 +45,7 @@
|
||||
24: Job level augmenté.
|
||||
25: Job level baissé.
|
||||
26: Commandes d'aide:
|
||||
27: Commandes d'aide non-disponible.
|
||||
//27: free
|
||||
28: Aucun Joueur trouvé.
|
||||
29: 1 Joueur trouvé.
|
||||
30: %d Joueurs trouvés.
|
||||
@ -879,7 +879,7 @@
|
||||
|
||||
// @reloadatcommand
|
||||
1036: Erreur à la lecture de groups.conf, reload échoué.
|
||||
1037: Erreur à la lecture de atcommand_athena.conf, reload échoué.
|
||||
//1037 free
|
||||
|
||||
// @mapinfo
|
||||
1038: Entrez un numéro de la liste (usage: @mapinfo <0-3> <map>).
|
||||
|
@ -44,7 +44,7 @@
|
||||
24: Job Level erhöht.
|
||||
25: Job Level verringert.
|
||||
26: Hilfsbefehle:
|
||||
27: Der help-Befehl ist nicht verfügbar.
|
||||
//27: free
|
||||
28: Kein Spieler gefunden.
|
||||
29: 1 Spieler gefunden.
|
||||
30: %d Spieler gefunden.
|
||||
|
@ -41,7 +41,7 @@
|
||||
24: Job Level dinaikkan.
|
||||
25: Job Level diturunkan.
|
||||
26: Bantuan command:
|
||||
27: Bantuan command tidak tersedia.
|
||||
//27: free
|
||||
28: Pemain tidak ditemukan.
|
||||
29: 1 pemain ditemukan.
|
||||
30: %d pemain ditemukan.
|
||||
@ -969,7 +969,7 @@
|
||||
|
||||
// @reloadatcommand
|
||||
1036: Terjadi kesalahan saat membaca groups.conf, tidak berhasil dimuat ulang.
|
||||
1037: Terjadi kesalahan saat membaca atcommand_athena.conf, tidak berhasil dimuat ulang.
|
||||
//1037 free
|
||||
|
||||
// @mapinfo
|
||||
1038: Harap masukkan setidaknya 1 pilihan. (Penggunaan: @mapinfo <0-3> <map>).
|
||||
|
@ -51,7 +51,7 @@
|
||||
24: Nível de classe acrescido.
|
||||
25: Nível de classe decrescido.
|
||||
26: Comandos de ajuda:
|
||||
27: Comandos de ajuda não disponível.
|
||||
//27: free
|
||||
28: Nenhum jogador encontrado.
|
||||
29: 1 jogador encontrado.
|
||||
30: %d jogadores encontrados.
|
||||
@ -1048,7 +1048,7 @@
|
||||
|
||||
// @reloadatcommand
|
||||
1036: Erro na leitura do grups.conf, recarregamento falhou.
|
||||
1037: Erro na leitura do atcommand_athena.conf, recarregamento falhou.
|
||||
//1037 free
|
||||
|
||||
// @mapinfo
|
||||
1038: Digite pelo menos um número válido da lista (uso: @mapinfo <0-3> <mapa>).
|
||||
|
@ -43,7 +43,7 @@
|
||||
24: Уровень профессии повышен.
|
||||
25: Уровень профессии снижен.
|
||||
26: Подсказки для команд:
|
||||
27: Подсказки для команд не доступны.
|
||||
//27: free
|
||||
28: Игроки не найдены.
|
||||
29: Найден 1 игрок.
|
||||
30: Найдено %d игрока(ов).
|
||||
@ -880,7 +880,7 @@
|
||||
|
||||
// @reloadatcommand
|
||||
1036: Ошибка чтения файла groups.conf, перезагрузка не удалась.
|
||||
1037: Ошибка чтения файла atcommand_athena.conf, перезагрузка не удалась.
|
||||
//1037 free
|
||||
|
||||
// @mapinfo
|
||||
1038: Введите хотя бы один номер (Использование: @mapinfo <0-3> <локация>).
|
||||
|
@ -41,7 +41,7 @@
|
||||
24: Has aumentado tu nivel de oficio.
|
||||
25: Has disminuido tu nivel de oficio.
|
||||
26: Ayuda sobre comandos:
|
||||
27: No hay ninguna ayuda disponible.
|
||||
//27: free
|
||||
28: No se ha encontrado ningún jugador.
|
||||
29: Se ha encontrado 1 jugador.
|
||||
30: Se han encontrado %d jugadores.
|
||||
@ -1017,7 +1017,7 @@
|
||||
|
||||
// @reloadatcommand
|
||||
1036: Ha ocurrido un error al cargar el archivo groups.conf.
|
||||
1037: Ha ocurrido un error al cargar el archivo atcommand_athena.conf.
|
||||
//1037 free
|
||||
|
||||
// @mapinfo
|
||||
1038: Introduce un número de la lista (instrucciones: @mapinfo <0-3> <mapa>).
|
||||
|
@ -45,7 +45,7 @@
|
||||
24: Job level à¾ÔèÁ¢Öé¹.
|
||||
25: Job level Ŵŧ.
|
||||
26: Help commands:
|
||||
27: ¤ÓÊÑè§ help äÁèÊÒÁÒöãªéä´é.
|
||||
//27: free
|
||||
28: äÁ辺¼ÙéàÅè¹.
|
||||
29: ¾º¼ÙéàÅè¹ 1 ¤¹.
|
||||
30: ¾º¼ÙéàÅè¹ %d ¤¹.
|
||||
@ -873,7 +873,7 @@
|
||||
|
||||
// @reloadatcommand
|
||||
1036: à¡Ô´¢éͼԴ¾ÅҴ㹡ÒüèÒ¹ä¿Åì groups.conf, ¡ÒÃâËÅ´ãËÁèÅéÁàËÅÇ.
|
||||
1037: à¡Ô´¢éͼԴ¾ÅҴ㹡ÒüèÒ¹ä¿Åì atcommand_athena.conf, ¡ÒÃâËÅ´ãËÁèÅéÁàËÅÇ.
|
||||
//1037 free
|
||||
|
||||
// @mapinfo
|
||||
1038: â»Ã´ÃкØàÅ¢ÍÂèҧ˹èÍÂ˹Ö觤èÒ¨Ò¡ÃÒ¡Òà (ÇÔ¸Õãªé: @mapinfo <0-3> <map>).
|
||||
|
@ -23,7 +23,6 @@ const char* MAP_CONF_NAME;
|
||||
const char* INTER_CONF_NAME;
|
||||
const char* LOG_CONF_NAME;
|
||||
const char* BATTLE_CONF_FILENAME;
|
||||
const char* ATCOMMAND_CONF_FILENAME;
|
||||
const char* SCRIPT_CONF_NAME;
|
||||
const char* GRF_PATH_FILENAME;
|
||||
//char confs
|
||||
@ -148,10 +147,6 @@ int cli_get_options(int argc, char ** argv) {
|
||||
if (opt_has_next_value(arg, i, argc))
|
||||
BATTLE_CONF_FILENAME = argv[++i];
|
||||
}
|
||||
else if (strcmp(arg, "atcommand-config") == 0) {
|
||||
if (opt_has_next_value(arg, i, argc))
|
||||
ATCOMMAND_CONF_FILENAME = argv[++i];
|
||||
}
|
||||
else if (strcmp(arg, "script-config") == 0) {
|
||||
if (opt_has_next_value(arg, i, argc))
|
||||
SCRIPT_CONF_NAME = argv[++i];
|
||||
|
@ -3,10 +3,14 @@
|
||||
|
||||
#include "atcommand.hpp"
|
||||
|
||||
#include <set>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../common/cbasetypes.hpp"
|
||||
#include "../common/database.hpp"
|
||||
#include "../common/cli.hpp"
|
||||
#include "../common/conf.hpp"
|
||||
#include "../common/malloc.hpp"
|
||||
@ -50,11 +54,12 @@
|
||||
#include "storage.hpp"
|
||||
#include "trade.hpp"
|
||||
|
||||
using namespace rathena;
|
||||
|
||||
#define ATCOMMAND_LENGTH 50
|
||||
#define ACMD_FUNC(x) static int atcommand_ ## x (const int fd, struct map_session_data* sd, const char* command, const char* message)
|
||||
|
||||
typedef struct AtCommandInfo AtCommandInfo;
|
||||
typedef struct AliasInfo AliasInfo;
|
||||
|
||||
int atcmd_binding_count = 0;
|
||||
|
||||
@ -73,9 +78,10 @@ struct AtCommandInfo {
|
||||
uint8 restriction; /// Restrictions see enum e_restict
|
||||
};
|
||||
|
||||
struct AliasInfo {
|
||||
struct s_atcommand_alias_info{
|
||||
AtCommandInfo *command;
|
||||
char alias[ATCOMMAND_LENGTH];
|
||||
std::set<std::string> aliases;
|
||||
std::string help;
|
||||
};
|
||||
|
||||
|
||||
@ -83,8 +89,100 @@ char atcommand_symbol = '@'; // first char of the commands
|
||||
char charcommand_symbol = '#';
|
||||
|
||||
static DBMap* atcommand_db = NULL; //name -> AtCommandInfo
|
||||
static DBMap* atcommand_alias_db = NULL; //alias -> AtCommandInfo
|
||||
static config_t atcommand_config;
|
||||
|
||||
static AtCommandInfo* get_atcommandinfo_byname( const char* name );
|
||||
|
||||
class AtcommandAliasDatabase : public TypesafeYamlDatabase<std::string, s_atcommand_alias_info>{
|
||||
private:
|
||||
std::unordered_map<std::string, std::string> aliases;
|
||||
|
||||
public:
|
||||
AtcommandAliasDatabase() : TypesafeYamlDatabase( "ATCOMMAND_DB", 1 ){
|
||||
|
||||
}
|
||||
|
||||
void clear();
|
||||
const std::string getDefaultLocation();
|
||||
uint64 parseBodyNode( const YAML::Node& node );
|
||||
const char* checkAlias( const char* alias );
|
||||
};
|
||||
|
||||
void AtcommandAliasDatabase::clear(){
|
||||
TypesafeYamlDatabase::clear();
|
||||
this->aliases.clear();
|
||||
}
|
||||
|
||||
const std::string AtcommandAliasDatabase::getDefaultLocation(){
|
||||
return std::string(conf_path) + "/atcommands.yml";
|
||||
}
|
||||
|
||||
uint64 AtcommandAliasDatabase::parseBodyNode( const YAML::Node& node ){
|
||||
std::string command;
|
||||
|
||||
if( !this->asString( node, "Command", command ) ){
|
||||
return 0;
|
||||
}
|
||||
|
||||
AtCommandInfo* commandinfo = get_atcommandinfo_byname( command.c_str() );
|
||||
|
||||
if( commandinfo == nullptr ){
|
||||
this->invalidWarning( node["Command"], "Command %s does not exist.\n", command.c_str() );
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::shared_ptr<s_atcommand_alias_info> info = this->find( command );
|
||||
bool exists = info != nullptr;
|
||||
|
||||
if( !exists ){
|
||||
info = std::make_shared<s_atcommand_alias_info>();
|
||||
info->command = commandinfo;
|
||||
}
|
||||
|
||||
if( this->nodeExists( node, "Help" ) ){
|
||||
std::string help;
|
||||
|
||||
if( !this->asString( node, "Help", help ) ){
|
||||
return 0;
|
||||
}
|
||||
|
||||
info->help = help;
|
||||
}
|
||||
|
||||
if( this->nodeExists( node, "Aliases" ) ){
|
||||
const YAML::Node& aliasesNode = node["Aliases"];
|
||||
|
||||
if( !aliasesNode.IsSequence() ){
|
||||
this->invalidWarning( aliasesNode, "Aliases should be a sequence.\n" );
|
||||
return 0;
|
||||
}
|
||||
|
||||
for( const auto& subNode : aliasesNode ){
|
||||
std::string alias = subNode.as<std::string>();
|
||||
|
||||
info->aliases.insert( alias );
|
||||
this->aliases[alias] = command;
|
||||
}
|
||||
}
|
||||
|
||||
if( !exists ){
|
||||
this->put( command, info );
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
const char* AtcommandAliasDatabase::checkAlias( const char* alias ){
|
||||
std::string alias_str( alias );
|
||||
std::string* command = util::umap_find( this->aliases, alias_str );
|
||||
|
||||
if( command == nullptr ){
|
||||
return alias;
|
||||
}else{
|
||||
return command->c_str();
|
||||
}
|
||||
}
|
||||
|
||||
AtcommandAliasDatabase atcommand_alias_db;
|
||||
|
||||
static char atcmd_output[CHAT_SIZE_MAX];
|
||||
static char atcmd_player_name[NAME_LENGTH];
|
||||
@ -93,7 +191,6 @@ const char *parent_cmd;
|
||||
struct atcmd_binding_data** atcmd_binding;
|
||||
|
||||
static AtCommandInfo* get_atcommandinfo_byname(const char *name); // @help
|
||||
static const char* atcommand_checkalias(const char *aliasname); // @help
|
||||
static void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bool atcommand); // @help
|
||||
static void warp_get_suggestions(struct map_session_data* sd, const char *name); // @rura, @warp, @mapmove
|
||||
|
||||
@ -115,34 +212,25 @@ struct atcmd_binding_data* get_atcommandbind_byname(const char* name) {
|
||||
* @param name the name of the command to retrieve help information for
|
||||
* @return the string associated with the command, or NULL
|
||||
*/
|
||||
static const char* atcommand_help_string(const char* command)
|
||||
{
|
||||
const char* str = NULL;
|
||||
config_setting_t* info;
|
||||
|
||||
if( *command == atcommand_symbol || *command == charcommand_symbol )
|
||||
{// remove the prefix symbol for the raw name of the command
|
||||
command ++;
|
||||
static const char* atcommand_help_string( const char* command ){
|
||||
// remove the prefix symbol for the raw name of the command
|
||||
if( *command == atcommand_symbol || *command == charcommand_symbol ){
|
||||
command++;
|
||||
}
|
||||
|
||||
// convert alias to the real command name
|
||||
command = atcommand_checkalias(command);
|
||||
command = atcommand_alias_db.checkAlias( command );
|
||||
|
||||
// attempt to find the first default help command
|
||||
info = config_lookup(&atcommand_config, "help");
|
||||
std::shared_ptr<s_atcommand_alias_info> info = atcommand_alias_db.find( command );
|
||||
|
||||
if( info == NULL )
|
||||
{// failed to find the help property in the configuration file
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if( !config_setting_lookup_string( info, command, &str ) )
|
||||
{// failed to find the matching help string
|
||||
return NULL;
|
||||
// failed to find the help property in the configuration file
|
||||
if( info == nullptr ){
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// push the result from the method
|
||||
return str;
|
||||
return info->help.c_str();
|
||||
}
|
||||
|
||||
|
||||
@ -1265,7 +1353,7 @@ ACMD_FUNC(item)
|
||||
nullpo_retr(-1, sd);
|
||||
memset(item_name, '\0', sizeof(item_name));
|
||||
|
||||
parent_cmd = atcommand_checkalias(command+1);
|
||||
parent_cmd = atcommand_alias_db.checkAlias(command+1);
|
||||
|
||||
if (!strcmpi(parent_cmd,"itembound")) {
|
||||
if (!message || !*message || (
|
||||
@ -1342,7 +1430,7 @@ ACMD_FUNC(item2)
|
||||
|
||||
memset(item_name, '\0', sizeof(item_name));
|
||||
|
||||
parent_cmd = atcommand_checkalias(command+1);
|
||||
parent_cmd = atcommand_alias_db.checkAlias(command+1);
|
||||
|
||||
if (!strcmpi(parent_cmd+1,"itembound2")) {
|
||||
if (!message || !*message || (
|
||||
@ -1570,27 +1658,17 @@ ACMD_FUNC(joblevelup)
|
||||
/*==========================================
|
||||
* @help
|
||||
*------------------------------------------*/
|
||||
ACMD_FUNC(help)
|
||||
{
|
||||
config_setting_t *help;
|
||||
const char *text = NULL;
|
||||
const char *command_name = NULL;
|
||||
const char *default_command = "help";
|
||||
ACMD_FUNC(help){
|
||||
const char *command_name = nullptr;
|
||||
|
||||
nullpo_retr(-1, sd);
|
||||
|
||||
help = config_lookup(&atcommand_config, "help");
|
||||
if (help == NULL) {
|
||||
clif_displaymessage(fd, msg_txt(sd,27)); // "Commands help is not available."
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!message || !*message) {
|
||||
command_name = default_command; // If no command_name specified, display help for @help.
|
||||
command_name = "help"; // If no command_name specified, display help for @help.
|
||||
} else {
|
||||
if (*message == atcommand_symbol || *message == charcommand_symbol)
|
||||
++message;
|
||||
command_name = atcommand_checkalias(message);
|
||||
command_name = atcommand_alias_db.checkAlias(message);
|
||||
}
|
||||
|
||||
if (!pc_can_use_command(sd, command_name, COMMAND_ATCOMMAND)) {
|
||||
@ -1600,7 +1678,12 @@ ACMD_FUNC(help)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!config_setting_lookup_string(help, command_name, &text)) {
|
||||
// attempt to find the first default help command
|
||||
std::shared_ptr<s_atcommand_alias_info> info = atcommand_alias_db.find( command_name );
|
||||
|
||||
const char* text = info != nullptr ? info->help.c_str() : nullptr;
|
||||
|
||||
if( text == nullptr ){
|
||||
sprintf(atcmd_output, msg_txt(sd,988), atcommand_symbol, command_name); // There is no help for %c%s.
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
atcommand_get_suggestions(sd, command_name, true);
|
||||
@ -1611,23 +1694,17 @@ ACMD_FUNC(help)
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
|
||||
{ // Display aliases
|
||||
DBIterator* iter;
|
||||
AtCommandInfo *command_info;
|
||||
AliasInfo *alias_info = NULL;
|
||||
StringBuf buf;
|
||||
bool has_aliases = false;
|
||||
|
||||
StringBuf_Init(&buf);
|
||||
StringBuf_AppendStr(&buf, msg_txt(sd,990)); // Available aliases:
|
||||
command_info = get_atcommandinfo_byname(command_name);
|
||||
iter = db_iterator(atcommand_alias_db);
|
||||
for (alias_info = (AliasInfo *)dbi_first(iter); dbi_exists(iter); alias_info = (AliasInfo *)dbi_next(iter)) {
|
||||
if (alias_info->command == command_info) {
|
||||
StringBuf_Printf(&buf, " %s", alias_info->alias);
|
||||
has_aliases = true;
|
||||
}
|
||||
|
||||
for( const std::string& alias : info->aliases ){
|
||||
StringBuf_Printf( &buf, " %s", alias.c_str() );
|
||||
has_aliases = true;
|
||||
}
|
||||
dbi_destroy(iter);
|
||||
|
||||
if (has_aliases)
|
||||
clif_displaymessage(fd, StringBuf_Value(&buf));
|
||||
StringBuf_Destroy(&buf);
|
||||
@ -2126,7 +2203,7 @@ ACMD_FUNC(monster)
|
||||
if (battle_config.atc_spawn_quantity_limit && number > battle_config.atc_spawn_quantity_limit)
|
||||
number = battle_config.atc_spawn_quantity_limit;
|
||||
|
||||
parent_cmd = atcommand_checkalias(command+1);
|
||||
parent_cmd = atcommand_alias_db.checkAlias(command+1);
|
||||
|
||||
if (strcmp(parent_cmd, "monstersmall") == 0)
|
||||
size = SZ_MEDIUM; // This is just gorgeous [mkbu95]
|
||||
@ -2201,7 +2278,7 @@ ACMD_FUNC(killmonster)
|
||||
map_id = sd->bl.m;
|
||||
}
|
||||
|
||||
parent_cmd = atcommand_checkalias(command+1);
|
||||
parent_cmd = atcommand_alias_db.checkAlias(command+1);
|
||||
|
||||
drop_flag = strcmp(parent_cmd, "killmonster2");
|
||||
|
||||
@ -2977,7 +3054,7 @@ ACMD_FUNC(char_ban)
|
||||
memset(atcmd_output, '\0', sizeof(atcmd_output));
|
||||
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
|
||||
|
||||
parent_cmd = atcommand_checkalias(command+1);
|
||||
parent_cmd = atcommand_alias_db.checkAlias(command+1);
|
||||
|
||||
if (strcmpi(parent_cmd,"charban") == 0)
|
||||
bantype = CHRIF_OP_BAN;
|
||||
@ -3058,7 +3135,7 @@ ACMD_FUNC(char_unban){
|
||||
memset(atcmd_output, '\0', sizeof(atcmd_output));
|
||||
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
|
||||
|
||||
parent_cmd = atcommand_checkalias(command+1);
|
||||
parent_cmd = atcommand_alias_db.checkAlias(command+1);
|
||||
|
||||
if (strcmpi(parent_cmd,"charunban") == 0)
|
||||
unbantype = CHRIF_OP_UNBAN;
|
||||
@ -3846,13 +3923,6 @@ ACMD_FUNC(reload) {
|
||||
|
||||
config_destroy(&run_test);
|
||||
|
||||
if (conf_read_file(&run_test, ATCOMMAND_CONF_FILENAME)) {
|
||||
clif_displaymessage(fd, msg_txt(sd,1037)); // Error reading atcommand_athena.conf, reload failed.
|
||||
return -1;
|
||||
}
|
||||
|
||||
config_destroy(&run_test);
|
||||
|
||||
atcommand_doload();
|
||||
pc_groups_reload();
|
||||
clif_displaymessage(fd, msg_txt(sd,254)); // GM command configuration has been reloaded.
|
||||
@ -8463,7 +8533,7 @@ ACMD_FUNC(cash)
|
||||
return -1;
|
||||
}
|
||||
|
||||
parent_cmd = atcommand_checkalias(command+1);
|
||||
parent_cmd = atcommand_alias_db.checkAlias(command+1);
|
||||
|
||||
if( !strcmpi(parent_cmd,"cash") )
|
||||
{
|
||||
@ -8534,7 +8604,7 @@ ACMD_FUNC(clone)
|
||||
return 0;
|
||||
}
|
||||
|
||||
parent_cmd = atcommand_checkalias(command+1);
|
||||
parent_cmd = atcommand_alias_db.checkAlias(command+1);
|
||||
|
||||
if (strcmpi(parent_cmd, "clone") == 0)
|
||||
flag = 1;
|
||||
@ -8718,7 +8788,7 @@ ACMD_FUNC(itemlist)
|
||||
|
||||
nullpo_retr(-1, sd);
|
||||
|
||||
parent_cmd = atcommand_checkalias(command+1);
|
||||
parent_cmd = atcommand_alias_db.checkAlias(command+1);
|
||||
|
||||
if( strcmp(parent_cmd, "storagelist") == 0 ) {
|
||||
location = "storage";
|
||||
@ -9291,7 +9361,7 @@ ACMD_FUNC(addperm) {
|
||||
bool add;
|
||||
int i;
|
||||
|
||||
parent_cmd = atcommand_checkalias(command+1);
|
||||
parent_cmd = atcommand_alias_db.checkAlias(command+1);
|
||||
|
||||
add = (strcmpi(parent_cmd, "addperm") == 0);
|
||||
|
||||
@ -10390,20 +10460,10 @@ static AtCommandInfo* get_atcommandinfo_byname(const char *name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static const char* atcommand_checkalias(const char *aliasname)
|
||||
{
|
||||
AliasInfo *alias_info = NULL;
|
||||
if ((alias_info = (AliasInfo*)strdb_get(atcommand_alias_db, aliasname)) != NULL)
|
||||
return alias_info->command->command;
|
||||
return aliasname;
|
||||
}
|
||||
|
||||
/// AtCommand suggestion
|
||||
static void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bool atcommand) {
|
||||
DBIterator* atcommand_iter;
|
||||
DBIterator* alias_iter;
|
||||
AtCommandInfo* command_info = NULL;
|
||||
AliasInfo* alias_info = NULL;
|
||||
AtCommandType type = atcommand ? COMMAND_ATCOMMAND : COMMAND_CHARCOMMAND;
|
||||
char* full_match[MAX_SUGGESTIONS];
|
||||
char* suggestions[MAX_SUGGESTIONS];
|
||||
@ -10415,7 +10475,6 @@ static void atcommand_get_suggestions(struct map_session_data* sd, const char *n
|
||||
return;
|
||||
|
||||
atcommand_iter = db_iterator(atcommand_db);
|
||||
alias_iter = db_iterator(atcommand_alias_db);
|
||||
|
||||
// Build the matches
|
||||
for (command_info = (AtCommandInfo*)dbi_first(atcommand_iter); dbi_exists(atcommand_iter); command_info = (AtCommandInfo*)dbi_next(atcommand_iter)) {
|
||||
@ -10431,16 +10490,25 @@ static void atcommand_get_suggestions(struct map_session_data* sd, const char *n
|
||||
}
|
||||
}
|
||||
|
||||
for (alias_info = (AliasInfo *)dbi_first(alias_iter); dbi_exists(alias_iter); alias_info = (AliasInfo *)dbi_next(alias_iter)) {
|
||||
match = strstr(alias_info->alias, name);
|
||||
can_use = pc_can_use_command(sd, alias_info->command->command, type);
|
||||
if ( prefix_count < MAX_SUGGESTIONS && match == alias_info->alias && can_use) {
|
||||
suggestions[prefix_count] = alias_info->alias;
|
||||
++prefix_count;
|
||||
}
|
||||
if ( full_count < MAX_SUGGESTIONS && match != NULL && match != alias_info->alias && can_use ) {
|
||||
full_match[full_count] = alias_info->alias;
|
||||
++full_count;
|
||||
for( auto& pair : atcommand_alias_db ){
|
||||
std::shared_ptr<s_atcommand_alias_info> info = pair.second;
|
||||
|
||||
if( pc_can_use_command( sd, info->command->command, type ) ){
|
||||
for( const std::string& alias_str : info->aliases ){
|
||||
char* alias = const_cast<char *>(alias_str.c_str());
|
||||
|
||||
match = strstr( alias, name );
|
||||
|
||||
if( prefix_count < MAX_SUGGESTIONS && match == alias ){
|
||||
suggestions[prefix_count] = alias;
|
||||
++prefix_count;
|
||||
}
|
||||
|
||||
if( full_count < MAX_SUGGESTIONS && match != NULL && match != alias ){
|
||||
full_match[full_count] = alias;
|
||||
++full_count;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10467,7 +10535,6 @@ static void atcommand_get_suggestions(struct map_session_data* sd, const char *n
|
||||
}
|
||||
|
||||
dbi_destroy(atcommand_iter);
|
||||
dbi_destroy(alias_iter);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -10543,7 +10610,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
|
||||
if (n < 1)
|
||||
return false; // No command found. Display as normal message.
|
||||
|
||||
info = get_atcommandinfo_byname(atcommand_checkalias(command + 1));
|
||||
info = get_atcommandinfo_byname(atcommand_alias_db.checkAlias(command + 1));
|
||||
if (!info || info->char_groups[sd->group_pos] == 0) // If we can't use or doesn't exist: don't even display the command failed message
|
||||
return false;
|
||||
}
|
||||
@ -10599,7 +10666,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
|
||||
}
|
||||
|
||||
//Grab the command information and check for the proper GM level required to use it or if the command exists
|
||||
info = get_atcommandinfo_byname(atcommand_checkalias(command + 1));
|
||||
info = get_atcommandinfo_byname(atcommand_alias_db.checkAlias(command + 1));
|
||||
if (info == NULL) {
|
||||
if (pc_get_group_level(sd) == 0) // TODO: remove or replace with proper permission
|
||||
return false;
|
||||
@ -10647,98 +10714,6 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
|
||||
return true;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
*
|
||||
*------------------------------------------*/
|
||||
static void atcommand_config_read(const char* config_filename)
|
||||
{
|
||||
config_setting_t *aliases = NULL, *help = NULL;
|
||||
const char *symbol = NULL;
|
||||
int num_aliases = 0;
|
||||
|
||||
if (conf_read_file(&atcommand_config, config_filename))
|
||||
return;
|
||||
|
||||
// Command symbols
|
||||
if (config_lookup_string(&atcommand_config, "atcommand_symbol", &symbol)) {
|
||||
if (ISPRINT(*symbol) && // no control characters
|
||||
*symbol != '/' && // symbol of client commands
|
||||
*symbol != '%' && // symbol of party chat
|
||||
*symbol != '$' && // symbol of guild chat
|
||||
*symbol != charcommand_symbol)
|
||||
atcommand_symbol = *symbol;
|
||||
}
|
||||
|
||||
if (config_lookup_string(&atcommand_config, "charcommand_symbol", &symbol)) {
|
||||
if (ISPRINT(*symbol) && // no control characters
|
||||
*symbol != '/' && // symbol of client commands
|
||||
*symbol != '%' && // symbol of party chat
|
||||
*symbol != '$' && // symbol of guild chat
|
||||
*symbol != atcommand_symbol)
|
||||
charcommand_symbol = *symbol;
|
||||
}
|
||||
|
||||
// Command aliases
|
||||
aliases = config_lookup(&atcommand_config, "aliases");
|
||||
if (aliases != NULL) {
|
||||
int i = 0;
|
||||
int count = config_setting_length(aliases);
|
||||
|
||||
for (i = 0; i < count; ++i) {
|
||||
config_setting_t *command;
|
||||
const char *commandname = NULL;
|
||||
int j = 0, alias_count = 0;
|
||||
AtCommandInfo *commandinfo = NULL;
|
||||
|
||||
command = config_setting_get_elem(aliases, i);
|
||||
if (config_setting_type(command) != CONFIG_TYPE_ARRAY)
|
||||
continue;
|
||||
commandname = config_setting_name(command);
|
||||
if (!atcommand_exists(commandname)) {
|
||||
ShowConfigWarning(command, "atcommand_config_read: can not set alias for non-existent command %s", commandname);
|
||||
continue;
|
||||
}
|
||||
commandinfo = get_atcommandinfo_byname(commandname);
|
||||
alias_count = config_setting_length(command);
|
||||
for (j = 0; j < alias_count; ++j) {
|
||||
const char *alias = config_setting_get_string_elem(command, j);
|
||||
if (alias != NULL) {
|
||||
AliasInfo *alias_info;
|
||||
if (strdb_exists(atcommand_alias_db, alias)) {
|
||||
ShowConfigWarning(command, "atcommand_config_read: alias %s already exists", alias);
|
||||
continue;
|
||||
}
|
||||
CREATE(alias_info, AliasInfo, 1);
|
||||
alias_info->command = commandinfo;
|
||||
safestrncpy(alias_info->alias, alias, sizeof(alias_info->alias));
|
||||
strdb_put(atcommand_alias_db, alias, alias_info);
|
||||
++num_aliases;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Commands help
|
||||
// We only check if all commands exist
|
||||
help = config_lookup(&atcommand_config, "help");
|
||||
if (help != NULL) {
|
||||
int count = config_setting_length(help);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < count; ++i) {
|
||||
config_setting_t *command;
|
||||
const char *commandname;
|
||||
|
||||
command = config_setting_get_elem(help, i);
|
||||
commandname = config_setting_name(command);
|
||||
if (!atcommand_exists(commandname))
|
||||
ShowConfigWarning(command, "atcommand_config_read: command %s does not exist", commandname);
|
||||
}
|
||||
}
|
||||
|
||||
ShowStatus("Done reading '" CL_WHITE "%d" CL_RESET "' command aliases in '" CL_WHITE "%s" CL_RESET "'.\n", num_aliases, config_filename);
|
||||
return;
|
||||
}
|
||||
void atcommand_db_load_groups(int* group_ids) {
|
||||
DBIterator *iter = db_iterator(atcommand_db);
|
||||
AtCommandInfo* cmd;
|
||||
@ -10778,18 +10753,15 @@ void atcommand_db_clear(void) {
|
||||
|
||||
db_destroy(atcommand_db);
|
||||
}
|
||||
if (atcommand_alias_db != NULL)
|
||||
db_destroy(atcommand_alias_db);
|
||||
|
||||
config_destroy(&atcommand_config);
|
||||
atcommand_alias_db.clear();
|
||||
}
|
||||
|
||||
void atcommand_doload(void) {
|
||||
atcommand_db_clear();
|
||||
atcommand_db = stridb_alloc((DBOptions)(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA), ATCOMMAND_LENGTH);
|
||||
atcommand_alias_db = stridb_alloc((DBOptions)(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA), ATCOMMAND_LENGTH);
|
||||
atcommand_basecommands(); //fills initial atcommand_db with known commands
|
||||
atcommand_config_read(ATCOMMAND_CONF_FILENAME);
|
||||
atcommand_alias_db.load();
|
||||
}
|
||||
|
||||
void do_init_atcommand(void) {
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "../common/timer.hpp"
|
||||
#include "../common/utils.hpp"
|
||||
|
||||
#include "atcommand.hpp"
|
||||
#include "battleground.hpp"
|
||||
#include "chrif.hpp"
|
||||
#include "clif.hpp"
|
||||
@ -8763,8 +8764,25 @@ int battle_config_read(const char* cfgName)
|
||||
continue;
|
||||
if (strcmpi(w1, "import") == 0)
|
||||
battle_config_read(w2);
|
||||
else if
|
||||
(battle_set_value(w1, w2) == 0)
|
||||
else if( strcmpi( w1, "atcommand_symbol" ) == 0 ){
|
||||
const char* symbol = &w2[0];
|
||||
|
||||
if (ISPRINT(*symbol) && // no control characters
|
||||
*symbol != '/' && // symbol of client commands
|
||||
*symbol != '%' && // symbol of party chat
|
||||
*symbol != '$' && // symbol of guild chat
|
||||
*symbol != charcommand_symbol)
|
||||
atcommand_symbol = *symbol;
|
||||
}else if( strcmpi( w1, "charcommand_symbol" ) == 0 ){
|
||||
const char* symbol = &w2[0];
|
||||
|
||||
if (ISPRINT(*symbol) && // no control characters
|
||||
*symbol != '/' && // symbol of client commands
|
||||
*symbol != '%' && // symbol of party chat
|
||||
*symbol != '$' && // symbol of guild chat
|
||||
*symbol != atcommand_symbol)
|
||||
charcommand_symbol = *symbol;
|
||||
}else if( battle_set_value(w1, w2) == 0 )
|
||||
ShowWarning("Unknown setting '%s' in file %s\n", w1, cfgName);
|
||||
}
|
||||
|
||||
|
@ -271,6 +271,7 @@
|
||||
<Copy SourceFiles="$(SolutionDir)tools\serv.bat" DestinationFolder="$(SolutionDir)" ContinueOnError="true" Condition="!Exists('$(SolutionDir)serv.bat')" />
|
||||
<Copy SourceFiles="$(SolutionDir)tools\mapserv.bat" DestinationFolder="$(SolutionDir)" ContinueOnError="true" Condition="!Exists('$(SolutionDir)mapserv.bat')" />
|
||||
<Copy SourceFiles="$(SolutionDir)tools\runserver.bat" DestinationFolder="$(SolutionDir)" ContinueOnError="true" Condition="!Exists('$(SolutionDir)runserver.bat')" />
|
||||
<Copy SourceFiles="$(SolutionDir)conf\import-tmpl\atcommands.yml" DestinationFolder="$(SolutionDir)conf\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)conf\import\atcommands.yml')" />
|
||||
<Copy SourceFiles="$(SolutionDir)conf\import-tmpl\battle_conf.txt" DestinationFolder="$(SolutionDir)conf\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)conf\import\battle_conf.txt')" />
|
||||
<Copy SourceFiles="$(SolutionDir)conf\import-tmpl\char_conf.txt" DestinationFolder="$(SolutionDir)conf\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)conf\import\char_conf.txt')" />
|
||||
<Copy SourceFiles="$(SolutionDir)conf\import-tmpl\inter_conf.txt" DestinationFolder="$(SolutionDir)conf\import\" ContinueOnError="true" Condition="!Exists('$(SolutionDir)conf\import\inter_conf.txt')" />
|
||||
|
@ -160,8 +160,6 @@ struct map_cache_map_info {
|
||||
};
|
||||
|
||||
char motd_txt[256] = "conf/motd.txt";
|
||||
char help_txt[256] = "conf/help.txt";
|
||||
char help2_txt[256] = "conf/help2.txt";
|
||||
char charhelp_txt[256] = "conf/charhelp.txt";
|
||||
char channel_conf[256] = "conf/channels.conf";
|
||||
|
||||
@ -4076,10 +4074,6 @@ int map_config_read(const char *cfgName)
|
||||
save_settings = cap_value(atoi(w2),CHARSAVE_NONE,CHARSAVE_ALL);
|
||||
else if (strcmpi(w1, "motd_txt") == 0)
|
||||
safestrncpy(motd_txt, w2, sizeof(motd_txt));
|
||||
else if (strcmpi(w1, "help_txt") == 0)
|
||||
safestrncpy(help_txt, w2, sizeof(help_txt));
|
||||
else if (strcmpi(w1, "help2_txt") == 0)
|
||||
safestrncpy(help2_txt, w2, sizeof(help2_txt));
|
||||
else if (strcmpi(w1, "charhelp_txt") == 0)
|
||||
safestrncpy(charhelp_txt, w2, sizeof(charhelp_txt));
|
||||
else if (strcmpi(w1, "channel_conf") == 0)
|
||||
@ -5143,7 +5137,6 @@ int do_init(int argc, char *argv[])
|
||||
LOG_CONF_NAME="conf/log_athena.conf";
|
||||
MAP_CONF_NAME = "conf/map_athena.conf";
|
||||
BATTLE_CONF_FILENAME = "conf/battle_athena.conf";
|
||||
ATCOMMAND_CONF_FILENAME = "conf/atcommand_athena.conf";
|
||||
SCRIPT_CONF_NAME = "conf/script_athena.conf";
|
||||
GRF_PATH_FILENAME = "conf/grf-files.txt";
|
||||
safestrncpy(console_log_filepath, "./log/map-msg_log.log", sizeof(console_log_filepath));
|
||||
|
@ -960,8 +960,6 @@ inline bool map_flag_gvg2_no_te(int16 m) {
|
||||
}
|
||||
|
||||
extern char motd_txt[];
|
||||
extern char help_txt[];
|
||||
extern char help2_txt[];
|
||||
extern char charhelp_txt[];
|
||||
extern char channel_conf[];
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user