Release 1.21

master
Kasi 2019-02-20 19:52:58 +00:00
parent 9cb796bc6c
commit 2e6ad55fa1
11 changed files with 507 additions and 36 deletions

View File

@ -3,18 +3,22 @@
#include "../../Include/Core/Types/Logger.hpp"
#define DEBUG_VERBOSE_LOG Debug::Verbose << __PRETTY_FUNCTION__ << " > "
#define DEBUG_VERBOSE_LOG_END --Debug::Verbose << __PRETTY_FUNCTION__ << " > "
#define DEBUG_VERBOSE_START Debug::Verbose++ << __PRETTY_FUNCTION__ << " > Started" << std::endl
#define DEBUG_VERBOSE_SUCCESS --Debug::Verbose << __PRETTY_FUNCTION__ << " > Succeeded > "
#define DEBUG_VERBOSE_SUCCESS_NOINFO --Debug::Verbose << __PRETTY_FUNCTION__ << " > Succeeded" << std::endl
#define DEBUG_VERBOSE_SUCCESS_EOF --Debug::Verbose << " > Succeeded > Reached end of function" << std::endl
#define DEBUG_VERBOSE_FAIL --Debug::Verbose << __PRETTY_FUNCTION__ << " > Failed > "
#define DEBUG_VERBOSE_FAIL_NOINFO --Debug::Verbose << __PRETTY_FUNCTION__ << " > Failed" << std::endl;
#define DEBUG_VERBOSE_FAIL_EOF --Debug::Verbose << __PRETTY_FUNCTION__ << " > Failed > Reached end of function" << std::endl
#define DEBUG_VERBOSE_LOG Debug::Verbose << __PRETTY_FUNCTION__ << " > "
#define DEBUG_VERBOSE_LOG_SUCCESS Debug::Verbose << __PRETTY_FUNCTION__ << " > Succeeded > "
#define DEBUG_VERBOSE_LOG_SUCCESS_NOINFO Debug::Verbose << __PRETTY_FUNCTION__ << " > Succeeded" << std::endl
#define DEBUG_VERBOSE_LOG_SUCCESS_EOF Debug::Verbose << __PRETTY_FUNCTION__ << " > Succeeded > Reached end of function" << std::endl
#define DEBUG_VERBOSE_LOG_FAIL Debug::Verbose << __PRETTY_FUNCTION__ << " > Failed > "
#define DEBUG_VERBOSE_LOG_FAIL_NOINFO Debug::Verbose << __PRETTY_FUNCTION__ << " > Failed" << std::endl
#define DEBUG_VERBOSE_LOG_FAIL_EOF Debug::Verbose << __PRETTY_FUNCTION__ << " > Failed > Reached end of function" << std::endl
namespace Debug
{
extern Logger Info;

445
Include/Core/Globals.hpp Normal file
View File

@ -0,0 +1,445 @@
#ifndef GLOBALS_HPP_INCLUDED
#define GLOBALS_HPP_INCLUDED
#include <vector>
#include <cstdint>
#include <map>
namespace Globals
{
typedef struct SettingsDef
{
std::int32_t Index = -1;
std::int32_t BitPos = -1;
std::int32_t BitMask = -1;
} SettingsDef;
typedef struct WidgetDef
{
std::int32_t Parent = -1;
std::int32_t Child = -1;
std::int32_t Grandchild = -1;
} WidgetDef;
inline SettingsDef SETTING_COMBAT_SPECIAL = { 300 };
inline SettingsDef SETTING_COMBAT_SPECIAL_TOGGLE = { 301 };
inline SettingsDef SETTING_COMBAT_AUTO_RETALIATE = { 172 };
inline SettingsDef SETTING_COMBAT_POISON = { 102 };
inline SettingsDef SETTING_WEAPON_STYLES = { 43 }; // How many styles the current weapon has
inline SettingsDef SETTING_ACCEPT_AID = { 427 }; // 13 = on
inline SettingsDef SETTING_RUN_MODE = { 173 }; // 1 = running
inline SettingsDef SETTING_CURRENT_PRAYER = { 83 }; // To be used with PrayerDefs
inline SettingsDef SETTING_BANK_WITHDRAW_MODE = { 115, 0 };
inline SettingsDef SETTING_BANK_WITHDRAW_MODE_WIDGET = { 1666 }; // Which Widget is selected, 0 = 1, 4 = 5, 8 = 10, 12 = X, 16 = ALL
inline SettingsDef SETTING_BANK_DEFAULT_QUANTITY = { 304 }; // Seems to be the value / 2, so if it returns 50, then the default custom quantity is 25
inline SettingsDef SETTING_EXCHANGE_CURRENT_SLOT_INDEX = { 375 };
inline SettingsDef SETTING_EXCHANGE_CURRENT_SLOT_ITEM_ID = { 1151 };
inline SettingsDef SETTING_EXCHANGE_CURRENT_SLOT_ITEM_AMOUNT = { 563 };
inline SettingsDef SETTING_EXCHANGE_CURRENT_SLOT_PRICE = { 1043 };
inline SettingsDef SETTING_ESC_TO_CLOSE = { 1224, 31 };
inline SettingsDef SETTING_SHIFT_CLICK_DROP = { 1055, 17 };
inline SettingsDef SETTING_SCROLL_WHEEL_TO_ZOOM = { 1055, 29 };
inline std::int32_t WIDGET_ROOT_LOBBY = 165;
inline std::int32_t WIDGET_ROOT_FIXED = 548;
inline std::int32_t WIDGET_ROOT_RESIZABLE = 161;
inline std::int32_t WIDGET_ROOT_RESIZABLE_SIDE_PANELS = 164;
//************ Bank.cpp ************//
inline std::int32_t BANK_ITEM_CONTAINER_ID = 95;
inline std::int32_t BANK_SPRITE_ID_CURRENT_TAB = 1079;
inline std::int32_t BANK_PARENT = 12;
inline WidgetDef BANK_MAIN = { BANK_PARENT, 3 };
inline WidgetDef BANK_CLOSE = { BANK_PARENT, 3, 11 };
inline WidgetDef BANK_DEPOSIT_ALL = { BANK_PARENT, 42 };
inline WidgetDef BANK_DEPOSIT_EQUIPMENT = { BANK_PARENT, 42 };
inline WidgetDef BANK_WITHDRAW_MODE_NOTED = { BANK_PARENT, 25 };
inline WidgetDef BANK_WITHDRAW_MODE_ITEM = { BANK_PARENT, 23 };
inline WidgetDef BANK_ITEM_CONTAINER_WIDGET = { BANK_PARENT, 13 }; // Used for scrolling, contains all items, middle of the bank interface
inline WidgetDef BANK_TABS_CONTAINER = { BANK_PARENT, 11 }; // Has all Tab children
inline WidgetDef BANK_INVENTORY = { 15, 3 }; // When the bank is open, the Inventory has it's own widgets for items
inline std::int32_t BANK_WITHDRAW_QUANTITY_CHILDREN[6] = { 29, 31, 33, 35, 37 }; // 1, 5, 10, x, all, uses BANK_PARENT
inline std::int32_t BANK_ENTER_PIN_PARENT = 213;
inline WidgetDef BANK_ENTER_PIN_STATUS = { BANK_ENTER_PIN_PARENT, 10 }; // Text widget, has FIRST, SECOND, THIRD, FOURTH, Submitting in it
inline std::int32_t BANK_ENTER_PIN_BUTTON_CHILDREN[10] = { 16, 18, 20, 22, 24, 26, 28, 30, 32, 34 }; // Buttons themselves, uses BANK_ENTER_PIN_PARENT,
// grandchild 0 = proper widget bounds, grandchild 1 = text
//************ Chat.cpp ************//
typedef struct ChatWidgetDef
{
std::int32_t Parent = -1;
std::int32_t TitleChild = -1;
std::int32_t ContinueChild = -1;
std::int32_t ContentChild = -1;
} ChatWidgetDef;
inline ChatWidgetDef CHAT_NPC_CHAT_WIDGETS = { 231, 2, 3, 4 };
inline ChatWidgetDef CHAT_PLAYER_CHAT_WIDGETS = { 217, 2, 3, 4 };
inline ChatWidgetDef CHAT_GAME_CHAT_WIDGETS = { 193, 2, 3, 4 };
inline ChatWidgetDef CHAT_LEVEL_UP_CHAT_WIDGETS = { 233, 1, 2, 3 };
inline ChatWidgetDef CHAT_BANK_PIN_ERROR_WIDGETS = { 229, 1, 2 };
inline WidgetDef CHAT_SELECT_OPTION_CONTAINER = { 219, 1 }; // Container for all Select Option options
inline WidgetDef CHAT_SELECT_OPTION_TITLE = { CHAT_SELECT_OPTION_CONTAINER.Parent, CHAT_SELECT_OPTION_CONTAINER.Child, 0 };
inline WidgetDef CHAT_ENTER_AMOUNT_TITLE = { 162, 44 };
inline WidgetDef CHAT_ENTER_AMOUNT = { 162, 45 }; // Input widget (* when blank)
//************ DepositBox.cpp ************//
inline std::int32_t DEPOSIT_BOX_PARENT = 192;
inline WidgetDef DEPOSIT_BOX_CLOSE = { DEPOSIT_BOX_PARENT, 1, 11 };
inline WidgetDef DEPOSIT_BOX_DEPOSIT_ALL = { DEPOSIT_BOX_PARENT, 4 };
inline WidgetDef DEPOSIT_BOX_DEPOSIT_EQUIPMENT = { DEPOSIT_BOX_PARENT, 6 };
inline WidgetDef DEPOSIT_BOX_DEPOSIT_LOOT = { DEPOSIT_BOX_PARENT, 8 };
//************ Exchange.cpp ************//
inline std::int32_t EXCHANGE_PARENT = 465;
inline WidgetDef EXCHANGE_MAIN = { EXCHANGE_PARENT, 0 };
inline WidgetDef EXCHANGE_BACK = { EXCHANGE_PARENT, 4 };
inline WidgetDef EXCHANGE_CLOSE = { EXCHANGE_PARENT, 2, 11 };
inline WidgetDef EXCHANGE_SPRITE_TYPE = { EXCHANGE_PARENT, 24, 19};
inline WidgetDef EXCHANGE_ITEM = { EXCHANGE_PARENT, 24, 21 };
inline WidgetDef EXCHANGE_COLLECT_CONTAINER_WIDGET = { EXCHANGE_PARENT, 6, 1 };
inline WidgetDef EXCHANGE_COLLECT_SLOT_ONE = { EXCHANGE_PARENT, 23, 2 };
inline WidgetDef EXCHANGE_COLLECT_SLOT_TWO = { EXCHANGE_PARENT, 23, 3 };
inline WidgetDef EXCHANGE_AMOUNT = { EXCHANGE_PARENT, 24, 7 };
inline WidgetDef EXCHANGE_PRICE = { EXCHANGE_PARENT, 24, 12 };
inline WidgetDef EXCHANGE_GUIDE = { EXCHANGE_PARENT, 24, 11};
inline WidgetDef EXCHANGE_CONFIRM = { EXCHANGE_PARENT, 27, 0 };
inline WidgetDef EXCHANGE_ABORT = { EXCHANGE_PARENT, 22, 0 };
inline WidgetDef EXCHANGE_CHAT = { 162, 44 };
inline WidgetDef EXCHANGE_CHAT_ENTER = { 162, 45 };
inline WidgetDef EXCHANGE_CHAT_CHOOSE = { 162, 53 };
inline std::int32_t EXCHANGE_SLOT_START = 7;
inline std::int32_t EXCHANGE_WIDGET_SPRITE_BUY = 26; // Widget Grandchild
inline std::int32_t EXCHANGE_WIDGET_SPRITE_SELL = EXCHANGE_WIDGET_SPRITE_BUY + 1; // Widget Grandchild
inline std::int32_t EXCHANGE_SPRITE_BUY = 1108;
inline std::int32_t EXCHANGE_SPRITE_SELL = 1106;
inline std::int32_t EXCHANGE_SPRITE_MINI_BUY = 1118;
inline std::int32_t EXCHANGE_SPRITE_MINI_SELL = 1119;
//************ Login.cpp ************//
inline WidgetDef LOGIN_LOBBY_PLAY = { 378, 81 };
//************ Makescreen.cpp ************//
inline std::int32_t MAKESCREEN_PARENT = 270;
inline WidgetDef MAKESCREEN_MAKE_ONE = { MAKESCREEN_PARENT, 7, 0 }; // 0 is for the sprite
inline WidgetDef MAKESCREEN_MAKE_FIVE = { MAKESCREEN_PARENT, 8, 0 }; // 0 is for the sprite
inline WidgetDef MAKESCREEN_MAKE_TEN = { MAKESCREEN_PARENT, 9, 0 }; // 0 is for the sprite
inline WidgetDef MAKESCREEN_MAKE_CUSTOM = { MAKESCREEN_PARENT, 10, 0 }; // 0 is for the sprite
inline WidgetDef MAKESCREEN_MAKE_CUSTOM_TEXT = { MAKESCREEN_PARENT, 10, 9 };
inline WidgetDef MAKESCREEN_MAKE_X = { MAKESCREEN_PARENT, 11 };
inline WidgetDef MAKESCREEN_MAKE_ALL = { MAKESCREEN_PARENT, 12, 0 }; // 0 is for the sprite
inline WidgetDef MAKESCREEN_MAKE_MIDDLE = { MAKESCREEN_PARENT, 14 };
//************ Minimap.cpp ************//
// 0 - Fixed; 1 - Resizable; 2 - Resizable + Side Panels
inline WidgetDef MINIMAP_MIDDLE[3] = { { 548, 8 }, { 161, 25 }, { 164, 25 } };
inline WidgetDef MINIMAP_COMPASS[3] = { { 548, 7 }, { 161, 24 }, { 164, 24 } };
inline WidgetDef MINIMAP_CURE = { 160, 4 };
inline WidgetDef MINIMAP_QUICK_PRAYER = { 160, 14 };
inline WidgetDef MINIMAP_TOGGLE_RUN = { 160, 22 };
//************ Trade.cpp ************//
inline WidgetDef TRADE_SCREEN = { 335, 3 };
inline std::int32_t TRADE_ITEM_CONTAINER_MY_OFFER = 90;
inline std::int32_t TRADE_ITEM_CONTAINER_THEIR_OFFER = 32858;
//************ Item.cpp ************//
inline std::int32_t EQUIPMENT_ITEM_CONTAINER_WIDGET = 387; // Item container parent, (Index + 6)
//************ RandomHandler.cpp ************//
inline std::vector<std::string> RANDOM_NPC_NAMES =
{ "Bee keeper",
"Capt' Arnav",
"Niles",
"Miles",
"Giles",
"Sergeant Damien",
"Drunken Dwarf",
"Freaky Forester",
"Frog",
"Prince",
"Princess",
"Genie",
"Evil Bob",
"Postie Pete",
"Molly",
"Leo",
"Dr. Jekyll",
"Dr Jekyll",
"Mr. Hyde",
"Mysterious Old Man",
"Mime",
"Pillory Guard",
"Flippa",
"Tilt",
"Prison Pete",
"Quiz Master",
"Rick Turpentine",
"Sandwich lady",
"Strange plant",
"Dunce",
};
namespace GameTabs
{
//************************************ Tabs ************************************//
// These are the "Sprite" widgets, these widgets' sprite IDs change when opened or closed
// 0 - Fixed; 1 - Resizable; 2 - Resizable + Side Panels
inline WidgetDef TAB_ACCOUNT_MANAGEMENT[3] = { { 548, 32 }, { 161, 36 }, { 164, 36 } };
inline WidgetDef TAB_CLAN[3] = { { 548, 31 }, { 161, 35 }, { 164, 35 } };
inline WidgetDef TAB_COMBAT[3] = { { 548, 48 }, { 161, 51 }, { 164, 50 } };
inline WidgetDef TAB_EMOTES[3] = { { 548, 36 }, { 161, 40 }, { 164, 39 } };
inline WidgetDef TAB_EQUIPMENT[3] = { { 548, 52 }, { 161, 55 }, { 164, 54 } };
inline WidgetDef TAB_FRIENDS[3] = { { 548, 33 }, { 161, 37 }, { 164, 37 } };
inline WidgetDef TAB_INVENTORY[3] = { { 548, 51 }, { 161, 54 }, { 164, 53 } };
inline WidgetDef TAB_LOGOUT[3] = { { 548, 34 }, { 161, 38 }, { 164, 29 } };
inline WidgetDef TAB_MAGIC[3] = { { 548, 54 }, { 161, 57 }, { 164, 56 } };
inline WidgetDef TAB_MUSIC[3] = { { 548, 37 }, { 161, 41 }, { 164, 40 } };
inline WidgetDef TAB_OPTIONS[3] = { { 548, 35 }, { 161, 39 }, { 164, 38 } };
inline WidgetDef TAB_PRAYER[3] = { { 548, 53 }, { 161, 56 }, { 164, 55 } };
inline WidgetDef TAB_QUESTS[3] = { { 548, 50 }, { 161, 53 }, { 164, 52 } };
inline WidgetDef TAB_STATS[3] = { { 548, 49 }, { 161, 52 }, { 164, 51 } };
//************ Combat.cpp ************//
inline std::int32_t COMBAT_PARENT = 593 ;
inline WidgetDef COMBAT_AUTORETALIATE = { COMBAT_PARENT, 29 };
inline WidgetDef COMBAT_SPECIAL = { COMBAT_PARENT, 34 };
inline std::int32_t COMBAT_STYLE_CHILDREN[4] = { 3, 7, 11, 15 }; // Uses COMBAT_PARENT as Parent
//************ Equipment.cpp ************//
inline std::int32_t EQUIPMENT_CONTAINER_ID = 94;
//************ Inventory.cpp ************//
inline WidgetDef INVENTORY_ITEM_CONTAINER_WIDGET = { 149, 0 };
inline WidgetDef INVENTORY_TRADE_CONTAINER_WIDGET = { 336, 0 }; // Used for GetSlotBoxes()
inline WidgetDef INVENTORY_EXCHANGE_CONTAINER_WIDGET = { 467, 0 }; // Used for GetSlotBoxes()
inline std::int32_t INVENTORY_CONTAINER_ID = 93;
//************ Logout.cpp ************//
inline std::int32_t LOGOUT_BUTTONS_PARENT = 182;
inline WidgetDef LOGOUT_LOGOUT_BUTTON = { LOGOUT_BUTTONS_PARENT, 8 };
inline WidgetDef LOGOUT_WORLD_SWITCHER_BUTTON = { LOGOUT_BUTTONS_PARENT, 3 };
inline std::int32_t LOGOUT_WORLD_SWITCHER_PARENT = 69;
inline WidgetDef LOGOUT_WORLD_SWITCHER_TITLE = { LOGOUT_WORLD_SWITCHER_PARENT, 2 }; // "Current World:" or "Loading" when loading
inline WidgetDef LOGOUT_WORLD_SWITCHER_LOGOUT = { LOGOUT_WORLD_SWITCHER_PARENT, 23 }; // Logout button inside the World Switch interface
inline WidgetDef LOGOUT_WORLD_SWITCHER_WORLDS_CONTAINER = { LOGOUT_WORLD_SWITCHER_PARENT, 16 }; // 69, 15, 301 (world id) Widget has the proper switch/favorite options
inline WidgetDef LOGOUT_WORLD_SWITCHER_WORLDS_BOX = { LOGOUT_WORLD_SWITCHER_PARENT, 5 }; // Bounds/Box containing the entire list
//************ Magic.cpp ************//
inline std::int32_t MAGIC_SPELLS_PARENT = 218; // Used with Magic spell defs
typedef struct SpellDef
{
std::string Name;
std::int32_t WidgetID;
std::int32_t SpriteID;
std::int32_t Level;
} SpellDef;
inline std::vector<SpellDef> SpellDefs = // To be used with Magic:: SPELL enum
{
// Normal, 0-69
{ "Lumbridge Home Teleport", 4, 356, 0 },
{ "Wind Strike", 5, 65, 1 },
{ "Confuse", 6, 66, 3 },
{ "Enchant Crossbow Bolt", 7, 408, 0 },
{ "Water Strike", 8, 67, 5 },
{ "Lvl-1 Enchant", 9, 68, 7 },
{ "Earth Strike", 10, 69, 9 },
{ "Weaken", 11, 70, 11 },
{ "Fire Strike", 12, 71, 13 },
{ "Bones to Bananas", 13, 72, 15 },
{ "Wind Bolt", 14, 73, 17 },
{ "Curse", 15, 74, 19 },
{ "Bind", 16, 369, 20 },
{ "Low Level Alchemy", 17, 75, 21 },
{ "Water Bolt", 18, 76, 23 },
{ "Varrock Teleport", 19, 77, 25 },
{ "Lvl-2 Enchant", 20, 78, 27 },
{ "Earth Bolt", 21, 79, 29 },
{ "Lumbridge Teleport", 22, 80, 31 },
{ "Telekinetic Grab", 23, 81, 33 },
{ "Fire Bolt", 24, 82, 35 },
{ "Falador Teleport", 25, 83, 37 },
{ "Crumble Undead", 26, 84, 39 },
{ "Teleport to House", 27, 405, 40 },
{ "Wind Blast", 28, 85, 41 },
{ "Superheat Item", 29, 86, 43 },
{ "Camelot Teleport", 30, 87, 45 },
{ "Water Blast", 31, 88, 47 },
{ "Lvl-3 Enchant", 32, 89, 49 },
{ "Iban Blast", 33, 103, 50 },
{ "Snare", 34, 370, 50 },
{ "Magic Dart", 35, 374, 50 },
{ "Ardougne Teleport", 36, 104, 51 },
{ "Earth Blast", 37, 90, 53 },
{ "High Level Alchemy", 38, 91, 55 },
{ "Charge Water Orb", 39, 92, 56 },
{ "Lvl-4 Enchant", 40, 93, 57 },
{ "Watchtower Teleport", 41, 105, 58 },
{ "Fire Blast", 42, 94, 59 },
{ "Charge Earth Orb", 43, 95, 60 },
{ "Bones to Peaches", 44, 404, 60 },
{ "Saradomin strike", 45, 111, 60 },
{ "Claws of Guthix", 46, 110, 60 },
{ "Flames of Zamorak", 47, 109, 60 },
{ "Trollheim Teleport", 48, 373, 61 },
{ "Wind Wave", 49, 96, 62 },
{ "Charge Fire Orb", 50, 97, 63 },
{ "Teleport to Ape Atoll", 51, 407, 64 },
{ "Water Wave", 52, 98, 65 },
{ "Charge Air Orb", 53, 99, 66 },
{ "Vulnerability", 54, 106, 66 },
{ "Lvl-5 Enchant", 55, 100, 68 },
{ "Teleport to Kourend", 56, 410, 69 },
{ "Earth Wave", 57, 101, 70 },
{ "Enfeeble", 58, 107, 73 },
{ "Teleother Lumbridge", 59, 399, 74 },
{ "Fire Wave", 60, 102, 75 },
{ "Entangle", 61, 371, 79 },
{ "Stun", 62, 108, 80 },
{ "Charge", 63, 372, 80 },
{ "Wind Surge", 64, 412, 81 },
{ "Teleother Falador", 65, 400, 82 },
{ "Water Surge", 66, 413, 85 },
{ "Tele Block", 67, 402, 85 },
{ "Teleport to Bounty Target", 68, 409, 85 },
{ "Lvl-6 Enchant", 69, 403, 87 },
{ "Teleother Camelot", 70, 401, 90 },
{ "Earth Surge", 71, 414, 90 },
{ "Lvl-7 Enchant", 72, 411, 93 },
{ "Fire Surge", 73, 415, 95 },
//Lunar 70-114
{ "Lunar Home Teleport", 99, 356, 0 },
{ "Bake Pie", 100, 593, 65 },
{ "Geomancy", 140, 613, 65 },
{ "Cure Plant", 101, 617, 66 },
{ "Monster Examine", 102, 627, 66 },
{ "NPC Contact", 103, 618, 67 },
{ "Cure Other", 104, 609, 68 },
{ "Humidify", 105, 628, 69 },
{ "Moonclan Teleport", 106, 594, 69 },
{ "Tele Group Moonclan", 107, 619, 70 },
{ "Cure Me", 108, 612, 71 },
{ "Ourania Teleport", 142, 636, 71 },
{ "Hunter Kit", 109, 629, 71 },
{ "Waterbirth Teleport", 110, 595, 72 },
{ "Tele Group Waterbirth", 111, 620, 73 },
{ "Cure Group", 112, 615, 74 },
{ "Stat Spy", 113, 626, 75 },
{ "Barbarian Teleport", 114, 597, 75 },
{ "Tele Group Barbarian", 115, 621, 76 },
{ "Spin Flax", 141, 635, 76 },
{ "Superglass Make", 116, 598, 77 },
{ "Tan Leather", 117, 633, 78 },
{ "Khazard Teleport", 118, 599, 78 },
{ "Tele Group Khazard", 119, 622, 79 },
{ "Dream", 120, 630, 79 },
{ "String Jewellery", 121, 600, 80 },
{ "Stat Restore Pot Share", 122, 604, 81 },
{ "Magic Imbue", 123, 602, 82 },
{ "Fertile Soil", 124, 603, 83 },
{ "Boost Potion Share", 125, 601, 84 },
{ "Fishing Guild Teleport", 126, 605, 85 },
{ "Teleport to Bounty Target", 68, 409, 85 },
{ "Tele Group Fishing Guild", 127, 623, 86 },
{ "Plank Make", 128, 631, 86 },
{ "Catherby Teleport", 129, 606, 87 },
{ "Tele Group Catherby", 130, 624, 88 },
{ "Recharge Dragonstone", 131, 634, 89 },
{ "Ice Plateau Teleport", 132, 607, 89 },
{ "Tele Group Ice Plateau", 133, 625, 90 },
{ "Energy Transfer", 134, 608, 91 },
{ "Heal Other", 135, 610, 92 },
{ "Vengeance Other", 136, 611, 93 },
{ "Vengeance", 137, 614, 94 },
{ "Heal Group", 138, 616, 95 },
{ "Spellbook Swap", 139, 632, 96 },
//Ancients 115-140
{ "Ice Rush", 68, 375, 58 },
{ "Ice Blitz", 69, 377, 84 },
{ "Ice Burst", 70, 376, 70 },
{ "Ice Barrage", 71, 378, 94 },
{ "Blood Rush", 72, 383, 56 },
{ "Blood Blitz", 73, 385, 80 },
{ "Blood Burst", 74, 384, 68 },
{ "Blood Barrage", 75, 386, 92 },
{ "Smoke Rush", 76, 379, 50 },
{ "Smoke Blitz", 77, 381, 74 },
{ "Smoke Burst", 78, 380, 62 },
{ "Smoke Barrage", 79, 382, 86 },
{ "Shadow Rush", 80, 387, 52 },
{ "Shadow Blitz", 81, 389, 76 },
{ "Shadow Burst", 82, 388, 64 },
{ "Shadow Barrage", 83, 390, 88 },
{ "Paddewwa Teleport", 84, 391, 54 },
{ "Senntisten Teleport", 85, 392, 60 },
{ "Kharyrll Teleport", 86, 393, 66 },
{ "Lassar Teleport", 87, 394, 72 },
{ "Dareeyak Teleport", 88, 395, 78 },
{ "Carrallangar Teleport", 89, 396, 84 },
{ "Annakarl Teleport", 90, 397, 90 },
{ "Ghorrock Teleport", 91, 398, 96 },
{ "Teleport to Bounty Target", 92, 409, 85 },
{ "Edgeville Home Teleport", 93, 356, 0 },
};
//************ Options.cpp ************//
inline std::int32_t OPTIONS_PARENT = 261;
inline WidgetDef OPTIONS_ACCEPT_AID = { OPTIONS_PARENT, 92 };
inline WidgetDef OPTIONS_RUN_MODE = { OPTIONS_PARENT, 95 };
//************ Prayer.cpp ************//
inline std::int32_t PRAYER_PRAYERS_PARENT = 541; // To be used with PrayerDefs
typedef struct PrayerDef
{
std::string Name;
std::int32_t BitPos;
std::int32_t WidgetID;
std::int32_t SpriteID;
std::int32_t Level;
} PrayerDef;
static std::vector<PrayerDef> PrayerDefs = // To be used with Prayer:: PRAYERS enum
{
{ "Thick Skin", 0, 5, 115, 1 },
{ "Burst of Strength", 1, 6, 116, 4 },
{ "Clarity of Thought", 2, 7, 117, 7 },
{ "Sharp Eye", 18, 23, 133, 8 },
{ "Mystic Will", 19, 24, 134, 9 },
{ "Rock Skin", 3, 8, 118, 10 },
{ "Superhuman Strength", 4, 9, 119, 13 },
{ "Improved Reflexes", 5, 10, 120, 16 },
{ "Rapid Restore", 6, 11, 121, 19 },
{ "Rapid Heal", 7, 12, 122, 22 },
{ "Protect Item", 8, 13, 123, 25 },
{ "Hawk Eye", 20, 25, 502, 26 },
{ "Mystic Lore", 21, 26, 503, 27 },
{ "Steel Skin", 9, 14, 124, 28 },
{ "Ultimate Strength", 10, 15, 125, 31 },
{ "Incredible Reflexes", 11, 16, 126, 34 },
{ "Protect from Magic", 12, 17, 127, 37 },
{ "Protect from Missiles", 13, 18, 128, 40 },
{ "Protect from Melee", 14, 19, 129, 43 },
{ "Eagle Eye", 22, 27, 504, 44 },
{ "Mystic Might", 23, 28, 505, 45 },
{ "Retribution", 15, 20, 131, 46 },
{ "Redemption", 16, 21, 130, 49 },
{ "Smite", 17, 22, 132, 52 },
{ "Preserve", 29, 33, 947, 55 },
{ "Chivalry", 25, 28, 945, 60 },
{ "Piety", 26, 30, 946, 70 },
{ "Rigour", 24, 31, 1420, 74 },
{ "Augury", 27, 32, 1421, 77 }
};
}
}
#endif // GLOBALS_HPP_INCLUDED

View File

@ -7,6 +7,7 @@
typedef enum ScrollDirection
{
SCROLL_NONE = -1,
SCROLL_DOWN = 0,
SCROLL_UP = 1
} ScrollDirection;

View File

@ -7,6 +7,7 @@
#include "Paint.hpp"
#include "Script.hpp"
#include "Time.hpp"
#include "Globals.hpp"
#include "Types/Tile.hpp"
#include "Types/Point.hpp"
@ -133,6 +134,14 @@ namespace Internal
std::int32_t GetGameTick();
Deque GetGraphicsObjects();
std::vector<std::vector<std::vector<Deque>>> GetGroundItems();
std::int32_t GetHintArrowNPCIndex();
std::int32_t GetHintArrowOffsetX();
std::int32_t GetHintArrowOffsetY();
std::int32_t GetHintArrowPlayerIndex();
std::int32_t GetHintArrowTargetType();
std::int32_t GetHintArrowX();
std::int32_t GetHintArrowY();
std::int32_t GetHintArrowZ();
bool GetIsMember();
HashTable GetItemContainers();
IndexableData GetItemIndexableData();

View File

@ -3,7 +3,6 @@
#include <cstdint>
#include <vector>
#include "Types/Point.hpp"
/** @addtogroup Math

View File

@ -5,7 +5,6 @@
#include "Types/Convex.hpp"
#include "Types/Tile.hpp"
/** @addtogroup Core
* @{ */
namespace Paint

View File

@ -17,6 +17,7 @@ class Wireframe
Point GetHybridRandomPoint(double ProbabilityX, double ProbabilityY, double StandardDeviationX, double StandardDeviationY, double PointGenAccuracy) const;
Point GetProfileHybridRandomPoint() const;
Point GetProfileHybridRandomPoint(double PointGenAccuracy) const;
Point GetHighPrecisionPoint() const;
Box GetBox() const;
Convex GetConvex() const;
bool Contains(const Point& P) const;

View File

@ -3,7 +3,6 @@
#include <string>
#include <cstdint>
#include <regex>
/** @addtogroup GameTabs
* @{ */
@ -158,7 +157,6 @@ namespace Magic
NONE
} SPELL;
bool IsOpen();
bool Open();

