diff --git a/server/gameserver/buff/summon_loot.cc b/server/gameserver/buff/summon_loot.cc index 614bab25..2bfa7b95 100644 --- a/server/gameserver/buff/summon_loot.cc +++ b/server/gameserver/buff/summon_loot.cc @@ -24,6 +24,7 @@ void SummonLootBuff::Activate() ( equip_id, glm::vec3(x, y, z), + glm::vec3(x, y, z), 1, 1 ); diff --git a/server/gameserver/bullet.cc b/server/gameserver/bullet.cc index e5813a1a..ad69a588 100644 --- a/server/gameserver/bullet.cc +++ b/server/gameserver/bullet.cc @@ -618,7 +618,7 @@ void Bullet::ProcShieldWallBomb(int delay_time) void Bullet::ProcOilBucketBomb(int delay_time) { if (sender.Get()) { - room->CreateLoot(gun_meta->id(), GetPos().ToGlmVec3(), 1, 1); + room->CreateLoot(gun_meta->id(), GetPos().ToGlmVec3(), GetPos().ToGlmVec3(), 1, 1); } } diff --git a/server/gameserver/guide.cc b/server/gameserver/guide.cc index f3493d88..117eecf3 100644 --- a/server/gameserver/guide.cc +++ b/server/gameserver/guide.cc @@ -134,6 +134,7 @@ void Guide::ProcPickup() ( equip_id, pos, + pos, 1, 1 ); diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index bd5f6ef1..f1027fcd 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1173,7 +1173,7 @@ void Human::DeadDrop() GlmHelper::RotateY(dir, a8::RandAngle()); Position drop_pos = GetPos(); drop_pos.AddGlmVec3(dir * (40.0f + rand() % 50)); - room->CreateLoot(helmet, drop_pos.ToGlmVec3(), 1, 1); + room->CreateLoot(helmet, GetPos().ToGlmVec3(), drop_pos.ToGlmVec3(), 1, 1); helmet = 0; } //衣服 @@ -1182,7 +1182,7 @@ void Human::DeadDrop() GlmHelper::RotateY(dir, a8::RandAngle()); Position drop_pos = GetPos(); drop_pos.AddGlmVec3(dir * (40.0f + rand() % 50)); - room->CreateLoot(chest, drop_pos.ToGlmVec3(), 1, 1); + room->CreateLoot(chest, GetPos().ToGlmVec3(), drop_pos.ToGlmVec3(), 1, 1); chest = 0; } //背包 @@ -1191,7 +1191,7 @@ void Human::DeadDrop() GlmHelper::RotateY(dir, a8::RandAngle()); Position drop_pos = GetPos(); drop_pos.AddGlmVec3(dir * (40.0f + rand() % 50)); - room->CreateLoot(backpack, drop_pos.ToGlmVec3(), 1, 1); + room->CreateLoot(backpack, GetPos().ToGlmVec3(), drop_pos.ToGlmVec3(), 1, 1); backpack = 0; } } @@ -1282,7 +1282,7 @@ void Human::DeadDrop() GetCurrWeapon()->weapon_idx == GUN_SLOT1) { int num = 1 + rand() % 2; for (int i = 0; i < num; ++i) { - room->CreateLoot(GetCurrWeapon()->meta->id(), GetPos().ToGlmVec3(), 1, 1); + room->CreateLoot(GetCurrWeapon()->meta->id(), GetPos().ToGlmVec3(), GetPos().ToGlmVec3(), 1, 1); } } } @@ -1423,7 +1423,7 @@ void Human::ProcLootSkin(AddItemDTO& dto) GlmHelper::RotateY(dir, a8::RandAngle()); Position drop_pos = GetPos(); drop_pos.AddGlmVec3(dir * (40.0f + rand() % 50)); - room->CreateLoot(old_skin->skin_id, drop_pos.ToGlmVec3(), 1, 1); + room->CreateLoot(old_skin->skin_id, GetPos().ToGlmVec3(), drop_pos.ToGlmVec3(), 1, 1); } *old_skin = Skin(); @@ -1443,7 +1443,7 @@ void Human::ProcLootSkin(AddItemDTO& dto) GlmHelper::RotateY(dir, a8::RandAngle()); Position drop_pos = GetPos(); drop_pos.AddGlmVec3(dir * (40.0f + rand() % 50)); - room->CreateLoot(old_skin->skin_id, drop_pos.ToGlmVec3(), 1, 1); + room->CreateLoot(old_skin->skin_id, GetPos().ToGlmVec3(), drop_pos.ToGlmVec3(), 1, 1); } *old_skin = Skin(); @@ -3097,7 +3097,7 @@ void Human::DropWeapon(int weapon_idx, int num) GlmHelper::RotateY(dir, a8::RandAngle()); Position pos = GetPos(); pos.FromGlmVec3(GetPos().ToGlmVec3() + dir * (40.0f + rand() % 50)); - room->CreateLoot(weapon_id, pos.ToGlmVec3(), 1, 1); + room->CreateLoot(weapon_id, GetPos().ToGlmVec3(), pos.ToGlmVec3(), 1, 1); } } MarkSyncActivePlayer(__FILE__, __LINE__, __func__); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 5194d9d9..a4513656 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -587,9 +587,9 @@ RoomObstacle* Room::CreateObstacle(int id, float x, float y, float z, return entity; } -int Room::CreateLoot(int equip_id, const glm::vec3& pos, int count, int equip_lv) +int Room::CreateLoot(int equip_id, const glm::vec3& born_pos, const glm::vec3& pos, int count, int equip_lv) { - return CreateLootEx(equip_id, pos, pos, count, equip_lv, false); + return CreateLootEx(equip_id, born_pos, pos, count, equip_lv, false); } int Room::CreateLootEx(int equip_id, const glm::vec3& born_pos, const glm::vec3& pos, int count, int equip_lv, bool show_anim) @@ -3010,6 +3010,7 @@ void Room::CreateWorldObjects() ( obj->object_id, obj->pos, + obj->pos, 1, 1 ); @@ -3080,6 +3081,7 @@ void Room::CreateWorldObjects() ( std::get<1>(tuple), objects[i]->pos, + objects[i]->pos, 1, 1 ); diff --git a/server/gameserver/room.h b/server/gameserver/room.h index d3002426..1c3e3bd1 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -152,7 +152,7 @@ public: void DropItem(const glm::vec3& pos, int item_id, int item_count, int item_lv); void DropItemEx(const glm::vec3& born_pos, const glm::vec3& pos, int item_id, int item_count, int item_lv, bool show_anim); - int CreateLoot(int equip_id, const glm::vec3& pos, int count, int equip_lv); + int CreateLoot(int equip_id, const glm::vec3& born_pos, const glm::vec3& pos, int count, int equip_lv); int CreateLootEx(int equip_id, const glm::vec3& born_pos, const glm::vec3& pos, int count, int equip_lv, bool show_anim); int CreateBullet(Creature* sender, Creature* passenger,