Пользователь
-
Автор темы
- #1
Вкратце: функция скинченджера ничего не меняет
ну и сам скинченжэер
Спасибо кто откликнулся!
C++:
ImGui::Combo(XorStr("knife##skins"), &C::Get<int>(Vars.iKnifeModel), XorStr("Default\0Bayonet\0Flip knife\0Gut knife\0\0"));
static int iPrevKnife = 0;
if (iPrevKnife != C::Get<int>(Vars.iKnifeModel))//чтобы лишний раз не нагружать
{
iPrevKnife = C::Get<int>(Vars.iKnifeModel);
//CSkinChanger::Run()
skinchanger.Run();//вызов скинчейджера
U::ForceFullUpdate();//обновляем
}
C++:
void CSkinChanger::Run()
{
CBaseEntity* pLocal = CBaseEntity::GetLocalPlayer();
if (pLocal == nullptr || !pLocal->IsAlive())
return;
//RunGlove();
CBaseCombatWeapon* pActiveWeapon = pLocal->GetWeapon();
if (!pActiveWeapon)
return;
PlayerInfo_t playerInfo;
I::Engine->GetPlayerInfo(I::Engine->GetLocalPlayer(), &playerInfo);
static int iKnifeModel = C::Get<int>(Vars.iKnifeModel);
if (iKnifeModel != C::Get<int>(Vars.iKnifeModel))
iKnifeModel = C::Get<int>(Vars.iKnifeModel);
CBaseHandle* pMyWeapons = pLocal->GetWeaponsHandle();
for (unsigned int i = 0; pMyWeapons[i] != INVALID_EHANDLE_INDEX; i++) {
CBaseCombatWeapon* pWeapon = (CBaseCombatWeapon*)I::ClientEntityList->GetClientEntityFromHandle(pMyWeapons[i]);
if (pWeapon)
{
// Filter out weapons that aren't our own.
if (pWeapon->GetOwnerXuidLow() != playerInfo.nXuidLow)
continue;
// Change knife model.
if (pActiveWeapon->GetClientClass()->nClassID == EClassIndex::CKnife && iKnifeModel > 0)
ApplyKnifeModel(pWeapon, knifelist.at(iKnifeModel).szModel);
// Apply knife skin.
//if (pWeapon->GetClientClass()->nClassID == EClassIndex::CKnife && iKnifeModel > 0)
// ApplyKnifeSkin(pWeapon, weapon_info[iKnifeModel - 1].model, weapon_info[iKnifeModel - 1].id, 0, 3, 0.0001f);
// We really shouldn't do this, but whatever.
// Loop thru all possible weapons and set their skins.
/*for (auto j = 0; j < 60; j++)
{
if (pWeapon->GetItemDefinitionIndex() == vecWeapons[j] && j < 53)
{
pWeapon->GetFallbackPaintKit() = atoi(C::Get<std::deque<std::string>>(Vars.vecSkinIDs).at(*pWeapon->GetItemDefinitionIndex()).c_str());
pWeapon->GetFallbackWear() = C::Get<std::deque<float>>(Vars.vecSkinWear).at(*pWeapon->GetItemDefinitionIndex());
pWeapon->GetFallbackSeed() = C::Get<std::deque<int>>(Vars.vecSkinSeed).at(*pWeapon->GetItemDefinitionIndex());
}
}
// Force fallback values.
pWeapon->GetItemIDHigh() = -1;
// Fix stat-trak.
pWeapon->GetAccountID() = playerInfo.nXuidLow;
//pWeapon->GetOwnerXuidHigh() = 0;
//pWeapon->GetOwnerXuidLow() = 0;*/
}
}
}
bool CSkinChanger::ApplyKnifeModel(CBaseCombatWeapon* pWeapon, const char* szModel)
{
CBaseViewModel* pViewmodel = (CBaseViewModel*)I::ClientEntityList->GetClientEntityFromHandle(CBaseEntity::GetLocalPlayer()->GetViewModelHandle());
if (!pViewmodel)
return false;
CBaseHandle pWeaponHandle = pViewmodel->GetWeaponHandle();
if (!pWeaponHandle)
return false;
CBaseCombatWeapon* pViewmodelWeapon = (CBaseCombatWeapon*)(I::ClientEntityList->GetClientEntityFromHandle(pWeaponHandle));
if (pViewmodelWeapon != pWeapon)
return false;
pViewmodel->GetModelIndex() = I::ModelInfo->GetModelIndex(szModel);
return true;
}