diff --git a/server/gameserver/mt/Param.cc b/server/gameserver/mt/Param.cc index 4eb48657..c19dc1f8 100644 --- a/server/gameserver/mt/Param.cc +++ b/server/gameserver/mt/Param.cc @@ -60,6 +60,8 @@ namespace mt s_.moba_kill_times = GetIntParam("moba_kill_times", 12); s_.moba_revive_time = GetIntParam("moba_revive_time", 5); s_.moba_room_time = GetIntParam("moba_room_time", 60 * 3); + s_.moba_tower_interval = GetIntParam("moba_tower_interval", 1); + s_.moba_tower_recover_hp_rate = GetFloatParam("moba_tower_recover_hp_rate", 0.5); s_.battle_gain_exp_radium = GetFloatParam("battle_gain_exp_radium", 2000); s_.battle_gain_exp_rate_killer = GetFloatParam("battle_gain_exp_rate_killer", 0.5); @@ -278,6 +280,25 @@ namespace mt abort(); } } + { + std::vector strings; + a8::Split(GetStringParam("moba_towers"), strings, '|'); + if (strings.size() != 2) { + abort(); + } + for (auto& str : strings) { + std::vector strings2; + a8::Split(str, strings2, ':'); + if (strings2.size() != 4) { + abort(); + } + glm::vec3 center = glm::vec3((float)a8::XValue(strings2[0]).GetDouble(), + (float)a8::XValue(strings2[1]).GetDouble(), + (float)a8::XValue(strings2[2]).GetDouble()); + float radius = (float)a8::XValue(strings2[3]).GetDouble(); + s_.moba_towers.push_back(std::make_tuple(center, radius)); + } + } { std::vector strings; a8::Split(GetStringParam("boss_skill_order"), strings, '|');