CR:MP ASI Amazing amazing++

flupiflufi

Новичок
16
3
Посмотреть вложение 252406
скачал Visual Studio + CMake, прописал дальше эту команду, появилась папка, что дальше делать? Или я что-то не так сделал? Не шарю
Ты не открыл папку, где у тебя код находится скрипта для компилирования он должен примерно так выглядеть твой путь
1726990285659.png


28 00 85 A6 61 63 74 69 6F 6E 01 A4 61 72 65 61
01 A5 69 6E 64 65 78 C0 A8 72 65 73 70 6F 6E 73
65 00 A6 73 6C 6F 74 49 64 06

скорее всего за это отвечает байт который я подчеркнул (после action), но это ещё не точно
Вапарабка спасибо, что помогаешь и отвечаешь, но попытался я там циферки поменять и понял что лучше 01 байт не трогать, поэтому можешь как-то часть кода или как можно сделать чтобы можно было использовать выливание из лейки?
 
Последнее редактирование:

nezperce

Новичок
5
0
Описание

Небольшой плагин для amazing online, который делает геймплей на сервере приятней ;)

Использование

В основном, функции забинжены на цифры от 1 до 5.

1 -> отправляет в чат /anim 69,
2 -> отправляет в чат /drugs,
3 -> использует первый слот инвентаря,
4 -> сжимает машины,
5 -> аниафк (звонкий сигнал обозначает включение функции, наоборот - выключение),

Команды

/st (0-24) -> меняет время
/sw (0-255) -> меняет погоду
/fd (0-3600) -> меняет дальность прорисовки

Прочие фишки

Плагин принудительно отключает светофоры, за которые теперь не приходят штрафы, аналогично с встречными полосами,
так же, отключен урон от падения.

p.s в плагине присутствует автопромокод, кого это не устраивает, приложил исходники ниже

source

Обзор на плагин

Привет снова, а ты не можешь сделать отдельную .asi под сжатие текстур тачки пожалуйста. Я не шарю
 
Последнее редактирование:

PECTOPATOP

Новичок
8
0

waparabka

Известный
Автор темы
97
150
Все равно не понял, еще когда хочу прописать команду то мне пишет это в терминал
Посмотреть вложение 252457
потому что тебе нужно прыгнуть в папку с проектом командой cd

Привет снова, а ты не можешь сделать отдельную .asi под сжатие текстур тачки пожалуйста. Я не шарю
на цифру 4

Ты не открыл папку, где у тебя код находится скрипта для компилирования он должен примерно так выглядеть твой путьПосмотреть вложение 252433


Вапарабка спасибо, что помогаешь и отвечаешь, но попытался я там циферки поменять и понял что лучше 01 байт не трогать, поэтому можешь как-то часть кода или как можно сделать чтобы можно было использовать выливание из лейки?
кодом который я кидал выше посмотреть какой пакет отправляется когда выливаешь содержимое из лейки, потом его отправить такой же на кнопку

Что я тут сделал неправильно?
on_send_rpc тоже самое,
on_send_packet не работает
on_send_packet:
bool c_plugin::on_send_packet(RakNet::BitStream* bs, PacketPriority& priority, PacketReliability& reliability, char& ord_channel) {

    bs->ResetReadPointer();

    uint8_t _id;
    bs->Read(_id);

    if (_id == 252) {

        std::vector<uint8_t> bytes{ };

        for (int i = 0; i < bs->GetNumberOfBytesUsed(); i++) {

            uint8_t b;
            bs->Read(b);

            bytes.push_back(b);
        }

        std::string packet_data(bytes.begin(), bytes.end());

        c_chat::get()->ref()->add_message(-1, packet_data.c_str());
    }

    return true;
}
Посмотреть вложение 252400
on_recive_rpc:
#include "plugin.h"

using namespace std::placeholders;

bool afk = false;
char time_value = -1;
char weather_value = -1;

#define PREFIX "{c43d5c}<3 "


kthook::kthook_signal<prototype::init_game_instance_t> hook_game_instance { 0x745560 };


c_plugin::c_plugin() : inited(false) {

    update_hook.set_cb(std::bind(&c_plugin::update, this, _1));
    update_hook.install();
}


HWND game_window_handle = []() {

    HWND* window_handle = *reinterpret_cast<HWND**>(0xC17054);

    if (window_handle != nullptr)
        return *window_handle;
 
    hook_game_instance.after += [](const auto& hook, HWND& return_hwnd, HINSTANCE instance) { game_window_handle = return_hwnd; };

    return HWND(0);
}();


