mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-12 19:22:27 +08:00
命令管理器初步兼容GM
This commit is contained in:
@@ -1,43 +1,56 @@
|
||||
package game
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"hk4e/gs/model"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// HelpCommand 帮助命令
|
||||
func (c *CommandManager) HelpCommand(cmd *Command) {
|
||||
c.gameManager.SendPrivateChat(c.system, cmd.Executor,
|
||||
func (c *CommandManager) HelpCommand(cmd *CommandMessage) {
|
||||
executor := cmd.Executor
|
||||
|
||||
c.SendMessage(executor,
|
||||
"===== 帮助 / Help =====\n"+
|
||||
"以后再写awa\n",
|
||||
"传送: /tp {-u [UID]} {-s [场景ID]} -x [坐标X] -y [坐标Y] -z [坐标Z]\n",
|
||||
)
|
||||
}
|
||||
|
||||
// OpCommand 给予权限命令
|
||||
func (c *CommandManager) OpCommand(cmd *Command) {
|
||||
cmd.Executor.IsGM = 1
|
||||
c.gameManager.SendPrivateChat(c.system, cmd.Executor, fmt.Sprintf("权限修改完毕, 现在你是GM啦 %v", cmd.Args))
|
||||
func (c *CommandManager) OpCommand(cmd *CommandMessage) {
|
||||
player, ok := cmd.Executor.(*model.Player)
|
||||
if !ok {
|
||||
c.SendMessage(cmd.Executor, "只有玩家才能执行此命令。")
|
||||
return
|
||||
}
|
||||
|
||||
player.IsGM = 1
|
||||
c.SendMessage(player, "权限修改完毕, 现在你是GM啦 %v", cmd.Args)
|
||||
}
|
||||
|
||||
// TeleportCommand 传送玩家命令
|
||||
// tp {-u [userId]} {-s [sceneId]} -x [posX] -y [posY] -z [posZ]
|
||||
func (c *CommandManager) TeleportCommand(cmd *Command) {
|
||||
func (c *CommandManager) TeleportCommand(cmd *CommandMessage) {
|
||||
game := c.gameManager
|
||||
player := cmd.Executor
|
||||
|
||||
// 执行者如果不是玩家则必须输入目标UID
|
||||
player, ok := cmd.Executor.(*model.Player)
|
||||
if !ok && cmd.Args["u"] == "" {
|
||||
c.SendMessage(cmd.Executor, "你不是玩家请指定目标UID。")
|
||||
return
|
||||
}
|
||||
|
||||
// 判断是否填写必备参数
|
||||
if cmd.Args["x"] == "" || cmd.Args["y"] == "" || cmd.Args["z"] == "" {
|
||||
c.SendMessage(player, "参数不足, 正确用法: /%v {-u [UID]} {-s [场景ID]} -x [坐标X] -y [坐标Y] -z [坐标Z]。", cmd.Name)
|
||||
return
|
||||
}
|
||||
|
||||
// 初始值
|
||||
target := player
|
||||
sceneId := target.SceneId
|
||||
pos := &model.Vector{}
|
||||
|
||||
// 判断是否填写必备参数
|
||||
if cmd.Args["x"] == "" || cmd.Args["y"] == "" || cmd.Args["z"] == "" {
|
||||
game.SendPrivateChat(c.system, player, "参数不足, 正确用法 /tp {-u [userId]} {-s [sceneId]} -x [posX] -y [posY] -z [posZ]。")
|
||||
return
|
||||
}
|
||||
|
||||
// 选择每个参数
|
||||
for k, v := range cmd.Args {
|
||||
var err error
|
||||
@@ -47,8 +60,11 @@ func (c *CommandManager) TeleportCommand(cmd *Command) {
|
||||
var t uint64
|
||||
if t, err = strconv.ParseUint(v, 10, 32); err != nil {
|
||||
// 判断目标用户是否在线
|
||||
if target = game.userManager.GetOnlineUser(uint32(t)); target == nil {
|
||||
game.SendPrivateChat(c.system, player, fmt.Sprintf("目标玩家不在线, UID: %v。", v))
|
||||
if user := game.userManager.GetOnlineUser(uint32(t)); user != nil {
|
||||
target = user
|
||||
sceneId = target.SceneId
|
||||
} else {
|
||||
c.SendMessage(player, "目标玩家不在线, UID: %v。", v)
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -94,13 +110,13 @@ func (c *CommandManager) TeleportCommand(cmd *Command) {
|
||||
pos.Z = z + nowZ
|
||||
}
|
||||
default:
|
||||
game.SendPrivateChat(c.system, player, fmt.Sprintf("参数 -%v 冗余。", k))
|
||||
c.SendMessage(player, "参数 -%v 冗余。", k)
|
||||
return
|
||||
}
|
||||
|
||||
// 解析错误的话应该是参数类型问题
|
||||
if err != nil {
|
||||
game.SendPrivateChat(c.system, player, fmt.Sprintf("参数 -%v 有误, 类型错误。", k))
|
||||
c.SendMessage("参数 -%v 有误, 类型错误。", k)
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -109,5 +125,5 @@ func (c *CommandManager) TeleportCommand(cmd *Command) {
|
||||
game.TeleportPlayer(target, sceneId, pos)
|
||||
|
||||
// 发送消息给执行者
|
||||
game.SendPrivateChat(c.system, player, fmt.Sprintf("已将玩家 UID: %v 传送至 区域: %v X: %v Y: %v Z:%v。", target.PlayerID, sceneId, pos.X, pos.Y, pos.Z))
|
||||
c.SendMessage(player, "已将玩家 UID: %v 传送至 场景: %v X: %v Y: %v Z:%v。", target.PlayerID, sceneId, pos.X, pos.Y, pos.Z)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user