diff --git a/server/gameserver/battledatacontext.cc b/server/gameserver/battledatacontext.cc index 287eb660..7b7cf392 100644 --- a/server/gameserver/battledatacontext.cc +++ b/server/gameserver/battledatacontext.cc @@ -12,6 +12,7 @@ #include "app.h" #include "room.h" #include "explosion.h" +#include "roommgr.h" #include "attrhelper.h" @@ -329,6 +330,11 @@ void BattleDataContext::ParseResult(a8::XObject& obj) payload = obj.Get("payload").GetString(); errcode = obj.Get("errcode"); errmsg = obj.Get("errmsg").GetString(); + if (errcode == 0) { + revive_coin_ = obj.Get("revive_coin"); + int match_mode = obj.Get("match_mode"); + RoomMgr::Instance()->SetMatchMode(match_mode ? 1 : 0); + } if (obj.HasKey("hero_dto") && obj.At("hero_dto")->IsObject()) { hero_dto = obj.At("hero_dto"); hero_ability_->hero_uniid_ = hero_dto->Get("hero_uniid", ""); @@ -755,3 +761,13 @@ float BattleDataContext::GetExtRecoverHp() { return 0; } + +void BattleDataContext::SetReviveCoin(int num) +{ + revive_coin_ = num; +} + +int BattleDataContext::GetReviveCoin() +{ + return revive_coin_; +} diff --git a/server/gameserver/battledatacontext.h b/server/gameserver/battledatacontext.h index cd420b6a..0a16a963 100644 --- a/server/gameserver/battledatacontext.h +++ b/server/gameserver/battledatacontext.h @@ -71,6 +71,9 @@ struct BattleDataContext float GetHeroTotalAtk(); float GetExtRecoverHp(); + void SetReviveCoin(int num); + int GetReviveCoin(); + private: void Clear(); float GetTotalAtk(IBullet* bullet); @@ -85,6 +88,7 @@ private: private: CreatureWeakPtr owner_; + int revive_coin_ = 0; std::shared_ptr hero_ability_; std::shared_ptr weapon1_ability_; diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index a4b7fcc0..bd048cc7 100644 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -300,6 +300,7 @@ enum PropertyType_e kPropBeHook = 34, kPropSkillMinor = 35, + kPropReviveCion = 36, }; enum MapObjectType_e diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 1801790a..f3d34648 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -96,6 +96,14 @@ void Player::Initialize() #endif MarkSyncActivePlayer(__FILE__, __LINE__, __func__); } + { + room->frame_event.AddPropChg + (GetWeakPtrRef(), + kPropReviveCion, + 0, + GetBattleContext()->GetReviveCoin(), + true); + } } void Player::Update(int delta_time) diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index eb050d2c..7172b0cc 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -849,3 +849,8 @@ void RoomMgr::SendGetBattleData(int mode, ); } } + +void RoomMgr::SetMatchMode(int mode) +{ + match_mode_ = mode; +} diff --git a/server/gameserver/roommgr.h b/server/gameserver/roommgr.h index 836ae456..fb1b9a36 100644 --- a/server/gameserver/roommgr.h +++ b/server/gameserver/roommgr.h @@ -80,6 +80,8 @@ class RoomMgr : public a8::Singleton std::vector>& join_msgs, std::function< void(std::vector>&)> cb); + int GetMatchMode() { return match_mode_; }; + void SetMatchMode(int mode); private: void InstallReportStateTimer(); @@ -110,6 +112,7 @@ class RoomMgr : public a8::Singleton private: int current_room_idx_ = 0; + int match_mode_ = 0; std::map inactive_room_hash_; std::map room_hash_; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 13ffe251..60eed5d4 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -166,6 +166,9 @@ message MFVec2 valule: 副状态cd时间(剩余时间) value2: 副状态cd时间(总时间) value3: 技能id + property_type: 36 复活币数量 + property_subtype: + valule: 数量 */ message MFPropertyChg {