什么是GM指令及其使用技巧

在游戏中,游戏管理员可以通过一些“游戏内指令”来控制游戏服务器的行为,这种“游戏内指令”我们一般俗称为“GM指令”。在游戏中你可以用GM指令来快速瞬间移动到某个地图,跟踪某个玩家,将某个玩家踢下线,甚至强制命令map-server关闭而达到全服掉线的目的(当然我们一般很少这么做)……

rAthena所有GM指令的说明都放在了rAthena目录下的doc\atcommands.txt文件中,它里面记录了指令的返回结果是什么样的,用了有什么效果。

上面这短短的2小段已经介绍了什么是GM指令,那么本文其实比较重点的是讲解一下GM指令的使用技巧,我们先来看看GM指令分多少类(这些信息在doc\atcommands.txt文件中都有写):

    1. 系统指令  –  System Commands
    1. 数据库指令  –  Database Commands
    1. 玩家信息指令  –  Player Information Commands
    1. 动作指令  –  Action Commands
    1. 管理指令  –  Administrative Commands
    1. 队伍指令  –  Party Commands
    1. 公会指令  –  Guild Commands
    1. 宠物指令  –  Pet Commands
    1. 生命体指令  –  Homunculus Commands
    1. 频道指令  –  Channel Commands

现在我就先不展开讲解每个GM指令的用法和含义了,以后我或许会将整个atcommands.txt翻译出来,或者开单篇挨个介绍各种指令。

我们先以一个指令为例子,嗯……就选“动作指令”里面的go指令吧,这个很常用~ 可以将玩家送到指定的城镇,下面是go指令的说明:

把自己送到指定城镇:

若想把自己传送到普隆德拉,只需要在聊天窗口输入“@go 0”然后回车就可以了。这种使用@开头,对自己使用的指令我们称之为“atcommand”(自用指令)……

把别人送到指定城镇:

若想将别人传送到普隆德拉应该怎么做呢?这就需要引入到#符号了,我们前面的GM指令都是用的@符号,@表示这条指令对当前自己的角色执行,而#表示这条指令对指定的角色执行。这种使用#开头,对别人使用的指令我们称之为“charcommand”(指定角色的指令)……

比如我希望用go指令将一个叫“小明”的玩家送到普隆德拉(对应的城市代码是0),那么我可以根据这个格式来写指令“#go 想要执行此指令的玩家名称 参数”,也就是“#go 小明 0”然后回车,小明就会被送到普隆德拉了,所有的指令都可以用#符号来指定玩家名称。

如果小明的名字中间有空格的话,比如:“小 明”,那么我们按照上面的规则来写指令可能会变成“#go 小 明 0”,这时候回车你会发现执行错误,因为系统找不到一个名字为“”的玩家~ 这是因为指令系统是根据空格来区分参数的,在这个例子中“”字被误会成是玩家名称了,实际上不是。

那么应该如何解决此问题呢?说来也简单,只需要在玩家名称上包一个英文双引号即可,比如:#go “小 明” 0 这样指令系统就会认为”小 明”是个玩家名称,然后才能成功找到他并把他送走。

忘记说了,使用#来指定玩家的时候,这个玩家必须在线,否则指令会执行失败!