From 0899e2ed3ae4728116358255c55422ed1be2e261 Mon Sep 17 00:00:00 2001 From: Knaapchen Date: Tue, 15 Nov 2022 01:04:00 +0100 Subject: [PATCH] Added condition for picking up items: If the player has a pet out, don't pick up items manually --- flyff-api/src/object/mover/Mover.h | 2 ++ fugg-client/src/Client.cpp | 50 ++++++++++++++++-------------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/flyff-api/src/object/mover/Mover.h b/flyff-api/src/object/mover/Mover.h index 071b68d..34bd75d 100644 --- a/flyff-api/src/object/mover/Mover.h +++ b/flyff-api/src/object/mover/Mover.h @@ -178,6 +178,8 @@ namespace flyff { DEFINE_MEMBER(3424, Vector, skills); + DEFINE_MEMBER(3548, int, pickup_pet_inventory_index); + const MinimumSize<4096> size; }; diff --git a/fugg-client/src/Client.cpp b/fugg-client/src/Client.cpp index 2ef3d89..7aa07f6 100644 --- a/fugg-client/src/Client.cpp +++ b/fugg-client/src/Client.cpp @@ -747,36 +747,38 @@ void attacker_script() { return; } } - // No item target and no attack target - current_pickup_item = find_next_item(); - item = neuz.get_mover(current_pickup_item); - if (item) { - auto *prop = reinterpret_cast( - static_cast(item->property) - ); + // Only pickup if player has no pickup pet spawned. + if(client.player->pickup_pet_inventory_index == -1) { + // No item target and no attack target + current_pickup_item = find_next_item(); + item = neuz.get_mover(current_pickup_item); + if (item) { + auto *prop = reinterpret_cast( + static_cast(item->property) + ); - std::string str = "Picking up "; - str.append(neuz.get_text(prop->name)); + std::string str = "Picking up "; + str.append(neuz.get_text(prop->name)); - interact(item->object_id, 1); - - neuz.show_message(str); - return; - } else { - current_target = find_closest_target(); - - monster = neuz.get_mover(current_target); - if (monster) { - std::string str = "Attacking "; - str.append(monster->name); - - interact(current_target, 1); + interact(item->object_id, 1); neuz.show_message(str); - } else { - neuz.show_message("Unable to find target."); + return; } } + + current_target = find_closest_target(); + monster = neuz.get_mover(current_target); + if (monster) { + std::string str = "Attacking "; + str.append(monster->name); + + interact(current_target, 1); + + neuz.show_message(str); + } else { + neuz.show_message("Unable to find target."); + } } } }