-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSkinchanger.cpp
More file actions
91 lines (73 loc) · 2.69 KB
/
Skinchanger.cpp
File metadata and controls
91 lines (73 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "Skinchanger.hpp"
void Skinchanger::applyWeaponSettings(BaseCombatWeapon weapon, SkinchangerWeapon settings){
weapon.m_iItemIDHigh(-1);
weapon.m_iAccountID(weapon.m_OriginalOwnerXuidLow());
weapon.m_nFallbackPaintKit(settings.paintKit);
weapon.m_flFallbackWear(settings.wear);
if (settings.quality != INVALID_QUALITY) {
weapon.m_iEntityQuality(settings.quality);
}
else if (weapon.isKnife()) {
weapon.m_iEntityQuality(QUALITY_UNUSUAL);
}
if (settings.customName != "") {
weapon.m_szCustomName(settings.customName);
}
if (settings.statTrack >= 0) {
if (settings.quality == INVALID_QUALITY || settings.quality == QUALITY_NORMAL) {
weapon.m_iEntityQuality(QUALITY_STRANGE);
}
weapon.m_nFallbackStatTrak(settings.statTrack);
}
if (settings.seed > 0) {
weapon.m_nFallbackSeed(settings.seed);
}
}
void Skinchanger::applyKnifeSettings(BaseCombatWeapon knife, SkinchangerWeapon settings){
auto weaponModel = modelIndexes[settings.itemDI];
knife.m_iItemDefinitionIndex(settings.itemDI);
knife.m_nModelIndex(weaponModel);
knife.m_iViewModelIndex(weaponModel);
applyWeaponSettings(knife, settings);
}
Skinchanger::Skinchanger(){}
void Skinchanger::loop() {
if (
engine.clientState->state() != INGAME ||
client.localPlayer->m_iHealth() <= 0 ||
client.localPlayer->m_iTeamNum() < TERRORIST
) {
return;
}
auto localPlayerTeam = client.localPlayer->m_iTeamNum();
for (auto weaponId : client.localPlayer->myWeapons()) {
BaseCombatWeapon weapon = BaseCombatWeapon(client.entityList->getByID(weaponId - 1));
if (!weapon.get()) {
continue;
}
auto weaponDI = weapon.m_iItemDefinitionIndex();
auto weaponModel = modelIndexes[Settings::skinchanger_knifes[localPlayerTeam].itemDI];
if (weapon.isKnife() && weaponModel > 0 && Settings::skinchanger_knifes[localPlayerTeam].enable) {
applyKnifeSettings(weapon, Settings::skinchanger_knifes[localPlayerTeam]);
}
else if (Settings::skinchanger_weapons[weaponDI].enable) {
applyWeaponSettings(weapon, Settings::skinchanger_weapons[weaponDI]);
}
}
auto activeWeaponID = client.localPlayer->m_hActiveWeapon() & 0xfff;
BaseCombatWeapon activeWeapon = BaseCombatWeapon(client.entityList->getByID(activeWeaponID - 1));
if (!activeWeapon.get() || !activeWeapon.isKnife()) {
return;
}
int knifeViewModelID = client.localPlayer->m_hViewModel() & 0xfff;
auto knife = BaseCombatWeapon(client.entityList->getByID((knifeViewModelID - 1)));
if (!knife.get() || !Settings::skinchanger_knifes[localPlayerTeam].enable) {
return;
}
auto knifeModel = modelIndexes[Settings::skinchanger_knifes[localPlayerTeam].itemDI];
if (knifeModel <= 0) {
return;
}
knife.m_nModelIndex(knifeModel);
knife.m_hWeaponWorldModel(knifeModel + 1);
}