ASI Spawn Button Hide

undefine

Участник
Автор темы
34
17
надо было удалить эти кнопки
1761763684255.png


сурса нету, делал давно

asi вот:
 

Вложения

  • deletewindowspawn.asi
    11 KB · Просмотры: 39

everlight

Известный
291
57
it's good but what if you have to press everytime spawn when you enter your password? Some servers do not require the SPAWN button to be pressed, while some do require it when the password is entered.
 

менталейшн

Известный
1,732
363
it's good but what if you have to press everytime spawn when you enter your password? Some servers do not require the SPAWN button to be pressed, while some do require it when the password is entered.
The script was published by a Russian-speaking person, we only have a dozen servers where you need to press the Spawn button, usually the server-side code does everything for you, if it's normal.
 

timoxa viktorov

Новичок
3
4
source -

C++:
#include <windows.h>

#define PATCH_OFFSET 0x753F7
#define PATCH_BYTE 0x31

DWORD old = 0;
BYTE orig = 0;

BOOL WINAPI DllMain(HINSTANCE h, DWORD r, LPVOID) {
    if (r == DLL_PROCESS_ATTACH) {
        DisableThreadLibraryCalls(h);
        
        HMODULE m = GetModuleHandleA("samp.dll");
        if (m) {
            LPVOID a = (BYTE*)m + PATCH_OFFSET;
            orig = *(BYTE*)a;
            VirtualProtect(a, 1, 0x40, &old);
            *(BYTE*)a = PATCH_BYTE;
            VirtualProtect(a, 1, old, &old);
        }
    } else if (r == DLL_PROCESS_DETACH) {
        HMODULE m = GetModuleHandleA("samp.dll");
        if (m) {
            LPVOID a = (BYTE*)m + PATCH_OFFSET;
            DWORD t;
            VirtualProtect(a, 1, 0x40, &t);
            *(BYTE*)a = orig;
            VirtualProtect(a, 1, t, &t);
        }
    }
    return 1;
}
 

Stiled

Известный
9
4
По многочисленным просьбам работях создал данное чудо на Lua
Установка:
Код:
Закинуть файл в папку moonloader
 

Вложения

  • deletewindowspawn.lua
    4.1 KB · Просмотры: 14
  • windowdeleted.png
    windowdeleted.png
    1.7 MB · Просмотры: 44
  • sa-mp-059.png
    sa-mp-059.png
    1.7 MB · Просмотры: 44
Последнее редактирование:

AdCKuY_DpO4uLa

Адский дрочер
Друг
387
852
ну типа:
Lua:
function emul_requestclass()
    local bs = raknetNewBitStream()
    raknetBitStreamWriteInt8(bs, 1)
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteInt32(bs, 2)
    raknetBitStreamWriteInt8(bs, 0)
    raknetBitStreamWriteFloat(bs, 0)
    raknetBitStreamWriteFloat(bs, 0)
    raknetBitStreamWriteFloat(bs, 0)
    raknetBitStreamWriteFloat(bs, 0.0)
    raknetBitStreamWriteInt32(bs, 0)
    raknetBitStreamWriteInt32(bs, 0)
    raknetBitStreamWriteInt32(bs, 0)
    raknetBitStreamWriteInt32(bs, 0)
    raknetBitStreamWriteInt32(bs, 0)
    raknetBitStreamWriteInt32(bs, 0)
    raknetEmulRpcReceiveBitStream(128, bs)
    raknetDeleteBitStream(bs)
end
И кнопки удалятся
Запускаю друна на r4, твоя тарантас машина не пых-пых 😭😭
 

AdCKuY_DpO4uLa

Адский дрочер
Друг
387
852
А оригинальный .asi поддерживает все версии сампа?
Я к тому, что это ебучий костыль. В оригинале достаточно добавить оффсеты с других версий. Чтобы завести это на r2, r4, r4-2 и, возможно, dl (хз, есть ли там SF), нужно перелопачивать весь SF. Раз уж даешь реализацию на муне, будь добр хотя бы писать адекватный код, а не этот костыль, который потом все дети будут брать себе. Делай мир лучше - пиши красиво
 
  • Нравится
Реакции: Орк и libsamp.so

libsamp.so

Известный
10
4
Поддержка R1 R2 R3 R3-1 R4 R4-2 R5
C++:
#include "pch.h"
#include <unordered_map>
#include <string>

std::string sampVersion = "unknown";
BYTE orig = 0;
DWORD old = 0;
DWORD PATCHBYTE = 0x31;
uintptr_t patchOffset = 0;

struct sampversion {
    std::string version;
    uintptr_t offset;
};

