diff --git a/Better NCP Editor/Better NCP Editor.csproj b/Better NCP Editor/Better NCP Editor.csproj
index 1e11920..efc83ea 100644
--- a/Better NCP Editor/Better NCP Editor.csproj
+++ b/Better NCP Editor/Better NCP Editor.csproj
@@ -13,6 +13,7 @@
+
@@ -24,6 +25,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
diff --git a/Better NCP Editor/Form1.cs b/Better NCP Editor/Form1.cs
index 38ee7a3..41ac8f7 100644
--- a/Better NCP Editor/Form1.cs
+++ b/Better NCP Editor/Form1.cs
@@ -15,12 +15,17 @@ namespace Better_NCP_Editor
private bool fileModified = false;
private ToolTips toolTips = new ToolTips();
- // In your Form1 class:
private ToolTip customToolTip = new ToolTip();
private TreeNode lastHoveredNode = null;
+
+ // Lists for item dropdowns
private List _wearItems;
private List _beltItems;
private List _weaponModItems;
+
+ private Dictionary> _itemShortnameToSkinName;
+
+ // All items dictionary.
private Dictionary _allItems;
public Form1()
@@ -64,6 +69,7 @@ namespace Better_NCP_Editor
_allItems = LoadItemDatabase("allitems.json");
_beltItems = LoadItemList("beltitems.json");
_weaponModItems = LoadItemList("weaponmoditems.json");
+ _itemShortnameToSkinName = LoadSkinDict("skins.json");
}
@@ -95,6 +101,19 @@ namespace Better_NCP_Editor
}
}
+ private Dictionary> LoadSkinDict(String filepath)
+ {
+ try
+ {
+ return JsonDictionaryLoader.LoadSkinDict(filepath);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("Error loading JSON file: " + ex.Message);
+ return null;
+ }
+ }
+
private void EntityTreeView_MouseMove(object sender, MouseEventArgs e)
{
int xOffset = 15;
diff --git a/Better NCP Editor/JsonDictionaryLoader.cs b/Better NCP Editor/JsonDictionaryLoader.cs
deleted file mode 100644
index 3ba59a2..0000000
--- a/Better NCP Editor/JsonDictionaryLoader.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Text.Json;
-using System.Threading.Tasks;
-
-namespace Better_NCP_Editor
-{
- public static class JsonDictionaryLoader
- {
- public static Dictionary Load(string filePath)
- {
- if (!File.Exists(filePath))
- throw new FileNotFoundException("The specified JSON file was not found.", filePath);
-
- string json = File.ReadAllText(filePath);
- Dictionary dictionary = JsonSerializer.Deserialize>(json);
- return dictionary;
- }
- }
-}
diff --git a/Better NCP Editor/JsonListLoader.cs b/Better NCP Editor/JsonListLoader.cs
deleted file mode 100644
index 8336ded..0000000
--- a/Better NCP Editor/JsonListLoader.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Text.Json;
-using System.Threading.Tasks;
-
-namespace Better_NCP_Editor
-{
- public static class JsonListLoader
- {
- public static List Load(string filePath)
- {
- if (!File.Exists(filePath))
- throw new FileNotFoundException("The specified JSON file was not found.", filePath);
-
- string json = File.ReadAllText(filePath);
- List list = JsonSerializer.Deserialize>(json);
- return list;
- }
- }
-}
diff --git a/Better NCP Editor/JsonLoader.cs b/Better NCP Editor/JsonLoader.cs
new file mode 100644
index 0000000..2263dcc
--- /dev/null
+++ b/Better NCP Editor/JsonLoader.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.Json;
+using System.Threading.Tasks;
+
+namespace Better_NCP_Editor
+{
+ public static class JsonDictionaryLoader
+ {
+ public static Dictionary Load(string filePath)
+ {
+ if (!File.Exists(filePath))
+ throw new FileNotFoundException("The specified JSON file was not found.", filePath);
+
+ string json = File.ReadAllText(filePath);
+ Dictionary dictionary = JsonSerializer.Deserialize>(json);
+ return dictionary;
+ }
+
+ public static Dictionary> LoadSkinDict(string filePath)
+ {
+ if (!File.Exists(filePath))
+ throw new FileNotFoundException("The specified JSON file was not found.", filePath);
+ string json = File.ReadAllText(filePath);
+ Dictionary> dictionary = JsonSerializer.Deserialize>>(json);
+ return dictionary;
+ }
+ }
+
+ public static class JsonListLoader
+ {
+ public static List Load(string filePath)
+ {
+ if (!File.Exists(filePath))
+ throw new FileNotFoundException("The specified JSON file was not found.", filePath);
+
+ string json = File.ReadAllText(filePath);
+ List list = JsonSerializer.Deserialize>(json);
+ return list;
+ }
+ }
+
+
+}
diff --git a/Better NCP Editor/skins.json b/Better NCP Editor/skins.json
new file mode 100644
index 0000000..bd6da1b
--- /dev/null
+++ b/Better NCP Editor/skins.json
@@ -0,0 +1,166 @@
+{
+ "rifle.ak": {
+ "Agony Yellow": 849047662,
+ "Aircraft Parts AK47": 887494035,
+ "AK Royale": 1359893925,
+ "AK-47 From Hell": 1202410378,
+ "AK-47 Victoria": 1372945520,
+ "Alien Red": 859845460,
+ "Anubis Ak47": 1259716979,
+ "Apocalyptic Knight AK": 1826520371,
+ "Azul AK47": 1750654242,
+ "Basebreaker AR": 2249370680,
+ "Battle Scarred AK47": 809212871,
+ "Battle-Scarred AKS47": 809190373,
+ "Beast of Industry": 1435827815,
+ "Betty Lou AK47": 1112904406,
+ "Blackout AR": 2128372674,
+ "Brass Lion": 1385673487,
+ "BullDozer AK47": 1679665505,
+ "Candy Hunter AR": 2245084157,
+ "Capitan's AR": 2041629387,
+ "Cardboard AR": 2101560738,
+ "Cartagena AK47": 924020531,
+ "Caution AK47": 1349512142,
+ "Chained Spirits AR": 2248879512,
+ "Checkpoint AK47": 937864743,
+ "Chivalry AK47": 1196676446,
+ "Claw AK47": 875130056,
+ "Cobalt Security AR": 1915393587,
+ "Cobra": 1174389582,
+ "Cold Hunter AK": 1583542371,
+ "Conquerer AK47": 1102750231,
+ "Crimson King": 840477492,
+ "Crypt of Death AK47": 1306351416,
+ "Dark Flames": 885146172,
+ "Dead Pirate Rifle": 1137915903,
+ "Death in Spades AK47": 1245563496,
+ "Demonic AK47": 1349324364,
+ "Desert Hawk AK47": 1929819581,
+ "Diesel AK47": 1092674304,
+ "Digital Camo AK47": 615766181,
+ "Doodle AK47": 2017002938,
+ "Doombringer AK47": 920472848,
+ "Dreamland AR": 2075372682,
+ "Dynasty AK47": 1804885723,
+ "Epidemic AK47": 928950425,
+ "Etherya AK47": 1448221547,
+ "Evil Snowman AR": 2319710097,
+ "Farseer AK47": 939180121,
+ "Fate Destroyer": 940035827,
+ "Frost Wolf": 903882218,
+ "Gearlord AK47": 1476966011,
+ "Gingerbread AK": 1588206436,
+ "Glorious AK": 1167207039,
+ "Glory AK47": 889710179,
+ "Gold Rush AK": 1362212220,
+ "Golden Drake AK47": 1265322092,
+ "Green Dragon AK47": 1364985829,
+ "Heartbreaker AR": 1993279809,
+ "Hell's Dogs": 1599157678,
+ "Huntsman AK47": 1575397458,
+ "Jack O Lantern - AK47": 1886272847,
+ "Jaws AK47": 925720043,
+ "King of the Jungle AK47": 1272989639,
+ "Last Phoenix": 1434027951,
+ "Lonewolf AK47 - Blue": 908297014,
+ "Mandrill": 1213092632,
+ "Marrakesh": 1428980348,
+ "Memories AR": 1983066869,
+ "Midnight Dream": 1457951707,
+ "Military Camo AK47": 618543834,
+ "Monument Memories AR": 2085083014,
+ "Mystic AK47": 1338305091,
+ "Neanderthal AR": 2179386526,
+ "Night Howler AK47": 1118706219,
+ "Nightmare AK47": 1539318940,
+ "No Mercy AK47": 1760078043,
+ "Panther AK47": 1161844853,
+ "Phantom AK": 1522034435,
+ "Piranha AK47": 1120500163,
+ "Playmaker AK47": 1685375084,
+ "Polymer AK47": 1549426268,
+ "Porcelain AR": 2304993742,
+ "Poseidon - AK47": 1907342157,
+ "PulsAR": 2172715245,
+ "Punkish AK47": 1870705926,
+ "Rabble Rouser AK47": 911726740,
+ "Rainbow AR": 2012334520,
+ "Rainbow Pony AR": 2059352465,
+ "Raptor AR": 2108685486,
+ "Rebellion Assault Rifle": 1252554814,
+ "Retro Car Parts AK47": 895307805,
+ "Retrowave AR": 2268418002,
+ "REX": 1352844155,
+ "Royal AK47": 1746886322,
+ "Rumble AK47": 1288866247,
+ "Rustpunk AK47": 654502185,
+ "Sandstorm AK47": 934891737,
+ "Santa Muerte": 1175238674,
+ "Scarecrow AK47": 1539409946,
+ "Scorpion AK47": 1372566409,
+ "Scrapper AK47": 1277707212,
+ "Smolder": 1396630285,
+ "Soul Taker AK47": 1076214414,
+ "Sticker Pack AK47": 1882821847,
+ "Sunken Treasure AK": 1850236015,
+ "Sweet Poison AR": 2109182691,
+ "Talon AK47": 1230963555,
+ "T-Bone AK47": 1539007965,
+ "Tempered AK47": 566540646,
+ "The Beast AK47": 1088459232,
+ "The Beast Of The East": 1129886223,
+ "The Reptile": 1124932043,
+ "Toxic": 1467269924,
+ "Training AR": 2006878490,
+ "Troll Daddy AK": 1659781652,
+ "Trophy Pirate AK47": 1402320927,
+ "Trust In Rust 3 AR": 2323019876,
+ "Underworld AR": 2242791041,
+ "Urban Ice AK47": 1324932956,
+ "War Machine AK47": 1140366289,
+ "Wild Spirit AR": 2240088463,
+ "Wyrm Rifle": 1159593268,
+ "xQc Assault Rifle": 2352506845,
+ "X-RAY AK47": 1309470544
+ },
+ "mask.bandana": {
+ "Beast Bandana": 820870847,
+ "Black Bandana": 10061,
+ "Blue Bandana": 10060,
+ "Burlap Bandit Bandana": 1438048628,
+ "Checkered Bandana": 10067,
+ "Creepy Bandana": 2093051075,
+ "Creepy Clown Bandana": 533328361,
+ "Desert Camo Bandana": 10066,
+ "Easter Bandit": 2051174405,
+ "Egg Thief": 1710737837,
+ "Forest Camo Bandana": 10063,
+ "Green Bandana": 10059,
+ "Jawboy": 903595865,
+ "Red Skull Bandana": 10065,
+ "Road Raider Bandana": 1323640876,
+ "Salvaged Hazmat Bandana": 1685873480,
+ "Santa Bandana": 1185794212,
+ "Skull Bandana": 10064,
+ "Snow Camo Bandana": 10062,
+ "Wizard Bandana": 521069222
+ },
+ "hat.cap": {
+ "Blue Cap": 10029,
+ "Charitable Rust 2018 Cap": 1565217605,
+ "Forest Camo Cap": 10027,
+ "Friendly Cap": 10055,
+ "Friendly Cap": 494030776,
+ "Green Cap": 10030,
+ "Grey Cap": 10026,
+ "Jockey Cap": 1760269295,
+ "Oxums Employee Cap": 1137628492,
+ "Red Cap": 10028,
+ "Rescue Cap": 10045,
+ "Rescue Cap": 495026469,
+ "Taxi Cap": 2276035673,
+ "Toothy Hat": 890772638,
+ "Top Cap": 893188334
+ }
+}
\ No newline at end of file