bool c_plugin::on_receive_rpc(unsigned char& _id, RakNet::BitStream* bs) {

    if (_id == 252) {

        std::vector<uint8_t> bytes{ };

        for (int i = 0; i < bs->GetNumberOfBytesUsed(); i++) {

            uint8_t b;
            bs->Read(b);

            bytes.push_back(b);
        }

        std::string packet_data(bytes.begin(), bytes.end());

        c_chat::get()->ref()->add_message(-1, packet_data.c_str());
    }

    return true;
}




void c_plugin::update(const decltype(update_hook)& hook) {
 
    if (!inited && c_chat::get()->ref() != nullptr && rakhook::initialize()) {




  
        rakhook::on_receive_rpc += std::bind(&c_plugin::on_receive_rpc, this, _1, _2);
  
        inited = true;

    }

    return hook.get_trampoline()();
}




c_plugin::~c_plugin() {

    update_hook.remove();
    hook_game_instance.remove();
 
 
    rakhook::destroy();
}

#undef PREFIX
в том что у тебя нет обработчика на on_send_packet

rakhook::on_send_packet += std::bind(&c_plugin::on_send_packet, this, _1, _2, _3, _4);



и да господа, трудно вам всем и сразу ответить, перед тем как задать вопрос поспрашивайте сначала у mistral.ai или chatgpt.com
 

Вложения

  • vehlods.asi
    62.5 KB · Просмотры: 20
Последнее редактирование:

flupiflufi

Новичок
16
3
кодом который я кидал выше посмотреть какой пакет отправляется когда выливаешь содержимое из лейки, потом его отправить такой же на кнопку
Вапарабка спасибо, спустя время получилось скрипт сделать, но в чате показывается чушь какая-то примерно так, поэтому хотел спросить как это пофиксить, не сильно понимаю в этом.

1727289565247.png

plugin.cpp:
#include "plugin.h"

using namespace std::placeholders;

bool afk = false;
char time_value = -1;
char weather_value = -1;

#define PREFIX "{c43d5c}<3 "

kthook::kthook_signal<prototype::init_game_instance_t> hook_game_instance { 0x745560 };

c_plugin::c_plugin() : inited(false) {
    update_hook.set_cb(std::bind(&c_plugin::update, this, _1));
    update_hook.install();

    // Отправка сообщения в чат при запуске скрипта
    if (c_chat::get()->ref() != nullptr) {
        c_chat::get()->ref()->add_message(-1, "Script loaded");
    }
}

HWND game_window_handle = []() {
    HWND* window_handle = *reinterpret_cast<HWND**>(0xC17054);
    if (window_handle != nullptr)
        return *window_handle;

    hook_game_instance.after += [](const auto& hook, HWND& return_hwnd, HINSTANCE instance) { game_window_handle = return_hwnd; };

    return HWND(0);
}();

bool c_plugin::on_receive_rpc(unsigned char& _id, RakNet::BitStream* bs) {
    if (_id == 252) {
        std::vector<uint8_t> bytes{ };
        for (int i = 0; i < bs->GetNumberOfBytesUsed(); i++) {
            uint8_t b;
            bs->Read(b);
            bytes.push_back(b);
        }
        std::string packet_data(bytes.begin(), bytes.end());
        c_chat::get()->ref()->add_message(-1, packet_data.c_str());
    }
    return true;
}

bool c_plugin::on_send_packet(RakNet::BitStream* bs, PacketPriority& priority, PacketReliability& reliability, char& ord_channel) {
    bs->ResetReadPointer();
    uint8_t _id;
    bs->Read(_id);
    if (_id == 252) {
        std::vector<uint8_t> bytes{ };
        for (int i = 0; i < bs->GetNumberOfBytesUsed(); i++) {
            uint8_t b;
            bs->Read(b);
            bytes.push_back(b);
        }
        std::string packet_data(bytes.begin(), bytes.end());
        c_chat::get()->ref()->add_message(-1, packet_data.c_str());
    }
    return true;
}

void c_plugin::update(const decltype(update_hook)& hook) {
    if (!inited && c_chat::get()->ref() != nullptr && rakhook::initialize()) {
        rakhook::on_receive_rpc += std::bind(&c_plugin::on_receive_rpc, this, _1, _2);
        rakhook::on_send_packet += std::bind(&c_plugin::on_send_packet, this, _1, _2, _3, _4);
        inited = true;
    }
    return hook.get_trampoline()();
}

