Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.84 KB | None | 0 0
  1. #include "Skinchanger.h"
  2.  
  3. #include "KitParser.h"
  4.  
  5. #include <sstream>
  6. #include <cereal/archives/json.hpp>
  7.  
  8. static CreateClientClassFn GetWearableCreateFn()
  9. {
  10. auto clazz = g_CHLClient->GetAllClasses();
  11.  
  12. while (strcmp(clazz->m_pNetworkName, "CEconWearable"))
  13. clazz = clazz->m_pNext;
  14.  
  15. return clazz->m_pCreateFn;
  16. }
  17.  
  18. void Skinchanger::Run()
  19. {
  20. // Skin config
  21. static auto ConfigCreated = false;
  22. if (!ConfigCreated)
  23. {
  24. InitSkins();
  25. ConfigCreated = true;
  26. }
  27.  
  28. // Only run in-game
  29. if (!g_EngineClient->IsInGame()) return;
  30.  
  31. // g_LocalPlayer is nulled during this FSN stage, so have to do this.
  32. auto* pLocal = static_cast<C_BasePlayer*>(g_EntityList->GetClientEntity(g_EngineClient->GetLocalPlayer()));
  33. if (!pLocal) return;
  34.  
  35. // Populate player info struct for XUID ids
  36. player_info_t player_info;
  37. if (!g_EngineClient->GetPlayerInfo(pLocal->EntIndex(), &player_info)) return;
  38.  
  39. // Glove stuff
  40. {
  41. auto wearables = pLocal->m_hMyWearables();
  42.  
  43. static CBaseHandle glove_handle = 0;
  44.  
  45. auto glove = reinterpret_cast<C_BaseAttributableItem*>(g_EntityList->GetClientEntityFromHandle(wearables[0]));
  46.  
  47. if (!glove)
  48. {
  49. auto our_glove = reinterpret_cast<C_BaseAttributableItem*>(g_EntityList->GetClientEntityFromHandle(glove_handle));
  50.  
  51. if (our_glove)
  52. {
  53. wearables[0] = glove_handle;
  54. glove = our_glove;
  55. }
  56. }
  57.  
  58. if (!pLocal->IsAlive())
  59. {
  60. auto glove = static_cast<C_BaseAttributableItem*>(g_EntityList->GetClientEntityFromHandle(*pLocal->m_hMyWearables()));
  61. if (!glove)
  62. return;
  63.  
  64. glove->GetClientNetworkable()->SetDestroyedOnRecreateEntities();
  65. glove->GetClientNetworkable()->Release();
  66.  
  67. return;
  68. }
  69.  
  70. if (!glove)
  71. {
  72. static auto create_wearable_fn = GetWearableCreateFn();
  73.  
  74. auto entry = g_EntityList->GetHighestEntityIndex() + 1;
  75. auto serial = rand() % 0x1000;
  76.  
  77. //glove = static_cast<C_BaseAttributableItem*>(create_wearable_fn(entry, serial));
  78. create_wearable_fn(entry, serial);
  79. glove = reinterpret_cast<C_BaseAttributableItem*>(g_EntityList->GetClientEntity(entry));
  80.  
  81. {
  82. static auto set_abs_origin_fn = reinterpret_cast<void(__thiscall*)(void*, const Vector&)>
  83. (Utilities::PatternScan(GetModuleHandle("client.dll"), "55 8B EC 83 E4 F8 51 53 56 57 8B F1"));
  84.  
  85. static const Vector new_pos = { 10000.f, 10000.f, 10000.f };
  86.  
  87. set_abs_origin_fn(glove, new_pos);
  88. }
  89.  
  90. wearables[0] = entry | serial << 16;
  91.  
  92. glove_handle = wearables[0];
  93. }
  94.  
  95. *reinterpret_cast<int*>(uintptr_t(glove) + 0x64) = -1;
  96. ApplyGlove(glove);
  97. }
  98.  
  99. const auto weapons = pLocal->m_hMyWeapons();
  100. for (size_t i = 0; weapons[i].IsValid(); i++)
  101. {
  102. auto pWeapon = static_cast<C_BaseAttributableItem*>(g_EntityList->GetClientEntityFromHandle(weapons[i]));
  103. if (!pWeapon) continue;
  104.  
  105. int nWeaponIndex = pWeapon->m_nModelIndex();
  106. const auto nOriginalKnifeCT = g_ModelInfo->GetModelIndex("models/weapons/v_knife_default_ct.mdl");
  107. const auto nOriginalKnifeT = g_ModelInfo->GetModelIndex("models/weapons/v_knife_default_t.mdl");
  108. if (nWeaponIndex == nOriginalKnifeCT || nWeaponIndex == nOriginalKnifeT)
  109. pWeapon->m_nModelIndex() = g_ModelInfo->GetModelIndex(ItemDefinitions::WeaponInfo.at(KnifeCfg.iItemDefinitionIndex).model);
  110.  
  111. ApplyModel(pLocal, pWeapon);
  112. ApplySkin(pWeapon, player_info);
  113. ApplyStickerHooks(pWeapon);
  114. }
  115. }
  116.  
  117. void Skinchanger::Dump()
  118. {
  119. try
  120. {
  121. if (CreateDirectory("C:\\black_panties\\dump", NULL) ||
  122. ERROR_ALREADY_EXISTS == GetLastError())
  123. {
  124. KitParser::Get().Dump();
  125. } else
  126. {
  127. g_Warning("Couldn't create folder\n");
  128. Utilities::ConsolePrint("Couldn't create folder");
  129. }
  130. } catch (const std::exception& ex)
  131. {
  132. g_Warning(ex.what());
  133. g_Msg("\n");
  134. Utilities::ConsolePrint(ex.what());
  135. }
  136. }
  137.  
  138. void Skinchanger::LoadSkins()
  139. {
  140. InitSkins();
  141.  
  142. try
  143. {
  144. if (CreateDirectory("C:\\black_panties", NULL) ||
  145. ERROR_ALREADY_EXISTS == GetLastError())
  146. {
  147. std::ifstream is("C:\\black_panties\\skins.json");
  148. if (is.good())
  149. {
  150. cereal::JSONInputArchive iarchive(is);
  151.  
  152. iarchive(cereal::make_nvp("weapons", WeaponCfg),
  153. cereal::make_nvp("knife", KnifeCfg),
  154. cereal::make_nvp("gloves", GloveCfg));
  155. } else
  156. {
  157. g_Warning("skins.json not found, creating...\n");
  158.  
  159. std::ofstream os("C:\\black_panties\\skins.json");
  160. cereal::JSONOutputArchive oarchive(os, cereal::JSONOutputArchive::Options::Options(3));
  161.  
  162. oarchive(cereal::make_nvp("weapons", WeaponCfg),
  163. cereal::make_nvp("knife", KnifeCfg),
  164. cereal::make_nvp("gloves", GloveCfg));
  165. }
  166. } else
  167. {
  168. g_Warning("Couldn't create folder\n");
  169. Utilities::ConsolePrint("Couldn't create folder");
  170. }
  171. } catch (const std::exception& ex)
  172. {
  173. g_Warning(ex.what());
  174. g_Msg("\n");
  175. Utilities::ConsolePrint(ex.what());
  176. }
  177.  
  178. g_ClientState->ForceFullUpdate();
  179. }
  180.  
  181. const char* Skinchanger::GetIconOverride(const std::string & original)
  182. {
  183. if (original == "knife_default_ct" || original == "knife_t") return ItemDefinitions::WeaponInfo.at(KnifeCfg.iItemDefinitionIndex).icon;
  184. return nullptr;
  185. }
  186.  
  187. void Skinchanger::ApplySkin(C_BaseAttributableItem* pWeapon, player_info_t pInfo)
  188. {
  189. auto& nWeaponIndex = pWeapon->m_Item().m_iItemDefinitionIndex();
  190. if (nWeaponIndex == WEAPON_KNIFE || nWeaponIndex == WEAPON_KNIFE_T || nWeaponIndex == KnifeCfg.iItemDefinitionIndex)
  191. {
  192. pWeapon->m_iItemDefinitionIndex() = KnifeCfg.iItemDefinitionIndex;
  193. pWeapon->m_Item().m_nFallbackPaintKit() = KnifeCfg.nFallbackPaintKit;
  194. pWeapon->m_Item().m_iEntityQuality() = KnifeCfg.iEntityQuality;
  195. pWeapon->m_Item().m_nFallbackSeed() = KnifeCfg.nFallbackSeed;
  196. pWeapon->m_Item().m_nFallbackStatTrak() = KnifeCfg.nFallbackStatTrak;
  197. pWeapon->m_Item().m_flFallbackWear() = std::max(0.01f, KnifeCfg.flFallbackWear);
  198. strcpy(&pWeapon->m_Item().m_szCustomName(), KnifeCfg.szCustomName.c_str());
  199.  
  200. pWeapon->m_Item().m_iAccountID() = pInfo.xuid_low;
  201.  
  202. pWeapon->m_Item().m_iItemIDHigh() = -1;
  203. } else if (WeaponCfg.find(nWeaponIndex) == WeaponCfg.end()) return;
  204. else
  205. {
  206. const auto cfg = WeaponCfg[nWeaponIndex];
  207.  
  208. pWeapon->m_Item().m_nFallbackPaintKit() = cfg.nFallbackPaintKit;
  209. pWeapon->m_Item().m_iEntityQuality() = cfg.iEntityQuality;
  210. pWeapon->m_Item().m_nFallbackSeed() = cfg.nFallbackSeed;
  211. pWeapon->m_Item().m_nFallbackStatTrak() = cfg.nFallbackStatTrak;
  212. pWeapon->m_Item().m_flFallbackWear() = std::max(0.01f, cfg.flFallbackWear);
  213. strcpy(&pWeapon->m_Item().m_szCustomName(), cfg.szCustomName.c_str());
  214.  
  215. pWeapon->m_Item().m_iAccountID() = pInfo.xuid_low;
  216.  
  217. pWeapon->m_Item().m_iItemIDHigh() = -1;
  218. }
  219. }
  220.  
  221. void Skinchanger::ApplyModel(C_BasePlayer* pLocal, C_BaseAttributableItem* pWeapon)
  222. {
  223. auto pViewModel = pLocal->m_hViewModel();
  224. if (!pViewModel) return;
  225.  
  226. auto hViewModelWeapon = pViewModel->m_hWeapon();
  227. auto pViewModelWeapon = static_cast<C_BaseAttributableItem*>(g_EntityList->GetClientEntityFromHandle(hViewModelWeapon));
  228.  
  229. if (pViewModelWeapon != pWeapon) return;
  230.  
  231. int nViewModelIndex = pViewModel->m_nModelIndex();
  232.  
  233. const auto nOriginalKnifeCT = g_ModelInfo->GetModelIndex("models/weapons/v_knife_default_ct.mdl");
  234. const auto nOriginalKnifeT = g_ModelInfo->GetModelIndex("models/weapons/v_knife_default_t.mdl");
  235.  
  236. if (nViewModelIndex == nOriginalKnifeCT || nViewModelIndex == nOriginalKnifeT)
  237. pViewModel->m_nModelIndex() = g_ModelInfo->GetModelIndex(ItemDefinitions::WeaponInfo.at(KnifeCfg.iItemDefinitionIndex).model);
  238. }
  239.  
  240. void Skinchanger::ApplyGlove(C_BaseAttributableItem* pGlove)
  241. {
  242. pGlove->m_iItemDefinitionIndex() = GloveCfg.iItemDefinitionIndex;
  243.  
  244. pGlove->m_Item().m_nFallbackPaintKit() = GloveCfg.nFallbackPaintKit;
  245. pGlove->m_Item().m_nFallbackSeed() = GloveCfg.nFallbackSeed;
  246. pGlove->m_Item().m_flFallbackWear() = std::max(0.01f, GloveCfg.flFallbackWear);
  247.  
  248. pGlove->m_Item().m_iItemIDHigh() = -1;
  249.  
  250. pGlove->m_Item().m_nModelIndex() = g_ModelInfo->GetModelIndex(ItemDefinitions::WeaponInfo.at(GloveCfg.iItemDefinitionIndex).model);
  251. pGlove->m_Item().PreDataUpdate(0);
  252. }
  253.  
  254. void Skinchanger::InitSkins()
  255. {
  256. WeaponCfg[WEAPON_DEAGLE].nFallbackPaintKit = 37; //deagle skin
  257. WeaponCfg[WEAPON_DEAGLE].stickers[0].nIndex = 76;
  258. WeaponCfg[WEAPON_DEAGLE].stickers[1].nIndex = 76;
  259. WeaponCfg[WEAPON_DEAGLE].stickers[2].nIndex = 76;
  260. WeaponCfg[WEAPON_DEAGLE].stickers[3].nIndex = 76;
  261. WeaponCfg[WEAPON_GLOCK].nFallbackPaintKit = 3; //glock skin
  262. WeaponCfg[WEAPON_GLOCK].stickers[0].nIndex = 76;
  263. WeaponCfg[WEAPON_GLOCK].stickers[1].nIndex = 76;
  264. WeaponCfg[WEAPON_GLOCK].stickers[2].nIndex = 76;
  265. WeaponCfg[WEAPON_GLOCK].stickers[3].nIndex = 76;
  266. WeaponCfg[WEAPON_P250].nFallbackPaintKit = 404; //p250 skin
  267. WeaponCfg[WEAPON_P250].stickers[0].nIndex = 76;
  268. WeaponCfg[WEAPON_P250].stickers[1].nIndex = 76;
  269. WeaponCfg[WEAPON_P250].stickers[2].nIndex = 76;
  270. WeaponCfg[WEAPON_P250].stickers[3].nIndex = 76;
  271. WeaponCfg[WEAPON_TEC9].nFallbackPaintKit = 216; //tec9 skin
  272. WeaponCfg[WEAPON_TEC9].stickers[0].nIndex = 76;
  273. WeaponCfg[WEAPON_TEC9].stickers[1].nIndex = 76;
  274. WeaponCfg[WEAPON_TEC9].stickers[2].nIndex = 76;
  275. WeaponCfg[WEAPON_TEC9].stickers[3].nIndex = 76;
  276. WeaponCfg[WEAPON_USP_SILENCER].nFallbackPaintKit = 313; //usp skin
  277. WeaponCfg[WEAPON_USP_SILENCER].stickers[0].nIndex = 76;
  278. WeaponCfg[WEAPON_USP_SILENCER].stickers[1].nIndex = 76;
  279. WeaponCfg[WEAPON_USP_SILENCER].stickers[2].nIndex = 76;
  280. WeaponCfg[WEAPON_USP_SILENCER].stickers[3].nIndex = 76;
  281. WeaponCfg[WEAPON_AK47].nFallbackPaintKit = 180; //ak skin
  282. WeaponCfg[WEAPON_AK47].stickers[0].nIndex = 76;
  283. WeaponCfg[WEAPON_AK47].stickers[1].nIndex = 76;
  284. WeaponCfg[WEAPON_AK47].stickers[2].nIndex = 76;
  285. WeaponCfg[WEAPON_AK47].stickers[3].nIndex = 76;
  286. WeaponCfg[WEAPON_AWP].nFallbackPaintKit = 344; //awp skin
  287. WeaponCfg[WEAPON_AWP].stickers[0].nIndex = 76;
  288. WeaponCfg[WEAPON_AWP].stickers[1].nIndex = 76;
  289. WeaponCfg[WEAPON_AWP].stickers[2].nIndex = 76;
  290. WeaponCfg[WEAPON_AWP].stickers[3].nIndex = 76;
  291. WeaponCfg[WEAPON_M4A1_SILENCER].nFallbackPaintKit = 321; //m4a1-s skin
  292. WeaponCfg[WEAPON_M4A1_SILENCER].stickers[0].nIndex = 76;
  293. WeaponCfg[WEAPON_M4A1_SILENCER].stickers[1].nIndex = 76;
  294. WeaponCfg[WEAPON_M4A1_SILENCER].stickers[2].nIndex = 76;
  295. WeaponCfg[WEAPON_M4A1_SILENCER].stickers[3].nIndex = 76;
  296. WeaponCfg[WEAPON_M4A1].nFallbackPaintKit = 309; //m4a4 skin
  297. WeaponCfg[WEAPON_M4A1].stickers[0].nIndex = 76;
  298. WeaponCfg[WEAPON_M4A1].stickers[1].nIndex = 76;
  299. WeaponCfg[WEAPON_M4A1].stickers[2].nIndex = 76;
  300. WeaponCfg[WEAPON_M4A1].stickers[3].nIndex = 76;
  301. WeaponCfg[WEAPON_SSG08].nFallbackPaintKit = 624; //ssg08 skin
  302. WeaponCfg[WEAPON_SSG08].stickers[0].nIndex = 76;
  303. WeaponCfg[WEAPON_SSG08].stickers[1].nIndex = 76;
  304. WeaponCfg[WEAPON_SSG08].stickers[2].nIndex = 76;
  305. WeaponCfg[WEAPON_SSG08].stickers[3].nIndex = 76;
  306. WeaponCfg[WEAPON_UMP45].nFallbackPaintKit = 37; //ump45 skin
  307. WeaponCfg[WEAPON_UMP45].stickers[0].nIndex = 76;
  308. WeaponCfg[WEAPON_UMP45].stickers[1].nIndex = 76;
  309. WeaponCfg[WEAPON_UMP45].stickers[2].nIndex = 76;
  310. WeaponCfg[WEAPON_UMP45].stickers[3].nIndex = 76;
  311. WeaponCfg[WEAPON_CZ75A].nFallbackPaintKit = 476; //cz skin
  312. WeaponCfg[WEAPON_CZ75A].stickers[0].nIndex = 76;
  313. WeaponCfg[WEAPON_CZ75A].stickers[1].nIndex = 76;
  314. WeaponCfg[WEAPON_CZ75A].stickers[2].nIndex = 76;
  315. WeaponCfg[WEAPON_CZ75A].stickers[3].nIndex = 76;
  316. WeaponCfg[WEAPON_MP9].nFallbackPaintKit = 448; //mp9 skin
  317. WeaponCfg[WEAPON_MP9].stickers[0].nIndex = 76;
  318. WeaponCfg[WEAPON_MP9].stickers[1].nIndex = 76;
  319. WeaponCfg[WEAPON_MP9].stickers[2].nIndex = 76;
  320. WeaponCfg[WEAPON_MP9].stickers[3].nIndex = 76;
  321. WeaponCfg[WEAPON_SCAR20].nFallbackPaintKit = 597; //scar20 skin
  322. WeaponCfg[WEAPON_SCAR20].stickers[0].nIndex = 76;
  323. WeaponCfg[WEAPON_SCAR20].stickers[1].nIndex = 76;
  324. WeaponCfg[WEAPON_SCAR20].stickers[2].nIndex = 76;
  325. WeaponCfg[WEAPON_SCAR20].stickers[3].nIndex = 76;
  326. WeaponCfg[WEAPON_HKP2000].nFallbackPaintKit = 389; //p2000 skin
  327. WeaponCfg[WEAPON_HKP2000].stickers[0].nIndex = 76;
  328. WeaponCfg[WEAPON_HKP2000].stickers[1].nIndex = 76;
  329. WeaponCfg[WEAPON_HKP2000].stickers[2].nIndex = 76;
  330. WeaponCfg[WEAPON_HKP2000].stickers[3].nIndex = 76;
  331. WeaponCfg[WEAPON_AUG].nFallbackPaintKit = 455; //aug skin
  332. WeaponCfg[WEAPON_AUG].stickers[0].nIndex = 76;
  333. WeaponCfg[WEAPON_AUG].stickers[1].nIndex = 76;
  334. WeaponCfg[WEAPON_AUG].stickers[2].nIndex = 76;
  335. WeaponCfg[WEAPON_AUG].stickers[3].nIndex = 76;
  336. WeaponCfg[WEAPON_REVOLVER].nFallbackPaintKit = 12; //revolver skin
  337. WeaponCfg[WEAPON_REVOLVER].stickers[0].nIndex = 76;
  338. WeaponCfg[WEAPON_REVOLVER].stickers[1].nIndex = 76;
  339. WeaponCfg[WEAPON_REVOLVER].stickers[2].nIndex = 76;
  340. WeaponCfg[WEAPON_REVOLVER].stickers[3].nIndex = 76;
  341. WeaponCfg[WEAPON_FIVESEVEN].nFallbackPaintKit = 3; //five7 skin
  342. WeaponCfg[WEAPON_FIVESEVEN].stickers[0].nIndex = 76;
  343. WeaponCfg[WEAPON_FIVESEVEN].stickers[1].nIndex = 76;
  344. WeaponCfg[WEAPON_FIVESEVEN].stickers[2].nIndex = 76;
  345. WeaponCfg[WEAPON_FIVESEVEN].stickers[3].nIndex = 76;
  346. WeaponCfg[WEAPON_FAMAS].nFallbackPaintKit = 260; //famas skin
  347. WeaponCfg[WEAPON_FAMAS].stickers[0].nIndex = 76;
  348. WeaponCfg[WEAPON_FAMAS].stickers[1].nIndex = 76;
  349. WeaponCfg[WEAPON_FAMAS].stickers[2].nIndex = 76;
  350. WeaponCfg[WEAPON_FAMAS].stickers[3].nIndex = 76;
  351. WeaponCfg[WEAPON_GALILAR].nFallbackPaintKit = 228; //galil skin
  352. WeaponCfg[WEAPON_GALILAR].stickers[0].nIndex = 76;
  353. WeaponCfg[WEAPON_GALILAR].stickers[1].nIndex = 76;
  354. WeaponCfg[WEAPON_GALILAR].stickers[2].nIndex = 76;
  355. WeaponCfg[WEAPON_GALILAR].stickers[3].nIndex = 76;
  356. WeaponCfg[WEAPON_SG556].nFallbackPaintKit = 260; //ssg556 skin
  357. WeaponCfg[WEAPON_SG556].stickers[0].nIndex = 76;
  358. WeaponCfg[WEAPON_SG556].stickers[1].nIndex = 76;
  359. WeaponCfg[WEAPON_SG556].stickers[2].nIndex = 76;
  360. WeaponCfg[WEAPON_SG556].stickers[3].nIndex = 76;
  361. WeaponCfg[WEAPON_MAC10].nFallbackPaintKit = 433; //mac skin
  362. WeaponCfg[WEAPON_MAC10].stickers[0].nIndex = 76;
  363. WeaponCfg[WEAPON_MAC10].stickers[1].nIndex = 76;
  364. WeaponCfg[WEAPON_MAC10].stickers[2].nIndex = 76;
  365. WeaponCfg[WEAPON_MAC10].stickers[3].nIndex = 76;
  366. WeaponCfg[WEAPON_BIZON].nFallbackPaintKit = 349; //bizon skin
  367. WeaponCfg[WEAPON_BIZON].stickers[0].nIndex = 76;
  368. WeaponCfg[WEAPON_BIZON].stickers[1].nIndex = 76;
  369. WeaponCfg[WEAPON_BIZON].stickers[2].nIndex = 76;
  370. WeaponCfg[WEAPON_BIZON].stickers[3].nIndex = 76;
  371. WeaponCfg[WEAPON_MP7].nFallbackPaintKit = 423; //mp7 skin
  372. WeaponCfg[WEAPON_MP7].stickers[0].nIndex = 76;
  373. WeaponCfg[WEAPON_MP7].stickers[1].nIndex = 76;
  374. WeaponCfg[WEAPON_MP7].stickers[2].nIndex = 76;
  375. WeaponCfg[WEAPON_MP7].stickers[3].nIndex = 76;
  376. WeaponCfg[WEAPON_P90].nFallbackPaintKit = 156; //p90 skin
  377. WeaponCfg[WEAPON_P90].stickers[0].nIndex = 76;
  378. WeaponCfg[WEAPON_P90].stickers[1].nIndex = 76;
  379. WeaponCfg[WEAPON_P90].stickers[2].nIndex = 76;
  380. WeaponCfg[WEAPON_P90].stickers[3].nIndex = 76;
  381. WeaponCfg[WEAPON_ELITE].nFallbackPaintKit = 249; //duals skin
  382. WeaponCfg[WEAPON_ELITE].stickers[0].nIndex = 76;
  383. WeaponCfg[WEAPON_ELITE].stickers[1].nIndex = 76;
  384. WeaponCfg[WEAPON_ELITE].stickers[2].nIndex = 76;
  385. WeaponCfg[WEAPON_ELITE].stickers[3].nIndex = 76;
  386. WeaponCfg[WEAPON_NEGEV].nFallbackPaintKit = 514; //negev skin
  387. WeaponCfg[WEAPON_NEGEV].stickers[0].nIndex = 76;
  388. WeaponCfg[WEAPON_NEGEV].stickers[1].nIndex = 76;
  389. WeaponCfg[WEAPON_NEGEV].stickers[2].nIndex = 76;
  390. WeaponCfg[WEAPON_NEGEV].stickers[3].nIndex = 76;
  391. WeaponCfg[WEAPON_SAWEDOFF].nFallbackPaintKit = 596; //sawedoff skin
  392. WeaponCfg[WEAPON_SAWEDOFF].stickers[0].nIndex = 76;
  393. WeaponCfg[WEAPON_SAWEDOFF].stickers[1].nIndex = 76;
  394. WeaponCfg[WEAPON_SAWEDOFF].stickers[2].nIndex = 76;
  395. WeaponCfg[WEAPON_SAWEDOFF].stickers[3].nIndex = 76;
  396. WeaponCfg[WEAPON_XM1014].nFallbackPaintKit = 654; //xm skin
  397. WeaponCfg[WEAPON_XM1014].stickers[0].nIndex = 76;
  398. WeaponCfg[WEAPON_XM1014].stickers[1].nIndex = 76;
  399. WeaponCfg[WEAPON_XM1014].stickers[2].nIndex = 76;
  400. WeaponCfg[WEAPON_XM1014].stickers[3].nIndex = 76;
  401. WeaponCfg[WEAPON_NOVA].nFallbackPaintKit = 3; //nova skin
  402. WeaponCfg[WEAPON_NOVA].stickers[0].nIndex = 76;
  403. WeaponCfg[WEAPON_NOVA].stickers[1].nIndex = 76;
  404. WeaponCfg[WEAPON_NOVA].stickers[2].nIndex = 76;
  405. WeaponCfg[WEAPON_NOVA].stickers[3].nIndex = 76;
  406. WeaponCfg[WEAPON_M249].nFallbackPaintKit = 496; //m249 skin
  407. WeaponCfg[WEAPON_M249].stickers[0].nIndex = 76;
  408. WeaponCfg[WEAPON_M249].stickers[1].nIndex = 76;
  409. WeaponCfg[WEAPON_M249].stickers[2].nIndex = 76;
  410. WeaponCfg[WEAPON_M249].stickers[3].nIndex = 76;
  411. WeaponCfg[WEAPON_MAG7].nFallbackPaintKit = 499; //mag7 skin
  412. WeaponCfg[WEAPON_MAG7].stickers[0].nIndex = 76;
  413. WeaponCfg[WEAPON_MAG7].stickers[1].nIndex = 76;
  414. WeaponCfg[WEAPON_MAG7].stickers[2].nIndex = 76;
  415. WeaponCfg[WEAPON_MAG7].stickers[3].nIndex = 76;
  416. WeaponCfg[WEAPON_G3SG1].nFallbackPaintKit = 511; //mg3sg1 skin
  417. WeaponCfg[WEAPON_G3SG1].stickers[0].nIndex = 76;
  418. WeaponCfg[WEAPON_G3SG1].stickers[1].nIndex = 76;
  419. WeaponCfg[WEAPON_G3SG1].stickers[2].nIndex = 76;
  420. WeaponCfg[WEAPON_G3SG1].stickers[3].nIndex = 76;
  421.  
  422. KnifeCfg.iItemDefinitionIndex = WEAPON_KNIFE_KARAMBIT;
  423. KnifeCfg.nFallbackPaintKit = 561;
  424.  
  425. GloveCfg.iItemDefinitionIndex = GLOVE_STUDDED_BLOODHOUND;
  426. GloveCfg.nFallbackPaintKit = 10037;
  427. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement