Hi,
habe hier eine json Datei bei denen manche Keys / values existieren bei anderen nicht. z.B. Gibt es bei normalen waffen den ammo_type bei melee waffen nicht dafür gibt es z.B. knockback welches bei den anderen nicht gibt.
Genutzt wird newtonsoft json.
Im endeffekt sollte für jede Waffe in er Datei eine Klasse erstellt werden die die Werte beinhaltet.
Hab jetzt schon verschiedenes probiert von simplen JObject.Parse über JsonConvert.PopulateObject oder auch JsonConvert.DeserializeObject. Geben mir alles nur null Werte zurück. Die json Datei ansich ist valide also daran liegt es nicht.
Habe hier mal 2 beispiele wo Werte / keys ber A existieren dafür bei B nicht und umgekehrt.
{
"weapon_ak47" :
{
"head" : 2.4,
"chest" : 1.2,
"stomach" : 1.2,
"legs" : 1,
"arms" : 1.1,
"weight" : 3.25,
"firerate" : 0.1,
"damage" : 19,
"damage_dropoff" : 675,
"damage_remove" : 0.7,
"ammo_type" : "Rifle",
"recoil_table" : "ak47",
"ammo_clip_size" : 30,
"ammo_clip_default" : 30
},
"weapon_sledgehammer" :
{
"head" : 2.4,
"chest" : 1.7,
"stomach" : 1.5,
"legs" : 1.3,
"arms" : 1.4,
"weight" : 9,
"firerate" : 0.75,
"knockback" : 140,
"damage" : 75,
"damage_heavy" : 150,
"damage_range" : 72.0,
"swing_arc_time" : 0.35
}
}
Alles anzeigen
Aufbau der Weapon Klasse. Habe sogar explizit diese als JsonProperty deklariert aber das macht kein Unterschied beim ergebenis.
public class Weapon
{
public Weapon(string className)
{
ClassName = className;
}
public string ClassName { get; private set; }
[JsonProperty("head")]
public float HeadshotMultiplier { get; set; }
[JsonProperty("chest")]
public float ChestMultiplier { get; set; }
[JsonProperty("stomach")]
public float StomachMultiplier { get; set; }
[JsonProperty("legs")]
public float LegsMultiplier { get; set; }
[JsonProperty("arms")]
public float ArmsMultiplier { get; set; }
[JsonProperty("weight")]
public float Weight { get; set; }
[JsonProperty("firerate")]
public float FireRate { get; set; }
[JsonProperty("damage")]
public float Damage { get; set; }
[JsonProperty("damage_dropoff")]
public float DamageDropOff { get; set; }
[JsonProperty("damage_remove")]
public float DamageRemove { get; set; }
[JsonProperty("ammo_type")]
public string AmmoType { get; set; }
[JsonProperty("recoil_table")]
public string RecoilTable { get; set; }
[JsonProperty("ammo_clip_size")]
public int ClipSize { get; set; }
[JsonProperty("ammo_clip_default")]
public int DefaultClipSize { get; set; }
[JsonProperty("allow_automatic")]
public bool AllowAutomatic { get; set; }
[JsonProperty("knockback")]
public float Knockback { get; set; }
[JsonProperty("damage_range")]
public float DamageRange { get; set; }
[JsonProperty("damage_heavy")]
public float DamageHeavy { get; set; }
[JsonProperty("swing_arc_time")]
public float SwingArcTime { get; set; }
[JsonProperty("swing_arc_start")]
public float SwingArcStart { get; set; }
[JsonProperty("swing_arc_end")]
public float SwingArcEnd{ get; set; }
[JsonProperty("swing_arc_update")]
public float SwingArcUpdate { get; set; }
[JsonProperty("swing_arc_mode")]
public bool SwingArcMode { get; set; }
}
Alles anzeigen
Steh da gerade etwas aufen Schlauch