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

Шурик

Активный
216
43
Прошу помочь с адаптацией данного кода на SAMPFUNCS (C++):
CLEO:
{$CLEO .cs}

//-------------MAIN---------------
thread "map"
0000: NOP
wait 2000
if
0AAB:   file_exists "CLEO\map.ini"
else_jump @Label0000A3
0AF4: 4@v = read_string_from_ini_file "cleo\map.ini" section "MAP" key "file"
0AF0: 28@ = get_int_from_ini_file "cleo\map.ini" section "MAP" key "key"
0AF0: 29@ = get_int_from_ini_file "cleo\map.ini" section "MAP" key "alpha"
0AF0: 27@ = get_int_from_ini_file "cleo\map.ini" section "MAP" key "toggle"

:Label0000A3
0390: load_txd_dictionary "MAP"
038F: load_texture 4@v as 1 // Load dictionary with 0390 first
038F: load_texture "pla" as 2 // Load dictionary with 0390 first
038F: load_texture "MAR" as 3 // Load dictionary with 0390 first

:Label0000C3
wait 0
call @Label0005AC 1 0
if and
  27@ == 1
key_down 28@
else_jump @Label000117
call @Label000462 0 30@
if
  30@ == 0
else_jump @Label000117
0B12: 31@ = 31@ XOR 1
wait 100

:Label000117
if and
  31@ == 1
  27@ == 1
else_jump @Label000149
call @Label0005AC 1 1
call @Label00019F 1 29@

:Label000149
if and
  27@ == 0
key_down 28@
else_jump @Label000198
call @Label000462 0 30@
if
  30@ == 0
else_jump @Label000198
call @Label0005AC 1 1
call @Label00019F 1 29@

:Label000198
jump @Label0000C3

:Label00019F
03F0: enable_text_draw 1
03E3: set_texture_to_be_drawn_antialiased 1
038D: draw_texture 1 position 320.0 224.0 size 448.0 448.0 RGBA 255 255 255 0@
call @Label0002C5 0 23@ 24@ 25@
if and
   not 23@ == 0.0
   not 24@ == 0.0
else_jump @Label000204
gosub @Label0003A3

:Label000204
0A8D: 30@ = read_memory 13098730 size 1 virtual_protect 0
if
  30@ == 1
else_jump @Label00025D
call @Label0004B5 0 23@ 24@ 25@
if and
   not 23@ == 0.0
   not 24@ == 0.0
else_jump @Label00025D
gosub @Label0003A3

:Label00025D
Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
3@ = Actor.Angle($PLAYER_ACTOR)
3@ -= 180.0
3@ *= -1.0
0@ = 2
gosub @Label00040C
if
0AB6: store_target_marker_coords_to 1@ 2@ 3@ // IF and SET
else_jump @Label0002C0
0@ = 3
3@ = 0
gosub @Label00040C

:Label0002C0
ret 0

:Label0002C5
12@ = 9999.0
0@ = 0

:Label0002D6
0085: 1@ = 0@ // (int)
1@ *= 56
1@ += 13103448
1@ += 16
0A8D: 2@ = read_memory 1@ size 4 virtual_protect 0
1@ += 4
0A8D: 3@ = read_memory 1@ size 4 virtual_protect 0
1@ += 4
0A8D: 4@ = read_memory 1@ size 4 virtual_protect 0
Actor.StorePos($PLAYER_ACTOR, 5@, 6@, 7@)
050A: 8@ = distance_between_XYZ 2@ 3@ 4@ and_XYZ 5@ 6@ 7@
if
0025:   12@ > 8@ // (float)
else_jump @Label000380
0087: 12@ = 8@ // (float)
0087: 9@ = 2@ // (float)
0087: 10@ = 3@ // (float)
0087: 11@ = 4@ // (float)

:Label000380
0@ += 1
  0@ > 31
else_jump @Label0002D6
ret 3 9@ 10@ 11@

:Label0003A3
23@ /= 13.4
23@ += 320.0
24@ /= -13.4
24@ += 224.0
03F0: enable_text_draw 1
03E3: set_texture_to_be_drawn_antialiased 1
038E: draw_box_position 23@ 24@ size 6.0 6.0 RGBA 0 0 0 255
038E: draw_box_position 23@ 24@ size 5.0 5.0 RGBA 255 0 0 255
return

:Label00040C
1@ /= 13.4
1@ += 320.0
2@ /= -13.4
2@ += 224.0
03F0: enable_text_draw 0
03E3: set_texture_to_be_drawn_antialiased 1
074B: draw_texture 0@ position 1@ 2@ scale 10.0 10.0 angle 3@ color_RGBA 255 255 255 255
return

