From 631ddfefc8483edd17caac53cb8c09a610a386bc Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 27 May 2020 16:07:24 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/room.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index dfb4e17..282bd55 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -195,6 +195,28 @@ void Room::AddPlayer(Player* hum) RandRemoveAndroid(); } NotifyUiUpdate(); + #ifdef DEBUG + xtimer.AddRepeatTimerAndAttach + (SERVER_FRAME_RATE * 5, + a8::XParams() + .SetSender(hum), + [] (const a8::XParams& param) + { + Human* hum = (Human*)param.sender.GetUserData(); + std::string debugmsg = a8::Format("weapon_id:%d weapon_lv:%d atk:%f fire_rate:%f " + "volume:%d maxhp:%f", + { + hum->curr_weapon->weapon_id, + hum->curr_weapon->weapon_lv, + hum->curr_weapon->GetAttrValue(kHAT_Atk), + hum->curr_weapon->GetAttrValue(kHAT_FireRate), + hum->curr_weapon->GetAttrValue(kHAT_Volume), + hum->curr_weapon->GetAttrValue(kHAT_MaxHp) + }); + hum->SendDebugMsg(debugmsg); + }, + &hum->xtimer_attacher.timer_list_); + #endif } int Room::AllocUniid() From 1df47dda6e080a42f2b7d1b3f691ab9f305e2c65 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 27 May 2020 16:11:01 +0800 Subject: [PATCH 2/5] 1 --- server/gameserver/bullet.cc | 6 ++++++ server/gameserver/room.cc | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index f9cf011..b63cab3 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -84,6 +84,9 @@ void Bullet::OnHit(std::set& objects) } } #endif + #ifdef DEBUG + player->SendDebugMsg(a8::Format("bullet atk:%f", {GetAtk()})); + #endif } } break; @@ -114,6 +117,9 @@ void Bullet::OnHit(std::set& objects) room->ScatterDrop(obstacle->GetPos(), obstacle->meta->i->drop()); } obstacle->BroadcastFullState(); + #ifdef DEBUG + player->SendDebugMsg(a8::Format("bullet atk:%f", {GetAtk()})); + #endif } } break; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 282bd55..5c054d7 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -204,14 +204,15 @@ void Room::AddPlayer(Player* hum) { Human* hum = (Human*)param.sender.GetUserData(); std::string debugmsg = a8::Format("weapon_id:%d weapon_lv:%d atk:%f fire_rate:%f " - "volume:%d maxhp:%f", + "volume:%d maxhp:%f curr_hp:%f", { hum->curr_weapon->weapon_id, hum->curr_weapon->weapon_lv, hum->curr_weapon->GetAttrValue(kHAT_Atk), hum->curr_weapon->GetAttrValue(kHAT_FireRate), hum->curr_weapon->GetAttrValue(kHAT_Volume), - hum->curr_weapon->GetAttrValue(kHAT_MaxHp) + hum->curr_weapon->GetAttrValue(kHAT_MaxHp), + hum->GetHP() }); hum->SendDebugMsg(debugmsg); }, From 164032944942cdc34c61b4b9573b735db269e635 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 27 May 2020 17:03:51 +0800 Subject: [PATCH 3/5] 1 --- server/gameserver/metamgr.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/server/gameserver/metamgr.cc b/server/gameserver/metamgr.cc index 4c03f73..d36f7e4 100755 --- a/server/gameserver/metamgr.cc +++ b/server/gameserver/metamgr.cc @@ -335,6 +335,7 @@ private: for (auto& meta : equipupgrade_meta_list) { MetaData::EquipUpgrade& item = a8::FastAppend(equipupgrade_list); item.i = &meta; + item.Init(); equipupgrade_hash[meta.id()] = &item; } From 0a15ec328849f4ff95949560172fe24304b615bf Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 27 May 2020 20:53:26 +0800 Subject: [PATCH 4/5] 1 --- server/gameserver/human.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index db7f0ee..af213fc 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2072,12 +2072,12 @@ void Human::GenBattleReportData(a8::MutableXObject* params) { std::string items_str; MetaData::RankReward* rank_reward_meta = MetaMgr::Instance()->GetRankReward(rank); -#ifdef DEBUG +#ifdef DEBUG1 { #else if (rank_reward_meta && rank_reward_meta->i->drop() > 0) { #endif -#ifdef DEBUG +#ifdef DEBUG1 { #else if (rand() % 100 < rank_reward_meta->i->drop()) { From 1ac96fa95f8dc84df85aba6ec0859f652d36d4ab Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 27 May 2020 20:57:18 +0800 Subject: [PATCH 5/5] 1 --- server/gameserver/player.cc | 65 ++++++++++++++++++++----------------- server/gameserver/player.h | 1 + 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index b4ff4c1..6c06ab0 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -1180,6 +1180,7 @@ void Player::_CMRevive(f8::MsgHdr& hdr, const cs::CMRevive& msg) } } #endif + InternalAdOk(); } } @@ -1239,35 +1240,7 @@ void Player::_CMAdEnd(f8::MsgHdr& hdr, const cs::CMAdEnd& msg) if (GetBuffByEffectId(kBET_LordMode)) { return; } - if (GetBuffByEffectId(kBET_AdPlaying)) { - MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(ADPLAY_BUFFID); - if (buff_meta) { - MetaData::Buff* lord_buff_meta = nullptr; - if (msg.param() == 1) { - lord_buff_meta = MetaMgr::Instance()->GetBuff(buff_meta->param1); - } else if (msg.param() == 2) { - lord_buff_meta = MetaMgr::Instance()->GetBuff(buff_meta->param2); - } - if (lord_buff_meta) { - a8::SetBitFlag(status, HS_AlreadyLordMode); - AddBuff(lord_buff_meta, 1); - std::vector strings; - a8::Split(lord_buff_meta->i->buff_param1(), strings, ':'); - for (auto& str : strings) { - int buff_id = a8::XValue(str); - MetaData::Buff* ext_buff_meta = MetaMgr::Instance()->GetBuff(buff_id); - if (ext_buff_meta) { - AddBuff(ext_buff_meta, 1); - } - } - } - } - RemoveBuffByEffectId(kBET_AdPlaying); - if (ad_timer_) { - room->xtimer.DeleteTimer(ad_timer_); - ad_timer_ = nullptr; - } - } + InternalAdOk(); } void Player::InternalAdCancel() @@ -1283,3 +1256,37 @@ void Player::InternalAdCancel() return; } } + +void Player::InternalAdOk() +{ + if (a8::HasBitFlag(status, HS_AlreadyLordMode)) { + return; + } + MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(ADPLAY_BUFFID); + if (buff_meta) { + MetaData::Buff* lord_buff_meta = nullptr; + if (rand() % 2 < 1) { + lord_buff_meta = MetaMgr::Instance()->GetBuff(buff_meta->param1); + } else { + lord_buff_meta = MetaMgr::Instance()->GetBuff(buff_meta->param2); + } + if (lord_buff_meta) { + a8::SetBitFlag(status, HS_AlreadyLordMode); + AddBuff(lord_buff_meta, 1); + std::vector strings; + a8::Split(lord_buff_meta->i->buff_param1(), strings, ':'); + for (auto& str : strings) { + int buff_id = a8::XValue(str); + MetaData::Buff* ext_buff_meta = MetaMgr::Instance()->GetBuff(buff_id); + if (ext_buff_meta) { + AddBuff(ext_buff_meta, 1); + } + } + } + } + RemoveBuffByEffectId(kBET_AdPlaying); + if (ad_timer_) { + room->xtimer.DeleteTimer(ad_timer_); + ad_timer_ = nullptr; + } +} diff --git a/server/gameserver/player.h b/server/gameserver/player.h index a3a5c5b..448722c 100644 --- a/server/gameserver/player.h +++ b/server/gameserver/player.h @@ -98,4 +98,5 @@ class Player : public Human private: void InternalAdCancel(); + void InternalAdOk(); };