From 537cd919f6ff2a7f5c84b00c9e225f37e31d6d22 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 28 Feb 2020 16:44:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BC=80=E5=A7=8B=E6=B8=B8?= =?UTF-8?q?=E6=88=8F=E4=B8=A4=E7=A7=92=E7=AD=89=E5=BE=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/android.ai.cc | 6 ++++++ server/gameserver/player.cc | 5 ++++- server/gameserver/room.cc | 10 ++++++++++ server/gameserver/room.h | 1 + 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/server/gameserver/android.ai.cc b/server/gameserver/android.ai.cc index a230eb5..e9b011a 100644 --- a/server/gameserver/android.ai.cc +++ b/server/gameserver/android.ai.cc @@ -90,6 +90,9 @@ void AndroidAI::ChangeToState(AndroidState_e to_state) void AndroidAI::DoMove() { Human* hum = (Human*)owner; + if (hum->room->waiting_start) { + return; + } if (a8::HasBitFlag(hum->status, HS_Fly)) { return; } @@ -114,6 +117,9 @@ void AndroidAI::DoMove() void AndroidAI::DoAttack() { Human* hum = (Human*)owner; + if (hum->room->waiting_start) { + return; + } if (a8::HasBitFlag(hum->status, HS_Fly) || a8::HasBitFlag(hum->status, HS_Jump)) { return; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index e0daf90..0939f97 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -101,7 +101,9 @@ void Player::UpdateMove() if (action_type == AT_Relive) { CancelAction(); } - if (dead || a8::HasBitFlag(status, HS_Fly)) { + if (dead || + room->waiting_start || + a8::HasBitFlag(status, HS_Fly)) { moving = false; moved_frames = 0; last_collision_door = nullptr; @@ -131,6 +133,7 @@ void Player::UpdateMove() void Player::UpdateShot() { if (dead || + room->waiting_start || a8::HasBitFlag(status, HS_Fly) || a8::HasBitFlag(status, HS_Jump) ) { shot_start = false; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 9f936a7..9369713 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1610,4 +1610,14 @@ void Room::NotifyGameStart() for (auto& pair : accountid_hash_) { pair.second->SendNotifyMsg(msg); } + waiting_start = true; + xtimer.AddDeadLineTimerAndAttach(SERVER_FRAME_RATE * 2, + a8::XParams() + .SetSender(this), + [] (const a8::XParams& param) + { + Room* room = (Room*)param.sender.GetUserData(); + room->waiting_start = false; + }, + &xtimer_attacher.timer_list_); } diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 535fa72..68049b0 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -49,6 +49,7 @@ public: long long pending_request = 0; long long last_debugout_tick = 0; a8::Vec2 last_player_jump_pos; + bool waiting_start = false; ~Room(); void Init();