std::unordered_map<uintptr_t, sampversion> sampVersions = {
    { 0x31DF13, { "0.3.7-R1",   0x714EF } },
    { 0x3195DD, { "0.3.7-R2",   0x7158F } },
    { 0xCC490,  { "0.3.7-R3",   0x753F7 } },
    { 0xCC4D0,  { "0.3.7-R3-1", 0x753F7 } },
    { 0xCBCB0,  { "0.3.7-R4",   0x75B37 } },
    { 0xCBCD0,  { "0.3.7-R4-2", 0x75B66 } },
    { 0xCBC90,  { "0.3.7-R5",   0x75B06 } }
};

bool getSampVersion(HMODULE samp) {
    char* base = reinterpret_cast<char*>(samp);
    auto* dos = reinterpret_cast<IMAGE_DOS_HEADER*>(base);
    auto* nt = reinterpret_cast<IMAGE_NT_HEADERS*>(base + dos->e_lfanew);
    DWORD entryRVA = nt->OptionalHeader.AddressOfEntryPoint;

    auto it = sampVersions.find(entryRVA);
    if (it == sampVersions.end()) {
        return false;
    }
    sampVersion = it->second.version;
    patchOffset = it->second.offset;
    return true;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    if (ul_reason_for_call == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hModule);
        HMODULE samp = GetModuleHandleA("samp.dll");
        if (samp and getSampVersion(samp)) {
            LPVOID addr = (BYTE*)samp + patchOffset;
            orig = *(BYTE*)addr;
            VirtualProtect(addr, 1, PAGE_EXECUTE_READWRITE, &old);
            *(BYTE*)addr = PATCHBYTE;
            VirtualProtect(addr, 1, old, &old);
        }
    }
    if (ul_reason_for_call == DLL_PROCESS_DETACH)
    {
        HMODULE samp = GetModuleHandleA("samp.dll");
        if (samp and sampVersion != "unknown") {
            LPVOID addr = (BYTE*)samp + patchOffset;
            DWORD t;
            VirtualProtect(addr, 1, PAGE_EXECUTE_READWRITE, &t);
            *(BYTE*)addr = orig;
            VirtualProtect(addr, 1, t, &t);
        }
    }
    return TRUE;
}
 

Вложения

  • spawnbuttonhide.asi
    17.5 KB · Просмотры: 0

chromiusj

Известный
Модератор
6,027
4,351
Поддержка R1 R2 R3 R3-1 R4 R4-2 R5
C++:
#include "pch.h"
#include <unordered_map>
#include <string>

std::string sampVersion = "unknown";
BYTE orig = 0;
DWORD old = 0;
DWORD PATCHBYTE = 0x31;
uintptr_t patchOffset = 0;

struct sampversion {
    std::string version;
    uintptr_t offset;
};

std::unordered_map<uintptr_t, sampversion> sampVersions = {
    { 0x31DF13, { "0.3.7-R1",   0x714EF } },
    { 0x3195DD, { "0.3.7-R2",   0x7158F } },
    { 0xCC490,  { "0.3.7-R3",   0x753F7 } },
    { 0xCC4D0,  { "0.3.7-R3-1", 0x753F7 } },
    { 0xCBCB0,  { "0.3.7-R4",   0x75B37 } },
    { 0xCBCD0,  { "0.3.7-R4-2", 0x75B66 } },
    { 0xCBC90,  { "0.3.7-R5",   0x75B06 } }
};

bool getSampVersion(HMODULE samp) {
    char* base = reinterpret_cast<char*>(samp);
    auto* dos = reinterpret_cast<IMAGE_DOS_HEADER*>(base);
    auto* nt = reinterpret_cast<IMAGE_NT_HEADERS*>(base + dos->e_lfanew);
    DWORD entryRVA = nt->OptionalHeader.AddressOfEntryPoint;

    auto it = sampVersions.find(entryRVA);
    if (it == sampVersions.end()) {
        return false;
    }
    sampVersion = it->second.version;
    patchOffset = it->second.offset;
    return true;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    if (ul_reason_for_call == DLL_PROCESS_ATTACH)
    {
        DisableThreadLibraryCalls(hModule);
        HMODULE samp = GetModuleHandleA("samp.dll");
        if (samp and getSampVersion(samp)) {
            LPVOID addr = (BYTE*)samp + patchOffset;
            orig = *(BYTE*)addr;
            VirtualProtect(addr, 1, PAGE_EXECUTE_READWRITE, &old);
            *(BYTE*)addr = PATCHBYTE;
            VirtualProtect(addr, 1, old, &old);
        }
    }
    if (ul_reason_for_call == DLL_PROCESS_DETACH)
    {
        HMODULE samp = GetModuleHandleA("samp.dll");
        if (samp and sampVersion != "unknown") {
            LPVOID addr = (BYTE*)samp + patchOffset;
            DWORD t;
            VirtualProtect(addr, 1, PAGE_EXECUTE_READWRITE, &t);
            *(BYTE*)addr = orig;
            VirtualProtect(addr, 1, t, &t);
        }
    }
    return TRUE;
}
ты просто
IMG_20260708_131959_846.jpg