Compare commits

...

20 Commits

Author SHA1 Message Date
Oliver Zámečník
3cf012e067 Merge 9576b41ace into d1a4d35e20 2024-11-30 11:51:39 +01:00
Dawid Bepierszcz
d1a4d35e20 Merge pull request #357 from originalaidn/missing-music-images
added missing music kit images
2024-11-30 03:35:58 +01:00
originalaidn
415824755e adding latest MVP 2024-11-29 16:05:04 +01:00
originalaidn
5955accadd added missing music kit images 2024-11-23 09:36:44 +01:00
Dawid Bepierszcz
eae091b59a Merge pull request #356 from stefanx111/fix-invariant
fix float parsing to use invariant culture
2024-11-19 17:02:43 +01:00
StefanX
a89593f6a2 fx float parsing to use invariant culture 2024-11-18 21:09:34 +02:00
Dawid Bepierszcz
c418de1e17 Merge pull request #349 from daffyyyy/main
3.1c
2024-10-28 21:15:27 +01:00
Dawid Bepierszcz
82e73e764e Merge branch 'Nereziel:main' into main 2024-10-28 21:13:38 +01:00
Dawid Bepierszcz
ad6c7df357 3.1c
- Fix for custom weapons
2024-10-28 21:13:12 +01:00
Dawid Bepierszcz
a1fa8f37c7 Merge pull request #345 from daffyyyy/main
Website fix
2024-10-24 21:06:49 +02:00
Dawid Bepierszcz
475e91e779 Merge branch 'main' of https://github.com/daffyyyy/cs2-WeaponPaints 2024-10-24 21:00:59 +02:00
Dawid Bepierszcz
a136f5472e Website fix
- Website fix (still missing new features)
2024-10-24 21:00:44 +02:00
Oliver Zámečník
9576b41ace Update README.md 2024-10-24 20:34:51 +02:00
Oliver Zámečník
0decc0405a Update README.md 2024-10-24 20:34:29 +02:00
Dawid Bepierszcz
b5d7f12024 Merge pull request #344 from daffyyyy/main
3.2b
2024-10-24 18:04:32 +02:00
Dawid Bepierszcz
9ec64e346f Merge branch 'Nereziel:main' into main 2024-10-24 18:02:40 +02:00
Dawid Bepierszcz
b4dc20523c Merge branch 'main' of https://github.com/daffyyyy/cs2-WeaponPaints 2024-10-24 18:02:28 +02:00
Dawid Bepierszcz
8891ce815e 3.2b
- Schema for stickers when using custom coords
- Fixed some not found team key
2024-10-24 18:02:25 +02:00
Oneycs
e48308f8af Created a Czech language 2024-10-24 16:33:07 +02:00
Oneycs
2fcf5d7caa Update README.md 2024-10-24 16:32:12 +02:00
1811 changed files with 563 additions and 182 deletions

View File

