添加保护逻辑

This commit is contained in:
aozhiwei 2020-05-26 19:05:30 +08:00
parent f9100e209a
commit 4277ae2f99
4 changed files with 50 additions and 25 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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();