mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-14 15:41:30 +00:00
[Crash] Fix crash with EVENT_UNEQUIP_ITEM_BOT (#2973)
This commit is contained in:
parent
df499b22ab
commit
6a668f8aa5
19
zone/bot.cpp
19
zone/bot.cpp
@ -4612,17 +4612,17 @@ void Bot::PerformTradeWithClient(int16 begin_slot_id, int16 end_slot_id, Client*
|
||||
struct ClientTrade {
|
||||
ItemInstance* trade_item_instance;
|
||||
int16 from_client_slot;
|
||||
int16 to_bot_slot;
|
||||
int16 to_bot_slot = invslot::SLOT_INVALID;
|
||||
|
||||
ClientTrade(ItemInstance* item, int16 from) : trade_item_instance(item), from_client_slot(from), to_bot_slot(invslot::SLOT_INVALID) { }
|
||||
ClientTrade(ItemInstance* item, int16 from) : trade_item_instance(item), from_client_slot(from) { }
|
||||
};
|
||||
|
||||
struct ClientReturn {
|
||||
const ItemInstance* return_item_instance;
|
||||
ItemInstance* return_item_instance;
|
||||
int16 from_bot_slot;
|
||||
int16 to_client_slot;
|
||||
int16 to_client_slot = invslot::SLOT_INVALID;
|
||||
|
||||
ClientReturn(const ItemInstance* item, int16 from) : return_item_instance(item), from_bot_slot(from), to_client_slot(invslot::SLOT_INVALID) { }
|
||||
ClientReturn(ItemInstance* item, int16 from) : return_item_instance(item), from_bot_slot(from) { }
|
||||
};
|
||||
|
||||
static const int16 bot_equip_order[invslot::EQUIPMENT_COUNT] = {
|
||||
@ -4902,7 +4902,7 @@ void Bot::PerformTradeWithClient(int16 begin_slot_id, int16 end_slot_id, Client*
|
||||
if (trade_instance->GetItem()->IsType2HWeapon()) {
|
||||
if (!melee_secondary) {
|
||||
melee_2h_weapon = true;
|
||||
auto equipped_secondary_weapon = m_inv[invslot::slotSecondary];
|
||||
auto equipped_secondary_weapon = GetBotItem(invslot::slotSecondary);
|
||||
if (equipped_secondary_weapon) {
|
||||
client_return.push_back(ClientReturn(equipped_secondary_weapon, invslot::slotSecondary));
|
||||
}
|
||||
@ -4918,7 +4918,7 @@ void Bot::PerformTradeWithClient(int16 begin_slot_id, int16 end_slot_id, Client*
|
||||
!trade_instance->IsWeapon()
|
||||
) {
|
||||
melee_secondary = true;
|
||||
auto equipped_primary_weapon = m_inv[invslot::slotPrimary];
|
||||
auto equipped_primary_weapon = GetBotItem(invslot::slotPrimary);
|
||||
if (equipped_primary_weapon && equipped_primary_weapon->GetItem()->IsType2HWeapon()) {
|
||||
client_return.push_back(ClientReturn(equipped_primary_weapon, invslot::slotPrimary));
|
||||
}
|
||||
@ -4933,7 +4933,7 @@ void Bot::PerformTradeWithClient(int16 begin_slot_id, int16 end_slot_id, Client*
|
||||
trade_iterator.to_bot_slot = index;
|
||||
|
||||
if (m_inv[index]) {
|
||||
client_return.push_back(ClientReturn(m_inv[index], index));
|
||||
client_return.push_back(ClientReturn(GetBotItem(index), index));
|
||||
}
|
||||
|
||||
break;
|
||||
@ -5067,9 +5067,8 @@ void Bot::PerformTradeWithClient(int16 begin_slot_id, int16 end_slot_id, Client*
|
||||
client->DeleteItemInInventory(return_iterator.from_bot_slot);
|
||||
} else { // successful trade returns
|
||||
auto return_instance = m_inv.PopItem(return_iterator.from_bot_slot);
|
||||
//if (*return_instance != *return_iterator.return_item_instance) {
|
||||
|
||||
// // TODO: add logging
|
||||
//}
|
||||
|
||||
if (!database.botdb.DeleteItemBySlot(GetBotID(), return_iterator.from_bot_slot)) {
|
||||
OwnerMessage(
|
||||
|
||||
@ -9320,7 +9320,7 @@ void bot_subcommand_inventory_remove(Client *c, const Seperator *sep)
|
||||
return;
|
||||
}
|
||||
|
||||
const auto* inst = my_bot->GetBotItem(slot_id);
|
||||
auto* inst = my_bot->GetBotItem(slot_id);
|
||||
if (!inst) {
|
||||
std::string slot_message = "is";
|
||||
switch (slot_id) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user