diff --git a/server/gameserver/constant_export.h b/server/gameserver/constant_export.h index cfa4968..52a40c3 100644 --- a/server/gameserver/constant_export.h +++ b/server/gameserver/constant_export.h @@ -53,6 +53,7 @@ enum BuffEffectType_e kBET_SummonObstacle = 36, //召唤物件 kBET_FlashMove = 37, //瞬间移动 + kBET_FollowMaster = 49, //跟随主人 kBET_ThroughWall = 50, //穿墙 kBET_Driver = 51, //驾驶中 kBET_Passenger = 52, //乘座中 diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index e3b9056..f0a5183 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -237,6 +237,13 @@ namespace MetaData } } } + { + std::vector strings; + a8::Split(i->init_buffs(), strings, '|'); + for (auto& str : strings) { + init_buffs.push_back(a8::XValue(str)); + } + } } void Robot::Init() diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index ada7b02..b2afa1d 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -87,6 +87,7 @@ namespace MetaData const metatable::Player* i = nullptr; std::array volume = {}; + std::vector init_buffs; void Init(); }; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 5dd2255..97bac02 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -616,6 +616,9 @@ Hero* Room::CreateHero(Creature* master, AddToMoveableHash(hero); grid_service->AddCreature(hero); hero->RefreshView(); + for (int buff_id : meta->init_buffs) { + hero->MustBeAddBuff(hero, buff_id); + } return hero; } diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index 618d76f..f0836d4 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -155,6 +155,7 @@ message Player optional int32 normal_skill = 24; optional float hit_radius = 25; optional string ai_script = 26; + optional string init_buffs = 27; } message Robot