Вопрос Как можно записать смещение + адрес в пространство имён.

Начинающий
Статус
Оффлайн
Регистрация
4 Фев 2023
Сообщения
11
Реакции[?]
0
Поинты[?]
0
Здравствуйте, недавно захотел покопаться в старенькой но любимой игре, готика 1.
Хотел бы у вас спросить как можно оформить в namespace "смещение + адрес"?

И какие лучше типы данных использовать.

Код:

C++:
#include "includes.h"

/*

    Вот у меня есть смещение + адрес

    Ped Positon Y adress = { 48 } + "GothicMod.exe"+ 0046A3DC
    Ped Position X adress = { 48 } + "GothicMod.exe"+ 0046A3DC
    Ped Position Z adress = { 68 } + "GothicMod.exe"+ 0046A3DC
    Ped Angle adress = { 44 } + "GothicMod.exe"+0046A3DC
  
    Как это можно красиво оформить в пространстве имён?
*/

namespace gothic_offsets {
    namespace localplayer {

    }
}
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,523
Реакции[?]
572
Поинты[?]
8K
C++:
// offsets.hpp.inc
#ifndef OFFSET_ADDRESS
#error zabyl define ebanut
#endif

OFFSET_ADDRESS(player, 0xa, 0xfefabeba);
// ...

// offsets.hpp
#define OFFSET_ADDRESS(name, offset, address) \
    uintptr_t name##_offset = offset; \
    uintptr_t name##_address = address;
#include "offsets.hpp.inc"
#undef OFFSET_ADDRESS

// ^ превращается в
uintptr_t player_offset = 0xa;
uintptr_t player_address = 0xfefabeba;
такая техника называется x-macro, и она очень полезна в случаях когда ты хочешь огромное количество списков/похожих функций.
bad, инклудать нужно только то что ты используешь.
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
4 Фев 2023
Сообщения
11
Реакции[?]
0
Поинты[?]
0
C++:
// offsets.hpp.inc
#ifndef OFFSET_ADDRESS
#error zabyl define ebanut
#endif

OFFSET_ADDRESS(player, 0xa, 0xfefabeba);
// ...

// offsets.hpp
#define OFFSET_ADDRESS(name, offset, address) \
    uintptr_t name##_offset = offset; \
    uintptr_t name##_address = address;
#include "offsets.hpp.inc"
#undef OFFSET_ADDRESS

// ^ превращается в
uintptr_t player_offset = 0xa;
uintptr_t player_address = 0xfefabeba;
такая техника называется x-macro, и она очень полезна в случаях когда ты хочешь огромное количество списков/похожих функций.

bad, инклудать нужно только то что ты используешь.
Спасибо, закрыто
 
Сверху Снизу