View File

@ -23,7 +23,6 @@ namespace Menu
* @brief Opens the menu by right-clicking wherever the mouse currently is
* @return true if the menu is currently open or opened by right clicking
* @return false if WaitFunc fails - WaitFunc(1000, 100, Menu::IsOpen, true);
* @note Implements an %Interactable delay if succesful
*/
bool Open();
@ -31,7 +30,6 @@ namespace Menu
* @brief Closes the menu by moving the mouse to either left or right of the menu, uses the current mouse position as a base point
* @return true if the menu isn't open, or closed by moving the mouse
* @return false if the generated point is off-screen, or WaitFunc fails - WaitFunc(1000, 100, Menu::IsOpen, false);
* @note Implements an %Interactable delay if succesful
*/
bool Close();
@ -45,22 +43,29 @@ namespace Menu
/**
* @brief Get the raw, un-filtered menu actions
* @description By default the game includes html code in menu actions/targets
* This function returns those actions without the removal of the html code
* @return std::vector<std::string> of raw menu actions
* @note The game includes color code in some menu actions or targets
* @warning The result can be inaccurate if the menu isn't open before calling this function
*/
[[deprecated("Use Internal::GetMenuActions() instead")]]
std::vector<std::string> GetActionsRaw();
/**
* @brief Get the raw, un-filtered menu targets
* @description By default the game includes html code in menu actions/targets
* This function returns those targets without the removal of the html code
* @brief Get the raw, un-touched menu targets
* @return std::vector<std::string> of targets
* @note The game includes color code in some menu actions or targets
* @warning The result can be inaccurate if the menu isn't open before calling this function
*/
[[deprecated("Use Internal::GetMenuTargets() instead")]]
std::vector<std::string> GetTargetsRaw();
/**
* @brief Attempts to verify the order of the passed menu actions and targets
* @return true if the passed menu actions and targets are in the correct order
* @note This isn't a guarantee, but testing shows near zero failure rate
*/
bool OptionsValid(std::int32_t MenuCount, const std::vector<std::string>& RawActions, const std::vector<std::string>& RawTargets);
/**
* @brief Get the menu actions
*
@ -68,7 +73,7 @@ namespace Menu
* 'Use' - action 'gold bar' - target
* 'Attack' - action 'Guard (level-21)' - target
* @return std::vector<std::string> array of menu actions
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
std::vector<std::string> GetActions();
@ -79,7 +84,7 @@ namespace Menu
* 'Use' - action 'gold bar' - target
* 'Attack' - action 'Guard (level-21)' - target
* @return std::vector<std::string> array of menu targets
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
std::vector<std::string> GetTargets();
@ -92,9 +97,22 @@ namespace Menu
* 'Use gold bar' - option
* 'Attack Guard (level-21)' - option
* @return std::vector<std::string> array of menu options
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
std::vector<std::string> GetOptions();
/**
* @brief Get the menu options split into pairs instead of whole strings
*
* @description
* 'Use' - action 'gold bar' - target
* 'Attack' - action 'Guard (level-21)' - target
* 'Use gold bar' - option
* 'Attack Guard (level-21)' - option
* first is the action, second is the target
* @return std::vector<std::pair<std::string, std::string>>
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
std::vector<std::pair<std::string, std::string>> GetSplitOptions();
/**
@ -111,7 +129,7 @@ namespace Menu
* @return std::int32_t The index of the first found option, -1 if the option wasn't found
* @note Notice that 'Attack Guard (level-40)' has a double space after 'Guard', menu options can vary, in this case the menu option i'm looking for
* has a double space after 'Guard'.
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
std::int32_t IndexOf(const std::string& Option);
@ -124,7 +142,7 @@ namespace Menu
* @param Options %Menu options to look for, returns on first option found, the more specific the options, the more accurate the result will be
* @return std::int32_t The index of the first found option, -1 if the option wasn't found
* @see Menu::IndexOf(const std::string& Option)
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
std::int32_t IndexOf(const std::vector<std::string>& Options);
@ -138,7 +156,7 @@ namespace Menu
* std::string [1] = Action that was found at index
* std::string [2] = Target that was found at index
* @see Menu::IndexOf(const std::string& Option)
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
std::tuple<std::int32_t, std::string, std::string> FindOption(std::uint32_t Index);
@ -151,7 +169,7 @@ namespace Menu
* std::string [1] = Action that was found
* std::string [2] = Target that was found
* @see Menu::IndexOf(const std::string& Option)
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
std::tuple<std::int32_t, std::string, std::string> FindOption(const std::string& Option);
@ -164,7 +182,7 @@ namespace Menu
* std::string [1] = Action that was found
* std::string [2] = Target that was found
* @see Menu::IndexOf(const std::string& Options)
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
std::tuple<std::int32_t, std::string, std::string> FindOption(const std::vector<std::string>& Options);
@ -176,7 +194,7 @@ namespace Menu
* std::int32_t [0] = Index of the option that was found, -1 if the option wasn't found
* std::string [1] = Action that was found
* std::string [2] = Target that was found
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
* @see Menu::IndexOf(const std::string& Option)
*/
std::vector<std::tuple<std::int32_t, std::string, std::string>> FindOptions(const std::string& Option);
@ -190,7 +208,7 @@ namespace Menu
* std::string [1] = Action that was found
* std::string [2] = Target that was found
* @see Menu::IndexOf(const std::string& Options)
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
std::vector<std::tuple<std::int32_t, std::string, std::string>> FindOptions(const std::vector<std::string>& Options);
@ -201,7 +219,7 @@ namespace Menu
* @param Option %Menu option to look for, the more specific the option, the more specific the option, the more accurate the result will be
* @return true if the found index is valid (Index >= 0)
* @see Menu::IndexOf(const std::string& Option)
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
bool Contains(const std::string& Option);
@ -211,7 +229,7 @@ namespace Menu
* @param %Options %Menu options to look for, returns on first option found, the more specific the options, the more accurate the result will be
* @return true if the found index is valid (Index >= 0)
* @see Menu::IndexOf(const std::string& Options)
* @warning The result can be inaccurate if the menu isn't open before calling this function
* @warning The result can rarely be inaccurate if the menu isn't open before calling this function
*/
bool Contains(const std::vector<std::string>& Options);
@ -248,7 +266,6 @@ namespace Menu
* @param CloseMenu Close the menu if the function fails by using Menu::Close(), true by default
* @return true if the function selected the option by index
* @return false if the menu isn't open, the passed index is invalid (-1), the option box is off-screen, or the WaitFunc failed - WaitFunc(1000, 100, Menu::IsOpen, false)
* @note Implements an %Interactable delay if succesful
*/
bool Select(std::int32_t Index, bool CloseMenu = true);
@ -259,7 +276,6 @@ namespace Menu
* @param CloseMenu Close the menu if the function fails by using Menu::Close(), true by default
* @return true if the function selected the option by option
* @return false if the menu isn't open, the found option was invalid, the option box is off-screen, or the WaitFunc failed - WaitFunc(1000, 100, Menu::IsOpen, false)
* @note Implements an %Interactable delay if succesful
* @see Menu::IndexOf(const std::string& Option)
*/
bool Select(const std::string& Option, bool CloseMenu = true);
@ -271,7 +287,6 @@ namespace Menu
* @param CloseMenu Close the menu if the function fails using Menu::Close(), true by default
* @return true if the function selected the option by the first found option
* @return false if the menu isn't open, the found option was invalid, the option box is off-screen, or the WaitFunc failed - WaitFunc(1000, 100, Menu::IsOpen, false)
* @note Implements an %Interactable delay if succesful
* @see Menu::IndexOf(const std::string& Options)
*/
bool Select(const std::vector<std::string>& Options, bool CloseMenu = true);

