private void btnSaveMod_Click(object sender, EventArgs e) { var item = cbx_modlist.SelectedItem as dynamic; if (item != null && item.name != null) { var modName = item.name; var txt = nud_MaxStackCount.Text; var max = int.Parse(txt); var cdir = item.cdir; if (max > 0) { ModsConfigJson conf = mods[modName]; if (conf.db.ContainsKey("items")) { foreach (var itemKey in conf.db["items"]) { var tmp = Path.Combine(cdir, itemKey.Value.ToString()); string tmpCtx = File.ReadAllText(tmp); Dictionary <string, object> itemObj = JsonConvert.DeserializeObject <Dictionary <string, object> >(tmpCtx); var jo = itemObj["_props"] as JObject; jo["StackMaxSize"] = max; itemObj["_props"] = jo; tmpCtx = JsonConvert.SerializeObject(itemObj, Formatting.Indented); File.WriteAllText(tmp, tmpCtx, new UTF8Encoding(false)); } MessageBox.Show("ok"); } } } }
private void Form1_Load(object sender, EventArgs e) { if (File.Exists("config.json")) { var conf = File.ReadAllText("config.json"); sysConfig = JsonConvert.DeserializeObject <SysConfig>(conf); basepath = sysConfig.DefaultPath; } else { sysConfig = new SysConfig(); } var fbd = new FolderBrowserDialog(); redo: basepath = Directory.Exists(basepath) ? basepath : System.Environment.CurrentDirectory; path = $"{basepath}\\user\\mods\\EmuTarkov-AllItemsExamined-1.0.0\\db\\items"; transPath = $"{basepath}\\user\\mods\\EmuTarkov-LocaleCh-1.0.0\\db\\locales\\ch\\templates"; configPath = $"{basepath}\\user\\configs"; if (!Directory.Exists(path)) { if (DialogResult.OK == fbd.ShowDialog()) { basepath = fbd.SelectedPath; path = Path.Combine(basepath, @"user\mods\EmuTarkov-AllItemsExamined-1.0.0\db\items"); transPath = Path.Combine(basepath, @"user\mods\EmuTarkov-LocaleCh-1.0.0\db\locales\ch\templates"); configPath = Path.Combine(basepath, @"user\configs"); ProfilePath = Path.Combine(basepath, ProfilePath); tranquestpath = Path.Combine(basepath, tranquestpath); enquesttransPath = Path.Combine(basepath, enquesttransPath); orgLocalePath = Path.Combine(basepath, orgLocalePath); } else { this.Close(); return; } } txt_base_path.Text = basepath; sysConfig.DefaultPath = basepath; var cng = JsonConvert.SerializeObject(sysConfig); File.WriteAllText("config.json", cng, Encoding.UTF8); if (!Directory.Exists(path)) { goto redo; } files = Directory.GetFiles(path); foreach (var file in files) { var stream = File.OpenText(file); string json = stream.ReadToEnd(); Item item = JsonConvert.DeserializeObject <Item>(json); if (item._props == null) { continue; } if (item._props.ItemSound != null && !soundList.Contains(item._props.ItemSound)) { soundList.Add(item._props.ItemSound); } sortedItems.Add(file, item); } comboBox1.BeginUpdate(); comboBox1.Items.AddRange(soundList.ToArray()); comboBox1.EndUpdate(); if (File.Exists(configPath + @"\gameplay.json")) { string gameConfigString = File.ReadAllText(configPath + @"\gameplay.json"); gameConfig = JsonConvert.DeserializeObject <GameConfig>(gameConfigString); NUDUsec.Value = gameConfig.bots.pmcUsecChance; NUDpmc.Value = gameConfig.bots.pmcSpawnChance; } if (Directory.Exists(ProfilePath)) { string[] profiles = Directory.GetDirectories(ProfilePath); if (profiles != null && profiles.Length > 0) { cb_profile_list.BeginUpdate(); cb_profile_list.Items.Add("选择一个账号"); foreach (var profile in profiles) { var fileName = Path.Combine(profile, "character.json"); if (File.Exists(fileName)) { var ch = JsonConvert.DeserializeObject <Character>(File.ReadAllText(fileName), new JsonSerializerSettings() { Error = ((o, args) => { // args.ErrorContext.Handled = true; }), FloatParseHandling = FloatParseHandling.Decimal }); charList.Add(ch.aid, ch); cb_profile_list.Items.Add(new { Text = ch.Info.Nickname, Value = ch.aid }); cb_profile_list.DisplayMember = "Text"; cb_profile_list.ValueMember = "Value"; } } cb_profile_list.EndUpdate(); } } if (Directory.Exists(tranquestpath)) { var questPaths = Directory.GetFiles(tranquestpath); if (questPaths != null && questPaths.Length > 0) { foreach (var questPath in questPaths) { if (File.Exists(questPath)) { var quest1 = JsonConvert.DeserializeObject <Quest>(File.ReadAllText(questPath)); questdic_ch.Add(Path.GetFileName(questPath), quest1); } } } } if (Directory.Exists(enquesttransPath)) { var questPaths = Directory.GetFiles(enquesttransPath); if (questPaths != null && questPaths.Length > 0) { foreach (var questPath in questPaths) { if (File.Exists(questPath)) { var quest1 = JsonConvert.DeserializeObject <Quest>(File.ReadAllText(questPath)); questdic_en.Add(Path.GetFileName(questPath), quest1); } } } } if (File.Exists(orgLocalePath)) { propLocale = JsonConvert.DeserializeObject <PropLocale>(File.ReadAllText(orgLocalePath)); } moddir = Path.Combine(basepath, moddir); if (Directory.Exists(moddir)) { var dirs = Directory.GetDirectories(moddir); cbx_modlist.BeginUpdate(); foreach (var dir in dirs) { string config = Path.Combine(dir, "mod.config.json"); if (File.Exists(config)) { string tempfile = File.ReadAllText(config); ModsConfigJson configJson = JsonConvert.DeserializeObject <ModsConfigJson>(tempfile); mods.Add(configJson.name, configJson); cbx_modlist.Items.Add(new { configJson.name, value = config, cdir = dir }); } } cbx_modlist.DisplayMember = "name"; cbx_modlist.ValueMember = "value"; cbx_modlist.EndUpdate(); } }