Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Black Desert
You last visited: Today at 01:10

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Free Source] BDO Market Bot/Animation Speedhack

Discussion on [Free Source] BDO Market Bot/Animation Speedhack within the Black Desert forum part of the MMORPGs category.

Reply
 
Old 01/12/2019, 15:37   #151
 
elite*gold: 0
Join Date: Jul 2006
Posts: 18
Received Thanks: 6
Could you check my addresses for 1009 please?

Code:
#define ATA_LUA_GETTOP						0x0000000141730700	
#define ATA_REQUEST_ITEM_MARKET_SELL_INFO			0x0000000142A9D880 
#define ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_COUNT		0x0000000142A9D6D0 
#define ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_BY_INDEX	0x0000000142A9D6F8 
#define ATA_REQUEST_BUY_ITEM_FOR_ITEM_MARKET			0x0000000142A9D778
#define ATA_IS_BIDDING_ITEM					0x0000000142A9D4A8
#define ATA_IS_BIDDING_JOIN_TIME				0x0000000142A9D4B8 
#define ATA_GET_ITEM_MARKET_NO					0x0000000142A9D488 
#define ATA_IS_BIDDING_JOIN_ITEM				0x0000000142A9D698 
#define ATA_GET_ONE_PRICE					0x0000000142A9D3C0 
#define ATA_WAREHOUSE_MONEY_FROM_NPC_SHOP			0x0000000142AD02C8 
#define ADA_LOCAL_PLAYER					0x00000001433B3AD8
waynabe is offline  
Old 01/12/2019, 17:57   #152
 
