This commit is contained in:
aozhiwei 2020-05-13 14:43:29 +08:00
parent e476451958
commit 016cea1b76
7 changed files with 74 additions and 0 deletions

View File

@ -121,6 +121,7 @@ enum BuffEffectType_e
kBET_Invincible = 4, //无敌
kBET_Camouflage = 5, //伪装
kBET_AdPlaying = 6, //看广告中
kBET_LordMode = 7, //上帝模式
kBET_OnceChgAttr = 11, //一次性buff
kBET_End
};
@ -293,3 +294,5 @@ const int MAX_ALL_HTTP_NUM = MAX_SYS_HTTP_NUM + MAX_USER_HTTP_NUM;
const int DEFAULT_BORN_POINT_X = 3000;
const int DEFAULT_BORN_POINT_Y = 3000;
const int ADPLAY_BUFFID = 1006;

View File

@ -93,6 +93,9 @@ void HandlerMgr::RegisterNetMsgHandlers()
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMLeave);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMRevive);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMCancelRevive);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMAdStart);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMAdCancel);
RegisterNetMsgHandler(&ggmsghandler, &Player::_CMAdEnd);
}
void HandlerMgr::ProcGMMsg(unsigned long saddr, int sockhandle,

View File

@ -307,6 +307,7 @@ protected:
HumanCar car_;
MetaData::Skill* skill_meta_ = nullptr;
xtimer_list* ad_timer_ = nullptr;
private:
CircleCollider* self_collider_ = nullptr;

View File

@ -1216,3 +1216,63 @@ void Player::_CMCancelRevive(f8::MsgHdr& hdr, const cs::CMCancelRevive& msg)
{
CancelRevive();
}
void Player::_CMAdStart(f8::MsgHdr& hdr, const cs::CMAdStart& msg)
{
if (downed || dead) {
return;
}
if (GetBuffByEffectId(kBET_LordMode)) {
return;
}
if (GetBuffByEffectId(kBET_AdPlaying)) {
return;
}
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(ADPLAY_BUFFID);
if (buff_meta) {
AddBuff(buff_meta, 1);
room->xtimer.
AddDeadLineTimerAndAttach(
buff_meta->i->duration_time() * SYNC_FRAME_RATE + 2,
a8::XParams()
.SetSender(this),
[] (const a8::XParams& param)
{
},
&xtimer_attacher.timer_list,
[] (const a8::XParams& param)
{
}
);
}
}
void Player::_CMAdCancel(f8::MsgHdr& hdr, const cs::CMAdCancel& msg)
{
if (GetBuffByEffectId(kBET_LordMode)) {
return;
}
if (GetBuffByEffectId(kBET_AdPlaying)) {
RemoveBuffByEffectId(kBET_AdPlaying);
if (ad_timer_) {
room->xtimer.DeleteTimer(ad_timer_);
ad_timer_ = nullptr;
}
}
}
void Player::_CMAdEnd(f8::MsgHdr& hdr, const cs::CMAdEnd& msg)
{
if (GetBuffByEffectId(kBET_LordMode)) {
return;
}
if (GetBuffByEffectId(kBET_AdPlaying)) {
RemoveBuffByEffectId(kBET_AdPlaying);
if (ad_timer_) {
room->xtimer.DeleteTimer(ad_timer_);
ad_timer_ = nullptr;
}
}
}

View File

@ -95,5 +95,8 @@ class Player : public Human
void _CMLeave(f8::MsgHdr& hdr, const cs::CMLeave& msg);
void _CMRevive(f8::MsgHdr& hdr, const cs::CMRevive& msg);
void _CMCancelRevive(f8::MsgHdr& hdr, const cs::CMCancelRevive& msg);
void _CMAdStart(f8::MsgHdr& hdr, const cs::CMAdStart& msg);
void _CMAdCancel(f8::MsgHdr& hdr, const cs::CMAdCancel& msg);
void _CMAdEnd(f8::MsgHdr& hdr, const cs::CMAdEnd& msg);
};

View File

@ -14,6 +14,9 @@ enum CMMessageId_e
_CMLeave = 209;
_CMRevive = 210;
_CMCancelRevive = 211;
_CMAdStart = 212;
_CMAdCancel = 213;
_CMAdEnd = 214;
}
enum SMMessageId_e

View File

@ -782,6 +782,7 @@ message CMAdCancel
//广(广)
message CMAdEnd
{
optional int32 param = 1; //1: 2
}
//endcmmsg