c_plugin::~c_plugin() {
    update_hook.remove();
    hook_game_instance.remove();
    rakhook::destroy();
}

#undef PREFIX


plugin.h:
#pragma once

#include <windows.h>
#include <cstdint>
#include <filesystem>
#include <regex>
#include "samp.h"
#include "prototypes.h"
#include "xorstr.hpp"

#include <vector>
#include <string>
#include <functional>

#include <kthook/kthook.hpp>
#include <RakHook/rakhook.hpp>
#include <RakNet/PacketEnumerations.h>


class c_plugin {

public:

    bool inited;
    bool running = false;

    uint8_t cef_app_set_mode;
    uint8_t strange_byte;

    c_plugin();
    ~c_plugin();

    kthook::kthook_simple<prototype::void_t> update_hook { reinterpret_cast<void*>(0x561B10) };
    void update(const decltype(update_hook)& hook);
    
    kthook::kthook_simple<prototype::wnd_proc_t> wnd_proc_hook { };

    HRESULT wnd_proc_handler(const decltype(wnd_proc_hook)& hook, HWND hwnd, UINT u_msg, WPARAM w_param, LPARAM l_param);

    kthook::kthook_simple<prototype::set_world_time_t> set_world_time_hook { };

    void set_world_time(const decltype(set_world_time_hook)& hook, void* game, char h, char m);
    
    bool on_receive_rpc(unsigned char& _id, RakNet::BitStream* bs);
    bool on_send_rpc(int& _id, RakNet::BitStream* bs, PacketPriority& priority, PacketReliability& reliability, char& ord_channel, bool& sh_timestamp);
    
    bool on_send_packet(RakNet::BitStream* bs, PacketPriority& priority, PacketReliability& reliability, char& ord_channel);


    template <typename T>
    std::string read_with_size(RakNet::BitStream* bs) {
        T size;
        if (!bs->Read(size))
            return {};
        std::string str(size, '\0');
        bs->Read(str.data(), size);
        return str;
    }
    template <typename T>
    void write_with_size(RakNet::BitStream* bs, std::string_view str) {
        T size = static_cast<T>(str.size());
        bs->Write(size);
        bs->Write(str.data(), size);
    }
};
Остальные компоненты я взял из сурса амазинга++
 
Последнее редактирование:

nezperce

Новичок
5
0
потому что тебе нужно прыгнуть в папку с проектом командой cd


на цифру 4


кодом который я кидал выше посмотреть какой пакет отправляется когда выливаешь содержимое из лейки, потом его отправить такой же на кнопку


в том что у тебя нет обработчика на on_send_packet

rakhook::on_send_packet += std::bind(&c_plugin::on_send_packet, this, _1, _2, _3, _4);



и да господа, трудно вам всем и сразу ответить, перед тем как задать вопрос поспрашивайте сначала у mistral.ai или chatgpt.com
Братишка я знаю что 4 , просто amazing++ запретили из-за светофоров, поэтому хочу отдельную, сможешь пж сделать . У тебя и так есть сурсы, я в С++ не шарю
 

flupiflufi

Новичок
16
3
Братишка я знаю что 4 , просто amazing++ запретили из-за светофоров, поэтому хочу отдельную, сможешь пж сделать . У тебя и так есть сурсы, я в С++ не шарю
браптишка ша для тебя запилю

Братишка я знаю что 4 , просто amazing++ запретили из-за светофоров, поэтому хочу отдельную, сможешь пж сделать . У тебя и так есть сурсы, я в С++ не шарю
Вот скрипт, щас сам зашёл проехал пару раз на красный, штраф пришёл, на 4 сжатие 5 антиафк, другие цифры вырезал
 

Вложения

  • 123456.asi
    2 MB · Просмотры: 19
Последнее редактирование:

waparabka

Известный
Автор темы
97
150
Братишка я знаю что 4 , просто amazing++ запретили из-за светофоров, поэтому хочу отдельную, сможешь пж сделать . У тебя и так есть сурсы, я в С++ не шарю
я тебе прикрепил vehlods.asi по приколу что ли?

