Вопрос Grenade warning

...
Пользователь
Статус
Оффлайн
Регистрация
25 Май 2020
Сообщения
291
Реакции[?]
41
Поинты[?]
0
Собсна как сделать гренад ворнинг, как он работает и каким путем делается
 
Олдфаг
Статус
Оффлайн
Регистрация
14 Сен 2018
Сообщения
5,780
Реакции[?]
1,665
Поинты[?]
9K
Забаненный
Статус
Оффлайн
Регистрация
2 Фев 2021
Сообщения
103
Реакции[?]
44
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1614147897437.png (с) Soufiw
 
Пользователь
Статус
Оффлайн
Регистрация
19 Янв 2019
Сообщения
348
Реакции[?]
99
Поинты[?]
6K
Собсна как сделать гренад ворнинг, как он работает и каким путем делается
Ооо, давненько я к этому не притрагивался, но всё же, я думаю можно сделать это весьма простым способом, используя дистанцию. Объясню несколько вещей:
1) Тебе нужно просто создать bool, который будет называться как тебе угодно, а то есть:
C++:
bool GrenadeInHand(CSGO___WEAPONS * Weapon)
{

}
Внутри этого самого bool ты делаешь проверку используя получение активного оружия в руках противника, и проверяешь, есть ли какая либо из гранат у него в руках, ну допустим:
C++:
if(ACTIVE_WEAPON == WEAPON_MOLOTOV)
return true;
Если то оружие которые ты указал, находится в руках противника,ОНО АКТИВНО, то ты делаешь значение bool равное true, в противном случае false
2) Использовать либо ClassID, либо StudioHDR. Тут уже на твоё усмотрение, а вообще, сразу покажу и классы и студио.
Самое главное, это создать к примеру строчку
C++:
std::string draw = "";
Чтобы потом присваивать ей значение
Простенький пример:
C++:
const CS_MODELS* a_model = csgo::Get().Entity->GetModel();

    if (!a_model)
        return;

    const CS_STUDIOHDR* a_StudioHdr = csgo::Get().Base.Models.Info->GetStudiomodel(a_model);

    if (!a_StudioHdr)
        return;

    const auto CLIENT_CLASS = csgo::Get().Entity->GetClientClass();

    if (!CLIENT_CLASS)
        return;
      
    switch (CLIENT_CLASS->m_ClassID)
    {
    case (int)csgo::Get().Base.ClassIds::CMolotovProjectile:
        draw = "fire";
        break;
    case (int)csgo::Get().Base.ClassIds::CSmokeGrenadeProjectile:
        draw = "smoke";
        break;
    case (int)csgo::Get().Base.ClassIds::CDecoyProjectile:
        draw = "decoy";
        break;
    case (int)csgo::Get().Base.ClassIds::CBaseCSGrenadeProjectile:
        if (a_StudioHdr->name[16] == 's')
            draw = "flash";
        else
            draw = "grenade";
        break;
    default:
        break;
    }
После чего создаёшь отрисовочку, где тебе покажет значение draw:
C++:
Vector DA;

    if (csgo::Get().Utils::WorldToScreen(csgo::Get().Entity->GetAbsOrigin(), DA))
    {
        csgo::Get().Surface.Draw->String(DA.x, DA.y + 5, csgo::Get().Surface.Fonts.CsGo, csgo::Get().Surface.Colors.Red, draw);
    }
Благодаря этому ты создал отрисовку оружия (но это ещё не всё), можно вообще всё это уместить в один void, если конечно так будет удобнее.
Теперь тебе остаётся получить дистанцию до нашего игрока от твоего объекта, в нашем случае гранаты
Для того чтобы узнать по больше:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Ну а теперь получаем дистанцию (это ещё смотря что у тебя имеется в базе):
C++:
float value = csgo::Get().OtherCalc->DistanceToTarget(/*target*/,/*object or player*/);
или
C++:
float value = csgo::Get().Local->GetOrigin().DistTo(/*object or player using the Origin, but wtf*/);
или
Пожалуйста, авторизуйтесь для просмотра ссылки.

Дистанция может отображаться не совсем приятным видом, но ты всегда можешь сделать приятнее (имею в виду вместо 0.303040014 видеть 0.3)
Для того, чтобы протестить, какого значение дистанции, ты можешь так же отрисовать его как обычную строчку, в нашем случае value и есть та самая дистанция. А далее зови друга, и пусть он кидает гранату, либо кидай гранату сам, работает аналогично (кстати рядом с отрисовкой гранаты можно указать её дистанцию до твоего игрока, будет выглядеть весьма сексуально ).
!!!А ТЕПЕРЬ САМОЕ ГЛАВНОЕ!!!
Смотришь, какое значение получается критическим (вообще...то значение, которое тебя устроит) и делаешь отрисовку-предупреждение ( в случае если ты достиг этого КРИТИЧЕСКОГО значения).
А вот как сделать предупреждение, это уже понятно. Таким же методом как мы рисовали текст, рисуешь текст (в углу экрана или в центре, не важно), либо круг внутри которого текст "!", вообще по разному.
Здесь уже конечно всё зависит от твоей фантазии :pikachu:
1614154537442.png1614154567282.png
 
