Compare commits

..

3 Commits

Author SHA1 Message Date
deBallerMann
ae34d54320 Merge 831c39e43a into 6870dd0e57 2025-04-18 15:00:47 -07:00
deBallerMann
831c39e43a Weaponlist based on usage
m4a4 is also defined as m4a1 changed that too
2025-02-02 14:39:54 +01:00
deBallerMann
fcefe64456 Variables.cs based on usage 2025-02-02 14:20:56 +01:00
4 changed files with 99 additions and 71 deletions

View File

@@ -14,62 +14,61 @@ public partial class WeaponPaints
{
private static readonly Dictionary<string, string> WeaponList = new()
{
{"weapon_deagle", "Desert Eagle"},
{"weapon_elite", "Dual Berettas"},
{"weapon_fiveseven", "Five-SeveN"},
{"weapon_glock", "Glock-18"},
{"weapon_ak47", "AK-47"},
{"weapon_aug", "AUG"},
{"weapon_awp", "AWP"},
{"weapon_famas", "FAMAS"},
{"weapon_g3sg1", "G3SG1"},
{"weapon_galilar", "Galil AR"},
{"weapon_m249", "M249"},
{"weapon_m4a1", "M4A1"},
{"weapon_mac10", "MAC-10"},
{"weapon_p90", "P90"},
{"weapon_mp5sd", "MP5-SD"},
{"weapon_ump45", "UMP-45"},
{"weapon_xm1014", "XM1014"},
{"weapon_bizon", "PP-Bizon"},
{"weapon_mag7", "MAG-7"},
{"weapon_negev", "Negev"},
{"weapon_sawedoff", "Sawed-Off"},
{"weapon_tec9", "Tec-9"},
{"weapon_taser", "Zeus x27"},
{"weapon_hkp2000", "P2000"},
{"weapon_mp7", "MP7"},
{"weapon_mp9", "MP9"},
{"weapon_nova", "Nova"},
{"weapon_p250", "P250"},
{"weapon_scar20", "SCAR-20"},
{"weapon_sg556", "SG 553"},
{"weapon_ssg08", "SSG 08"},
{"weapon_knife_karambit", "Karambit"},
{"weapon_knife_m9_bayonet", "M9 Bayonet"},
{"weapon_bayonet", "Bayonet"},
{"weapon_knife_butterfly", "Butterfly Knife"},
{"weapon_knife", "Default Knife"},
{"weapon_usp_silencer", "USP-S"},
{"weapon_deagle", "Desert Eagle"},
{"weapon_ak47", "AK-47"},
{"weapon_m4a1_silencer", "M4A1-S"},
{"weapon_usp_silencer", "USP-S"},
{"weapon_cz75a", "CZ75-Auto"},
{"weapon_revolver", "R8 Revolver"},
{ "weapon_knife", "Default Knife" },
{ "weapon_knife_m9_bayonet", "M9 Bayonet" },
{ "weapon_knife_karambit", "Karambit" },
{ "weapon_bayonet", "Bayonet" },
{ "weapon_knife_survival_bowie", "Bowie Knife" },
{ "weapon_knife_butterfly", "Butterfly Knife" },
{ "weapon_knife_falchion", "Falchion Knife" },
{ "weapon_knife_flip", "Flip Knife" },
{ "weapon_knife_gut", "Gut Knife" },
{ "weapon_knife_tactical", "Huntsman Knife" },
{ "weapon_knife_push", "Shadow Daggers" },
{ "weapon_knife_gypsy_jackknife", "Navaja Knife" },
{ "weapon_knife_stiletto", "Stiletto Knife" },
{ "weapon_knife_widowmaker", "Talon Knife" },
{ "weapon_knife_ursus", "Ursus Knife" },
{ "weapon_knife_css", "Classic Knife" },
{ "weapon_knife_cord", "Paracord Knife" },
{ "weapon_knife_canis", "Survival Knife" },
{ "weapon_knife_outdoor", "Nomad Knife" },
{ "weapon_knife_skeleton", "Skeleton Knife" },
{ "weapon_knife_kukri", "Kukri Knife" }
{"weapon_m4a1", "M4A4"},
{"weapon_awp", "AWP"},
{"weapon_ssg08", "SSG 08"},
{"weapon_aug", "AUG"},
{"weapon_famas", "FAMAS"},
{"weapon_galilar", "Galil AR"},
{"weapon_mac10", "MAC-10"},
{"weapon_sg556", "SG 553"},
{"weapon_m249", "M249"},
{"weapon_g3sg1", "G3SG1"},
{"weapon_p90", "P90"},
{"weapon_mp5sd", "MP5-SD"},
{"weapon_ump45", "UMP-45"},
{"weapon_xm1014", "XM1014"},
{"weapon_bizon", "PP-Bizon"},
{"weapon_mag7", "MAG-7"},
{"weapon_negev", "Negev"},
{"weapon_sawedoff", "Sawed-Off"},
{"weapon_fiveseven", "Five-SeveN"},
{"weapon_elite", "Dual Berettas"},
{"weapon_tec9", "Tec-9"},
{"weapon_taser", "Zeus x27"},
{"weapon_hkp2000", "P2000"},
{"weapon_mp7", "MP7"},
{"weapon_mp9", "MP9"},
{"weapon_nova", "Nova"},
{"weapon_p250", "P250"},
{"weapon_scar20", "SCAR-20"},
{"weapon_cz75a", "CZ75-Auto"},
{"weapon_revolver", "R8 Revolver"},
{"weapon_knife_survival_bowie", "Bowie Knife"},
{"weapon_knife_falchion", "Falchion Knife"},
{"weapon_knife_flip", "Flip Knife"},
{"weapon_knife_gut", "Gut Knife"},
{"weapon_knife_tactical", "Huntsman Knife"},
{"weapon_knife_push", "Shadow Daggers"},
{"weapon_knife_gypsy_jackknife", "Navaja Knife"},
{"weapon_knife_stiletto", "Stiletto Knife"},
{"weapon_knife_widowmaker", "Talon Knife"},
{"weapon_knife_ursus", "Ursus Knife"},
{"weapon_knife_css", "Classic Knife"},
{"weapon_knife_cord", "Paracord Knife"},
{"weapon_knife_canis", "Survival Knife"},
{"weapon_knife_outdoor", "Nomad Knife"},
{"weapon_knife_skeleton", "Skeleton Knife"},
{"weapon_knife_kukri", "Kukri Knife"}
};
public static IStringLocalizer? _localizer;
@@ -93,11 +92,10 @@ public partial class WeaponPaints
private static readonly MemoryFunctionVoid<nint, string, float> CAttributeListSetOrAddAttributeValueByName = new(GameData.GetSignature("CAttributeList_SetOrAddAttributeValueByName"));
//we dont need anymore because we use AcceptInput
//private static readonly MemoryFunctionWithReturn<nint, string, int, int> SetBodygroupFunc = new(
// GameData.GetSignature("CBaseModelEntity_SetBodygroup"));
private static readonly MemoryFunctionWithReturn<nint, string, int, int> SetBodygroupFunc = new(
GameData.GetSignature("CBaseModelEntity_SetBodygroup"));
//private static readonly Func<nint, string, int, int> SetBodygroup = SetBodygroupFunc.Invoke;
private static readonly Func<nint, string, int, int> SetBodygroup = SetBodygroupFunc.Invoke;
private static Dictionary<int, string> WeaponDefindex { get; } = new()
{
@@ -168,4 +166,4 @@ public partial class WeaponPaints
private static readonly PluginCapability<IMenuApi> MenuCapability = new("menu:nfcore");
private int _fadeSeed;
}
}

