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

EclipsedFlow

Известный
Проверенный
1,045
476
Как сделать задержку перед отправкой пакета?
C++:
//пример
sendFake();
//задерка 100 милисекунд
sendFuck();
 

legendabrn

Известный
Проверенный
120
170
Как сделать задержку перед отправкой пакета?
C++:
//пример
sendFake();
//задерка 100 милисекунд
sendFuck();
Sleep(100);
но перед этим создай поток что бы не зафризило игру
или же
Разработчики, только перешедшие с клео\луа на C++ негодуют из-за необходимости использовать разного рода таймеры и лапшу из GetTickCount'ов вместо полюбившихся функций wait. Но особо ярых фанатов клео это не устраивает, отчего они начинают использовать потоки ради функций вроде Sleep для того чтобы не блокировать цикл игры. Однако это не безопасно. Функции ни GTA ни SAMP'а абсолютно не предназначены для использования в разных потоках и их использование может привести к рандомным крашам.

Выход есть!

Example:
#include <string>
#include <chrono>

#include "Yet-another-hook-library/hook.h"
#include "sampapi/CChat.h"

#include "coro_wait/coro_wait.h"

using namespace sampapi::v037r1;

void foo() {
    using namespace std::chrono_literals;
    CChat *&pChat = RefChat();

    while (!pChat) {
        this_coro::wait(100ms);
    }

    unsigned int counter = 0;
    while (true) {
        pChat->AddMessage(-1, (std::string("Hello ") + std::to_string(counter)).c_str());
        counter++;

        this_coro::wait(1s);
    }
}

void CGame_Process_hk() {
    static coro_wait instance{ foo };

    instance.process();
}

class coro_wait_example {
public:
    coro_wait_example() {
        using CGame_Process_t = void(__cdecl*)();
        CGame_Process_t CGame_Process = reinterpret_cast<CGame_Process_t>(0x53BEE0);

        static hook CGame_Process_hook(CGame_Process, CGame_Process_hk);
    }
} coro_wait_example;

Выполнение функции foo приостанавливается на время, переданное функции this_coro::wait, и продолжается с того же места. Все это работает в одном потоке, благодаря чему можно не переживать за потокобезопасность вызываемых внутри функций.
В бесконечных или очень больших циклах требуется вызывать wait(0), все по канонам клео.
Функция coro_wait::process должна вызываться в потоке игры (перехваченном как в примере, либо в функции mainloop для SF API).

Требуется библиотека Boost.Context!

Исходный код:


хуки
sampapi
 
  • Нравится
Реакции: Vintik
У

Удалённый пользователь 123482

Гость
В какой адрес пишет опкод 0B56: set_game_key 1@ state 2@ или какую функцию вызывает
 

Mitrel123

Новичок
1
0
ENG:
How can I NOP RemovePlayerFromVehicle from C++? I have tried getting the opcodes from s0beit and finding in CE the address of RemovePlayerFromVehicle by creating a pointer with samp.dll+opcode however I didn’t have success. I’m pretty new to samp hacking scene and I am trying to develop a fully internal cheat.

RU:

Как я могу NOP RemovePlayerFromVehicle из C ++? Я попытался получить коды операций из s0beit и найти в CE адрес RemovePlayerFromVehicle, создав указатель с кодом операции samp.dll +opcode, но мне это не удалось. Я новичок в самп-хакерской сцене и пытаюсь разработать полностью внутренний чит.
 

Yuriy Code

Известный
753
929
Как получить CVehicle авто по ID?
В CPools есть:
virtual CVehicle* GetVehicle ( unsigned long ulID ) = 0;
virtual CVehicle* GetVehicle ( DWORD* pGameInterface ) = 0;
Пытался хендл авто вписывать в GetVehicle, SAMP крашит...
 

yurathe

Новичок
1
0
1.Ваш вопрос: Можно пожалуйста узнать как сделать что был шаблон "Консольное приложение Win32". При нажатие установки пакетов, каждый из пакетов выдает ошибку.
загружено.png
 

loganhackerdff

Известный
868
519
В какой адрес пишет опкод 0B56: set_game_key 1@ state 2@ или какую функцию вызывает
C++:
enum etInput
{
    Right = 0x0,
    Left = 0x1,
    Backwards = 0x2,
    Forward = 0x3,
    Look_Right = 0x4,
    Look_Left = 0x5,
    Look_Down = 0x6,
    Look_Up = 0x7,
    Action = 0x8,
    Previous_Weapon = 0xA,
    Aim_Weapon = 0xC,
    Next_Weapon = 0xE,
    Group_CTRL_Forward = 0x10,
    Group_CTRL_Back = 0x12,
    Conversatin_NO = 0x14,
    Conversation_YES = 0x16,
    Change_Camera = 0x1A,
    Jump = 0x1C,
    Enter_Exit = 0x1E,
    Sprint = 0x20,
    Fire = 0x22,
    Crouch = 0x24,
    Look_Behind = 0x26,
    Unused = 0x28,
    Walk = 0x2A
};
void SetGameKeyState(BYTE key, BYTE state)
{
    *(uint8_t*)(0xB73458 + key) = state;
}
BYTE GetGameKeyState(BYTE key)
{
    return *(uint8_t*)(0xB73458 + key);
}
 
  • Нравится
Реакции: Vintik и lemonager