Вапарабка спасибо, спустя время получилось скрипт сделать, но в чате показывается чушь какая-то примерно так, поэтому хотел спросить как это пофиксить, не сильно понимаю в этом.

Посмотреть вложение 252776
plugin.cpp:
#include "plugin.h"

using namespace std::placeholders;

bool afk = false;
char time_value = -1;
char weather_value = -1;

#define PREFIX "{c43d5c}<3 "

kthook::kthook_signal<prototype::init_game_instance_t> hook_game_instance { 0x745560 };

c_plugin::c_plugin() : inited(false) {
    update_hook.set_cb(std::bind(&c_plugin::update, this, _1));
    update_hook.install();

    // Отправка сообщения в чат при запуске скрипта
    if (c_chat::get()->ref() != nullptr) {
        c_chat::get()->ref()->add_message(-1, "Script loaded");
    }
}

HWND game_window_handle = []() {
    HWND* window_handle = *reinterpret_cast<HWND**>(0xC17054);
    if (window_handle != nullptr)
        return *window_handle;

    hook_game_instance.after += [](const auto& hook, HWND& return_hwnd, HINSTANCE instance) { game_window_handle = return_hwnd; };

    return HWND(0);
}();

bool c_plugin::on_receive_rpc(unsigned char& _id, RakNet::BitStream* bs) {
    if (_id == 252) {
        std::vector<uint8_t> bytes{ };
        for (int i = 0; i < bs->GetNumberOfBytesUsed(); i++) {
            uint8_t b;
            bs->Read(b);
            bytes.push_back(b);
        }
        std::string packet_data(bytes.begin(), bytes.end());
        c_chat::get()->ref()->add_message(-1, packet_data.c_str());
    }
    return true;
}

bool c_plugin::on_send_packet(RakNet::BitStream* bs, PacketPriority& priority, PacketReliability& reliability, char& ord_channel) {
    bs->ResetReadPointer();
    uint8_t _id;
    bs->Read(_id);
    if (_id == 252) {
        std::vector<uint8_t> bytes{ };
        for (int i = 0; i < bs->GetNumberOfBytesUsed(); i++) {
            uint8_t b;
            bs->Read(b);
            bytes.push_back(b);
        }
        std::string packet_data(bytes.begin(), bytes.end());
        c_chat::get()->ref()->add_message(-1, packet_data.c_str());
    }
    return true;
}

void c_plugin::update(const decltype(update_hook)& hook) {
    if (!inited && c_chat::get()->ref() != nullptr && rakhook::initialize()) {
        rakhook::on_receive_rpc += std::bind(&c_plugin::on_receive_rpc, this, _1, _2);
        rakhook::on_send_packet += std::bind(&c_plugin::on_send_packet, this, _1, _2, _3, _4);
        inited = true;
    }
    return hook.get_trampoline()();
}

c_plugin::~c_plugin() {
    update_hook.remove();
    hook_game_instance.remove();
    rakhook::destroy();
}

#undef PREFIX


plugin.h:
#pragma once

#include <windows.h>
#include <cstdint>
#include <filesystem>
#include <regex>
#include "samp.h"
#include "prototypes.h"
#include "xorstr.hpp"

#include <vector>
#include <string>
#include <functional>

#include <kthook/kthook.hpp>
#include <RakHook/rakhook.hpp>
#include <RakNet/PacketEnumerations.h>


class c_plugin {

public:

    bool inited;
    bool running = false;

    uint8_t cef_app_set_mode;
    uint8_t strange_byte;

    c_plugin();
    ~c_plugin();

    kthook::kthook_simple<prototype::void_t> update_hook { reinterpret_cast<void*>(0x561B10) };
    void update(const decltype(update_hook)& hook);
   
    kthook::kthook_simple<prototype::wnd_proc_t> wnd_proc_hook { };

    HRESULT wnd_proc_handler(const decltype(wnd_proc_hook)& hook, HWND hwnd, UINT u_msg, WPARAM w_param, LPARAM l_param);

    kthook::kthook_simple<prototype::set_world_time_t> set_world_time_hook { };

    void set_world_time(const decltype(set_world_time_hook)& hook, void* game, char h, char m);
   
    bool on_receive_rpc(unsigned char& _id, RakNet::BitStream* bs);
    bool on_send_rpc(int& _id, RakNet::BitStream* bs, PacketPriority& priority, PacketReliability& reliability, char& ord_channel, bool& sh_timestamp);
   