View File

@@ -285,6 +285,7 @@ namespace WeaponPaints
if (!weapon.Value.OwnerEntity.IsValid) continue;
if (gun.Entity == null) continue;
if (!gun.IsValid) continue;
if (!gun.VisibleinPVS) continue;
try
{
@@ -405,7 +406,7 @@ namespace WeaponPaints
item.Initialized = true;
SetBodygroup(pawn, "default_gloves", 1);
SetBodygroup(pawn.Handle, "default_gloves", 1);
}
catch (Exception) { }
}, TimerFlags.STOP_ON_MAPCHANGE);
@@ -429,15 +430,13 @@ namespace WeaponPaints
return int.TryParse(randomWeapon["paint"]?.ToString(), out var paintValue) ? paintValue : 0;
}
//xstage idea on css discord
public static void SubclassChange(CBasePlayerWeapon weapon, ushort itemD)
private static void SubclassChange(CBasePlayerWeapon weapon, ushort itemD)
{
weapon.AcceptInput("ChangeSubclass", value: itemD.ToString());
}
var subclassChangeFunc = VirtualFunction.Create<nint, string, int>(
GameData.GetSignature("ChangeSubclass")
);
public static void SetBodygroup(CCSPlayerPawn pawn, string group, int value)
{
pawn.AcceptInput("SetBodygroup", value:$"{group},{value}");
subclassChangeFunc(weapon.Handle, itemD.ToString());
}
private static void UpdateWeaponMeshGroupMask(CBaseEntity weapon, bool isLegacy = false)
@@ -455,6 +454,13 @@ namespace WeaponPaints
private static void UpdatePlayerWeaponMeshGroupMask(CCSPlayerController player, CBasePlayerWeapon weapon, bool isLegacy)
{
UpdateWeaponMeshGroupMask(weapon, isLegacy);
var viewModel = GetPlayerViewModel(player);
if (viewModel == null || viewModel.Weapon.Value == null ||
viewModel.Weapon.Value.Index != weapon.Index) return;
UpdateWeaponMeshGroupMask(viewModel, isLegacy);
Utilities.SetStateChanged(viewModel, "CBaseEntity", "m_CBodyComponent");
}
private static void GivePlayerAgent(CCSPlayerController player)
@@ -552,6 +558,16 @@ namespace WeaponPaints
return !Utility.IsPlayerValid(player) ? null : player;
}
private static unsafe CBaseViewModel? GetPlayerViewModel(CCSPlayerController player)
{
if (player.PlayerPawn.Value == null || player.PlayerPawn.Value.ViewModelServices == null) return null;
CCSPlayer_ViewModelServices viewModelServices = new(player.PlayerPawn.Value.ViewModelServices!.Handle);
var ptr = viewModelServices.Handle + Schema.GetSchemaOffset("CCSPlayer_ViewModelServices", "m_hViewModel");
var references = MemoryMarshal.CreateSpan(ref ptr, 3);
var viewModel = (CHandle<CBaseViewModel>)Activator.CreateInstance(typeof(CHandle<CBaseViewModel>), references[0])!;
return viewModel.Value == null ? null : viewModel.Value;
}
private static bool HasChangedKnife(CCSPlayerController player, out string? knifeValue)
{
knifeValue = null;

View File

@@ -9,7 +9,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.331" />
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.281" />
<PackageReference Include="Dapper" Version="2.1.35" />
<PackageReference Include="MySqlConnector" Version="2.4.0-beta.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />

View File

@@ -1,9 +1,23 @@
{
"ChangeSubclass": {
"signatures": {
"library": "server",
"windows": "48 89 6C 24 ? 56 48 83 EC ? 48 8B EA 48 8B F1 E8 ? ? ? ? 84 C0 0F 84",
"linux": "55 48 89 E5 41 57 41 56 41 55 49 89 F5 41 54 49 89 FC 53 48 81 EC A8 00 00 00"
}
},
"CAttributeList_SetOrAddAttributeValueByName": {
"signatures": {
"library": "server",
"windows": "40 53 55 41 56 48 81 EC 90 00 00 00",
"linux": "55 48 89 E5 41 57 41 56 49 89 FE 41 55 41 54 53 48 89 F3 48 83 EC ? F3 0F 11 85"
"windows": "40 53 41 56 41 57 48 81 EC 90 00 00 00 0F 29 74 24 70",
"linux": "55 48 89 E5 41 57 41 56 49 89 FE 41 55 41 54 49 89 F4 53 48 83 EC 78"
}
},
"CBaseModelEntity_SetBodygroup": {
"signatures": {
"library": "server",
"windows": "48 89 5C 24 08 48 89 74 24 10 57 48 83 EC 20 41 8B F8 48 8B F2 48 8B D9 E8 ? ? ? ?",
"linux": "55 48 89 E5 41 56 49 89 F6 41 55 41 89 D5 41 54 49 89 FC 48 83 EC 08"
}
}
}