From 4546e3ec20bf2236c8e69a8681d5dfe8ebd274be Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 20 Aug 2020 13:22:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=B4=E6=9D=A1=E4=B8=8D=E6=8E=89=E8=90=BD?= =?UTF-8?q?=E6=97=B6=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/constant.h | 3 ++- server/gameserver/human.cc | 18 ++++++++++++++++-- server/gameserver/human.h | 1 + server/gameserver/playermgr.cc | 1 + 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index e407b20..26210d6 100755 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -324,7 +324,8 @@ enum ColliderTag_e enum GameChannel_e { - kWxChannelId = 6001 + kWxChannelId = 6001, + kTouTiaoChannelId = 6006 }; const char* const PROJ_NAME_FMT = "game%d_gameserver"; diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 22024c5..6b1ee5e 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2436,6 +2436,20 @@ void Human::GenZbModeBattleReportData(a8::MutableXObject* params) void Human::DeadDrop() { + auto SkinCanDrop = + [this] (Skin* skin) -> bool + { + #ifdef DEBUG + return false; + #else + if (JsonDataMgr::Instance()->channel == kTouTiaoChannelId) { + return false; + } else { + return skin->skin_id != 0; + } + #endif + }; + if (GetRace() == kHumanRace && !HasBuffEffect(kBET_Terminator)) { for (auto& weapon : weapons) { if (weapon.weapon_id != 0 && weapon.weapon_id != default_weapon.weapon_id) { @@ -2449,7 +2463,7 @@ void Human::DeadDrop() } { Skin* old_skin = GetSkinByIdx(kSkinSlot_HAT); - if (old_skin && old_skin->skin_id != 0) { + if (old_skin && old_skin->skin_id != 0 && SkinCanDrop(old_skin)) { a8::Vec2 dir = a8::Vec2::UP; dir.Rotate(a8::RandAngle()); room->CreateLoot(old_skin->skin_id, GetPos() + dir * (40 + rand() % 50), 1, 1); @@ -2458,7 +2472,7 @@ void Human::DeadDrop() } { Skin* old_skin = GetSkinByIdx(kSkinSlot_CLOTH); - if (old_skin && old_skin->skin_id != 0) { + if (old_skin && old_skin->skin_id != 0 && SkinCanDrop(old_skin)) { a8::Vec2 dir = a8::Vec2::UP; dir.Rotate(a8::RandAngle()); room->CreateLoot(old_skin->skin_id, GetPos() + dir * (40 + rand() % 50), 1, 1); diff --git a/server/gameserver/human.h b/server/gameserver/human.h index 0d5ae22..d2cbed4 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -44,6 +44,7 @@ class Human : public MoveableEntity bool auto_fill = false; int today_enter_times = 0; int account_registertime = 0; + int channel = 0; MetaData::Player* meta = nullptr; MetaData::Equip* helmet_meta = nullptr; MetaData::Equip* chest_meta = nullptr; diff --git a/server/gameserver/playermgr.cc b/server/gameserver/playermgr.cc index 5e8a40a..5218bda 100644 --- a/server/gameserver/playermgr.cc +++ b/server/gameserver/playermgr.cc @@ -63,6 +63,7 @@ Player* PlayerMgr::CreatePlayerByCMJoin(Player* hum, hum->today_enter_times = msg.today_enter_times(); hum->create_tick = a8::XGetTickCount(); hum->account_registertime = f8::ExtractRegisterTimeFromSessionId(msg.session_id()); + hum->channel = f8::ExtractChannelIdFromAccountId(msg.account_id()); hum->atk_add = msg.atk_add(); hum->emoji1 = msg.emoji1(); hum->emoji2 = msg.emoji2();