From 6a08b4bd6bf3e15a7a1c4338adf3fe861d6d392c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 20 Mar 2023 17:00:07 +0800 Subject: [PATCH] 1 --- server/gameserver/buff/bufffactory.cc | 3 ++ server/gameserver/buff/callfunc.cc | 10 ------- server/gameserver/buff/callfunc.h | 4 +-- server/gameserver/buff/summon_loot.cc | 40 +++++++++++++++++++++++++++ server/gameserver/buff/summon_loot.h | 12 ++++++++ server/gameserver/constant_export.h | 2 +- 6 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 server/gameserver/buff/summon_loot.cc create mode 100644 server/gameserver/buff/summon_loot.h diff --git a/server/gameserver/buff/bufffactory.cc b/server/gameserver/buff/bufffactory.cc index 1cbc0b9a..d1faa157 100644 --- a/server/gameserver/buff/bufffactory.cc +++ b/server/gameserver/buff/bufffactory.cc @@ -35,6 +35,7 @@ #include "buff/reverse.h" #include "buff/select_target_with_self_pos.h" #include "buff/sprint.h" +#include "buff/summon_loot.h" #include "buff/summon_hero.h" #include "buff/summon_obstacle.h" #include "buff/turnover.h" @@ -49,6 +50,8 @@ std::shared_ptr BuffFactory::MakeBuff(const mt::Buff* buff_meta) { switch (buff_meta->buff_effect()) { + case kBET_SummonLoot: + return std::make_shared(); case kBET_AddCarBuff: return std::make_shared(); case kBET_AddInventory: diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index 9b04925a..4cf7b9cf 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -104,11 +104,6 @@ void CallFuncBuff::Activate() ProcLightCircle(); } break; - case BuffCallFunc_e::kCreateLoot: - { - ProcCreateLoot(); - } - break; default: { } @@ -565,8 +560,3 @@ void CallFuncBuff::ProcLightCircle() context->keep_buff_uniid = owner->TryAddBuff(GetCaster().Get(), meta->_int_buff_param4, skill_meta); } } - -void CallFuncBuff::ProcCreateLoot() -{ - -} diff --git a/server/gameserver/buff/callfunc.h b/server/gameserver/buff/callfunc.h index b7dc8c27..a54c5052 100644 --- a/server/gameserver/buff/callfunc.h +++ b/server/gameserver/buff/callfunc.h @@ -16,8 +16,7 @@ A8_DECLARE_CLASS_ENUM(BuffCallFunc_e, int, kAddHp = 11, kFlashMoveToPos = 12, kLightCircle = 13, - kDmgAddition = 14, - kCreateLoot = 15 + kDmgAddition = 14 ); @@ -38,7 +37,6 @@ class CallFuncBuff : public Buff void ProcAddHp(); void ProcFlashMoveToPos(); void ProcLightCircle(); - void ProcCreateLoot(); float hold_param2_ = 0.0; }; diff --git a/server/gameserver/buff/summon_loot.cc b/server/gameserver/buff/summon_loot.cc new file mode 100644 index 00000000..eb9adbd5 --- /dev/null +++ b/server/gameserver/buff/summon_loot.cc @@ -0,0 +1,40 @@ +#include "precompile.h" + +#include "buff/summon_loot.h" + +#include "creature.h" +#include "room.h" +#include "loot.h" + +#include "mt/Buff.h" +#include "mt/Equip.h" + +void SummonLootBuff::Activate() +{ + if (!owner->dead || meta->dead_valid() != 0) { + int equip_id = meta->_int_buff_param1; + float x = meta->GetBuffParam2(this); + float y = meta->GetBuffParam3(this); + float z = meta->GetBuffParam4(this); + int flag = meta->_int_buff_param5; + float show_time = meta->GetBuffParam5(this); + const mt::Equip* equip_meta = mt::Equip::GetById(equip_id); + if (equip_meta) { + int loot_uniid = owner->room->CreateLoot + ( + equip_id, + glm::vec3(x, y, z), + 1, + 1 + ); + Entity* e = owner->room->GetEntityByUniId(loot_uniid); + if (e) { + + } + } + } +} + +void SummonLootBuff::Deactivate() +{ +} diff --git a/server/gameserver/buff/summon_loot.h b/server/gameserver/buff/summon_loot.h new file mode 100644 index 00000000..d674d560 --- /dev/null +++ b/server/gameserver/buff/summon_loot.h @@ -0,0 +1,12 @@ +#pragma once + +#include "buff.h" + +class SummonLootBuff : public Buff +{ +public: + + virtual void Activate() override; + virtual void Deactivate() override; + +}; diff --git a/server/gameserver/constant_export.h b/server/gameserver/constant_export.h index 1bfd1f1d..87c28033 100644 --- a/server/gameserver/constant_export.h +++ b/server/gameserver/constant_export.h @@ -32,7 +32,7 @@ A8_DECLARE_ENUM(SpecBuffId_e, A8_DECLARE_ENUM(BuffEffectType_e, kBET_Begin = 0, - kBET_UnUse1 = 1, + kBET_SummonLoot = 1, kBET_TurnOver = 2, //翻滚 kBET_UnUse3 = 3, kBET_Invincible = 4, //无敌