From f5582213584af61a6953108664ca070b9a3b4806 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 19 Mar 2020 16:17:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=AA=8F=E9=A9=AC=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/player.cc | 16 +++++++++++++++- server/gameserver/room.cc | 15 +++++++++++++++ server/gameserver/room.h | 1 + 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 094fa22..59f6a32 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -722,7 +722,7 @@ void Player::ProcPrepareItems(const ::google::protobuf::RepeatedField< ::google: MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquip(equip_id); if (item_meta) { switch (item_meta->i->equip_type()) { - case 1: + case EQUIP_TYPE_WEAPON: { //装备 if (item_meta->i->equip_subtype() == 1) { @@ -760,6 +760,20 @@ void Player::ProcPrepareItems(const ::google::protobuf::RepeatedField< ::google: } } break; + case EQUIP_TYPE_CAR: + { + int car_uniid = room->CreateAndTakeonCar(item_meta->i->id(), GetPos()); + if (car_uniid != -1) { + car_.car_uniid = car_uniid; + car_.car_id = item_meta->i->id(); + car_.meta = item_meta; + MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(car_.meta->i->buffid()); + if (buff_meta) { + AddBuff(buff_meta, 1); + } + } + } + break; default: { if (item_meta->i->_inventory_slot() >= 0 && diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index c1f8417..50654ca 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1495,6 +1495,21 @@ void Room::TakeOffCarObject(int car_uniid, a8::Vec2 pos) } } +int Room::CreateAndTakeonCar(int car_id, a8::Vec2 pos) +{ + MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquip(car_id); + if (!item_meta) { + return -1; + } + int car_uniid = AllocUniid(); + CarObject car; + car.car_id = car_id; + car.pos = pos; + car.taken = true; + car_hash_[car_uniid] = car; + return car_uniid; +} + void Room::NotifyWxVoip() { xtimer.AddDeadLineTimerAndAttach(0, diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 68049b0..1f75178 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -100,6 +100,7 @@ public: void UpdateCarObject(int old_uniid, int new_uniid, a8::Vec2 pos); void TakeOnCarObject(int car_uniid); void TakeOffCarObject(int car_uniid, a8::Vec2 pos); + int CreateAndTakeonCar(int car_id, a8::Vec2 pos); private: int AllocUniid();