mirror of
https://github.com/Nereziel/cs2-WeaponPaints.git
synced 2026-03-10 16:34:38 +00:00
123
This commit is contained in:
48
Commands.cs
48
Commands.cs
@@ -14,17 +14,14 @@ namespace WeaponPaints
|
|||||||
if (!Utility.IsPlayerValid(player)) return;
|
if (!Utility.IsPlayerValid(player)) return;
|
||||||
|
|
||||||
if (player == null || !player.IsValid || player.UserId == null || player.IsBot) return;
|
if (player == null || !player.IsValid || player.UserId == null || player.IsBot) return;
|
||||||
|
PlayerInfo playerInfo = new (
|
||||||
PlayerInfo playerInfo = new PlayerInfo
|
(int)player.Index,
|
||||||
{
|
player.Slot,
|
||||||
UserId = player.UserId,
|
player.UserId,
|
||||||
Slot = player.Slot,
|
player.SteamID.ToString(),
|
||||||
Index = (int)player.Index,
|
player.PlayerName,
|
||||||
SteamId = player?.SteamID.ToString(),
|
player.IpAddress?.Split(":")[0]
|
||||||
Name = player?.PlayerName,
|
);
|
||||||
IpAddress = player?.IpAddress?.Split(":")[0]
|
|
||||||
};
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (player != null && !commandsCooldown.TryGetValue(player.Slot, out DateTime cooldownEndTime) ||
|
if (player != null && !commandsCooldown.TryGetValue(player.Slot, out DateTime cooldownEndTime) ||
|
||||||
@@ -341,14 +338,15 @@ namespace WeaponPaints
|
|||||||
|
|
||||||
private void UpdatePlayerWeaponInfo(CCSPlayerController p, int weaponDefIndex, int paintID)
|
private void UpdatePlayerWeaponInfo(CCSPlayerController p, int weaponDefIndex, int paintID)
|
||||||
{
|
{
|
||||||
if (!gPlayerWeaponsInfo[p.Slot].ContainsKey(weaponDefIndex))
|
if (!gPlayerWeaponsInfo[p.Slot].TryGetValue(weaponDefIndex, out WeaponInfo? value))
|
||||||
{
|
{
|
||||||
gPlayerWeaponsInfo[p.Slot][weaponDefIndex] = new WeaponInfo();
|
value = new WeaponInfo();
|
||||||
|
gPlayerWeaponsInfo[p.Slot][weaponDefIndex] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
gPlayerWeaponsInfo[p.Slot][weaponDefIndex].Paint = paintID;
|
value.Paint = paintID;
|
||||||
gPlayerWeaponsInfo[p.Slot][weaponDefIndex].Wear = 0.00f;
|
value.Wear = 0.00f;
|
||||||
gPlayerWeaponsInfo[p.Slot][weaponDefIndex].Seed = 0;
|
value.Seed = 0;
|
||||||
|
|
||||||
if (g_bCommandsAllowed && (LifeState_t)p.LifeState == LifeState_t.LIFE_ALIVE)
|
if (g_bCommandsAllowed && (LifeState_t)p.LifeState == LifeState_t.LIFE_ALIVE)
|
||||||
{
|
{
|
||||||
@@ -409,16 +407,14 @@ void HandleSelectedGlove(CCSPlayerController? player, JObject selectedGlove, str
|
|||||||
PlayerWeaponImage[player.Slot] = image;
|
PlayerWeaponImage[player.Slot] = image;
|
||||||
AddTimer(2.0f, () => PlayerWeaponImage.Remove(player.Slot), CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
|
AddTimer(2.0f, () => PlayerWeaponImage.Remove(player.Slot), CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
|
||||||
}
|
}
|
||||||
|
PlayerInfo playerInfo = new(
|
||||||
PlayerInfo playerInfo = new PlayerInfo
|
(int)player.Index,
|
||||||
{
|
player.Slot,
|
||||||
UserId = player.UserId,
|
player.UserId,
|
||||||
Slot = player.Slot,
|
player.SteamID.ToString(),
|
||||||
Index = (int)player.Index,
|
player.PlayerName,
|
||||||
SteamId = player.SteamID.ToString(),
|
player.IpAddress?.Split(":")[0]
|
||||||
Name = player.PlayerName,
|
);
|
||||||
IpAddress = player.IpAddress?.Split(":")[0]
|
|
||||||
};
|
|
||||||
|
|
||||||
if (paint != 0)
|
if (paint != 0)
|
||||||
{
|
{
|
||||||
|
|||||||
38
Events.cs
38
Events.cs
@@ -14,17 +14,16 @@ namespace WeaponPaints
|
|||||||
if (player is null || !player.IsValid || player.IsBot || player.IsHLTV || player.SteamID.ToString().Length != 17 ||
|
if (player is null || !player.IsValid || player.IsBot || player.IsHLTV || player.SteamID.ToString().Length != 17 ||
|
||||||
weaponSync == null || _database == null) return HookResult.Continue;
|
weaponSync == null || _database == null) return HookResult.Continue;
|
||||||
|
|
||||||
PlayerInfo playerInfo = new PlayerInfo
|
PlayerInfo playerInfo = new(
|
||||||
{
|
(int)player.Index,
|
||||||
UserId = player.UserId,
|
player.Slot,
|
||||||
Slot = player.Slot,
|
player.UserId,
|
||||||
Index = (int)player.Index,
|
player.SteamID.ToString(),
|
||||||
SteamId = player.SteamID.ToString(),
|
player.PlayerName,
|
||||||
Name = player.PlayerName,
|
player.IpAddress?.Split(":")[0]
|
||||||
IpAddress = player.IpAddress?.Split(":")[0]
|
);
|
||||||
};
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (Config.Additional.SkinEnabled)
|
if (Config.Additional.SkinEnabled)
|
||||||
{
|
{
|
||||||
@@ -55,17 +54,16 @@ namespace WeaponPaints
|
|||||||
if (player is null || !player.IsValid || player.IsBot ||
|
if (player is null || !player.IsValid || player.IsBot ||
|
||||||
player.IsHLTV || player.SteamID.ToString().Length != 17) return HookResult.Continue;
|
player.IsHLTV || player.SteamID.ToString().Length != 17) return HookResult.Continue;
|
||||||
|
|
||||||
PlayerInfo playerInfo = new PlayerInfo
|
PlayerInfo playerInfo = new(
|
||||||
{
|
(int)player.Index,
|
||||||
UserId = player.UserId,
|
player.Slot,
|
||||||
Slot = player.Slot,
|
player.UserId,
|
||||||
Index = (int)player.Index,
|
player.SteamID.ToString(),
|
||||||
SteamId = player.SteamID.ToString(),
|
player.PlayerName,
|
||||||
Name = player.PlayerName,
|
player.IpAddress?.Split(":")[0]
|
||||||
IpAddress = player.IpAddress?.Split(":")[0]
|
);
|
||||||
};
|
|
||||||
|
|
||||||
if (weaponSync != null)
|
if (weaponSync != null)
|
||||||
{
|
{
|
||||||
// Run weapon sync tasks asynchronously
|
// Run weapon sync tasks asynchronously
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
|
|||||||
47
Utility.cs
47
Utility.cs
@@ -43,26 +43,33 @@ namespace WeaponPaints
|
|||||||
{
|
{
|
||||||
string[] createTableQueries = new[]
|
string[] createTableQueries = new[]
|
||||||
{
|
{
|
||||||
@"CREATE TABLE IF NOT EXISTS `wp_player_skins` (
|
@"CREATE TABLE IF NOT EXISTS `wp_player_skins` (
|
||||||
`steamid` varchar(64) NOT NULL,
|
`steamid` varchar(64) NOT NULL,
|
||||||
`weapon_defindex` int(6) NOT NULL,
|
`weapon_defindex` int(6) NOT NULL,
|
||||||
`weapon_paint_id` int(6) NOT NULL,
|
`weapon_paint_id` int(6) NOT NULL,
|
||||||
`weapon_wear` float NOT NULL DEFAULT 0.000001,
|
`weapon_wear` float NOT NULL DEFAULT 0.000001,
|
||||||
`weapon_seed` int(16) NOT NULL DEFAULT 0
|
`weapon_seed` int(16) NOT NULL DEFAULT 0
|
||||||
) ENGINE=InnoDB",
|
) ENGINE=InnoDB",
|
||||||
@"CREATE TABLE IF NOT EXISTS `wp_player_knife` (
|
@"CREATE TABLE IF NOT EXISTS `wp_player_knife` (
|
||||||
`steamid` varchar(64) NOT NULL,
|
`steamid` varchar(64) NOT NULL,
|
||||||
`knife` varchar(64) NOT NULL,
|
`knife` varchar(64) NOT NULL,
|
||||||
UNIQUE (`steamid`)
|
UNIQUE (`steamid`)
|
||||||
) ENGINE = InnoDB",
|
) ENGINE = InnoDB",
|
||||||
@"CREATE TABLE IF NOT EXISTS `wp_player_gloves` (
|
@"CREATE TABLE IF NOT EXISTS `wp_player_gloves` (
|
||||||
`steamid` varchar(64) NOT NULL,
|
`steamid` varchar(64) NOT NULL,
|
||||||
`weapon_defindex` int(11) NOT NULL,
|
`weapon_defindex` int(11) NOT NULL,
|
||||||
UNIQUE (`steamid`)
|
UNIQUE (`steamid`)
|
||||||
) ENGINE=InnoDB"
|
) ENGINE=InnoDB"
|
||||||
};
|
};
|
||||||
|
/*string[] createTableQueries = new[]
|
||||||
foreach (var query in createTableQueries)
|
{
|
||||||
|
@"CREATE TABLE IF NOT EXISTS `wp_players` (`steamid` BIGINT UNSIGNED NOT NULL, `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`steamid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;",
|
||||||
|
@"CREATE TABLE IF NOT EXISTS `wp_players_skins` (`steamid` BIGINT UNSIGNED NOT NULL, `team` SMALLINT UNSIGNED NOT NULL, `weapon` SMALLINT UNSIGNED NOT NULL, `paint` SMALLINT UNSIGNED NOT NULL, `wear` FLOAT NOT NULL DEFAULT 0.00001, `seed` SMALLINT UNSIGNED NOT NULL DEFAULT 0, `nametag` VARCHAR(20) DEFAULT NULL, `stattrack` INT UNSIGNED NOT NULL DEFAULT 0, `stattrack_enabled` SMALLINT NOT NULL DEFAULT 0, PRIMARY KEY (`steamid`,`weapon`,`team`), FOREIGN KEY (`steamid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;",
|
||||||
|
@"CREATE TABLE IF NOT EXISTS `wp_players_knife` (`steamid` BIGINT UNSIGNED NOT NULL, `knife_t` SMALLINT UNSIGNED NOT NULL, `knife_ct` SMALLINT UNSIGNED NOT NULL, PRIMARY KEY (`steamid`), FOREIGN KEY (`steamid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;",
|
||||||
|
@"CREATE TABLE IF NOT EXISTS `wp_players_music` (`steamid` BIGINT UNSIGNED NOT NULL, `music` SMALLINT UNSIGNED DEFAULT NULL, PRIMARY KEY (`steamid`), FOREIGN KEY (`steamid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;",
|
||||||
|
@"CREATE TABLE IF NOT EXISTS `wp_players_gloves` (`steamid` BIGINT UNSIGNED NOT NULL, `glove_t` SMALLINT UNSIGNED NOT NULL, `glove_ct` SMALLINT UNSIGNED NOT NULL, PRIMARY KEY (`steamid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;"
|
||||||
|
};*/
|
||||||
|
foreach (var query in createTableQueries)
|
||||||
{
|
{
|
||||||
await connection.ExecuteAsync(query, transaction: transaction);
|
await connection.ExecuteAsync(query, transaction: transaction);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ namespace WeaponPaints;
|
|||||||
public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig>
|
public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig>
|
||||||
{
|
{
|
||||||
internal static WeaponPaints Instance { get; private set; } = new();
|
internal static WeaponPaints Instance { get; private set; } = new();
|
||||||
internal static readonly Dictionary<string, string> weaponList = new()
|
internal static readonly int[] newPaints = { 1171, 1170, 1169, 1164, 1162, 1161, 1159, 1175, 1174, 1167, 1165, 1168, 1163, 1160, 1166, 1173 };
|
||||||
|
internal static readonly Dictionary<string, string> weaponList = new()
|
||||||
{
|
{
|
||||||
{"weapon_deagle", "Desert Eagle"},
|
{"weapon_deagle", "Desert Eagle"},
|
||||||
{"weapon_elite", "Dual Berettas"},
|
{"weapon_elite", "Dual Berettas"},
|
||||||
@@ -150,8 +151,8 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
|
|||||||
{ 525, "weapon_knife_skeleton" },
|
{ 525, "weapon_knife_skeleton" },
|
||||||
{ 526, "weapon_knife_kukri" }
|
{ 526, "weapon_knife_kukri" }
|
||||||
};
|
};
|
||||||
|
public static MemoryFunctionVoid<IntPtr, string, IntPtr, IntPtr, IntPtr, IntPtr, IntPtr, IntPtr> GiveNamedItem2 = new(@"\x55\x48\x89\xE5\x41\x57\x41\x56\x41\x55\x41\x54\x53\x48\x83\xEC\x18\x48\x89\x7D\xC8\x48\x85\xF6\x74");
|
||||||
public WeaponPaintsConfig Config { get; set; } = new();
|
public WeaponPaintsConfig Config { get; set; } = new();
|
||||||
public override string ModuleAuthor => "Nereziel & daffyy";
|
public override string ModuleAuthor => "Nereziel & daffyy";
|
||||||
public override string ModuleDescription => "Skin, gloves and knife selector, standalone and web-based";
|
public override string ModuleDescription => "Skin, gloves and knife selector, standalone and web-based";
|
||||||
public override string ModuleName => "WeaponPaints";
|
public override string ModuleName => "WeaponPaints";
|
||||||
@@ -216,8 +217,16 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
|
|||||||
RegisterListeners();
|
RegisterListeners();
|
||||||
RegisterCommands();
|
RegisterCommands();
|
||||||
}
|
}
|
||||||
|
public static void PlayerGiveNamedItem(CCSPlayerController player, string item)
|
||||||
|
{
|
||||||
|
if (!player.PlayerPawn.IsValid) return;
|
||||||
|
if (player.PlayerPawn.Value == null) return;
|
||||||
|
if (!player.PlayerPawn.Value.IsValid) return;
|
||||||
|
if (player.PlayerPawn.Value.ItemServices == null) return;
|
||||||
|
|
||||||
public void OnConfigParsed(WeaponPaintsConfig config)
|
GiveNamedItem2.Invoke(player.PlayerPawn.Value.ItemServices.Handle, item, 0, 0, 0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
public void OnConfigParsed(WeaponPaintsConfig config)
|
||||||
{
|
{
|
||||||
if (config.DatabaseHost.Length < 1 || config.DatabaseName.Length < 1 || config.DatabaseUser.Length < 1)
|
if (config.DatabaseHost.Length < 1 || config.DatabaseName.Length < 1 || config.DatabaseUser.Length < 1)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.168" />
|
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.172" />
|
||||||
<PackageReference Include="Dapper" Version="2.1.28" />
|
<PackageReference Include="Dapper" Version="2.1.28" />
|
||||||
<PackageReference Include="MySqlConnector" Version="2.3.5" />
|
<PackageReference Include="MySqlConnector" Version="2.3.5" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
|
|||||||
Reference in New Issue
Block a user