From 4277ae2f99925ba15005c0ca64a29b1a488a7a87 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 26 May 2020 19:05:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BF=9D=E6=8A=A4=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/human.cc | 34 +++++++++++++++++++++++++++++++++- server/gameserver/human.h | 2 ++ server/gameserver/player.cc | 25 +------------------------ server/gameserver/room.cc | 14 ++++++++++++++ 4 files changed, 50 insertions(+), 25 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 4b0b024..7a4b0dd 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2206,7 +2206,7 @@ void Human::GenBattleReportData(a8::MutableXObject* params) } } }//end if rank_reward_meta - params->SetVal("items", items_str); + params->SetVal("items", items_str != "|" ? items_str : ""); } { stats.pass_score = MetaMgr::Instance()->GetKillPointParam1(stats.kills); @@ -3208,6 +3208,38 @@ void Human::CancelRevive() } } +void Human::ProcNewBieLogic() +{ + if (a8::HasBitFlag(status, HS_AlreadyProcNewBieLogic)) { + return; + } + a8::SetBitFlag(status, HS_AlreadyProcNewBieLogic); + //刷一个机器人 + room->xtimer.AddDeadLineTimerAndAttach + (SERVER_FRAME_RATE * MetaMgr::Instance()->newbie_first_robot_appeartime, + a8::XParams() + .SetSender(this), + [] (const a8::XParams& param) + { + Human* hum = (Human*)param.sender.GetUserData(); + hum->room->ShuaNewBieAndroid(hum); + }, + &xtimer_attacher.timer_list_ + ); + //6秒后出现空投 + room->xtimer.AddDeadLineTimerAndAttach + (SERVER_FRAME_RATE * MetaMgr::Instance()->newbie_airdrop_appeartime, + a8::XParams() + .SetSender(this), + [] (const a8::XParams& param) + { + Human* hum = (Human*)param.sender.GetUserData(); + hum->room->InitAirDrop(); + }, + &xtimer_attacher.timer_list_ + ); +} + void Human::ClearLordMode() { Buff* buff = GetBuffByEffectId(kBET_LordMode); diff --git a/server/gameserver/human.h b/server/gameserver/human.h index c8502a1..c5bcd45 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -21,6 +21,7 @@ enum HumanStatus HS_NewBieNpc = 3, HS_AlreadyShow = 4, HS_AlreadyEquip = 5, + HS_AlreadyProcNewBieLogic = 6, HS_End }; @@ -252,6 +253,7 @@ class Human : public MoveableEntity bool IsPlayer(); bool IsAndroid(); void DropItems(Obstacle* obstacle); + void ProcNewBieLogic(); protected: void _UpdateMove(int speed); diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 5e87224..9581d91 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -575,30 +575,7 @@ void Player::LootInteraction(Loot* entity) if (room->room_type == RT_NewBrid && !a8::HasBitFlag(status, HS_AlreadyEquip)) { a8::SetBitFlag(status, HS_AlreadyEquip); - //刷一个机器人 - room->xtimer.AddDeadLineTimerAndAttach - (SERVER_FRAME_RATE * MetaMgr::Instance()->newbie_first_robot_appeartime, - a8::XParams() - .SetSender(this), - [] (const a8::XParams& param) - { - Human* hum = (Human*)param.sender.GetUserData(); - hum->room->ShuaNewBieAndroid(hum); - }, - &xtimer_attacher.timer_list_ - ); - //6秒后出现空投 - room->xtimer.AddDeadLineTimerAndAttach - (SERVER_FRAME_RATE * MetaMgr::Instance()->newbie_airdrop_appeartime, - a8::XParams() - .SetSender(this), - [] (const a8::XParams& param) - { - Human* hum = (Human*)param.sender.GetUserData(); - hum->room->InitAirDrop(); - }, - &xtimer_attacher.timer_list_ - ); + ProcNewBieLogic(); } } break; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index f7c74f9..6eb78d9 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1702,6 +1702,20 @@ void Room::NotifyGameStart() room->waiting_start = false; }, &xtimer_attacher_.timer_list_); + if (room_type == RT_NewBrid) { + xtimer.AddDeadLineTimerAndAttach + (SERVER_FRAME_RATE * MetaMgr::Instance()->level0room_robot_protect_time, + a8::XParams() + .SetSender(this), + [] (const a8::XParams& param) + { + Room* room = (Room*)param.sender.GetUserData(); + if (room->first_newbie) { + room->first_newbie->ProcNewBieLogic(); + } + }, + &xtimer_attacher_.timer_list_); + } if (room_type == RT_MidBrid) { ShuaAndroidTimerFunc(); DieAndroidTimerFunc();