From 7dda3bffb31b1bbf24aaf1747deaa435a94f10f4 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 20 Aug 2021 08:13:34 +0000 Subject: [PATCH] 1 --- server/gameserver/metadata.cc | 7 +++++++ server/gameserver/metadata.h | 1 + server/gameserver/roomobstacle.cc | 20 ++++++++++++++------ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index f76dbf7..29e0063 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -189,6 +189,13 @@ namespace MetaData int_param2 = a8::XValue(i->param2()); float_param2 = a8::XValue(i->param2()).GetDouble(); } + { + std::vector strings; + a8::Split(i->param2(), strings, '|'); + for (auto& str : strings) { + param2_list.push_back(a8::XValue(str)); + } + } } void Equip::Init() diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index f4870e2..955cd23 100644 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -54,6 +54,7 @@ namespace MetaData int int_param2 = 0; float float_param2 = 0; long long sweep_tags = 0; + std::vector param2_list; void Init(); }; diff --git a/server/gameserver/roomobstacle.cc b/server/gameserver/roomobstacle.cc index 2133f1c..f266959 100644 --- a/server/gameserver/roomobstacle.cc +++ b/server/gameserver/roomobstacle.cc @@ -430,9 +430,15 @@ void RoomObstacle::ActiveGully() void RoomObstacle::ActiveAirDrop() { + int delay_time = 0; + int appear_time = 0; + if (meta->param2_list.size() >= 2) { + delay_time = meta->param2_list[0]; + appear_time = meta->param2_list[1]; + } room->xtimer.AddDeadLineTimerAndAttach ( - meta->int_param2 / FRAME_RATE_MS, + (delay_time + appear_time) / FRAME_RATE_MS, a8::XParams() .SetSender(this), [] (const a8::XParams& param) @@ -449,15 +455,17 @@ void RoomObstacle::ActiveAirDrop() }); room->xtimer.AddDeadLineTimerAndAttach ( - 0, - //meta->int_param2 / FRAME_RATE_MS * 1, + delay_time / FRAME_RATE_MS, a8::XParams() - .SetSender(this), + .SetSender(this) + .SetParam1(delay_time) + .SetParam2(appear_time) + .SetParam3(meta->int_param1), [] (const a8::XParams& param) { RoomObstacle* obstacle = (RoomObstacle*)param.sender.GetUserData(); - obstacle->room->frame_event.AddAirDrop(obstacle->meta->int_param2, - obstacle->meta->int_param1, + obstacle->room->frame_event.AddAirDrop(param.param2, + param.param3, obstacle->GetPos()); }, &xtimer_attacher.timer_list_