t.me/lnk1181shop
Участник
Статус
Оффлайн
Регистрация
16 Авг 2019
Сообщения
492
Реакции[?]
413
Поинты[?]
1K
Ооо, давненько я к этому не притрагивался, но всё же, я думаю можно сделать это весьма простым способом, используя дистанцию. Объясню несколько вещей:
1) Тебе нужно просто создать bool, который будет называться как тебе угодно, а то есть:
C++:
bool GrenadeInHand(CSGO___WEAPONS * Weapon)
{

}
Внутри этого самого bool ты делаешь проверку используя получение активного оружия в руках противника, и проверяешь, есть ли какая либо из гранат у него в руках, ну допустим:
C++:
if(ACTIVE_WEAPON == WEAPON_MOLOTOV)
return true;
Если то оружие которые ты указал, находится в руках противника,ОНО АКТИВНО, то ты делаешь значение bool равное true, в противном случае false
2) Использовать либо ClassID, либо StudioHDR. Тут уже на твоё усмотрение, а вообще, сразу покажу и классы и студио.
Самое главное, это создать к примеру строчку
C++:
std::string draw = "";
Чтобы потом присваивать ей значение
Простенький пример:
C++:
const CS_MODELS* a_model = csgo::Get().Entity->GetModel();

    if (!a_model)
        return;

    const CS_STUDIOHDR* a_StudioHdr = csgo::Get().Base.Models.Info->GetStudiomodel(a_model);

    if (!a_StudioHdr)
        return;

    const auto CLIENT_CLASS = csgo::Get().Entity->GetClientClass();

    if (!CLIENT_CLASS)
        return;
   
    switch (CLIENT_CLASS->m_ClassID)
    {
    case (int)csgo::Get().Base.ClassIds::CMolotovProjectile:
        draw = "fire";
        break;
    case (int)csgo::Get().Base.ClassIds::CSmokeGrenadeProjectile:
        draw = "smoke";
        break;
    case (int)csgo::Get().Base.ClassIds::CDecoyProjectile:
        draw = "decoy";
        break;
    case (int)csgo::Get().Base.ClassIds::CBaseCSGrenadeProjectile:
        if (a_StudioHdr->name[16] == 's')
            draw = "flash";
        else
            draw = "grenade";
        break;
    default:
        break;
    }
После чего создаёшь отрисовочку, где тебе покажет значение draw:
C++:
Vector DA;

    if (csgo::Get().Utils::WorldToScreen(csgo::Get().Entity->GetAbsOrigin(), DA))
    {
        csgo::Get().Surface.Draw->String(DA.x, DA.y + 5, csgo::Get().Surface.Fonts.CsGo, csgo::Get().Surface.Colors.Red, draw);
    }
Благодаря этому ты создал отрисовку оружия (но это ещё не всё), можно вообще всё это уместить в один void, если конечно так будет удобнее.
Теперь тебе остаётся получить дистанцию до нашего игрока от твоего объекта, в нашем случае гранаты
Для того чтобы узнать по больше:
Пожалуйста, авторизуйтесь для просмотра ссылки.

Ну а теперь получаем дистанцию (это ещё смотря что у тебя имеется в базе):
C++:
float value = csgo::Get().OtherCalc->DistanceToTarget(/*target*/,/*object or player*/);
или
C++:
float value = csgo::Get().Local->GetOrigin().DistTo(/*object or player using the Origin, but wtf*/);
или
Пожалуйста, авторизуйтесь для просмотра ссылки.

Дистанция может отображаться не совсем приятным видом, но ты всегда можешь сделать приятнее (имею в виду вместо 0.303040014 видеть 0.3)
Для того, чтобы протестить, какого значение дистанции, ты можешь так же отрисовать его как обычную строчку, в нашем случае value и есть та самая дистанция. А далее зови друга, и пусть он кидает гранату, либо кидай гранату сам, работает аналогично (кстати рядом с отрисовкой гранаты можно указать её дистанцию до твоего игрока, будет выглядеть весьма сексуально ).
!!!А ТЕПЕРЬ САМОЕ ГЛАВНОЕ!!!
Смотришь, какое значение получается критическим (вообще...то значение, которое тебя устроит) и делаешь отрисовку-предупреждение ( в случае если ты достиг этого КРИТИЧЕСКОГО значения).
А вот как сделать предупреждение, это уже понятно. Таким же методом как мы рисовали текст, рисуешь текст (в углу экрана или в центре, не важно), либо круг внутри которого текст "!", вообще по разному.
Здесь уже конечно всё зависит от твоей фантазии :pikachu:
Посмотреть вложение 133617Посмотреть вложение 133618
не мужик мне кажется что ему нужен такой
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
который делается банальным предиктом уже существующего нейд ентити
 
