mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Implement /battlemode_force command
+ add placeholder for /battlemode command (currently can only show your battle mode)
This commit is contained in:
parent
f01309dfc2
commit
2e79c61123
@ -47,6 +47,8 @@ pub enum ChatCommand {
|
|||||||
Alias,
|
Alias,
|
||||||
ApplyBuff,
|
ApplyBuff,
|
||||||
Ban,
|
Ban,
|
||||||
|
BattleMode,
|
||||||
|
BattleModeForce,
|
||||||
Build,
|
Build,
|
||||||
BuildAreaAdd,
|
BuildAreaAdd,
|
||||||
BuildAreaList,
|
BuildAreaList,
|
||||||
@ -321,6 +323,25 @@ impl ChatCommand {
|
|||||||
true for overwrite to alter an existing ban..",
|
true for overwrite to alter an existing ban..",
|
||||||
Some(Moderator),
|
Some(Moderator),
|
||||||
),
|
),
|
||||||
|
ChatCommand::BattleMode => cmd(
|
||||||
|
vec![Enum(
|
||||||
|
"battle mode",
|
||||||
|
vec!["pvp".to_owned(), "pve".to_owned()],
|
||||||
|
Optional,
|
||||||
|
)],
|
||||||
|
"Set your battle mode to pvp/pve.\n\
|
||||||
|
If called without arguments will show current battle mode.",
|
||||||
|
None,
|
||||||
|
),
|
||||||
|
ChatCommand::BattleModeForce => cmd(
|
||||||
|
vec![Enum(
|
||||||
|
"battle mode",
|
||||||
|
vec!["pvp".to_owned(), "pve".to_owned()],
|
||||||
|
Required,
|
||||||
|
)],
|
||||||
|
"Change your battle mode flag without any checks",
|
||||||
|
Some(Admin),
|
||||||
|
),
|
||||||
ChatCommand::Build => cmd(vec![], "Toggles build mode on and off", None),
|
ChatCommand::Build => cmd(vec![], "Toggles build mode on and off", None),
|
||||||
ChatCommand::BuildAreaAdd => cmd(
|
ChatCommand::BuildAreaAdd => cmd(
|
||||||
vec![
|
vec![
|
||||||
@ -623,6 +644,8 @@ impl ChatCommand {
|
|||||||
ChatCommand::Alias => "alias",
|
ChatCommand::Alias => "alias",
|
||||||
ChatCommand::ApplyBuff => "buff",
|
ChatCommand::ApplyBuff => "buff",
|
||||||
ChatCommand::Ban => "ban",
|
ChatCommand::Ban => "ban",
|
||||||
|
ChatCommand::BattleMode => "battlemode",
|
||||||
|
ChatCommand::BattleModeForce => "battlemode_force",
|
||||||
ChatCommand::Build => "build",
|
ChatCommand::Build => "build",
|
||||||
ChatCommand::BuildAreaAdd => "build_area_add",
|
ChatCommand::BuildAreaAdd => "build_area_add",
|
||||||
ChatCommand::BuildAreaList => "build_area_list",
|
ChatCommand::BuildAreaList => "build_area_list",
|
||||||
|
@ -31,7 +31,7 @@ use common::{
|
|||||||
event::{EventBus, ServerEvent},
|
event::{EventBus, ServerEvent},
|
||||||
generation::EntityInfo,
|
generation::EntityInfo,
|
||||||
npc::{self, get_npc_name},
|
npc::{self, get_npc_name},
|
||||||
resources::{PlayerPhysicsSettings, TimeOfDay},
|
resources::{PlayerPhysicsSettings, TimeOfDay, BattleMode},
|
||||||
terrain::{Block, BlockKind, SpriteKind, TerrainChunkSize},
|
terrain::{Block, BlockKind, SpriteKind, TerrainChunkSize},
|
||||||
uid::Uid,
|
uid::Uid,
|
||||||
vol::RectVolSize,
|
vol::RectVolSize,
|
||||||
@ -113,6 +113,8 @@ fn do_command(
|
|||||||
ChatCommand::Alias => handle_alias,
|
ChatCommand::Alias => handle_alias,
|
||||||
ChatCommand::ApplyBuff => handle_apply_buff,
|
ChatCommand::ApplyBuff => handle_apply_buff,
|
||||||
ChatCommand::Ban => handle_ban,
|
ChatCommand::Ban => handle_ban,
|
||||||
|
ChatCommand::BattleMode => handle_battlemode,
|
||||||
|
ChatCommand::BattleModeForce => handle_battlemode_force,
|
||||||
ChatCommand::Build => handle_build,
|
ChatCommand::Build => handle_build,
|
||||||
ChatCommand::BuildAreaAdd => handle_build_area_add,
|
ChatCommand::BuildAreaAdd => handle_build_area_add,
|
||||||
ChatCommand::BuildAreaList => handle_build_area_list,
|
ChatCommand::BuildAreaList => handle_build_area_list,
|
||||||
@ -3094,6 +3096,62 @@ fn handle_ban(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn handle_battlemode(
|
||||||
|
server: &mut Server,
|
||||||
|
client: EcsEntity,
|
||||||
|
target: EcsEntity,
|
||||||
|
args: Vec<String>,
|
||||||
|
_action: &ChatCommand,
|
||||||
|
) -> CmdResult<()> {
|
||||||
|
let ecs = &server.state.ecs();
|
||||||
|
if let Some(mode) = parse_args!(args, String) {
|
||||||
|
Err("Seting mode isn't implemented".to_owned())
|
||||||
|
} else {
|
||||||
|
let players = ecs.read_storage::<comp::Player>();
|
||||||
|
let player = players
|
||||||
|
.get(target)
|
||||||
|
.ok_or_else(|| "Cannot get player component for target".to_string())?;
|
||||||
|
server.notify_client(
|
||||||
|
client,
|
||||||
|
ServerGeneral::server_msg(
|
||||||
|
ChatType::CommandInfo,
|
||||||
|
format!("Battle mode is {:?}", player.battle_mode),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn handle_battlemode_force(
|
||||||
|
server: &mut Server,
|
||||||
|
client: EcsEntity,
|
||||||
|
target: EcsEntity,
|
||||||
|
args: Vec<String>,
|
||||||
|
action: &ChatCommand,
|
||||||
|
) -> CmdResult<()> {
|
||||||
|
let ecs = &server.state.ecs();
|
||||||
|
let mut players = ecs.write_storage::<comp::Player>();
|
||||||
|
let mode = parse_args!(args, String).ok_or_else(|| action.help_string())?;
|
||||||
|
let mode = match mode.as_str() {
|
||||||
|
"pvp" => BattleMode::PvP,
|
||||||
|
"pve" => BattleMode::PvE,
|
||||||
|
_ => return Err("Available modes: pvp, pve".to_owned()),
|
||||||
|
};
|
||||||
|
if let Some(ref mut player) = players.get_mut(target) {
|
||||||
|
player.battle_mode = mode;
|
||||||
|
server.notify_client(
|
||||||
|
client,
|
||||||
|
ServerGeneral::server_msg(
|
||||||
|
ChatType::CommandInfo,
|
||||||
|
format!("Set battle_mode to {:?}", player.battle_mode),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
Ok(())
|
||||||
|
} else {
|
||||||
|
Err("Cannot get player component for target".to_owned())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn handle_unban(
|
fn handle_unban(
|
||||||
server: &mut Server,
|
server: &mut Server,
|
||||||
client: EcsEntity,
|
client: EcsEntity,
|
||||||
|
Loading…
Reference in New Issue
Block a user