CR:MP ASI Amazing amazing++

Excellence

Новичок
2
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 на первые 1-3 цифры, а то amazing ++ запретили. А я сам С++ ваще не шарю. И если можно в анимке весто 69 поставить 12?
 

budapeshttt

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

yoshi.

Новичок
1
0
Вапарабка, есть ли какой-то вариант сделать перенос предмета с инвентаря в багажник?
 

demortys12

Участник
31
0
дарагой варабабка, я тут полазил в твоём мейн скрипте, и увидел строчки где ты юзаешь команды в чат по типу drugs и тд:
c_input::get()->ref()->send("/anim 69");
к нему ты регаешь клавишу:

как сделать так, чтобы к примеру, я захочу добавить свой текст (ибо очень удобно, нежели AHK который открывает чат), я попробовал свой вариант:
if (w_param == 0x38)
c_input::get()->ref()->send("тута текст");
сюда я привязал например 0x38, цифра 8. но видимо у тебя в скрипте где то своя система, из за чего после нажатия на кнопку ничего не происходило, но я хз
 
Последнее редактирование:

waparabka

Известный
Автор темы
105
155
дарагой варабабка, я тут полазил в твоём мейн скрипте, и увидел строчки где ты юзаешь команды в чат по типу drugs и тд:

к нему ты регаешь клавишу:


как сделать так, чтобы к примеру, я захочу добавить свой текст (ибо очень удобно, нежели AHK который открывает чат), я попробовал свой вариант:

сюда я привязал например 0x38, цифра 8. но видимо у тебя в скрипте где то своя система, из за чего после нажатия на кнопку ничего не происходило, но я хз
функция send из класса input работает только с командами, если хочешь отправить именно сообщение в чат, то нужно использовать функу chat из localplayer класса


C++:
class c_local_player {

public:

    void chat(const char* text) {
        ((void(__thiscall*)(c_local_player*, const char*)) rakhook::samp_addr(0x5820) )(this, text);
    }
};

class c_player_pool {

public:

    c_local_player* get_local_player() {
        return ((c_local_player * (__thiscall*)(c_player_pool*)) rakhook::samp_addr(0x1A30) )(this);
    }
};


class c_netgame : public singleton<c_netgame> {

public:

    c_netgame*& ref() {
        return *(c_netgame**)rakhook::samp_addr(0x26E8DC);
    }

    c_player_pool* get_player_pool() {
        return ((c_player_pool*(__thiscall*)(c_netgame*)) rakhook::samp_addr(0x1160) )(this);
    }
};

usage:
c_netgame::get()->ref()->get_player_pool()->get_local_player()->chat("qq");
 

demortys12

Участник
31
0
спасибо, помогло, но теперь вот какая беда:
class c_local_player {

public:

void chat(const char* text) {
((void(__thiscall*)(c_local_player*, const char*)) rakhook::samp_addr(0x5820))(this, text);
}

void async_chat(const char* text) {
std::thread t([this, text]() {
this->chat(text);
});
t.detach();
}
};
if (w_param == 0x38)
{
c_netgame::get()->ref()->get_player_pool()->get_local_player()->async_chat("Привет");
std::this_thread::sleep_for(std::chrono::seconds(2)); // задержка в 2 секунды
c_netgame::get()->ref()->get_player_pool()->get_local_player()->async_chat("Пока");
}
как видишь я указал два параметра в чат, и при нажатии на "8" у меня зависает игра, как раз таки на 2 секунды.
пробовал без async_chat, аналогичная проблема.
 

waparabka

Известный
Автор темы
105
155
спасибо, помогло, но теперь вот какая беда:


как видишь я указал два параметра в чат, и при нажатии на "8" у меня зависает игра, как раз таки на 2 секунды.
пробовал без async_chat, аналогичная проблема.

C++:
if (w_param == 38) {

    std::thread([] {
       
        std::this_thread::sleep_for(std::chrono::seconds(2));

        c_netgame::get()->ref()->get_player_pool()->get_local_player()->chat("qq");
       
    }).detach();
}
 
  • Нравится
Реакции: demortys12

demortys12

Участник
31
0
C++:
if (w_param == 38) {

    std::thread([] {
      
        std::this_thread::sleep_for(std::chrono::seconds(2));

        c_netgame::get()->ref()->get_player_pool()->get_local_player()->chat("qq");
      
    }).detach();
}
можешь дать тг? вопросик есть, не по твоему скрипту, свой imgui делаю, с функцией одной нужно побаловаться
 

waparabka

Известный
Автор темы
105
155
Нахуя переписывать все классы когда есть самп апи
не всех а только нужных, я спастил это с ремейка своего прменю, который хз когда выйдет в свет


пример что бы чуть понятней было действительно нахуя:
namespace offsets {
    namespace chat { // R1 - 0.3DL
        constexpr std::uintptr_t ref[] = { 0x21A0E4, 0x21A0EC, 0x26E8C8, 0x26E9F8, 0x26EB80, 0x2ACA10 };
        constexpr std::uintptr_t add_message[] = { 0x645A0, 0x64670, 0x679F0, 0x68130, 0x68170, 0x67BE0 };
    }
}


#define VERSION rakhook::detail::to_underlying(rakhook::samp_version())

class c_chat : public singleton<c_chat> {

public:

    c_chat*& ref() {
        return *(c_chat**)rakhook::samp_addr(offsets::chat::ref[VERSION]);
    }

    void add_message(unsigned long color, const char* text) {
        ((void(__thiscall*)(c_chat*, unsigned long, const char*)) rakhook::samp_addr(offsets::chat::add_message[VERSION]) )(this, color, text);
    }
};

#undef VERSION
 
  • Вау
Реакции: Lance_Sterling

Lance_Sterling

Известный
978
342
не всех а только нужных, я спастил это с ремейка своего прменю, который хз когда выйдет в свет


пример что бы чуть понятней было действительно нахуя:
namespace offsets {
    namespace chat { // R1 - 0.3DL
        constexpr std::uintptr_t ref[] = { 0x21A0E4, 0x21A0EC, 0x26E8C8, 0x26E9F8, 0x26EB80, 0x2ACA10 };
        constexpr std::uintptr_t add_message[] = { 0x645A0, 0x64670, 0x679F0, 0x68130, 0x68170, 0x67BE0 };
    }
}


#define VERSION rakhook::detail::to_underlying(rakhook::samp_version())

class c_chat : public singleton<c_chat> {

public:

    c_chat*& ref() {
        return *(c_chat**)rakhook::samp_addr(offsets::chat::ref[VERSION]);
    }

    void add_message(unsigned long color, const char* text) {
        ((void(__thiscall*)(c_chat*, unsigned long, const char*)) rakhook::samp_addr(offsets::chat::add_message[VERSION]) )(this, color, text);
    }
};

#undef VERSION
чтобы что? при компиляции самп апи, компилятор запихивает туда только то что ты подключил
 
  • Ха-ха
  • Эм
Реакции: g305noobo и chromiusj