extra ws

dszasdasd

Новичок
Автор темы
1
0
Версия SA-MP
  1. Любая
ищу екстру вс с активацией на кнопку желательно в луа
 

Mamashin

Известный
1,001
545
Всё, что мне удалось найти касаемо активации(эксплуатация на свой страх и риск) - https://www.blast.hk/threads/36366/post-356955
Общепринятая ExtraWS на cleo - https://www.blast.hk/threads/4291/ она не имеет активации или деактивации, тем не менее является наиболее валидной в этом плане.
Что касается Lua, могу лишь предложить данный вариант - https://www.blast.hk/threads/33417/
К сожалению, так же не имеет возможной деактивации или активации.
Возможно кто то из форумчан владеет уникальным скриптом Экстры с возможной активацией и деактивацией, но, я в свою очередь могу так же посоветовать вам обратиться к исполнителям BlastHack - https://www.blast.hk/forums/16/?prefix_id[0]=84
 

takiyama

Участник
18
21
написал ExtraWS, только не на луа, а на аси.
Активация/деактивация - F5. Выгрузка из игры с возвратом дефолтных значений - F11.
Будет работать и в одиночке, нет зависимости от сампа.
C++:
#include <Windows.h>
#include <thread>
#include "memwrapper/memwrapper.h"
struct keys {
    bool ews = false;
}keys;

static WNDPROC OrigWnd;

class extra
{
private:
    using CTimerUpdate_t = void(__cdecl*)();
    std::unique_ptr<memwrapper::memhook<CTimerUpdate_t>> pCTimerUpdateHook;
    static void __cdecl CTimerUpdate_hook();
public:
    extra() {
        pCTimerUpdateHook = std::make_unique<memwrapper::memhook<CTimerUpdate_t>>(0x00561B10, CTimerUpdate_hook);
        pCTimerUpdateHook->install();
    };

    ~extra() {
        *reinterpret_cast<char*>(0x5109AC) = 122;
        *reinterpret_cast<char*>(0x5109C5) = 122;
        *reinterpret_cast<char*>(0x5231A6) = 117;
        *reinterpret_cast<char*>(0x52322D) = 117;
        *reinterpret_cast<char*>(0x5233BA) = 117;
        pCTimerUpdateHook->remove();
    };
} xtra;

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    if (uMsg == WM_KEYDOWN && wParam == VK_F5) {
        keys.ews = !keys.ews;
        return true;
    }
    if (uMsg == WM_KEYDOWN && wParam == VK_F11) {
        xtra.~extra();
    }
    return CallWindowProcA(OrigWnd, hwnd, uMsg, wParam, lParam);
}

void __cdecl extra::CTimerUpdate_hook() {
    static bool inited{ false };
    if (!inited) {
        OrigWnd = (WNDPROC)SetWindowLongA(**reinterpret_cast<HWND**>(0xC17054), GWL_WNDPROC, (LONG)WindowProc);
        inited = true;
    }
    if (inited && keys.ews) {
        *reinterpret_cast<char*>(0x5109AC) = 235;
        *reinterpret_cast<char*>(0x5109C5) = 235;
        *reinterpret_cast<char*>(0x5231A6) = 235;
        *reinterpret_cast<char*>(0x52322D) = 235;
        *reinterpret_cast<char*>(0x5233BA) = 235;
    }
    else {
        *reinterpret_cast<char*>(0x5109AC) = 122;
        *reinterpret_cast<char*>(0x5109C5) = 122;
        *reinterpret_cast<char*>(0x5231A6) = 117;
        *reinterpret_cast<char*>(0x52322D) = 117;
        *reinterpret_cast<char*>(0x5233BA) = 117;
    }
    return xtra.pCTimerUpdateHook->call<>();
}
 

Вложения

  • extra.asi
    16 KB · Просмотры: 0
  • Нравится
Реакции: стэч)