在游戏中,游戏管理员可以通过一些“游戏内指令”来控制游戏服务器的行为,这种“游戏内指令”我们一般俗称为“GM指令”。在游戏中你可以用GM指令来快速瞬间移动到某个地图,跟踪某个玩家,将某个玩家踢下线,甚至强制命令map-server关闭而达到全服掉线的目的(当然我们一般很少这么做)……
rAthena所有GM指令的说明都放在了rAthena目录下的doc\atcommands.txt文件中,它里面记录了指令的返回结果是什么样的,用了有什么效果。
上面这短短的2小段已经介绍了什么是GM指令,那么本文其实比较重点的是讲解一下GM指令的使用技巧,我们先来看看GM指令分多少类(这些信息在doc\atcommands.txt文件中都有写):
-
- 系统指令 – System Commands
-
- 数据库指令 – Database Commands
-
- 玩家信息指令 – Player Information Commands
-
- 动作指令 – Action Commands
-
- 管理指令 – Administrative Commands
-
- 队伍指令 – Party Commands
-
- 公会指令 – Guild Commands
-
- 宠物指令 – Pet Commands
-
- 生命体指令 – Homunculus Commands
-
- 频道指令 – Channel Commands
现在我就先不展开讲解每个GM指令的用法和含义了,以后我或许会将整个atcommands.txt翻译出来,或者开单篇挨个介绍各种指令。
我们先以一个指令为例子,嗯……就选“动作指令”里面的go指令吧,这个很常用~ 可以将玩家送到指定的城镇,下面是go指令的说明:
把自己送到指定城镇:
若想把自己传送到普隆德拉,只需要在聊天窗口输入“@go 0”然后回车就可以了。这种使用@开头,对自己使用的指令我们称之为“atcommand”(自用指令)……
把别人送到指定城镇:
若想将别人传送到普隆德拉应该怎么做呢?这就需要引入到#符号了,我们前面的GM指令都是用的@符号,@表示这条指令对当前自己的角色执行,而#表示这条指令对指定的角色执行。这种使用#开头,对别人使用的指令我们称之为“charcommand”(指定角色的指令)……
比如我希望用go指令将一个叫“小明”的玩家送到普隆德拉(对应的城市代码是0),那么我可以根据这个格式来写指令“#go 想要执行此指令的玩家名称 参数”,也就是“#go 小明 0”然后回车,小明就会被送到普隆德拉了,所有的指令都可以用#符号来指定玩家名称。
如果小明的名字中间有空格的话,比如:“小 明”,那么我们按照上面的规则来写指令可能会变成“#go 小 明 0”,这时候回车你会发现执行错误,因为系统找不到一个名字为“小”的玩家~ 这是因为指令系统是根据空格来区分参数的,在这个例子中“小”字被误会成是玩家名称了,实际上不是。
那么应该如何解决此问题呢?说来也简单,只需要在玩家名称上包一个英文双引号即可,比如:#go “小 明” 0 这样指令系统就会认为”小 明”是个玩家名称,然后才能成功找到他并把他送走。
忘记说了,使用#来指定玩家的时候,这个玩家必须在线,否则指令会执行失败!