From 1d5fa03579905ca53898f3b21a6598d8f9f652ad Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 24 Aug 2021 14:46:21 +0800 Subject: [PATCH 1/3] 1 --- server/gameserver/metadata.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index 29e0063..a06fae2 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -216,6 +216,9 @@ namespace MetaData ) ); lock_time += strings2.size() > 3 ? a8::XValue(strings2[3]).GetInt() : 0; + if (strings2.size() > 4) { + lock_time = a8::XValue(strings2[3]).GetInt() == 1; + } } } { From 212f97ce23c2316882d5f47781f84606f1fe086f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 24 Aug 2021 15:15:13 +0800 Subject: [PATCH 2/3] 1 --- server/gameserver/metadata.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index a06fae2..db884cb 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -216,8 +216,8 @@ namespace MetaData ) ); lock_time += strings2.size() > 3 ? a8::XValue(strings2[3]).GetInt() : 0; - if (strings2.size() > 4) { - lock_time = a8::XValue(strings2[3]).GetInt() == 1; + if (strings2.size() > 4 && a8::XValue(strings2[4]).GetInt() == 1) { + lock_time = 0; } } } From 6b1d493d2ce71c322b49ecd31fe011572f1469ad Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 24 Aug 2021 16:06:45 +0800 Subject: [PATCH 3/3] 1 --- server/gameserver/bullet.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index 3d506d6..24efeb0 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -519,6 +519,16 @@ void Bullet::ProcC4Bomb(Car* target, int delay_time) task->bomb_pos = GetPos(); if (target) { task->follow_target.Attach(target); + if (gun_meta->int_param1 > 0) { + int buff_uniid = target->TryAddBuff(sender.Get(), gun_meta->int_param1); + if (buff_uniid != 0) { + Buff* buff = target->GetBuffByUniId(buff_uniid); + if (buff && buff->remover_timer) { + target->room->xtimer.ModifyTimer(buff->remover_timer, + std::max(1, (int)(delay_time / FRAME_RATE_MS))); + } + } + } } task->gun_meta = gun_meta; task->meta = meta;