:Label000462
0AA2: 1@ = load_library "samp.dll" // IF and SET
1@ += 2203880
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 8
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 4
0A8D: 1@ = read_memory 1@ size 1 virtual_protect 0
ret 1 1@

:Label0004B5
10@ = 13098328
6@ = 0

:Label0004C6
0085: 14@ = 6@ // (int)
14@ *= 160
0A8E: 13@ = 10@ + 14@ // int
0A8E: 11@ = 13@ + 48 // int
0A8D: 3@ = read_memory 11@ size 4 virtual_protect 0
0A8E: 11@ = 13@ + 52 // int
0A8D: 4@ = read_memory 11@ size 4 virtual_protect 0
0A8E: 11@ = 13@ + 56 // int
0A8D: 5@ = read_memory 11@ size 4 virtual_protect 0
if and
   not 3@ == 0.0
   not 4@ == 0.0
else_jump @Label000589
if or
  3@ == 1099.551
  4@ == 1601.497
  5@ == 11.44687
  3@ == 2695.624
  4@ == -1704.688
  5@ == 10.844
else_jump @Label00059E

:Label000589
6@ += 1
  6@ > 32
else_jump @Label0004C6

:Label00059E
ret 3 3@ 4@ 5@

:Label0005AC
0AA2: 1@ = load_library "samp.dll" // IF and SET
1@ += 2203876
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 8
if
  0@ == 1
else_jump @Label0005FC
0A8C: write_memory 1@ size 4 value 0 virtual_protect 1
jump @Label000607

:Label0005FC
0A8C: write_memory 1@ size 4 value 2 virtual_protect 1

:Label000607
ret 0
 

damag

Женюсь на официантке в моем любимом баре
Проверенный
1,152
1,199
Как отправить пулю в игрока? Не на буллет синхре, а через getsamp. На луа есть типа setcharammo. А нужно сделать как-то на c++
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Помогите пожалуйста ImGui не ладит с русскими символами.

Это добавил.
C++:
case WM_CHAR:
         wchar_t wch;
        MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (char*)&wParam, 1, &wch, 1);
        io.AddInputCharacter(wch);
        break;

В ImGui все нормально.
XMwE5EY.jpg


А вот, что записывается в переменную.
ITo2IHR.jpg


C++:
char g_SMSMessage[5][512] = {
  "",
  "",
  "",
  "",
  ""
};

ImGui::InputText("1", g_SMSMessage[i], _countof(g_SMSMessage[i]));
 

Неадекватная сова

Известный
Проверенный
208
147
Помогите пожалуйста ImGui не ладит с русскими символами.

Это добавил.
C++:
case WM_CHAR:
         wchar_t wch;
        MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, (char*)&wParam, 1, &wch, 1);
        io.AddInputCharacter(wch);
        break;

В ImGui все нормально.
XMwE5EY.jpg


А вот, что записывается в переменную.
ITo2IHR.jpg


C++:
char g_SMSMessage[5][512] = {
  "",
  "",
  "",
  "",
  ""
};

ImGui::InputText("1", g_SMSMessage[i], _countof(g_SMSMessage[i]));
C++:
string UTF8ToANSI(string s)
{
    BSTR    bstrWide;
    char*   pszAnsi;
    int     nLength;
    const char *pszCode = s.c_str();

    nLength = MultiByteToWideChar(CP_UTF8, 0, pszCode, strlen(pszCode) + 1, NULL, NULL);
    bstrWide = SysAllocStringLen(NULL, nLength);

    MultiByteToWideChar(CP_UTF8, 0, pszCode, strlen(pszCode) + 1, bstrWide, nLength);

    nLength = WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, NULL, 0, NULL, NULL);
    pszAnsi = new char[nLength];

    WideCharToMultiByte(CP_ACP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL);
    SysFreeString(bstrWide);

    string r(pszAnsi);
    delete[] pszAnsi;
    return r;
}
 
  • Нравится
Реакции: LaRossa

Receiver

leet-cheats 👑
Проверенный
619
882
C++:
bool functeion_crash = false;

ImGui::Checkbox("Крашить игроков", &functeion_crash);

reg->SetRegister("crashit", REG_DWORD, &functeion_crash);

Вместо 1 и 0, в реестр сохраняется 17601 и 17602, как это исправить ?
 

astap_

Известный
Всефорумный модератор
626
601
With SFPlugin C++:

How to get the vehicle of the vehicle I enter in?

