Другое С/С++ Вопрос - Ответ

Roger571

Известный
58
31
как изменить текст уже отрендеренного текста?
Смотря какого текста.
Если игрового, то через память.
А через д3д хук - сам решаешь, шо рендерить.

я уже отрендерил текст через д3д, как мне изменить текст на другой?
Ты можешь изменять данные каждый раз при вызове proxyIDirect3DDevice9::Present
Можешь посмотреть, как это реализовано в собейте.
 

_Vine_

Активный
154
57
Может можно выделить память (Чтобы при выгрузке функция осталось в процессе), записать туда функцию WndProc которая вызывает следующий WndProc, что бы не сломать очередь?
Тоже об этом думал, но столкнулся с рядом проблем.
1) Не совсем уверен, правильно ли создаю функцию в динамической памяти, может быть есть более правильный способ?
C++:
void func(){
// code
}

int main(){
    LPVOID memory = VirtualAlloc(0, /* Размер функции в байтах */, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    DWORD oldProtect;
    VirtualProtect(func, /* Размер функции*/, PAGE_EXECUTE_READWRITE, &oldProtect);
    memcpy(memory, func, /*  Размер функции */);
    VirtualProtect(func, /* Размер функции */, oldProtect, 0);
     // memory  - указатель на копию функции func в динамической памяти
}
2) С выделением функции и ее вызовом проблем нет, до выгрузки плагина из игры.
После выгрузки плагина из игры при первом вызове WNDPROC происходит краш.
То есть, если выгрузить плагин, и ничего не делать(не двигать курсор, не нажимать клавиши на клавиатуре), то краша, пока, не будет, до тех пор пока что то не начать делать.
Указатель на оригинальный WNDPROC выделяю динамически, сообщение в чат вовсе убрал.
Смотрел в отладчике, после выгрузки плагина указатель на указатель на оригинальный WNDPROC становится недоступным, тк он находится в самом плагине, который был выгружен. Ну, и, собственно, из за этого и происходит краш. Как исправить не знаю, может кто подскажет?
 

Rjx13

Известный
Проверенный
224
160
Как убрать progressbar голода и аналогично, как получить текущее состояние голода?
 

SR_team

like pancake
BH Team
4,720
6,370
Lua:
local talb = {
hhh = "huy",
dd = "pd"
}
Как сделать такой-же массив в c++?
C++:
struct talb_t{
    std::string hhh = "huy";
    std::string dd = "pd";
};
Это просто структура, что бы к ней обращаться нужно еще и переменную создать
C++:
talb_t talb;
Далее можно юзать
Код:
SF->Log(talb.hhh);
talb.dd = "new dd";
 

-raymond-

Известный
110
9
не могу понять что значат параметр bs.Write(true);, и bs.Write(3);
C++:
BitStream bs;
    bs.Write(true);
    bs.Write(TargetID);
    bs.Write((float)damage);
    bs.Write(weapon_id);
    bs.Write(3);
    SF->getRakNet()->SendRPC(RPCEnumeration::RPC_GiveTakeDamage, &bs);
 

Babayka2016

Известный
51
2
Всем привет!

Есть такой вопрос:

Как можно получить указатель на машину, дверь которой дергает игрок?

К примеру, есть машина, она закрыта. Когда мы к ней подходим и пытаемся нажать на G / просто сесть в машину - он просто дергает ручку и не может в неё сесть. Вот нужно получить указатель на эту машину.

Или же, нужен offset для получения указателей всех машин в зоне прорисовки.

Помогите пожалуйста!

Нигде не могу найти.

P.S НУЖЕН ИМЕННО АДРЕС. БЕЗ ИСПОЛЬЗОВАНИЯ Sampfuncs, lua и прочего.
 

Roger571

Известный
58
31
не могу понять что значат параметр bs.Write(true);, и bs.Write(3);
C++:
BitStream bs;
    bs.Write(true);
    bs.Write(TargetID);
    bs.Write((float)damage);
    bs.Write(weapon_id);
    bs.Write(3);
    SF->getRakNet()->SendRPC(RPCEnumeration::RPC_GiveTakeDamage, &bs);
Посмотри структуру GiveTakeGamage, клац
True - булево значение, говорит о получении урона.
3 - идентификатор кости скелета.
 

Babayka2016

Известный
51
2
Всем привет. Пытаюсь понять, как можно получить указатель на каждый элемент в пуле транспорта.

Полазил по сайтам, нашёл такое:

  • 0xB6F980 - Указатель на начало пула транспорта (CVehicle)
CVehicle
Каждый транспорт как объект, равняется 2584 (0xA18) байтам и начинается с 0xC502AA0.

0xB74494 - Содержит указатель. Этот указатель:
  • +0 = Содержит указатель на первый элемент в пуле CVehicle
  • +4 = Содержит указатель на карту байтов показывающую какие элементы сейчас используются в пуле CVehicle
  • +8 = [dword] максимальное кол-во элементов в пуле CVehicle
  • +12 = [dword] текущее кол-во элементов в пуле CVehicle
Я лишь понял (с помощью 0xB74494 + 8) - что максимально CVehicle'а может быть 710.

Как я могу получить указатель на, к примеру, 5-й или 10-й элемент (из 710) из этого пула?

Типа, 0xB6F980 + 5 / 0xB6F980 + 10?

Помогите, пожалуйста, уже не знаю, куда писать-то
 

Babayka2016

Известный
51
2
Есть ли какой-нибудь offset, чтобы запихнуть игрока в машину?

P.S Без SAMPFUNCS и LUA
 

Howl1337

Известный
236
146
Помогите пожалуйста. Что выбирать чтобы писать dll читы и прочее
Ou92TJM
Imgur(https://imgur.com/a/Ou92TJM)