This commit is contained in:
Nereziel
2024-02-24 22:44:17 +01:00
parent acf4a766ca
commit 219c201fde
8 changed files with 98 additions and 72 deletions

View File

@@ -12,17 +12,10 @@ namespace WeaponPaints
} }
public async Task<MySqlConnection> GetConnectionAsync() public async Task<MySqlConnection> GetConnectionAsync()
{
try
{ {
var connection = new MySqlConnection(_dbConnectionString); var connection = new MySqlConnection(_dbConnectionString);
await connection.OpenAsync(); await connection.OpenAsync();
return connection; return connection;
} }
catch (Exception)
{
throw;
}
}
} }
} }

View File

@@ -7,9 +7,15 @@ public static class PlayerExtensions
{ {
public static void Print(this CCSPlayerController controller, string message) public static void Print(this CCSPlayerController controller, string message)
{ {
if (WeaponPaints._localizer == null) return; if (WeaponPaints._localizer == null)
{
controller.PrintToChat(message);
}
else
{
StringBuilder _message = new(WeaponPaints._localizer["wp_prefix"]); StringBuilder _message = new(WeaponPaints._localizer["wp_prefix"]);
_message.Append(message); _message.Append(message);
controller.PrintToChat(_message.ToString()); controller.PrintToChat(_message.ToString());
} }
} }
}

View File

@@ -8,5 +8,17 @@
public string? SteamId { get; set; } public string? SteamId { get; set; }
public string? Name { get; set; } public string? Name { get; set; }
public string? IpAddress { get; set; } public string? IpAddress { get; set; }
public PlayerInfo() { }
public PlayerInfo(int index, int slot, int? userId, string? steamId, string? name, string? ipAddress)
{
Index = index;
Slot = slot;
UserId = userId;
SteamId = steamId;
Name = name;
IpAddress = ipAddress;
}
} }
} }

View File

@@ -13,12 +13,13 @@ public class SchemaString<TSchemaClass> : NativeObject where TSchemaClass : Nati
internal unsafe void Set(string str) internal unsafe void Set(string str)
{ {
var bytes = Encoding.UTF8.GetBytes(str); var bytes = Encoding.UTF8.GetBytes(str);
var handle = Handle.ToInt64();
for (var i = 0; i < bytes.Length; i++) for (var i = 0; i < bytes.Length; i++)
{ {
Unsafe.Write((void*)(Handle.ToInt64() + i), bytes[i]); Unsafe.Write((void*)(handle + i), bytes[i]);
} }
Unsafe.Write((void*)(Handle.ToInt64() + bytes.Length), 0); Unsafe.Write((void*)(handle + bytes.Length), 0);
} }
} }

View File

@@ -13,8 +13,7 @@ namespace WeaponPaints
internal static void ChangeWeaponAttributes(CBasePlayerWeapon? weapon, CCSPlayerController? player, bool isKnife = false) internal static void ChangeWeaponAttributes(CBasePlayerWeapon? weapon, CCSPlayerController? player, bool isKnife = false)
{ {
if (player is null || weapon is null || !weapon.IsValid || !Utility.IsPlayerValid(player)) return; if (player is null || weapon is null || !weapon.IsValid || !Utility.IsPlayerValid(player)) return;
if (!gPlayerWeaponsInfo.TryGetValue(player.Slot, out _)) return;
if (!gPlayerWeaponsInfo.ContainsKey(player.Slot)) return;
if (isKnife && !g_playersKnife.ContainsKey(player.Slot) || isKnife && g_playersKnife[player.Slot] == "weapon_knife") return; if (isKnife && !g_playersKnife.ContainsKey(player.Slot) || isKnife && g_playersKnife[player.Slot] == "weapon_knife") return;

View File

@@ -3,7 +3,16 @@
public class WeaponInfo public class WeaponInfo
{ {
public int Paint { get; set; } public int Paint { get; set; }
public int Seed { get; set; } = 0; public int Seed { get; set; }
public float Wear { get; set; } = 0f; public float Wear { get; set; }
public WeaponInfo() : this(0, 0, 0f) { }
public WeaponInfo(int paint, int seed, float wear)
{
Paint = paint;
Seed = seed;
Wear = wear;
}
} }
} }

View File

@@ -180,15 +180,13 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
gPlayerWeaponsInfo.TryRemove((int)player.Slot, out _); gPlayerWeaponsInfo.TryRemove((int)player.Slot, out _);
g_playersKnife.TryRemove((int)player.Slot, out _); g_playersKnife.TryRemove((int)player.Slot, out _);
PlayerInfo playerInfo = new PlayerInfo PlayerInfo playerInfo = new PlayerInfo(
{ (int)player.Slot,
UserId = player.UserId, player.Slot,
Slot = player.Slot, player.UserId,
Index = (int)player.Slot, player?.SteamID.ToString(),
SteamId = player?.SteamID.ToString(), player?.PlayerName,
Name = player?.PlayerName, player?.IpAddress?.Split(":")[0]);
IpAddress = player?.IpAddress?.Split(":")[0]
};
if (Config.Additional.SkinEnabled) if (Config.Additional.SkinEnabled)
{ {

View File

@@ -71,7 +71,8 @@ namespace WeaponPaints
try try
{ {
await using var connection = await _database.GetConnectionAsync(); await using var connection = await _database.GetConnectionAsync();
string query = "SELECT * FROM `wp_player_skins` WHERE `steamid` = @steamid"; string query = "SELECT `weapon_defindex`, `weapon_paint_id`, `weapon_wear`, `weapon_seed` FROM `wp_player_skins` WHERE `steamid` = @steamid";
var playerSkins = await connection.QueryAsync<dynamic>(query, new { steamid = player.SteamId }); var playerSkins = await connection.QueryAsync<dynamic>(query, new { steamid = player.SteamId });
if (playerSkins == null) return; if (playerSkins == null) return;
@@ -158,9 +159,16 @@ namespace WeaponPaints
"VALUES (@steamid, @weaponDefIndex, @paintId, @wear, @seed) " + "VALUES (@steamid, @weaponDefIndex, @paintId, @wear, @seed) " +
"ON DUPLICATE KEY UPDATE `weapon_paint_id` = @paintId, `weapon_wear` = @wear, `weapon_seed` = @seed"; "ON DUPLICATE KEY UPDATE `weapon_paint_id` = @paintId, `weapon_wear` = @wear, `weapon_seed` = @seed";
var parameters = new { steamid = player.SteamId, weaponDefIndex, paintId, wear, seed }; var parameters = new DynamicParameters();
parameters.Add("@steamid", player.SteamId);
parameters.Add("@weaponDefIndex", weaponDefIndex);
parameters.Add("@paintId", paintId);
parameters.Add("@wear", wear);
parameters.Add("@seed", seed);
await connection.ExecuteAsync(query, parameters); await connection.ExecuteAsync(query, parameters);
} }
} }
catch (Exception e) catch (Exception e)
{ {