How to send it through T> {enter}?
u can hook RPC_EnterVehicle:
Код:
bool CALLBACK outRPC(stRakNetHookParams *params) 
{
    if (params->packetId == RPCEnumeration::RPC_EnterVehicle) 
    {
        int16 vehID;
        bool asPassenger;
        char buf[255];

        params->bitStream->ResetReadPointer(); 
        params->bitStream->Read(vehID);
        params->bitStream->Read(asPassenger);
        params->bitStream->ResetReadPointer();

        sprintf(buf, "I enter the car ID: %i", vehID);
        SF->getSAMP()->getPlayers()->pLocalPlayer->Say(buf);
    };
    return true; 
};

SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_OUTCOMING_RPC, outRPC); // in mainloop()
 

Receiver

leet-cheats 👑
Проверенный
619
882
Измени тип переменной на DWORD

C++:
DWORD functeion_crash = false;

ImGui::Checkbox("Крашить игроков", &functeion_crash); << Ошибка

reg->SetRegister("crashit", REG_DWORD, &functeion_crash);

Код:
error C2664: "bool ImGui::Checkbox(const char *,bool *)": невозможно преобразовать аргумент 2 из "DWORD *" в "bool *"
 

Неадекватная сова

Известный
Проверенный
208
147
Как чисто по адресам памяти (сигнлплеер) заморозить игрока (отключить ему все анимации, например бега, прыжка и т.п.)? Я хочу сделать айрбрейк, всё работает, но анимации сильно (очень сильно) мешают, меняя направление движения.
C++:
#define FUNC_MakePlayerSafe 0x56e870
#define ACTOR_POINTER_SELF        0x00B7CD98
void GTAfunc_TogglePlayerControllable(bool bToggle)
{
    DWORD func = FUNC_MakePlayerSafe;
    float fTen = 10.0f;
    _asm
    {
        mov ecx, ACTOR_POINTER_SELF
            push        fTen
            push        bToggle
            call        func
    }
}

static bool state = false;
state ^= true;
GTAfunc_TogglePlayerControllable(state ? 1 : 0);
 
Последнее редактирование:

Vesca

Новичок
20
0
How can I edit a text before sending it to server?
If I type [/command someText] i want to edit it into: [/command Some text!].
I mean I want to parse and edit the text before sending it to server.
 

Receiver

leet-cheats 👑
Проверенный
619
882
C++:
DWORD functeion_crash = false;

ImGui::Checkbox("Крашить игроков", &functeion_crash); << Ошибка

reg->SetRegister("crashit", REG_DWORD, &functeion_crash);

Код:
error C2664: "bool ImGui::Checkbox(const char *,bool *)": невозможно преобразовать аргумент 2 из "DWORD *" в "bool *"

>> Проблема не решена. <<
 

SR_team

like pancake
BH Team
4,798
6,470
Что я делаю не так? Очень странно всё работает (может я дебил, не исключено). Жмёшь стрелку вверх - едет вниз, жмёшь стрелку вниз - едет вниз, WASD вообще почти ничего не делают (только если в прыжке включить пролетит немного и остановится в воздухе).

C++:
void Airbreak() {
    DWORD CPed = *(DWORD*)0xB6F5F0;
    GTAfunc_TogglePlayerControllable(1);
    byte mod = 20;
    while (1) {
        if (aAirbreak == 0) {
            break;
            GTAfunc_TogglePlayerControllable(0);
        }

        DWORD x = (CPed + 0x14) + 0x30;
        DWORD y = (CPed + 0x14) + 0x34;
        DWORD z = (CPed + 0x14) + 0x38;

        if (GetAsyncKeyState(0x57)) { // W
            x += mod;
            *(DWORD*)x = x;
        }
        if (GetAsyncKeyState(0x53)) { // S
            x -= mod;
            *(DWORD*)x = x;
        }
        if (GetAsyncKeyState(0x41)) { // A
            y += mod;
            *(DWORD*)y = y;
        }
        if (GetAsyncKeyState(0x44)) { // D
            y -= mod;
            *(DWORD*)y = y;
        }
        if (GetAsyncKeyState(VK_UP)) { // Arrow up
            z += mod;
            *(DWORD*)z = z;
        }
        if (GetAsyncKeyState(VK_DOWN)) { // Arrow down
            z -= mod;
            *(DWORD*)z = z;
        }
       
        // это чтоб не падал и не двигался сам по себе никуда
        *(DWORD*)x = x;
        *(DWORD*)y = y;
        *(DWORD*)z = z;
    }
    return;
}
https://git.prime-hack.net/SR_team/AirBreak_exe/src/branch/master/airbreak.cpp#L314