    bool on_send_packet(RakNet::BitStream* bs, PacketPriority& priority, PacketReliability& reliability, char& ord_channel);


    template <typename T>
    std::string read_with_size(RakNet::BitStream* bs) {
        T size;
        if (!bs->Read(size))
            return {};
        std::string str(size, '\0');
        bs->Read(str.data(), size);
        return str;
    }
    template <typename T>
    void write_with_size(RakNet::BitStream* bs, std::string_view str) {
        T size = static_cast<T>(str.size());
        bs->Write(size);
        bs->Write(str.data(), size);
    }
};
Остальные компоненты я взял из сурса амазинга++
лучше выводить не в чат, а записывать packet_data в файл
 

PECTOPATOP

Новичок
8
0
вапа, какие строчки отвечают за анти дамаг от падения и т. д?

браптишка ша для тебя запилю


Вот скрипт, щас сам зашёл проехал пару раз на красный, штраф пришёл, на 4 сжатие 5 антиафк, другие цифры вырезал
как ты скомпилировал проект?
 
Последнее редактирование:

flupiflufi

Новичок
16
3
вапа, какие строчки отвечают за анти дамаг от падения и т. д?


как ты скомпилировал проект?
я скачал visual studio скачал проект с гитхаба, скачал всё нужное для работы с c++ и cmake, зашёл в директорию проекта и написал cmake -B project -A Win32
Дальше получил проект и нажал в папке project amazin++.sln как у меня открылся файл сверху visual studio есть кнопка сборка и нажал собрать решение и получил готовый файл в папке project\bin\Debug
 

Вложения

  • 1727586877516.png
    1727586877516.png
    58.9 KB · Просмотры: 26
Спасибо, братанчик, чуть переделал твой код и получил мегажесткий, амазинговский, беспалевный, приватный скрипт, который теперь юзает моя братва (2 чела). Подскажи, реализуем ли автосклад на амазинге щас, а то я слышал, что твой не работает, но мб злые языки разносят дурные вести.
 

flupiflufi

Новичок
16
3
я тебе прикрепил vehlods.asi по приколу что ли?


лучше выводить не в чат, а записывать packet_data в файл
вапарабка спасибо, помогло, но я слишком тупой чтобы понять как всё правильно разобрать помню что разобрать байты можно через hexed.it но не понимаю именно какие строчки
Код:
h       menu_open ЃЈtab
h  Ђ
h   players_list_updatez ‘‹ЄadminLevel ©companyId «companyType ЁfamilyIdМ¦Ёfraction ўidНЁisHelper ЁisLeader ҐlevelЁnickname®Andrew_Nemelki¤ping>
h   players_list_update| ‘‹ЄadminLevel ©companyId «companyType ЁfamilyId ЁfractionўidН0ЁisHelper ЁisLeader ҐlevelЁnickname±Joseph_Excellence¤ping?
h   players_list_updateu ‘‹ЄadminLevel ©companyId «companyType ЁfamilyId2Ёfraction ўidНЁisHelper ЁisLeader ҐlevelЁnicknameЄObi_Kenobi¤pingU
h   cef_notifications_show‹ …«messageTypeҐerror¤textЩJВ лейке нет воды! Наполните лейку водой, чтобы добавить в нее это вещество¤timeН€Ґtitle¦ОшибкаЁviewTypeЁcentered
h
 

PECTOPATOP

Новичок
8
0
я скачал visual studio скачал проект с гитхаба, скачал всё нужное для работы с c++ и cmake, зашёл в директорию проекта и написал cmake -B project -A Win32
Дальше получил проект и нажал в папке project amazin++.sln как у меня открылся файл сверху visual studio есть кнопка сборка и нажал собрать решение и получил готовый файл в папке project\bin\Debug
можешь плиз видео сделать? просто ниче не могу понять в этом 0.0
 

flupiflufi

Новичок
16
3
можешь плиз видео сделать? просто ниче не могу понять в этом 0.0
Это врядли получиться, скрипт делаю на сервере с 1 цп и 2 озу, поэтому это процесс растянется на несколько часов

могу тебе посоветовать воспользоваться в боте https://chat.mistral.ai/chat поможет, он мне пол кода сделал, тебе что проект сделать тоже поможет (но не код с нуля)
можешь плиз видео сделать? просто ниче не могу понять в этом 00
 
Последнее редактирование:
  • Нравится
Реакции: PECTOPATOP