elite*gold: 0
Join Date: Jul 2014
Posts: 116
Received Thanks: 12
{ "Blessing of Kamasylve (15 Days)", 17081

how did u find the address beside the item name...
Waelshannak is offline  
Old 01/12/2019, 18:01   #153
 
elite*gold: 0
Join Date: Jul 2006
Posts: 18
Received Thanks: 6
It's the item ID, can be looked up on bddatabase


help for my issue is appreciated aswell have been using the offsets i posted and game instantly crashes after pressing Numpad 6/9
waynabe is offline  
Old 01/12/2019, 18:34   #154
 
elite*gold: 0
Join Date: Jul 2014
Posts: 116
Received Thanks: 12
omfg c++ **** this ****, I am pretty sure It would have been a really nice hack, If I, however, understand **** in c++, but thumbs up for giving out the free ****, would be really nice if u would make it an exe and u can change the items inside.
Waelshannak is offline  
Old 01/12/2019, 18:52   #155

 
R3p's Avatar
 
elite*gold: 1988
The Black Market: 325/15/3
Join Date: Apr 2010
Posts: 532
Received Thanks: 961
c++ isnt that crazy
compared to c# or some **** the overall context is nearly the same
it just looks different and misses some quality of life which means you actually have to think about what you code compared to other languages where the build process does all the nasty stuff for ya

if you rly want to its not hard to start with c++
you can use this code and add some external cfg file where you put all the itemIds in for example
R3p is offline  
Thanks
1 User
Old 01/12/2019, 20:00   #156
 
elite*gold: 0
Join Date: Jul 2006
Posts: 18
Received Thanks: 6
I'm already a few steps further now but still crash once the items refresh on the mp.

Code:
#define ATA_LUA_GETTOP						0x0000000141730700
#define ATA_REQUEST_ITEM_MARKET_SELL_INFO			0x000000014048E490
#define ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_COUNT		0x000000014048E300
#define ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_BY_INDEX	0x000000014048E330
#define ATA_REQUEST_BUY_ITEM_FOR_ITEM_MARKET			0x000000014048E660
#define ATA_IS_BIDDING_ITEM					0x00000001403D9BF0
#define ATA_IS_BIDDING_JOIN_TIME				0x00000001401F1B40
#define ATA_GET_ITEM_MARKET_NO					0x0000000140D6F2E0
#define ATA_IS_BIDDING_JOIN_ITEM				0x000000014048F540
#define ATA_GET_ONE_PRICE					0x000000014049B8D4 
#define ATA_WAREHOUSE_MONEY_FROM_NPC_SHOP			0x00000001406A46C0 
#define ADA_LOCAL_PLAYER					0x00000001433B3AD8
Edit:
Double checked everything with the information that is available to me, i'm stuck for now. As mentioned i'm using the offsets listed above and the mp part crashes the game once an item in g_targets gets listed on the mp, the hack part crashes instantly on use.
waynabe is offline  
Old 01/12/2019, 21:03   #157
 
elite*gold: 0
Join Date: Jul 2014
Posts: 116
Received Thanks: 12
Quote:
Originally Posted by waynabe View Post
I'm already a few steps further now but still crash once the items refresh on the mp.

Code:
#define ATA_LUA_GETTOP						0x0000000141730700
#define ATA_REQUEST_ITEM_MARKET_SELL_INFO			0x000000014048E490
#define ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_COUNT		0x000000014048E300
#define ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_BY_INDEX	0x000000014048E330
#define ATA_REQUEST_BUY_ITEM_FOR_ITEM_MARKET			0x000000014048E660
#define ATA_IS_BIDDING_ITEM					0x00000001403D9BF0
#define ATA_IS_BIDDING_JOIN_TIME				0x00000001401F1B40
#define ATA_GET_ITEM_MARKET_NO					0x0000000140D6F2E0
#define ATA_IS_BIDDING_JOIN_ITEM				0x000000014048F540
#define ATA_GET_ONE_PRICE					0x000000014049B8D4 
#define ATA_WAREHOUSE_MONEY_FROM_NPC_SHOP			0x00000001406A46C0 
#define ADA_LOCAL_PLAYER					0x00000001433B3AD8
Edit:
Double checked everything with the information that is available to me, i'm stuck for now. As mentioned i'm using the offsets listed above and the mp part crashes the game once an item in g_targets gets listed on the mp, the hack part crashes instantly on use.
are u sure u are in hidel ? and try to use it with maid not marketplace
Waelshannak is offline  
Old 01/12/2019, 21:08   #158
 
elite*gold: 0
Join Date: Jul 2006
Posts: 18
Received Thanks: 6
I've nailed it down to this line of code
Code:
bool is_bidding_join_item = g_fp_is_bidding_join_item(item_market_no);
I'm not sure if my "ATA_IS_BIDDING_JOIN_TIME" is wrong or "ATA_GET_ITEM_MARKET_NO" or anything related with those two values.

item_market_no gets assigned a value of 0 so i assume thats where the issue is?
waynabe is offline  
Old 01/13/2019, 20:16   #159
 
elite*gold: 0
Join Date: May 2010
Posts: 227
Received Thanks: 15
Quote:
Originally Posted by Ustonovic View Post
Since I got all the items I needed with this bot (about 10k meme frags, all boss gears and enough value packs) I decided to release the source.

It is a single file (exclusive MinHook dep.) and is fully internal.
I coded it mainly as a marketplace bot but also added some animation speedhack capabilities.

Code:
#include <windows.h>
#include <stdint.h>
#include <stdio.h>
#include <string>
#include <sstream>
#include <map>
#include <iostream>
#include <ctime>

#include "third_party/minhook/source/minhook.h"

#define APPLICATION_NAME									"Mark"

#define ATA_LUA_GETTOP										0x0000000141566270 // 795 0x00000001414FE620
#define ATA_REQUEST_ITEM_MARKET_SELL_INFO					0x000000014043A040 // 795 0x0000000140434640
#define ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_COUNT		0x0000000140439EB0 // 795 0x00000001404344B0
#define ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_BY_INDEX	0x0000000140439EE0 // 795 0x00000001404344E0
#define ATA_REQUEST_BUY_ITEM_FOR_ITEM_MARKET				0x000000014043A410 // 795 0x0000000140434A10
#define ATA_IS_BIDDING_ITEM									0x0000000140397D40 // 795 0x0000000140392420
#define ATA_IS_BIDDING_JOIN_TIME							0x0000000140397D80 // 795 0x0000000140392460
#define ATA_GET_ITEM_MARKET_NO								0x00000001401BCA10 // 795 0x00000001401BB5A0
#define ATA_IS_BIDDING_JOIN_ITEM							0x000000014043B0F0 // 795 0x00000001404356F0
#define ATA_GET_ONE_PRICE									0x00000001402CD020 // 795 0x00000001402C78E0
#define ATA_WAREHOUSE_MONEY_FROM_NPC_SHOP					0x0000000140645E40 // 795 0x000000014063F9C0

#define ADA_LOCAL_PLAYER									0x00000001421BB768 // 795 0x0000000142108158

#define EXECUTION_INTERVAL									250

#define DEFAULT_TERRITORY_KEY								1 // Heidel
#define DEFAULT_WALLET_TYPE									2 // Warehouse
#define DEFAULT_ANIMATION_SPEED_MODIFIER					0.25f

typedef uint64_t(__fastcall* ft_lua_gettop)(void* lua_state);
typedef void(__fastcall* ft_request_item_market_sell_info)(uint32_t territory_key, uint32_t item_key, bool unk_1);
typedef int32_t(__fastcall* ft_get_item_market_sell_info_in_client_count)(uint32_t territory_key, uint32_t item_key);
typedef uint64_t(__fastcall* ft_get_item_market_sell_info_in_client_by_index)(uint32_t territory_key, uint32_t item_key, uint32_t slot_index);
typedef void(__fastcall* ft_request_buy_item_for_item_market)(uint32_t wallet_type, uint32_t item_key, uint32_t slot_index, uint32_t amount, uint64_t unk_1);
typedef bool(__fastcall* ft_is_bidding_item)(uint64_t sell_info_address);
typedef bool(__fastcall* ft_is_bidding_join_time)(uint64_t sell_info_address);
typedef uint64_t(__fastcall* ft_get_item_market_no)(uint64_t sell_info_address);
typedef bool(__fastcall* ft_is_bidding_join_item)(uint64_t item_market_no);
typedef uint64_t(__fastcall* ft_get_one_price)(uint64_t sell_info_address);
typedef uint64_t(__fastcall* ft_warehouse_money_from_npc_shop)();

static ft_lua_gettop g_fp_lua_gettop = nullptr;
static ft_request_item_market_sell_info g_fp_request_item_market_sell_info = reinterpret_cast<ft_request_item_market_sell_info>(ATA_REQUEST_ITEM_MARKET_SELL_INFO);
static ft_get_item_market_sell_info_in_client_count g_fp_get_item_market_sell_info_in_client_count = reinterpret_cast<ft_get_item_market_sell_info_in_client_count>(ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_COUNT);
static ft_get_item_market_sell_info_in_client_by_index g_fp_get_item_market_sell_info_in_client_by_index = reinterpret_cast<ft_get_item_market_sell_info_in_client_by_index>(ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_BY_INDEX);
static ft_request_buy_item_for_item_market g_fp_request_buy_item_for_item_market = reinterpret_cast<ft_request_buy_item_for_item_market>(ATA_REQUEST_BUY_ITEM_FOR_ITEM_MARKET);
static ft_is_bidding_item g_fp_is_bidding_item = reinterpret_cast<ft_is_bidding_item>(ATA_IS_BIDDING_ITEM);
static ft_is_bidding_join_time g_fp_is_bidding_join_time = reinterpret_cast<ft_is_bidding_join_time>(ATA_IS_BIDDING_JOIN_TIME);
static ft_get_item_market_no g_fp_get_item_market_no = reinterpret_cast<ft_get_item_market_no>(ATA_GET_ITEM_MARKET_NO);
static ft_is_bidding_join_item g_fp_is_bidding_join_item = reinterpret_cast<ft_is_bidding_join_item>(ATA_IS_BIDDING_JOIN_ITEM);
static ft_get_one_price g_fp_get_one_price = reinterpret_cast<ft_get_one_price>(ATA_GET_ONE_PRICE);
static ft_warehouse_money_from_npc_shop g_fp_warehouse_money_from_npc_shop = reinterpret_cast<ft_warehouse_money_from_npc_shop>(ATA_WAREHOUSE_MONEY_FROM_NPC_SHOP);

static bool g_market_activated = false;
static bool g_hacks_activated = false;
static std::map<std::string, uint32_t> g_targets = {
	// { "Memory Fragment", 44195 },
	{ "Value Pack (30 Days)", 17354 },
	{ "Blessing of Kamasylve (15 Days)", 17081 },
	{ "Sealed Book of Combat (15 Days)", 17646 },
	{ "Equipment Tailoring Coupon", 17611 },
	{ "Young Griffon", 18429 },
	{ "Shaggy Dog", 17939 },
	{ "Calpheon Chubby Dog", 17966 },
	{ "Desert Fox", 17976 },
	{ "Red Panda", 18098 },
	{ "Snowball Rosefinch", 18426 },
	{ "Crow", 18439 },
	{ "Snowflake Reindeer Box", 290006 },
	{ "Winter Snowflake Box", 18946 },
	{ "Horse Flute Box (Permanent)", 17973 },
	{ "Trina Knight Horse Gear Set", 21012 },
	{ "Silver Embroidered Cook's Clothes +3", 50345667 },
	{ "[Musa] Western Frontiers Premium Set", 21257 },
	{ "[Musa] Palgong Premium Set", 21359 },
	{ "[Musa] Nouse's Shard Premium Set", 29147 },
	{ "[Musa] Western Frontiers Classic Set", 21256 },
	{ "Nouver Horn Bow +0", 13138 },
	{ "Kutum Horn Bow +0", 13140 },
	{ "Dandelion Crescent Blade +0", 14762 },
	{ "Griffon's Helmet +0", 11101 },
	{ "Dim Tree Spirit's Armor +0", 11017 }
};
static uint64_t g_last_execution = 0;
static float g_animation_speed = 1.0f;

std::string get_formatted_datetime()
{
	std::time_t raw_time;
	std::tm* time;
	char time_buffer[20] = { 0 };

	std::time(&raw_time);
	time = std::localtime(&raw_time);
	std::strftime(time_buffer, sizeof(time_buffer), "%d.%m.%Y %H:%M:%S", time);

	return std::string(::_strdup(time_buffer));
}

uint64_t __fastcall hf_lua_gettop(void* lua_state)
{
	if (::GetAsyncKeyState(VK_NUMPAD6) & 0x01)
	{
		g_market_activated = !g_market_activated;

		if (g_market_activated)
		{
			std::ostringstream warehouse_money_string_stream;

			warehouse_money_string_stream.imbue(std::locale("de"));
			warehouse_money_string_stream << g_fp_warehouse_money_from_npc_shop();

			std::cout << "Warehouse Money: " << warehouse_money_string_stream.str() << std::endl;
		}

		std::cout << APPLICATION_NAME " Market state is now `" << g_market_activated << "`." << std::endl;
	}

	if (::GetAsyncKeyState(VK_NUMPAD7) & 0x01)
	{
		g_animation_speed -= DEFAULT_ANIMATION_SPEED_MODIFIER;

		std::cout << "<< Animation Speed Modifier decreased to `" << g_animation_speed << "`." << std::endl;
	}

	if (::GetAsyncKeyState(VK_NUMPAD8) & 0x01)
	{
		g_animation_speed += DEFAULT_ANIMATION_SPEED_MODIFIER;

		std::cout << ">> Animation Speed Modifier increased to `" << g_animation_speed << "`." << std::endl;
	}

	if (::GetAsyncKeyState(VK_NUMPAD9) & 0x01)
	{
		g_hacks_activated = !g_hacks_activated;

		if (!g_hacks_activated)
		{
			uint64_t local_player_address = *((uint64_t*) ADA_LOCAL_PLAYER);
			uint64_t character_control_address = *((uint64_t*) (local_player_address + 0x0380));
			uint64_t character_scene_address = *((uint64_t*) (character_control_address + 0x10));

			*((float*) (character_scene_address + 0x04BC)) = 1.0f;
		}

		std::cout << APPLICATION_NAME " Hack state is now `" << g_hacks_activated << "`." << std::endl;
	}

	if (g_hacks_activated)
	{
		uint64_t local_player_address = *((uint64_t*) ADA_LOCAL_PLAYER);
		uint64_t character_control_address = *((uint64_t*) (local_player_address + 0x0380));
		uint64_t character_scene_address = *((uint64_t*) (character_control_address + 0x10));

		*((float*) (character_scene_address + 0x04BC)) = g_animation_speed;
	}

	if (g_market_activated && ((g_last_execution + EXECUTION_INTERVAL) <= ::GetTickCount64()))
	{
		g_last_execution = ::GetTickCount64();

		for (auto const& target : g_targets)
		{
			g_fp_request_item_market_sell_info(DEFAULT_TERRITORY_KEY, target.second, false);

			int32_t target_slot_count = g_fp_get_item_market_sell_info_in_client_count(DEFAULT_TERRITORY_KEY, target.second);

			if (target_slot_count == 0)
				continue;

			for (int32_t slot_index = 0; slot_index < target_slot_count; slot_index++)
			{
				uint64_t sell_info = g_fp_get_item_market_sell_info_in_client_by_index(DEFAULT_TERRITORY_KEY, target.second, slot_index);

				if (sell_info == 0x00)
					continue;

				uint64_t sell_info_count = *((uint64_t*) (sell_info + 0x18));

				if (sell_info_count > 0)
				{
					bool is_bidding_item = g_fp_is_bidding_item(sell_info);
					bool is_bidding_join_time = g_fp_is_bidding_join_time(sell_info);
					uint64_t item_market_no = g_fp_get_item_market_no(sell_info);
					bool is_bidding_join_item = g_fp_is_bidding_join_item(item_market_no);

					uint64_t one_price = g_fp_get_one_price(sell_info);
					uint64_t total_price = (one_price * sell_info_count);

					if (g_fp_warehouse_money_from_npc_shop() < total_price)
						continue;

					std::ostringstream one_price_string_stream;
					std::ostringstream total_price_string_stream;

					one_price_string_stream.imbue(std::locale("de"));
					one_price_string_stream << one_price;

					total_price_string_stream.imbue(std::locale("de"));
					total_price_string_stream << total_price;

					if (is_bidding_item)
					{
						if (is_bidding_join_time)
						{
							if (!is_bidding_join_item)
							{
								std::cout << "[" << get_formatted_datetime() << "] Bidding on " << target.first << " (" << slot_index << "." << sell_info_count << "-" <<  item_market_no << ") [T " << total_price_string_stream.str() << " | U " << one_price_string_stream.str() << "]" << std::endl;

								g_fp_request_buy_item_for_item_market(DEFAULT_WALLET_TYPE, target.second, slot_index, sell_info_count, 0);
							}
						}
						else if (is_bidding_join_item)
						{
							std::cout << "[" << get_formatted_datetime() << "] Confirming bid on " << target.first << " (" << slot_index << "." << sell_info_count << "-" << item_market_no << ") [T " << total_price_string_stream.str() << " | U " << one_price_string_stream.str() << "]" << std::endl;

							g_fp_request_buy_item_for_item_market(DEFAULT_WALLET_TYPE, target.second, slot_index, sell_info_count, 0);
						}
					}
					else
					{
						std::cout << "[" << get_formatted_datetime() << "] Buying " << target.first << " (" << slot_index << "." << sell_info_count << "-" << item_market_no << ") [T " << total_price_string_stream.str() << " | U " << one_price_string_stream.str() << "]" << std::endl;

						g_fp_request_buy_item_for_item_market(DEFAULT_WALLET_TYPE, target.second, slot_index, sell_info_count, 0);
					}
				}
			}
		}
	}

	return g_fp_lua_gettop(lua_state);
}

BOOL APIENTRY DllMain(HMODULE module, DWORD reason, void* reserved)
{
	if (reason != DLL_PROCESS_ATTACH)
		return FALSE;

	FILE* console_stream = nullptr;

	::AllocConsole();
	::SetConsoleTitle(APPLICATION_NAME);
	::freopen_s(&console_stream, "conout$", "w", stdout);

	std::cout << "Hello, world!" << std::endl;

	if (::MH_Initialize() != MH_OK)
	{
		std::cout << "Failed to initialize hook library." << std::endl;

		return 0;
	}

	if (::MH_CreateHook(((void*) ATA_LUA_GETTOP), &hf_lua_gettop, reinterpret_cast<void**>(&g_fp_lua_gettop)) != MH_OK)
	{
		std::cout << "Failed to create `lua_gettop` hook." << std::endl;

		return 0;
	}

	if (::MH_EnableHook(MH_ALL_HOOKS) != MH_OK)
	{
		std::cout << "Failed to enable hooks." << std::endl;

		return 0;
	}

	return TRUE;
}
Small Usage Guide

Modify the g_targets variable and add the items you want to be purchased. Go to the Heidel (important, I've hardcoded the territory key cuz lazy) Marketplace and press NUMPAD 6. You should see "Mark Market state is now `1`." in the console. It will now buy all the items possible (uses the warehouse money, also hardcoded). Take care, don't let it buy meme frags overnight as you will go bankrupt (I got about 1k meme frags per hour).

The only big thing that is not implemented is a way to check if a purchase was successful or not. I didn't want to bother with the shitty lua stuff so I decided to leave it out.

The speedhack is pretty simple, use NUMPAD 7 and NUMPAD8 to de/increase your animation speed in 0.25-steps and NUMPAD 9 to toggle the hack.

Don't forget to disable the hack (NUMPAD 9) before switching channels/characters/joining RBF or the client will crash.

I've also attached a binary version, if you don't want to compile it yourself.
Inject it with your favourite DLL injector during the Xigncode Splash.
(Or use Xenos with 750 ms delay to automatically do it for you).

Have fun.

Edit: I've also attached the whole source folder (Mark-Source.rar).
Should have all dependencies included. Open Solution with Visual Studio 2017 and hit compile.

Edit 2: Cause I was asked in Discord: Yes, you can do other stuff on your computer while using the bot. And you shouldn't hit NUMPAD 6 during that time as this will toggle the market bot even when the game is not focused (again, I'm lazy).

Could someone help me how I can make it work? thank you
Tripple2 is offline  
Old 01/17/2019, 05:09   #160
 
elite*gold: 0
Join Date: Mar 2011
Posts: 6
Received Thanks: 0
Hey,
not sure but I think I found the new Localplayer: 00000001433E4058.
paxi123 is offline  
Old 01/22/2019, 18:30   #161
 
elite*gold: 0
Join Date: Feb 2018
Posts: 1
Received Thanks: 0
Quote:
Originally Posted by KaliMinion View Post
Alright, well, I learned how to find GetTop:

Code:
#define ATA_LUA_GETTOP		0x0000000141576A80
/* Search: ToString > xrefs to aToString > Generate Pseudocode >
Line above tostring, look for sub_xxxxxxxxx, double click, should look like:

return (*(_QWORD *)(a1 + 16) - *(_QWORD *)(a1 + 24)) >> 4; */
one down, 10 to go? That first one was only easy because of documentation, the rest... no clue.

I'm trying to cross reference the BDO Lua files, but the pseudocode doesn't seem to match up very easily to what I examine.

Code:
#define ATA_REQUEST_ITEM_MARKET_SELL_INFO			0x0000000141964250 // Search: requestItemMarketSellInfo
#define ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_COUNT		0x00000001419640F0 // Search: getItemMarketSellInfoInClientCount
#define ATA_GET_ITEM_MARKET_SELL_INFO_IN_CLIENT_BY_INDEX	0x0000000141964160 // Search: getItemMarketSellInfoInClientByIndex
#define ATA_REQUEST_BUY_ITEM_FOR_ITEM_MARKET			0x0000000141964188 // Search: requestBuyItemForItemMarket
#define ATA_IS_BIDDING_ITEM					0x0000000141963DB0 // Search: isBiddingItem
#define ATA_IS_BIDDING_JOIN_TIME				0x0000000141963E80 // Search: isBiddingJoinTime
#define ATA_GET_ITEM_MARKET_NO					0x0000000141963E70 // Search: getItemMarketNo
#define ATA_IS_BIDDING_JOIN_ITEM				0x0000000141964148 // Search: isBiddingJoinItem
#define ATA_GET_ONE_PRICE					0x0000000141963DA0 // Search: getOnePrice
#define ATA_WAREHOUSE_MONEY_FROM_NPC_SHOP			0x0000000141994450 // Search: warehouse_moneyFromNpcShop_s64

// However these aren't correct because when I press Num6 the game instantly freezes

#define ADA_LOCAL_PLAYER					0x00000001421F5260 // Search: FromClient_consoleQuickSlot > xrefs to aFromclient_c_2 > scroll up until you find [mov   rax, cs:qword_xxxxxxxxx]

// Local Player should be correct
-----------------------------------------

Such a proud moment, *sniff*



-----------------------------------------

Well, I managed to get this far tonight.



It can read the amount of silver in your current Heidel warehouse, and when an item is ready to bid I believe it is trying to execute the command for it, as when a Value Pack went up, about 30 seconds later it froze, so I'm not quite there yet.

So confusing, think I'll manage to get it with trial and error here in a few days, then I just have to document how I found those addresses so I don't forget how to update it in the future. I think...
i follow this, and now im stuck when its start bidding.

it crash when try to call isBiddingJoinItem address. which address has u change before it work and start bidding?
Jombreng is offline  
Old 01/26/2019, 13:09   #162
 
elite*gold: 0
Join Date: Sep 2009
Posts: 73
Received Thanks: 1
help me please...
i took the code, copied to new file text and editted (put all the items i wish to buy).
now what? how i activate it?
ariel9016 is offline  
Old 01/28/2019, 02:46   #163
 
elite*gold: 0
Join Date: Jan 2019
Posts: 5
Received Thanks: 0
Hello,

Anyone can give me a tip on how to find ADA_LOCAL_PLAYER address?

I searched for: FromClient_consoleQuickSlot
Then I did an xrefs on aFromclient_c_2
Then I scrolled up until I found this:



KaliMinion had this in comment next to ADA_LOCAL_PLAYER:
// Search: FromClient_consoleQuickSlot > xrefs to aFromclient_c_2 > scroll up until you find [mov rax, cs:qword_xxxxxxxxx]
Which is what I did.

But then when I inject, and attempt to activate the hack, it freeze.
It can only be this address since I commented out everything else except ATA_LUA_GETTOP to make sure nothing else was causing the crash.
ATA_LUA_GETTOP is working properly I assume since I would get an error message when it attempts to hook at launch.

I tried a few other addresses but I always get the same result.
Anyone can give me a hint?
MadMan3 is offline  
Old 01/28/2019, 02:58   #164
 
elite*gold: 0
Join Date: Jan 2016
Posts: 290
Received Thanks: 33
if you actually read the code you would know whats wrong with it
ruikangzhu1990 is offline  
Old 01/28/2019, 03:45   #165
 
elite*gold: 0
Join Date: Jan 2019
Posts: 5
Received Thanks: 0
Quote:
if you actually read the code you would know whats wrong with it
Thanks for your help.
I'm glad you came by to give us this relevant reply.

The world need more people like you.
MadMan3 is offline  
Reply


Similar Threads Similar Threads
BDO-PSERVER incls. Ninja/Kuno OgreFest BDO
07/16/2016 - Black Desert - 5 Replies
BDO Pserver Stats idk? exp is pretty damn High... Starter pack incl. etc ? im not the owner just found it and wanted to share by the way post if the server works for u :) if not i may help yah :)



All times are GMT +1. The time now is 01:14.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.