Пользователь
Статус
Оффлайн
Регистрация
19 Янв 2019
Сообщения
348
Реакции[?]
99
Поинты[?]
6K
не мужик мне кажется что ему нужен такой
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
который делается банальным предиктом уже существующего нейд ентити
Разница в этих 2 реализациях минимальна. У тебя предугадывает место, да, это хорошо. У меня показывает гранату, дистанцию и предупреждение в любом месте, к нему можно прицепить показ как на enemy arrows и это будет выглядеть ещё лучше. Так что в этом случае я ничего против не имею, при условии, что я предложил ОДИН ИЗ СПОСОБОВ :kek:
 
Забаненный
Статус
Оффлайн
Регистрация
2 Фев 2021
Сообщения
103
Реакции[?]
44
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
не мужик мне кажется что ему нужен такой
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
который делается банальным предиктом уже существующего нейд ентити
Для просмотра содержимого вам необходимо авторизоваться.
 
kill me
Забаненный
Статус
Оффлайн
Регистрация
18 Дек 2018
Сообщения
365
Реакции[?]
70
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
18 Июн 2020
Сообщения
506
Реакции[?]
90
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
t.me/lnk1181shop
Участник
Статус
Оффлайн
Регистрация
16 Авг 2019
Сообщения
492
Реакции[?]
413
Поинты[?]
1K
можешь пожалуйста дать код этого чуда
Скрытое содержимое
жесть парни если вам так сильно нужна данная feature
то либо сделайте сами ( вам и так уже сказали как это сделать ) либо купите.....

максимум только такой код могу дать
C++:
    if ( m_predicted_nades.at( handle ).draw( ) )
        continue;

    m_predicted_nades.erase( handle );
 
SLANG
Начинающий
Статус
Оффлайн
Регистрация
15 Май 2019
Сообщения
159
Реакции[?]
28
Поинты[?]
0
не мужик мне кажется что ему нужен такой
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
который делается банальным предиктом уже существующего нейд ентити
если у тебя есть код того что на видео фулл, могу заплатить
 
Забаненный
Статус
Оффлайн
Регистрация
18 Июн 2020
Сообщения
506
Реакции[?]
90
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
t.me/lnk1181shop
Участник
Статус
Оффлайн
Регистрация
16 Авг 2019
Сообщения
492
Реакции[?]
413
Поинты[?]
1K
Участник
Статус
Оффлайн
Регистрация
26 Мар 2019
Сообщения
707
Реакции[?]
167
Поинты[?]
1K
Даже если вам это дадут у вас мозга не хватит спастить.
А сама функция бесполезная.
Красиво, но смысла ноль
если у тебя есть код того что на видео фулл, могу заплатить
Лучшее купить гранейд хелпер..
Толку больше будет
 
SLANG
Начинающий
Статус
Оффлайн
Регистрация
15 Май 2019
Сообщения
159
Реакции[?]
28
Поинты[?]
0
Даже если вам это дадут у вас мозга не хватит спастить.
А сама функция бесполезная.
Красиво, но смысла ноль

Лучшее купить гранейд хелпер..
Толку больше будет
хм, ну это как посмотреть, бесполезно говоришь ? если в тебя летит молик/хае и ты знаешь куда он прилетит , можно отойти и не получить дамаг 0_0
 
Участник
Статус
Оффлайн
Регистрация
26 Мар 2019
Сообщения
707
Реакции[?]
167
Поинты[?]
1K
хм, ну это как посмотреть, бесполезно говоришь ? если в тебя летит молик/хае и ты знаешь куда он прилетит , можно отойти и не получить дамаг 0_0
Ебать вау, а текст или иконка ??
 
Участник
Статус
Оффлайн
Регистрация
2 Фев 2020
Сообщения
818
Реакции[?]
378
Поинты[?]
0
круто круто а нахуя функция draw возвращает булин значение
Код:
if ( m_path.size( ) <= 1u
                || interfaces::m_global_vars->m_cur_time > m_expire_time )
                return false;
линк будет плакать..
ontop: grenade prediction по ентити нейдов
 
Последнее редактирование:
Сверху Снизу