[Fix] Add crash checks for certain PlayerEventLogs (#4761)

This commit is contained in:
Mitch Freeman 2025-03-07 18:17:36 -04:00 committed by GitHub
parent 7ab32af4dc
commit 9ee095b354
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 10 additions and 10 deletions

View File

@ -16974,7 +16974,7 @@ void Client::Handle_OP_GuildTributeDonateItem(const EQApplicationPacket *app)
SendGuildTributeDonateItemReply(in, favor); SendGuildTributeDonateItemReply(in, favor);
if(player_event_logs.IsEventEnabled(PlayerEvent::GUILD_TRIBUTE_DONATE_ITEM)) { if(inst && player_event_logs.IsEventEnabled(PlayerEvent::GUILD_TRIBUTE_DONATE_ITEM)) {
auto e = PlayerEvent::GuildTributeDonateItem{ .item_id = inst->GetID(), auto e = PlayerEvent::GuildTributeDonateItem{ .item_id = inst->GetID(),
.augment_1_id = inst->GetAugmentItemID(0), .augment_1_id = inst->GetAugmentItemID(0),
.augment_2_id = inst->GetAugmentItemID(1), .augment_2_id = inst->GetAugmentItemID(1),

View File

@ -1569,7 +1569,7 @@ void Corpse::LootCorpseItem(Client *c, const EQApplicationPacket *app)
} }
} }
if (player_event_logs.IsEventEnabled(PlayerEvent::LOOT_ITEM) && !IsPlayerCorpse()) { if (inst && player_event_logs.IsEventEnabled(PlayerEvent::LOOT_ITEM) && !IsPlayerCorpse()) {
auto e = PlayerEvent::LootItemEvent{ auto e = PlayerEvent::LootItemEvent{
.item_id = inst->GetItem()->ID, .item_id = inst->GetItem()->ID,
.item_name = inst->GetItem()->Name, .item_name = inst->GetItem()->Name,

View File

@ -197,7 +197,7 @@ void command_parcels(Client *c, const Seperator *sep)
send_to_client.at(0).character_name.c_str() send_to_client.at(0).character_name.c_str()
); );
if (player_event_logs.IsEventEnabled(PlayerEvent::PARCEL_SEND)) { if (inst && player_event_logs.IsEventEnabled(PlayerEvent::PARCEL_SEND)) {
PlayerEvent::ParcelSend e{}; PlayerEvent::ParcelSend e{};
e.from_player_name = parcel_out.from_name; e.from_player_name = parcel_out.from_name;
e.to_player_name = send_to_client.at(0).character_name; e.to_player_name = send_to_client.at(0).character_name;
@ -281,7 +281,7 @@ void command_parcels(Client *c, const Seperator *sep)
send_to_client.at(0).character_name.c_str() send_to_client.at(0).character_name.c_str()
); );
if (player_event_logs.IsEventEnabled(PlayerEvent::PARCEL_SEND)) { if (inst && player_event_logs.IsEventEnabled(PlayerEvent::PARCEL_SEND)) {
PlayerEvent::ParcelSend e{}; PlayerEvent::ParcelSend e{};
e.from_player_name = parcel_out.from_name; e.from_player_name = parcel_out.from_name;
e.to_player_name = send_to_client.at(0).character_name; e.to_player_name = send_to_client.at(0).character_name;

View File

@ -763,7 +763,7 @@ void Client::DropItem(int16 slot_id, bool recurse)
int i = 0; int i = 0;
if (player_event_logs.IsEventEnabled(PlayerEvent::DROPPED_ITEM)) { if (inst && player_event_logs.IsEventEnabled(PlayerEvent::DROPPED_ITEM)) {
auto e = PlayerEvent::DroppedItemEvent{ auto e = PlayerEvent::DroppedItemEvent{
.item_id = inst->GetID(), .item_id = inst->GetID(),
.augment_1_id = inst->GetAugmentItemID(0), .augment_1_id = inst->GetAugmentItemID(0),
@ -1655,7 +1655,7 @@ bool Client::SwapItem(MoveItem_Struct* move_in) {
DeleteItemInInventory(EQ::invslot::slotCursor, 0, true); DeleteItemInInventory(EQ::invslot::slotCursor, 0, true);
if (player_event_logs.IsEventEnabled(PlayerEvent::ITEM_DESTROY)) { if (test_inst && player_event_logs.IsEventEnabled(PlayerEvent::ITEM_DESTROY)) {
auto e = PlayerEvent::DestroyItemEvent{ auto e = PlayerEvent::DestroyItemEvent{
.item_id = test_inst->GetItem()->ID, .item_id = test_inst->GetItem()->ID,
.item_name = test_inst->GetItem()->Name, .item_name = test_inst->GetItem()->Name,

View File

@ -1465,7 +1465,7 @@ void Client::BuyTraderItem(TraderBuy_Struct *tbs, Client *Trader, const EQApplic
Trader->AddMoneyToPP(copper, silver, gold, platinum, true); Trader->AddMoneyToPP(copper, silver, gold, platinum, true);
if (player_event_logs.IsEventEnabled(PlayerEvent::TRADER_PURCHASE)) { if (buy_item && player_event_logs.IsEventEnabled(PlayerEvent::TRADER_PURCHASE)) {
auto e = PlayerEvent::TraderPurchaseEvent{ auto e = PlayerEvent::TraderPurchaseEvent{
.item_id = buy_item->GetID(), .item_id = buy_item->GetID(),
.augment_1_id = buy_item->GetAugmentItemID(0), .augment_1_id = buy_item->GetAugmentItemID(0),
@ -1487,7 +1487,7 @@ void Client::BuyTraderItem(TraderBuy_Struct *tbs, Client *Trader, const EQApplic
RecordPlayerEventLog(PlayerEvent::TRADER_PURCHASE, e); RecordPlayerEventLog(PlayerEvent::TRADER_PURCHASE, e);
} }
if (player_event_logs.IsEventEnabled(PlayerEvent::TRADER_SELL)) { if (buy_item && player_event_logs.IsEventEnabled(PlayerEvent::TRADER_SELL)) {
auto e = PlayerEvent::TraderSellEvent{ auto e = PlayerEvent::TraderSellEvent{
.item_id = buy_item->GetID(), .item_id = buy_item->GetID(),
.augment_1_id = buy_item->GetAugmentItemID(0), .augment_1_id = buy_item->GetAugmentItemID(0),
@ -2975,7 +2975,7 @@ void Client::BuyTraderItemOutsideBazaar(TraderBuy_Struct *tbs, const EQApplicati
Message(Chat::Red, fmt::format("You paid {} for the parcel delivery.", DetermineMoneyString(fee)).c_str()); Message(Chat::Red, fmt::format("You paid {} for the parcel delivery.", DetermineMoneyString(fee)).c_str());
LogTrading("Customer <green>[{}] Paid: <green>[{}] in Copper", CharacterID(), total_cost); LogTrading("Customer <green>[{}] Paid: <green>[{}] in Copper", CharacterID(), total_cost);
if (player_event_logs.IsEventEnabled(PlayerEvent::TRADER_PURCHASE)) { if (buy_item && player_event_logs.IsEventEnabled(PlayerEvent::TRADER_PURCHASE)) {
auto e = PlayerEvent::TraderPurchaseEvent{ auto e = PlayerEvent::TraderPurchaseEvent{
.item_id = buy_item->GetID(), .item_id = buy_item->GetID(),
.augment_1_id = buy_item->GetAugmentItemID(0), .augment_1_id = buy_item->GetAugmentItemID(0),

View File

@ -3799,7 +3799,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
auto item = trader_pc->FindTraderItemBySerialNumber(item_sn); auto item = trader_pc->FindTraderItemBySerialNumber(item_sn);
if (player_event_logs.IsEventEnabled(PlayerEvent::TRADER_SELL)) { if (item && player_event_logs.IsEventEnabled(PlayerEvent::TRADER_SELL)) {
auto e = PlayerEvent::TraderSellEvent{ auto e = PlayerEvent::TraderSellEvent{
.item_id = item ? item->GetID() : 0, .item_id = item ? item->GetID() : 0,
.augment_1_id = item->GetAugmentItemID(0), .augment_1_id = item->GetAugmentItemID(0),