From 285b0cea65f230b7d83a27cb15524a91f7d66848 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 26 Oct 2021 11:08:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A9=BA=E6=8A=95=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/metadata.cc | 33 ------------------------- server/gameserver/metadata.h | 3 --- server/gameserver/room.cc | 2 +- server/tools/protobuild/metatable.proto | 2 +- 4 files changed, 2 insertions(+), 38 deletions(-) diff --git a/server/gameserver/metadata.cc b/server/gameserver/metadata.cc index 019eb28..be6928a 100644 --- a/server/gameserver/metadata.cc +++ b/server/gameserver/metadata.cc @@ -866,39 +866,6 @@ namespace MetaData void AirDrop::Init() { - { - int total_weight = 0; - std::vector strings; - a8::Split(i->drop_id(), strings, '|'); - for (const std::string& str : strings) { - std::vector strings2; - a8::Split(str, strings2, ':'); - assert(strings2.size() == 2); - int drop_id = a8::XValue(strings2[0]); - int weight = a8::XValue(strings2[1]); - total_weight += weight; - drop.push_back - (std::make_tuple( - drop_id, - total_weight - ) - ); - } - } - } - - int AirDrop::RandDrop() - { - if (HasDrop()) { - int total_weight = std::get<1>(drop[drop.size() - 1]); - int rnd = rand() % total_weight; - for (auto& tuple : drop) { - if (rnd < std::get<1>(tuple)) { - return std::get<0>(tuple); - } - } - } - return 0; } void AirRaid::Init() diff --git a/server/gameserver/metadata.h b/server/gameserver/metadata.h index 89feb22..474c132 100644 --- a/server/gameserver/metadata.h +++ b/server/gameserver/metadata.h @@ -200,11 +200,8 @@ namespace MetaData struct AirDrop { const metatable::AirDrop* i = nullptr; - std::vector> drop; - bool HasDrop() { return !drop.empty();}; void Init(); - int RandDrop(); }; struct AirRaid diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 71d7456..e84f3b0 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1637,7 +1637,7 @@ void Room::InitAirDrop() a8::XParams() .SetSender(this) .SetParam1(air_drop.i->appear_time()) - .SetParam2(air_drop.RandDrop()) + .SetParam2(air_drop.i->drop_id()) .SetParam3(air_drop.i->id()), [] (const a8::XParams& param) { diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index a0ce3b6..ed92562 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -326,7 +326,7 @@ message AirDrop optional int32 id = 1; optional int32 time = 2; optional int32 appear_time = 3; - optional string drop_id = 4; + optional int32 drop_id = 4; } message AirRaid