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:
Lemongrass3110 2019-12-21 19:19:19 +01:00 committed by GitHub
parent b967439fa7
commit 64b5c3082b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 1204 additions and 625 deletions

View File

@ -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
View 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

View File

@ -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

View File

@ -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."

View 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

View File

@ -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

View File

@ -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>).

View File

@ -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> [地圖名稱])

View File

@ -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>).

View File

@ -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.

View File

@ -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>).

View File

@ -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>).

View File

@ -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> <локация>).

View File

@ -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>).

View File

@ -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>).

View File

@ -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];

View File

@ -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) {

View File

@ -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);
}

View File

@ -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')" />

View File

@ -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));

View File

@ -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[];