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