From 7cd76949bfd1136e213646b219519e18dfbfe090 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 6 Apr 2021 19:15:29 +0800 Subject: [PATCH] 1 --- server/gameserver/constant.h | 9 ++++++- server/gameserver/creature.cc | 12 +++++++-- server/gameserver/metadata.cc | 33 +++++++++++++++++++++++++ server/gameserver/metadata.h | 1 + server/tools/protobuild/metatable.proto | 1 + 5 files changed, 53 insertions(+), 3 deletions(-) diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 73ae5f7..665406b 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -157,8 +157,9 @@ enum BuffEffectType_e kBET_Hide = 32, //隐身 kBET_CrazyMode = 33, //暴走模式 kBET_ShockWave = 34, //冲击波 - //kBET_Sprint = 35, //冲刺 + kBET_Sprint = 35, //冲刺 kBET_SummonObstacle = 36, //召唤物件 + kBET_FlashMove = 37, //瞬间移动 kBET_ThroughWall = 50, //穿墙 kBET_Driver = 51, //驾驶中 @@ -368,6 +369,12 @@ enum GameChannel_e kTouTiaoChannelId = 6006 }; +enum PostBuffAction_e +{ + kRemoveBuffByIdAction = 1, + kRemoveBuffByEffectAction = 2 +}; + const char* const PROJ_NAME_FMT = "game%d_gameserver"; const char* const PROJ_ROOT_FMT = "/data/logs/%s"; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 40e398b..e80c9ac 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -665,13 +665,11 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff) if (skill) { MetaData::SkillPhase* phase = GetCurrSkillPhase(); if (phase && phase->time_offset >= skill->GetPassedTime()) { - a8::Vec2 old_move_dir = move_dir; if (HasBuffEffect(kBET_Car)) { _UpdateMove(phase->param1.GetDouble() * 1.5); } else { _UpdateMove(phase->param1); } - move_dir = old_move_dir; } } } @@ -853,6 +851,16 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff) SummonObstacle(buff->meta->param1, GetPos()); } break; + case kBET_Sprint: + { + + } + break; + case kBET_FlashMove: + { + + } + break; default: { } diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index ba34ad5..a11898f 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -521,6 +521,39 @@ namespace MetaData immune_buffeffect.insert(a8::XValue(str)); } } + { + std::vector strings; + a8::Split(i->buff_param2(), strings, ':'); + for (auto& str : strings) { + param2_int_list.push_back(a8::XValue(str).GetInt()); + } + } + { + std::vector strings; + a8::Split(i->post_remove_action(), strings, '|'); + for (auto& str : strings) { + std::vector strings2; + a8::Split(str, strings2, ':'); + if (strings2.size() > 2) { + std::vector strings3; + a8::Split(strings2[1], strings3, ';'); + if (strings2[0] == "remove_buff_by_id" || + strings2[0] == "remove_buff_by_effect") { + auto& action = a8::FastAppend(post_remove_action); + if (strings2[0] == "remove_buff_by_id") { + std::get<0>(action) = kRemoveBuffByIdAction; + } else if (strings2[0] == "remove_buff_by_effect") { + std::get<0>(action) = kRemoveBuffByEffectAction; + } + for (auto& str3 : strings3) { + if (!str3.empty()) { + std::get<1>(action).push_back(a8::XValue(str3)); + } + } + } + } + } + } } bool Buff::EffectCanStack() diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 7a08006..3b3ec25 100755 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -170,6 +170,7 @@ namespace MetaData float param3 = 0.0f; float param4 = 0.0f; std::vector param2_int_list; + std::vector>> post_remove_action; std::set immune_buffeffect; }; diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index 591a128..3b7c6ff 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -205,6 +205,7 @@ message Buff required float duration_time = 10; optional float buff_valueup = 11; required string immune_buffeffect_list = 12; + optional string post_remove_action = 13; } message Drop