Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Вопрос Grenade warning

  • Автор темы Автор темы ev3ryy
  • Дата начала Дата начала
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1614147897437.png
(с) Soufiw
 
Собсна как сделать гренад ворнинг, как он работает и каким путем делается
Ооо, давненько я к этому не притрагивался, но всё же, я думаю можно сделать это весьма простым способом, используя дистанцию. Объясню несколько вещей:
1) Тебе нужно просто создать bool, который будет называться как тебе угодно, а то есть:
C++:
Expand Collapse Copy
bool GrenadeInHand(CSGO___WEAPONS * Weapon)
{

}
Внутри этого самого bool ты делаешь проверку используя получение активного оружия в руках противника, и проверяешь, есть ли какая либо из гранат у него в руках, ну допустим:
C++:
Expand Collapse Copy
if(ACTIVE_WEAPON == WEAPON_MOLOTOV)
return true;
Если то оружие которые ты указал, находится в руках противника,ОНО АКТИВНО, то ты делаешь значение bool равное true, в противном случае false
2) Использовать либо ClassID, либо StudioHDR. Тут уже на твоё усмотрение, а вообще, сразу покажу и классы и студио.
Самое главное, это создать к примеру строчку
C++:
Expand Collapse Copy
std::string draw = "";
Чтобы потом присваивать ей значение
Простенький пример:
C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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++:
Expand Collapse Copy
float value = csgo::Get().OtherCalc->DistanceToTarget(/*target*/,/*object or player*/);
или
C++:
Expand Collapse Copy
float value = csgo::Get().Local->GetOrigin().DistTo(/*object or player using the Origin, but wtf*/);
или
Пожалуйста, авторизуйтесь для просмотра ссылки.

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

}
Внутри этого самого bool ты делаешь проверку используя получение активного оружия в руках противника, и проверяешь, есть ли какая либо из гранат у него в руках, ну допустим:
C++:
Expand Collapse Copy
if(ACTIVE_WEAPON == WEAPON_MOLOTOV)
return true;
Если то оружие которые ты указал, находится в руках противника,ОНО АКТИВНО, то ты делаешь значение bool равное true, в противном случае false
2) Использовать либо ClassID, либо StudioHDR. Тут уже на твоё усмотрение, а вообще, сразу покажу и классы и студио.
Самое главное, это создать к примеру строчку
C++:
Expand Collapse Copy
std::string draw = "";
Чтобы потом присваивать ей значение
Простенький пример:
C++:
Expand Collapse Copy
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++:
Expand Collapse Copy
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++:
Expand Collapse Copy
float value = csgo::Get().OtherCalc->DistanceToTarget(/*target*/,/*object or player*/);
или
C++:
Expand Collapse Copy
float value = csgo::Get().Local->GetOrigin().DistTo(/*object or player using the Origin, but wtf*/);
или
Пожалуйста, авторизуйтесь для просмотра ссылки.

Дистанция может отображаться не совсем приятным видом, но ты всегда можешь сделать приятнее (имею в виду вместо 0.303040014 видеть 0.3)
Для того, чтобы протестить, какого значение дистанции, ты можешь так же отрисовать его как обычную строчку, в нашем случае value и есть та самая дистанция. А далее зови друга, и пусть он кидает гранату, либо кидай гранату сам, работает аналогично (кстати рядом с отрисовкой гранаты можно указать её дистанцию до твоего игрока, будет выглядеть весьма сексуально ).
!!!А ТЕПЕРЬ САМОЕ ГЛАВНОЕ!!!
Смотришь, какое значение получается критическим (вообще...то значение, которое тебя устроит) и делаешь отрисовку-предупреждение ( в случае если ты достиг этого КРИТИЧЕСКОГО значения).
А вот как сделать предупреждение, это уже понятно. Таким же методом как мы рисовали текст, рисуешь текст (в углу экрана или в центре, не важно), либо круг внутри которого текст "!", вообще по разному.
Здесь уже конечно всё зависит от твоей фантазии :pikachu:
Посмотреть вложение 133617Посмотреть вложение 133618
не мужик мне кажется что ему нужен такой
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
который делается банальным предиктом уже существующего нейд ентити
 
не мужик мне кажется что ему нужен такой
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
который делается банальным предиктом уже существующего нейд ентити
Разница в этих 2 реализациях минимальна. У тебя предугадывает место, да, это хорошо. У меня показывает гранату, дистанцию и предупреждение в любом месте, к нему можно прицепить показ как на enemy arrows и это будет выглядеть ещё лучше. Так что в этом случае я ничего против не имею, при условии, что я предложил ОДИН ИЗ СПОСОБОВ :kek:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
не мужик мне кажется что ему нужен такой
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
который делается банальным предиктом уже существующего нейд ентити

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
можешь пожалуйста дать код этого чуда
Скрытое содержимое
жесть парни если вам так сильно нужна данная feature
то либо сделайте сами ( вам и так уже сказали как это сделать ) либо купите.....

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

    m_predicted_nades.erase( handle );
 
не мужик мне кажется что ему нужен такой
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
который делается банальным предиктом уже существующего нейд ентити
если у тебя есть код того что на видео фулл, могу заплатить
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Даже если вам это дадут у вас мозга не хватит спастить.
А сама функция бесполезная.
Красиво, но смысла ноль
если у тебя есть код того что на видео фулл, могу заплатить
Лучшее купить гранейд хелпер..
Толку больше будет
 
Даже если вам это дадут у вас мозга не хватит спастить.
А сама функция бесполезная.
Красиво, но смысла ноль

Лучшее купить гранейд хелпер..
Толку больше будет
хм, ну это как посмотреть, бесполезно говоришь ? если в тебя летит молик/хае и ты знаешь куда он прилетит , можно отойти и не получить дамаг 0_0
 
хм, ну это как посмотреть, бесполезно говоришь ? если в тебя летит молик/хае и ты знаешь куда он прилетит , можно отойти и не получить дамаг 0_0
Ебать вау, а текст или иконка ??
 
круто круто а нахуя функция draw возвращает булин значение
Код:
Expand Collapse Copy
if ( m_path.size( ) <= 1u
                || interfaces::m_global_vars->m_cur_time > m_expire_time )
                return false;
линк будет плакать..
ontop: grenade prediction по ентити нейдов
 
Последнее редактирование:
Назад
Сверху Снизу