@@ -153,18 +153,15 @@ public partial class WeaponPaints
{
if (player == null || !player.IsValid) return;
if (!GPlayerWeaponsInfo.TryGetValue(player.Slot, out var teamInfo) ||
!teamInfo.TryGetValue(player.Team, out var teamWeapons) )
return;
var weapon = player.PlayerPawn.Value?.WeaponServices?.ActiveWeapon.Value;
if (weapon == null || !weapon.IsValid)
return;
if (!teamWeapons.TryGetValue(weapon.AttributeManager.Item.ItemDefinitionIndex, out var teamWeapon))
return;
teamWeapon.StatTrak = !teamWeapon.StatTrak;
if (!HasChangedPaint(player, weapon.AttributeManager.Item.ItemDefinitionIndex, out var weaponInfo) || weaponInfo == null)
return;
weaponInfo.StatTrak = !weaponInfo.StatTrak;
RefreshWeapons(player);
if (!string.IsNullOrEmpty(Localizer["wp_stattrak_action"]))
@@ -337,7 +334,7 @@ public partial class WeaponPaints
value.Seed = 0;
}
PlayerInfo playerInfo = new PlayerInfo
var playerInfo = new PlayerInfo
{
UserId = p.UserId,
Slot = p.Slot,

View File

@@ -2,7 +2,6 @@
using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Attributes.Registration;
using CounterStrikeSharp.API.Modules.Entities;
using CounterStrikeSharp.API.Modules.Entities.Constants;
using CounterStrikeSharp.API.Modules.Memory;
using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions;
@@ -194,7 +193,7 @@ namespace WeaponPaints
return HookResult.Continue;
}
public HookResult OnGiveNamedItemPost(DynamicHook hook)
private HookResult OnGiveNamedItemPost(DynamicHook hook)
{
try
{
@@ -206,15 +205,7 @@ namespace WeaponPaints
var player = GetPlayerFromItemServices(itemServices);
if (player != null)
{
var weaponServices = player.PlayerPawn.Value?.WeaponServices;
GivePlayerWeaponSkin(player, weapon);
if (weaponServices is { MyWeapons.Count: 1 })
{
// player.GiveNamedItem(CsItem.Healthshot);
// newWeapon.AddEntityIOEvent("Kill", newWeapon, null, "", 0.1f);
}
}
}
catch { }
@@ -222,7 +213,7 @@ namespace WeaponPaints
return HookResult.Continue;
}
public void OnEntityCreated(CEntityInstance entity)
private void OnEntityCreated(CEntityInstance entity)
{
var designerName = entity.DesignerName;
@@ -289,9 +280,15 @@ namespace WeaponPaints
{
// if (!IsWindows) return HookResult.Continue;
var player = @event.Userid;
if (player == null || !player.IsValid || player.IsBot) return HookResult.Continue;
if (!@event.Item.Contains("knife")) return HookResult.Continue;
var weaponDefIndex = (int)@event.Defindex;
if (!HasChangedKnife(player, out var _) || !HasChangedPaint(player, weaponDefIndex, out var _))
return HookResult.Continue;
if (player != null && player is { IsValid: true, Connected: PlayerConnectedState.PlayerConnected, PawnIsAlive: true, PlayerPawn.IsValid: true })
if (player is { Connected: PlayerConnectedState.PlayerConnected, PawnIsAlive: true, PlayerPawn.IsValid: true })
{
GiveOnItemPickup(player);
}
@@ -309,20 +306,16 @@ namespace WeaponPaints
if (victim == null || !victim.IsValid || victim == player)
return HookResult.Continue;
if (!GPlayerWeaponsInfo.TryGetValue(player.Slot, out var teamInfo) ||
!teamInfo.TryGetValue(player.Team, out var teamWeapons) )
return HookResult.Continue;
CBasePlayerWeapon? weapon = player.PlayerPawn.Value?.WeaponServices?.ActiveWeapon.Value;
if (weapon == null) return HookResult.Continue;
int weaponDefIndex = weapon.AttributeManager.Item.ItemDefinitionIndex;
if (!teamWeapons.TryGetValue(weaponDefIndex, out var weaponInfo) || weaponInfo.Paint == 0)
if (!HasChangedPaint(player, weaponDefIndex, out var weaponInfo) || weaponInfo == null)
return HookResult.Continue;
if (!weaponInfo.StatTrak) return HookResult.Continue;
weaponInfo.StatTrakCount += 1;

153
README.md
View File

@@ -1,20 +1,36 @@
# CS2 Weapon Paints
```
## Description
__ __ ___ _ _
/ / /\ \ \___ __ _ _ __ ___ _ __ / _ \__ _(_)_ __ | |_ ___
\ \/ \/ / _ \/ _` | '_ \ / _ \| '_ \ / /_)/ _` | | '_ \| __/ __|
\ /\ / __/ (_| | |_) | (_) | | | / ___/ (_| | | | | | |_\__ \
\/ \/ \___|\__,_| .__/ \___/|_| |_\/ \__,_|_|_| |_|\__|___/
|_|
```
<p align="center">
<a href="https://github.com/Nereziel/cs2-WeaponPaints/releases">📖 Releases</a> •
<a href="https://discord.gg/d9CvaYPSFe">💬 Discord</a>
<br /><br />
</p>
<hr />
## 📝 Description
Unfinished, unoptimized and not fully functional ugly demo weapon paints plugin for **[CSSharp](https://docs.cssharp.dev/docs/guides/getting-started.html)**.
## Created [Discord server](https://discord.gg/d9CvaYPSFe) where you can discuss about plugin.
### Consider to donate instead of buying from unknown sources.
### 💸 Consider to donate instead of buying from unknown sources.
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/E1E2G0P2O) or [![Donate on Steam](https://github.com/Nereziel/cs2-WeaponPaints/assets/32937653/a0d53822-4ca7-4caf-83b4-e1a9b5f8c94e)](https://steamcommunity.com/tradeoffer/new/?partner=41515647&token=gW2W-nXE)
## Features
## Features
- Changes only paint, seed and wear on weapons, knives, gloves and agents
- MySQL based
- Data syncs on player connect
- Added command **`!wp`** to refresh skins ***(with cooldown in seconds can be configured)***
- Added command **`!ws`** to show website
- Added command **`!knife`** to show menu with knives
- Added command **`!stattrak`** to enable stattrak on weapon
- Added command **`!gloves`** to show menu with gloves
- Added command **`!agents`** to show menu with agents
- Added command **`!pins`** to show menu with pins
@@ -29,7 +45,7 @@ Unfinished, unoptimized and not fully functional ugly demo weapon paints plugin
- [MenuManagerCS2](https://github.com/NickFox007/MenuManagerCS2)
- MySQL database
## CS2 Server
## 🗄️ CS2 Server
- Have working CounterStrikeSharp (**with RUNTIME!**)
- Download from Release and copy plugin to plugins
- Run server with plugin, **it will generate config if installed correctly!**
@@ -37,49 +53,72 @@ Unfinished, unoptimized and not fully functional ugly demo weapon paints plugin
- In `addons/counterstrikesharp/configs/`**`core.json`** set **FollowCS2ServerGuidelines** to **`false`**
- Copy from plugins folder gamedata file **`weaponpaints.json`** to folder **`addons/counterstrikesharp/gamedata/`**
## Plugin Configuration
## 🛠️ Plugin Configuration
<details>
<summary>Click to expand</summary>
<code><pre>{
"Version": 4, // Don't touch
"DatabaseHost": "", // MySQL host
"DatabasePort": 3306, // MySQL port
"DatabaseUser": "", // MySQL username
"DatabasePassword": "", // MySQL user password
"DatabaseName": "", // MySQL database name
"CmdRefreshCooldownSeconds": 60, // Cooldown time in refreshing skins (!wp command)
"Prefix": "[WeaponPaints]", // Prefix every chat message
"Website": "example.com/skins", // Website used in WebsiteMessageCommand (!ws command)
"Messages": {
"WebsiteMessageCommand": "Visit {WEBSITE} where you can change skins.", // Information about website where player can change skins (!ws command) Set to empty to disable
"SynchronizeMessageCommand": "Type !wp to synchronize chosen skins.", // Information about skins refreshing (!ws command) Set to empty to disable
"KnifeMessageCommand": "Type !knife to open knife menu.", // Information about knife menu (!ws command) Set to empty to disable
"CooldownRefreshCommand": "You can\u0027t refresh weapon paints right now.", // Cooldown information (!wp command) Set to empty to disable
"SuccessRefreshCommand": "Refreshing weapon paints.", // Information about refreshing skins (!wp command) Set to empty to disable
"ChosenKnifeMenu": "You have chosen {KNIFE} as your knife.", // Information about choosen knife (!knife command) Set to empty to disable
"ChosenSkinMenu": "You have chosen {SKIN} as your skin.", // Information about choosen skin (!skins command) Set to empty to disable
"ChosenKnifeMenuKill": "To correctly apply skin for knife, you need to type !kill.", // Information about suicide after knife selection (!knife command) Set to empty to disable
"KnifeMenuTitle": "Knife Menu.", // Menu title (!knife menu)
"WeaponMenuTitle": "Weapon Menu.", // Menu title (!skins menu)
"SkinMenuTitle": "Select skin for {WEAPON}" // Menu title (!skins menu, after weapon select)
},
"Additional": {
"KnifeEnabled": true, // Enable or disable knife feature
"SkinEnabled": true, // Enable or disable skin feature
"CommandWpEnabled": true, // Enable or disable refreshing command
"CommandKillEnabled": true, // Enable or disable kill command
"CommandKnife": "knife", // Name of knife menu command, u can change to for e.g, knives
"CommandSkin": "ws", // Name of skin information command, u can change to for e.g, skins
"CommandSkinSelection": "skins", // Name of skins menu command, u can change to for e.g, weapons
"CommandRefresh": "wp", // Name of skin refreshing command, u can change to for e.g, refreshskins
"CommandKill": "kill", // Name of kill command, u can change to for e.g, suicide
"GiveRandomKnife": false, // Give random knife to players if they didn't choose
"GiveRandomSkins": false // Give random skins to players if they didn't choose
},
"ConfigVersion": 10, // Don't touch
"SkinsLanguage": "en", // Language
"DatabaseHost": "", // MySQL host
"DatabasePort": 3306, // MySQL Port
"DatabaseUser": "", // MySQL Username
"DatabasePassword": "", // MySQL User password
"DatabaseName": "", // MySQL Database name
"CmdRefreshCooldownSeconds": 3, // Cooldown time in refreshing skins (!wp command)
"Website": "example.com/skins", // Website used in WebsiteMessageCommand (!ws command)
"Additional": {
"KnifeEnabled": true, // If knives are enabled
"GloveEnabled": true, // If gloves are enabled
"MusicEnabled": true, // If music kits are enabled
"AgentEnabled": true, // If agents are enabled
"SkinEnabled": true, // If skins are enabled
"PinsEnabled": true, // If pins are enabled
"CommandWpEnabled": true, // If command !wp is enabled
"CommandKillEnabled": true, // If command !kill is enabled
"CommandKnife": [ // Command for knives
"knife"
],
"CommandMusic": [ // Command for music kits
"music"
],
"CommandPin": [ // Command for pins
"pin",
"pins",
"coin",
"coins"
],
"CommandGlove": [ // Command for gloves
"gloves"
],
"CommandAgent": [ // Command for agents
"agents"
],
"CommandStattrak": [ // Command for stattrak
"stattrak",
"st"
],
"CommandSkin": [ // Command for skins
"ws"
],
"CommandSkinSelection": [ // Command for skin selection
"skins"
],
"CommandRefresh": [ // Command for refreshing your skins
"wp"
],
"CommandKill": [ // Command for death
"kill"
],
"GiveRandomKnife": false, // If it should give you Random Knife
"GiveRandomSkin": false, // If it should give you Random Skin
"ShowSkinImage": true // When you select a skin if it should show skins image
},
"MenuType": "selectable" // Menu type commands. Can be: selectable, dynamic, center, chat, console
}
</pre></code>
</details>
## Web install
## 🖥️ Web install
- Requires PHP >= 7.4 with curl and pdo_mysql ***(Tested on php ver **`8.2.3`** and nginx webserver)***
- **Before using website, make sure the plugin is correctly loaded in cs2 server!** Mysql tables are created by plugin not by website.
- Copy website to web server ***(Folder `img` not needed)***
@@ -87,22 +126,44 @@ Unfinished, unoptimized and not fully functional ugly demo weapon paints plugin
- Fill in database credentials and api key in `class/config.php`
- Visit website and login via steam
## Web Features
## 🧩 Web Features
> [!WARNING]
> We recommend you to use any third-party website for WeaponPaints. Website by us doesn't get updated!
- Basic website
- Steam login/logout
- Change knife, paint, seed and wear
## Troubleshooting
## 🌐 Third-party websites
- **[CSS-Bans](https://github.com/counterstrikesharp-panel/css-bans)**
- **[CS2-WeaponPaints-Website](https://github.com/LielXD/CS2-WeaponPaints-Website)**
- **[cs2-WeaponPaints-website](https://github.com/L1teD/cs2-WeaponPaints-website)** > This webiste is different from the one above!
- **[CS2-WeaponPaints-Web](https://github.com/rogeraabbccdd/CS2-WeaponPaints-Web)**
## 🤔 Troubleshooting
<details>
**Skins are not changing:**
Set FollowCSGOGuidelines to false in cssharps core.jcon config
**Database error table does not exists:**
Plugin is not loaded or configured with mysql credentials. Tables are auto-created by plugin.
**An error occured in Get....FromDatabase:**
If you used WeaponPaints and you update to newer version you could get this error. You need to add this queries to Database:
```
ALTER TABLE wp_player_skins
ADD COLUMN weapon_nametag VARCHAR(128) DEFAULT NULL,
ADD COLUMN weapon_stattrak tinyint(1) NOT NULL,
ADD COLUMN weapon_stattrak_count int(10) NOT NULL,
ADD COLUMN weapon_sticker_0 VARCHAR(128) DEFAULT '0;0;0;0;0;0;0' COMMENT 'id;schema;x;y;wear;scale;rotation',
ADD COLUMN weapon_sticker_1 VARCHAR(128) DEFAULT '0;0;0;0;0;0' COMMENT 'id;schema;x;y;wear;scale;rotation',
ADD COLUMN weapon_sticker_2 VARCHAR(128) DEFAULT '0;0;0;0;0;0' COMMENT 'id;schema;x;y;wear;scale;rotation',
ADD COLUMN weapon_sticker_3 VARCHAR(128) DEFAULT '0;0;0;0;0;0' COMMENT 'id;schema;x;y;wear;scale;rotation',
ADD COLUMN weapon_sticker_4 VARCHAR(128) DEFAULT '0;0;0;0;0;0' COMMENT 'id;schema;x;y;wear;scale;rotation',
ADD COLUMN weapon_keychain VARCHAR(128) DEFAULT '0;0;0;0;0' COMMENT 'id;x;y;z;seed';
```
</details>
### Use this plugin at your own risk! Using this may lead to GSLT ban or something else Valve come with. [Valve Server guidelines](https://blog.counter-strike.net/index.php/server_guidelines/)
## Preview
## Website Preview
![preview](https://github.com/Nereziel/cs2-WeaponPaints/blob/main/website/preview.png?raw=true)

View File

@@ -1 +1 @@
3.1a
3.1c

View File

@@ -78,7 +78,6 @@ public partial class WeaponPaints
internal static readonly ConcurrentDictionary<int, ConcurrentDictionary<CsTeam, ushort>> GPlayersMusic = new();
internal static readonly ConcurrentDictionary<int, ConcurrentDictionary<CsTeam, ushort>> GPlayersPin = new();
internal static readonly ConcurrentDictionary<int, (string? CT, string? T)> GPlayersAgent = new();
internal static readonly Dictionary<int, int> GPlayersKnivesPickup = [];
internal static readonly ConcurrentDictionary<int, ConcurrentDictionary<CsTeam, ConcurrentDictionary<int, WeaponInfo>>> GPlayerWeaponsInfo = new();
internal static List<JObject> SkinsList = [];
internal static List<JObject> PinsList = [];

View File

@@ -20,27 +20,30 @@ namespace WeaponPaints
bool isKnife = weapon.DesignerName.Contains("knife") || weapon.DesignerName.Contains("bayonet");
if (isKnife && !GPlayersKnife.ContainsKey(player.Slot) ||
isKnife && GPlayersKnife[player.Slot][player.Team] == "weapon_knife") return;
if (isKnife)
switch (isKnife)
{
var newDefIndex = WeaponDefindex.FirstOrDefault(x => x.Value == GPlayersKnife[player.Slot][player.Team]);
if (newDefIndex.Key == 0) return;
if (weapon.AttributeManager.Item.ItemDefinitionIndex != newDefIndex.Key)
case true when !HasChangedKnife(player, out var _):
return;
case true:
{
SubclassChange(weapon, (ushort)newDefIndex.Key);
}
var newDefIndex = WeaponDefindex.FirstOrDefault(x => x.Value == GPlayersKnife[player.Slot][player.Team]);
if (newDefIndex.Key == 0) return;
weapon.AttributeManager.Item.ItemDefinitionIndex = (ushort)newDefIndex.Key;
weapon.AttributeManager.Item.EntityQuality = 3;
if (weapon.AttributeManager.Item.ItemDefinitionIndex != newDefIndex.Key)
{
SubclassChange(weapon, (ushort)newDefIndex.Key);
}
weapon.AttributeManager.Item.ItemDefinitionIndex = (ushort)newDefIndex.Key;
weapon.AttributeManager.Item.EntityQuality = 3;
break;
}
default:
weapon.AttributeManager.Item.EntityQuality = 0;
break;
}
else
{
weapon.AttributeManager.Item.EntityQuality = 0;
}
UpdatePlayerEconItemId(weapon.AttributeManager.Item);
int weaponDefIndex = weapon.AttributeManager.Item.ItemDefinitionIndex;
@@ -52,7 +55,7 @@ namespace WeaponPaints
bool isLegacyModel;
if (_config.Additional.GiveRandomSkin &&
!GPlayerWeaponsInfo[player.Slot][player.Team].ContainsKey(weaponDefIndex))
!HasChangedPaint(player, weaponDefIndex, out _))
{
// Random skins
weapon.FallbackPaintKit = GetRandomPaint(weaponDefIndex);
@@ -85,13 +88,9 @@ namespace WeaponPaints
return;
}
if (!GPlayerWeaponsInfo.TryGetValue(player.Slot, out var teamInfo) ||
!teamInfo.TryGetValue(player.Team, out var teamWeapons) )
return;
if (!teamWeapons.TryGetValue(weaponDefIndex, out var value))
if (!HasChangedPaint(player, weaponDefIndex, out var weaponInfo) || weaponInfo == null)
return;
var weaponInfo = value;
//Log($"Apply on {weapon.DesignerName}({weapon.AttributeManager.Item.ItemDefinitionIndex}) paint {gPlayerWeaponPaints[steamId.SteamId64][weapon.AttributeManager.Item.ItemDefinitionIndex]} seed {gPlayerWeaponSeed[steamId.SteamId64][weapon.AttributeManager.Item.ItemDefinitionIndex]} wear {gPlayerWeaponWear[steamId.SteamId64][weapon.AttributeManager.Item.ItemDefinitionIndex]}");
weapon.AttributeManager.Item.AttributeList.Attributes.RemoveAll();
@@ -103,14 +102,7 @@ namespace WeaponPaints
weapon.AttributeManager.Item.CustomName = weaponInfo.Nametag;
weapon.FallbackPaintKit = weaponInfo.Paint;
if (weaponInfo is { Paint: 38, Seed: 0 })
{
weapon.FallbackSeed = _fadeSeed++;
}
else
{
weapon.FallbackSeed = weaponInfo.Seed;
}
weapon.FallbackSeed = weaponInfo is { Paint: 38, Seed: 0 } ? _fadeSeed++ : weaponInfo.Seed;
weapon.FallbackWear = weaponInfo.Wear;
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle, "set item texture prefab", weapon.FallbackPaintKit);
@@ -149,9 +141,7 @@ namespace WeaponPaints
private void IncrementWearForWeaponWithStickers(CCSPlayerController player, CBasePlayerWeapon weapon)
{
int weaponDefIndex = weapon.AttributeManager.Item.ItemDefinitionIndex;
if (!GPlayerWeaponsInfo.TryGetValue(player.Slot, out var playerWeapons) ||
!playerWeapons.TryGetValue(player.Team, out var weaponInfoDict) ||
!weaponInfoDict.TryGetValue(weaponDefIndex, out var weaponInfo) ||
if (!HasChangedPaint(player, weaponDefIndex, out var weaponInfo) || weaponInfo == null ||
weaponInfo.Stickers.Count <= 0) return;
float wearIncrement = 0.001f;
@@ -174,11 +164,8 @@ namespace WeaponPaints
int weaponDefIndex = weapon.AttributeManager.Item.ItemDefinitionIndex;
if (!GPlayerWeaponsInfo.TryGetValue(player.Slot, out var playerWeapons) ||
!playerWeapons[player.Team].TryGetValue(weaponDefIndex, out var weaponInfo))
{
if (!HasChangedPaint(player ,weaponDefIndex, out var weaponInfo) || weaponInfo == null)
return;
}
foreach (var sticker in weaponInfo.Stickers)
{
@@ -186,15 +173,13 @@ namespace WeaponPaints
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
$"sticker slot {stickerSlot} id", ViewAsFloat(sticker.Id));
// CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
// $"sticker slot {stickerSlot} schema", stickerSlot);
// if (stickerSlot == 5)
// {
if (sticker.OffsetX != 0 || sticker.OffsetY != 0)
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
$"sticker slot {stickerSlot} schema", 0);
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
$"sticker slot {stickerSlot} offset x", sticker.OffsetX);
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
$"sticker slot {stickerSlot} offset y", sticker.OffsetY);
// }
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
$"sticker slot {stickerSlot} wear", sticker.Wear);
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
@@ -216,9 +201,9 @@ namespace WeaponPaints
int weaponDefIndex = weapon.AttributeManager.Item.ItemDefinitionIndex;
if (!GPlayerWeaponsInfo.TryGetValue(player.Slot, out var playerWeaponsInfo) ||
!playerWeaponsInfo[player.Team].TryGetValue(weaponDefIndex, out var value) ||
value.KeyChain == null) return;
if (!HasChangedPaint(player, weaponDefIndex, out var value) || value?.KeyChain == null)
return;
var keyChain = value.KeyChain;
CAttributeListSetOrAddAttributeValueByName.Invoke(weapon.AttributeManager.Item.NetworkedDynamicAttributes.Handle,
@@ -406,9 +391,10 @@ namespace WeaponPaints
return;
if (!GPlayersGlove.TryGetValue(player.Slot, out var gloveInfo) ||
!gloveInfo.TryGetValue(player.Team, out var gloveId) || gloveId == 0) return;
WeaponInfo weaponInfo = GPlayerWeaponsInfo[player.Slot][player.Team][gloveId];
!gloveInfo.TryGetValue(player.Team, out var gloveId) ||
gloveId == 0 ||
!HasChangedPaint(player, gloveId, out var weaponInfo) || weaponInfo == null)
return;
item.ItemDefinitionIndex = gloveId;
item.ItemIDLow = 16384 & 0xFFFFFFFF;
@@ -582,6 +568,36 @@ namespace WeaponPaints
return viewModel.Value == null ? null : viewModel.Value;
}
private static bool HasChangedKnife(CCSPlayerController player, out string? knifeValue)
{
knifeValue = null;
// Check if player has knife info for their slot and team
if (!GPlayersKnife.TryGetValue(player.Slot, out var knife) ||
!knife.TryGetValue(player.Team, out var value) ||
value == "weapon_knife") return false;
knifeValue = value; // Assign the knife value to the out parameter
return true;
}
private static bool HasChangedPaint(CCSPlayerController player, int weaponDefIndex, out WeaponInfo? weaponInfo)
{
weaponInfo = null;
// Check if player has weapons info for their slot and team
if (!GPlayerWeaponsInfo.TryGetValue(player.Slot, out var teamInfo) ||
!teamInfo.TryGetValue(player.Team, out var teamWeapons))
{
return false;
}
// Check if the specified weapon has a paint/skin change
if (!teamWeapons.TryGetValue(weaponDefIndex, out var value) || value.Paint <= 0) return false;
weaponInfo = value; // Assign the out variable when it exists
return true;
}
private static float ViewAsFloat(uint value)
{
return BitConverter.Int32BitsToSingle((int)value);

View File

@@ -1,7 +1,6 @@
using CounterStrikeSharp.API;
using CounterStrikeSharp.API.Core;
using CounterStrikeSharp.API.Core.Attributes;
using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions;
using Microsoft.Extensions.Logging;
using MySqlConnector;
@@ -17,7 +16,7 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
public override string ModuleAuthor => "Nereziel & daffyy";
public override string ModuleDescription => "Skin, gloves, agents and knife selector, standalone and web-based";
public override string ModuleName => "WeaponPaints";
public override string ModuleVersion => "3.1a";
public override string ModuleVersion => "3.1c";
public override void Load(bool hotReload)
{
@@ -40,7 +39,6 @@ public partial class WeaponPaints : BasePlugin, IPluginConfig<WeaponPaintsConfig
!string.IsNullOrEmpty(player.IpAddress) && player is
{ IsBot: false, Connected: PlayerConnectedState.PlayerConnected }))
{
GPlayersKnivesPickup[player.Slot] = 0;
var playerInfo = new PlayerInfo
{
UserId = player.UserId,

View File

@@ -2,6 +2,7 @@
using MySqlConnector;
using System.Collections.Concurrent;
using CounterStrikeSharp.API.Modules.Utils;
using System.Globalization;
namespace WeaponPaints;
@@ -49,7 +50,7 @@ internal class WeaponSynchronization
if (!_config.Additional.KnifeEnabled || string.IsNullOrEmpty(player?.SteamId))
return;
const string query = "SELECT `knife`, `weapon_team` FROM `wp_player_knife` WHERE `steamid` = @steamid";
const string query = "SELECT `knife`, `weapon_team` FROM `wp_player_knife` WHERE `steamid` = @steamid ORDER BY `weapon_team` ASC";
var rows = connection.Query<dynamic>(query, new { steamid = player.SteamId }); // Retrieve all records for the player
foreach (var row in rows)
@@ -60,9 +61,9 @@ internal class WeaponSynchronization
// Determine the weapon team based on the query result
CsTeam weaponTeam = (int)row.weapon_team switch
{
0 => CsTeam.None,
2 => CsTeam.Terrorist,
_ => CsTeam.CounterTerrorist
3 => CsTeam.CounterTerrorist,
_ => CsTeam.None,
};
// Get or create entries for the players slot
@@ -94,7 +95,7 @@ internal class WeaponSynchronization
if (!_config.Additional.GloveEnabled || string.IsNullOrEmpty(player?.SteamId))
return;
const string query = "SELECT `weapon_defindex`, `weapon_team` FROM `wp_player_gloves` WHERE `steamid` = @steamid";
const string query = "SELECT `weapon_defindex`, `weapon_team` FROM `wp_player_gloves` WHERE `steamid` = @steamid ORDER BY `weapon_team` ASC";
var rows = connection.Query<dynamic>(query, new { steamid = player.SteamId }); // Retrieve all records for the player
foreach (var row in rows)
@@ -105,9 +106,9 @@ internal class WeaponSynchronization
var playerGloves = WeaponPaints.GPlayersGlove.GetOrAdd(player.Slot, _ => new ConcurrentDictionary<CsTeam, ushort>());
CsTeam weaponTeam = (int)row.weapon_team switch
{
0 => CsTeam.None,
2 => CsTeam.Terrorist,
_ => CsTeam.CounterTerrorist
3 => CsTeam.CounterTerrorist,
_ => CsTeam.None,
};
// Get or create entries for the players slot
@@ -171,36 +172,35 @@ internal class WeaponSynchronization
// var weaponInfos = new ConcurrentDictionary<int, WeaponInfo>();
const string query = "SELECT * FROM `wp_player_skins` WHERE `steamid` = @steamid";
const string query = "SELECT * FROM `wp_player_skins` WHERE `steamid` = @steamid ORDER BY `weapon_team` ASC";
var playerSkins = connection.Query<dynamic>(query, new { steamid = player.SteamId });
foreach (var row in playerSkins)
{
int weaponDefIndex = row?.weapon_defindex ?? 0;
int weaponPaintId = row?.weapon_paint_id ?? 0;
float weaponWear = row?.weapon_wear ?? 0f;
int weaponSeed = row?.weapon_seed ?? 0;
string weaponNameTag = row?.weapon_nametag ?? "";
bool weaponStatTrak = row?.weapon_stattrak ?? false;
int weaponStatTrakCount = row?.weapon_stattrak_count ?? 0;
int weaponDefIndex = row.weapon_defindex ?? 0;
int weaponPaintId = row.weapon_paint_id ?? 0;
float weaponWear = row.weapon_wear ?? 0f;
int weaponSeed = row.weapon_seed ?? 0;
string weaponNameTag = row.weapon_nametag ?? "";
bool weaponStatTrak = row.weapon_stattrak ?? false;
int weaponStatTrakCount = row.weapon_stattrak_count ?? 0;
CsTeam weaponTeam = row?.weapon_team switch
CsTeam weaponTeam = row.weapon_team switch
{
null => CsTeam.None,
0 => CsTeam.None,
2 => CsTeam.Terrorist,
_ => CsTeam.CounterTerrorist
3 => CsTeam.CounterTerrorist,
_ => CsTeam.None,
};
string[]? keyChainParts = row?.weapon_keychain?.ToString().Split(';');
string[]? keyChainParts = row.weapon_keychain?.ToString().Split(';');
KeyChainInfo keyChainInfo = new KeyChainInfo();
if (keyChainParts!.Length == 5 &&
uint.TryParse(keyChainParts[0], out uint keyChainId) &&
float.TryParse(keyChainParts[1], out float keyChainOffsetX) &&
float.TryParse(keyChainParts[2], out float keyChainOffsetY) &&
float.TryParse(keyChainParts[3], out float keyChainOffsetZ) &&
float.TryParse(keyChainParts[1], NumberStyles.Float, CultureInfo.InvariantCulture, out float keyChainOffsetX) &&
float.TryParse(keyChainParts[2], NumberStyles.Float, CultureInfo.InvariantCulture, out float keyChainOffsetY) &&
float.TryParse(keyChainParts[3], NumberStyles.Float, CultureInfo.InvariantCulture, out float keyChainOffsetZ) &&
uint.TryParse(keyChainParts[4], out uint keyChainSeed))
{
// Successfully parsed the values
@@ -247,11 +247,11 @@ internal class WeaponSynchronization
if (parts.Length != 7 ||
!uint.TryParse(parts[0], out uint stickerId) ||
!uint.TryParse(parts[1], out uint stickerSchema) ||
!float.TryParse(parts[2], out float stickerOffsetX) ||
!float.TryParse(parts[3], out float stickerOffsetY) ||
!float.TryParse(parts[4], out float stickerWear) ||
!float.TryParse(parts[5], out float stickerScale) ||
!float.TryParse(parts[6], out float stickerRotation)) continue;
!float.TryParse(parts[2], NumberStyles.Float, CultureInfo.InvariantCulture, out float stickerOffsetX) ||
!float.TryParse(parts[3], NumberStyles.Float, CultureInfo.InvariantCulture, out float stickerOffsetY) ||
!float.TryParse(parts[4], NumberStyles.Float, CultureInfo.InvariantCulture, out float stickerWear) ||
!float.TryParse(parts[5], NumberStyles.Float, CultureInfo.InvariantCulture, out float stickerScale) ||
!float.TryParse(parts[6], NumberStyles.Float, CultureInfo.InvariantCulture, out float stickerRotation)) continue;
StickerInfo stickerInfo = new StickerInfo
{
@@ -302,7 +302,7 @@ internal class WeaponSynchronization
if (!_config.Additional.MusicEnabled || string.IsNullOrEmpty(player?.SteamId))
return;
const string query = "SELECT `music_id`, `weapon_team` FROM `wp_player_music` WHERE `steamid` = @steamid";
const string query = "SELECT `music_id`, `weapon_team` FROM `wp_player_music` WHERE `steamid` = @steamid ORDER BY `weapon_team` ASC";
var rows = connection.Query<dynamic>(query, new { steamid = player.SteamId }); // Retrieve all records for the player
foreach (var row in rows)
@@ -313,9 +313,9 @@ internal class WeaponSynchronization
// Determine the weapon team based on the query result
CsTeam weaponTeam = (int)row.weapon_team switch
{
0 => CsTeam.None,
2 => CsTeam.Terrorist,
_ => CsTeam.CounterTerrorist
3 => CsTeam.CounterTerrorist,
_ => CsTeam.None,
};
// Get or create entries for the players slot
@@ -347,7 +347,7 @@ internal class WeaponSynchronization
if (string.IsNullOrEmpty(player?.SteamId))
return;
const string query = "SELECT `id`, `weapon_team` FROM `wp_player_pins` WHERE `steamid` = @steamid";
const string query = "SELECT `id`, `weapon_team` FROM `wp_player_pins` WHERE `steamid` = @steamid ORDER BY `weapon_team` ASC";
var rows = connection.Query<dynamic>(query, new { steamid = player.SteamId }); // Retrieve all records for the player
foreach (var row in rows)
@@ -358,9 +358,9 @@ internal class WeaponSynchronization
// Determine the weapon team based on the query result
CsTeam weaponTeam = (int)row.weapon_team switch
{
0 => CsTeam.None,
2 => CsTeam.Terrorist,
_ => CsTeam.CounterTerrorist
3 => CsTeam.CounterTerrorist,
_ => CsTeam.None,
};
// Get or create entries for the players slot

30
lang/cs.json Normal file
View File

@@ -0,0 +1,30 @@
{
"wp_prefix": "{lightblue}[WeaponPaints] {default}",
"wp_info_website": "Navštiv {lime}{0}{default} kde si můžeš změnit skiny",
"wp_info_refresh": "Napiš {lime}!wp{default} pro synchronizaci vybraných skinů",
"wp_info_knife": "Napiš {lime}!knife{default} pro otevření menu nožů",
"wp_info_glove": "Napiš {lime}!gloves{default} pro otevření menu rukavic",
"wp_info_agent": "Napiš {lime}!agents{default} pro otevření menu agentů",
"wp_info_music": "Napiš {lime}!music{default} pro otevření menu MVP hudeb",
"wp_info_pin": "Napiš {lime}!pins{default} pro otevření menu odznaků",
"wp_command_cooldown": "{lightred}Skiny nelze nýni obnovit!",
"wp_command_refresh_done": "{lime}Obnovuji skiny",
"wp_knife_menu_select": "Vybral jsi si {lime}{0}{default} jako tvůj nůž",
"wp_knife_menu_kill": "",
"wp_knife_menu_title": "Menu nožů",
"wp_glove_menu_select": "Vybral jsi si {lime}{0}{default} jako tvoje rukavice",
"wp_glove_menu_title": "Menu rukavic",
"wp_agent_menu_select": "Vybral jsi si {lime}{0}{default} jako tvůj agent",
"wp_agent_menu_title": "Menu agentů",
"wp_music_menu_title": "Menu MVP hudeb",
"wp_music_menu_select": "Vybral jsi si {lime}{0}{default} jako tvojí MVP hudbu",
"wp_pins_menu_title": "Menu odznaků",
"wp_pins_menu_select": "Vybral jsi si {lime}{0}{default} jako tvůj odznak",
"wp_skin_menu_weapon_title": "Menu zbraní",
"wp_skin_menu_skin_title": "Vyběr skinů pro {lime}{0}{default}",
"wp_skin_menu_select": "Vybral jsi si {lime}{0}{default} jako tvůj skin",
"wp_stattrak_action": "Úspěšně jste změnil nastavení stattraku",
"None": "Žádné"
}

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Музикален комплект | Tree Adams — Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Музикален комплект | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Hudební balíček | Tree Adams Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Hudební balíček | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Musiksæt | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Musiksæt | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Musikkit | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Musikkit | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Μουσικό κουτί | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Μουσικό κουτί | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Music Kit | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Music Kit | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Kit de música | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Kit de música | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Kit de música | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Kit de música | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Musiikkipakkaus | Tree Adams: Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Musiikkipakkaus | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Kit de musiques | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Kit de musiques | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Zenekészlet | Tree Adams - Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Zenekészlet | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Tema musicale | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Tema musicale | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "ミュージックキット | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "ミュージックキット | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Музикален комплект | Tree Adams — Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Музикален комплект | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Hudební balíček | Tree Adams Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Hudební balíček | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Musiksæt | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Musiksæt | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Musikkit | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Musikkit | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Μουσικό κουτί | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Μουσικό κουτί | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Music Kit | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Music Kit | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Kit de música | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Kit de música | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Kit de música | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Kit de música | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Musiikkipakkaus | Tree Adams: Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Musiikkipakkaus | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Kit de musiques | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Kit de musiques | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Zenekészlet | Tree Adams - Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Zenekészlet | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Tema musicale | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Tema musicale | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "ミュージックキット | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "ミュージックキット | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "음악 키트 | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "음악 키트 | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -336,32 +336,32 @@
},
{
"id": "71",
"name": "Music Kit | DRYDEN, Feel The Power",
"name": "Muziekset | DRYDEN, Feel The Power",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-71.png"
},
{
"id": "72",
"name": "Music Kit | ISOxo, inhuman",
"name": "Muziekset | ISOxo, inhuman",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-72.png"
},
{
"id": "73",
"name": "Music Kit | KILL SCRIPT, All Night",
"name": "Muziekset | KILL SCRIPT, All Night",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-73.png"
},
{
"id": "74",
"name": "Music Kit | Knock2, Make U SWEAT!",
"name": "Muziekset | Knock2, Make U SWEAT!",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-74.png"
},
{
"id": "75",
"name": "Music Kit | Rad Cat, Reason",
"name": "Muziekset | Rad Cat, Reason",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-75.png"
},
{
"id": "76",
"name": "Music Kit | TWERL, Ekko & Sidetrack, Under Bright Lights",
"name": "Muziekset | TWERL, Ekko & Sidetrack, Under Bright Lights",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-76.png"
},
{
@@ -403,5 +403,10 @@
"id": "85",
"name": "Muziekset | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Muziekset | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Musikksett | Tree Adams Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Musikksett | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -386,7 +386,7 @@
},
{
"id": "82",
"name": "Music Kit | Matt Levine, Agency",
"name": "Zestaw utworów | Matt Levine, Agency",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-82.png"
},
{
@@ -396,12 +396,17 @@
},
{
"id": "84",
"name": "Music Kit | Tim Huling, Devil's Paintbrush",
"name": "Zestaw utworów | Tim Huling, Devil's Paintbrush",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-84.png"
},
{
"id": "85",
"name": "Zestaw utworów | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Zestaw utworów | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Trilha Sonora | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Trilha Sonora | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -381,7 +381,7 @@
},
{
"id": "81",
"name": "Music Kit | Dren McDonald, Coffee! Kofe! Kahveh!",
"name": "Kit de Música | Dren McDonald, Coffee! Kofe! Kahveh!",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-81.png"
},
{
@@ -403,5 +403,10 @@
"id": "85",
"name": "Kit de Música | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Kit de Música | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Pachet muzical | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Pachet muzical | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Набор музыки | Tree Adams — Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Набор музыки | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Musikpaket | Tree Adams Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Musikpaket | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "ชุดอุปกรณ์เพลง | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "ชุดอุปกรณ์เพลง | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Müzik Kiti | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Müzik Kiti | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Музичний альбом | Tree Adams — Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Музичний альбом | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Gói âm thanh | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Gói âm thanh | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "音乐盒 | Tree Adams柒月",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "音乐盒 | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "音樂包 | Tree Adams - Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "音樂包 | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "음악 키트 | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "음악 키트 | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -336,32 +336,32 @@
},
{
"id": "71",
"name": "Music Kit | DRYDEN, Feel The Power",
"name": "Muziekset | DRYDEN, Feel The Power",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-71.png"
},
{
"id": "72",
"name": "Music Kit | ISOxo, inhuman",
"name": "Muziekset | ISOxo, inhuman",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-72.png"
},
{
"id": "73",
"name": "Music Kit | KILL SCRIPT, All Night",
"name": "Muziekset | KILL SCRIPT, All Night",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-73.png"
},
{
"id": "74",
"name": "Music Kit | Knock2, Make U SWEAT!",
"name": "Muziekset | Knock2, Make U SWEAT!",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-74.png"
},
{
"id": "75",
"name": "Music Kit | Rad Cat, Reason",
"name": "Muziekset | Rad Cat, Reason",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-75.png"
},
{
"id": "76",
"name": "Music Kit | TWERL, Ekko & Sidetrack, Under Bright Lights",
"name": "Muziekset | TWERL, Ekko & Sidetrack, Under Bright Lights",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-76.png"
},
{
@@ -403,5 +403,10 @@
"id": "85",
"name": "Muziekset | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Muziekset | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Musikksett | Tree Adams Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Musikksett | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -386,7 +386,7 @@
},
{
"id": "82",
"name": "Music Kit | Matt Levine, Agency",
"name": "Zestaw utworów | Matt Levine, Agency",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-82.png"
},
{
@@ -396,12 +396,17 @@
},
{
"id": "84",
"name": "Music Kit | Tim Huling, Devil's Paintbrush",
"name": "Zestaw utworów | Tim Huling, Devil's Paintbrush",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-84.png"
},
{
"id": "85",
"name": "Zestaw utworów | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Zestaw utworów | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Trilha Sonora | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Trilha Sonora | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -381,7 +381,7 @@
},
{
"id": "81",
"name": "Music Kit | Dren McDonald, Coffee! Kofe! Kahveh!",
"name": "Kit de Música | Dren McDonald, Coffee! Kofe! Kahveh!",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-81.png"
},
{
@@ -403,5 +403,10 @@
"id": "85",
"name": "Kit de Música | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Kit de Música | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Pachet muzical | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Pachet muzical | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Набор музыки | Tree Adams — Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Набор музыки | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Musikpaket | Tree Adams Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Musikpaket | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "ชุดอุปกรณ์เพลง | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "ชุดอุปกรณ์เพลง | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Müzik Kiti | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Müzik Kiti | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Музичний альбом | Tree Adams — Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Музичний альбом | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "Gói âm thanh | Tree Adams, Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "Gói âm thanh | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "音乐盒 | Tree Adams柒月",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "音乐盒 | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

View File

@@ -403,5 +403,10 @@
"id": "85",
"name": "音樂包 | Tree Adams - Seventh Moon",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-85.png"
},
{
"id": "86",
"name": "音樂包 | Perfect World, Ay Hey",
"image": "https://raw.githubusercontent.com/Nereziel/cs2-WeaponPaints/main/website/img/skins/music_kit-86.png"
}
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Some files were not shown because too many files have changed in this diff Show More