View File

@ -17,16 +17,16 @@ namespace Interact
bool Click(const Button& B = BUTTON_LEFT);
bool Click(const Point& P, const Button& B = BUTTON_LEFT);
bool Click(const Point& P, const std::string& Option);
bool Click(const Point& P, const std::vector<std::string>& Options);
bool Click(const Point& P, const std::string& Option, const std::string& Target = "");
bool Click(const Point& P, const std::vector<std::string>& Options, const std::string& Target = "");
bool Click(const Box& B, const Button& Button = BUTTON_LEFT);
bool Click(const Box& B, const std::string& Option);
bool Click(const Box& B, const std::vector<std::string>& Options);
bool Click(const Box& B, const std::string& Option, const std::string& Target = "");
bool Click(const Box& B, const std::vector<std::string>& Options, const std::string& Target = "");
bool Click(const Convex& C, const Button& B = BUTTON_LEFT);
bool Click(const Convex& C, const std::string& Option);
bool Click(const Convex& C, const std::vector<std::string>& Options);
bool Click(const Convex& C, const std::string& Option, const std::string& Target = "");
bool Click(const Convex& C, const std::vector<std::string>& Options, const std::string& Target = "");
bool Scroll(const ScrollDirection& Direction);
bool ScrollUntil(const ScrollDirection& Direction, std::int32_t Duration, const std::function<bool()>& Func);

Binary file not shown.