mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 23:58:25 +00:00
[Feature] Add Parcel Feature for RoF2 Clients (#4198)
* Add Parcel Feature Add the parcel system for RoF2 client * Fixed a duplicate define * Reformat reformating and review changes * Further Formatting * Memory Mgmt Updates Refactored to using unique_ptr/make_unique/etc to avoid manual memory mgmt. Other format changes * Refactor db structure Refactor for db structure of parcels to character_parcels Removal of parcel_merchants Addition of npc_types.is_parcel_merchant Cleanup as a result * Refactor to use item id 99990 for money transfers. Removed the money string function as a result, though simplified the messaging related to money. Other updates based on feedback. * Move prune routine out of scheduler and into a world process. Removed RuleI from #define * Update * Update database.cpp * Update database_update_manifest.cpp * Update main.cpp * Update client_process.cpp * Update parcels.cpp * Remove parcel merchant content to optional sql instead of manifest. --------- Co-authored-by: Akkadius <akkadius1@gmail.com>
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
#include "../common/repositories/character_data_repository.h"
|
||||
#include "../common/repositories/character_languages_repository.h"
|
||||
#include "../common/repositories/character_leadership_abilities_repository.h"
|
||||
#include "../common/repositories/character_parcels_repository.h"
|
||||
#include "../common/repositories/character_skills_repository.h"
|
||||
#include "../common/repositories/data_buckets_repository.h"
|
||||
#include "../common/repositories/group_id_repository.h"
|
||||
@@ -49,6 +50,7 @@
|
||||
#include "../common/repositories/raid_members_repository.h"
|
||||
#include "../common/repositories/reports_repository.h"
|
||||
#include "../common/repositories/variables_repository.h"
|
||||
#include "../common/events/player_event_logs.h"
|
||||
|
||||
// Disgrace: for windows compile
|
||||
#ifdef _WINDOWS
|
||||
@@ -2042,3 +2044,42 @@ void Database::Decode(std::string &in)
|
||||
in.at(i) -= char('0');
|
||||
}
|
||||
};
|
||||
|
||||
void Database::PurgeCharacterParcels()
|
||||
{
|
||||
auto filter = fmt::format("sent_date < (NOW() - INTERVAL {} DAY)", RuleI(Parcel, ParcelPruneDelay));
|
||||
auto results = CharacterParcelsRepository::GetWhere(*this, filter);
|
||||
auto prune = CharacterParcelsRepository::DeleteWhere(*this, filter);
|
||||
|
||||
PlayerEvent::ParcelDelete pd{};
|
||||
PlayerEventLogsRepository::PlayerEventLogs pel{};
|
||||
pel.event_type_id = PlayerEvent::PARCEL_DELETE;
|
||||
pel.event_type_name = PlayerEvent::EventName[pel.event_type_id];
|
||||
std::stringstream ss;
|
||||
for (auto const &r: results) {
|
||||
pd.from_name = r.from_name;
|
||||
pd.item_id = r.item_id;
|
||||
pd.note = r.note;
|
||||
pd.quantity = r.quantity;
|
||||
pd.sent_date = r.sent_date;
|
||||
pd.char_id = r.char_id;
|
||||
{
|
||||
cereal::JSONOutputArchiveSingleLine ar(ss);
|
||||
pd.serialize(ar);
|
||||
}
|
||||
|
||||
pel.event_data = ss.str();
|
||||
pel.created_at = std::time(nullptr);
|
||||
|
||||
player_event_logs.AddToQueue(pel);
|
||||
|
||||
ss.str("");
|
||||
ss.clear();
|
||||
}
|
||||
|
||||
LogInfo(
|
||||
"Purged <yellow>[{}] parcels that were over <yellow>[{}] days old.",
|
||||
results.size(),
|
||||
RuleI(Parcel, ParcelPruneDelay)
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user