├── APMMHXSaveEditor
├── app.ico
├── App.config
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ └── Resources.resx
├── Data
│ ├── Shop.cs
│ ├── SaveFile.cs
│ ├── GuildCard.cs
│ ├── Item.cs
│ ├── Equipment.cs
│ ├── Constants.cs
│ ├── Palico.cs
│ ├── Player.cs
│ └── Offsets.cs
├── Program.cs
├── Util
│ ├── Converters.cs
│ └── Tools.cs
├── Forms
│ ├── AboutDialog.cs
│ ├── PalicoActionEditorDialog.cs
│ ├── SetItemBoxItemAmountDialog.cs
│ ├── PalicoSkillEditorDialog.cs
│ ├── ShoutoutTextEditDialog.cs
│ ├── ExportEquipmentBoxDialog.cs
│ ├── ItemEditDialog.cs
│ ├── ImportEquipmentBoxDialog.cs
│ ├── ImportItemBoxListDialog.cs
│ ├── ShoutoutsEditDialog.cs
│ ├── AboutDialog.Designer.cs
│ ├── SetItemBoxItemAmountDialog.Designer.cs
│ ├── PalicoSkillEditorDialog.Designer.cs
│ ├── PalicoActionEditorDialog.Designer.cs
│ ├── ExportEquipmentBoxDialog.Designer.cs
│ ├── ShoutoutTextEditDialog.Designer.cs
│ ├── EquipmentEditDialog.cs
│ ├── ItemEditDialog.Designer.cs
│ ├── AboutDialog.resx
│ ├── ItemEditDialog.resx
│ ├── EquipmentEditDialog.resx
│ ├── PalicoEditDialog.resx
│ ├── ShoutoutsEditDialog.resx
│ ├── ExportEquipmentBoxDialog.resx
│ ├── GuildCardEditorDialog.resx
│ ├── ImportEquipmentBoxDialog.resx
│ ├── ImportItemBoxListDialog.resx
│ ├── PalicoActionEditorDialog.resx
│ ├── PalicoSkillEditorDialog.resx
│ ├── ShoutoutTextEditDialog.resx
│ ├── SetItemBoxItemAmountDialog.resx
│ ├── ImportItemBoxListDialog.Designer.cs
│ ├── ImportEquipmentBoxDialog.Designer.cs
│ ├── ShoutoutsEditDialog.Designer.cs
│ └── GuildCardEditorDialog.cs
└── APMMHXSaveEditor.csproj
├── .gitattributes
├── README.md
└── .gitignore
/APMMHXSaveEditor/app.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ezapm/APMMHXSaveEditor/HEAD/APMMHXSaveEditor/app.ico
--------------------------------------------------------------------------------
/APMMHXSaveEditor/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Data/Shop.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace APMMHXSaveEditor.Data
8 | {
9 | public class Shop
10 | {
11 | public byte[] ShopData { get; set; }
12 |
13 | public Shop(byte[] ShopData)
14 | {
15 | this.ShopData = ShopData;
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Data/SaveFile.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace APMMHXSaveEditor.Data
8 | {
9 | public class SaveFile
10 | {
11 | public Player[] Players;
12 |
13 | public SaveFile(Player[] players)
14 | {
15 | this.Players = players;
16 | }
17 |
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Data/GuildCard.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | namespace APMMHXSaveEditor.Data
7 | {
8 | public class GuildCard
9 | {
10 | public byte[] GuildCardData { get; set; }
11 | public UInt16[] MonsterKills { get; set; }
12 | public UInt16[] MonsterCaptures { get; set; }
13 |
14 | public GuildCard(byte[] guildCardData)
15 | {
16 | this.GuildCardData = guildCardData;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace APMMHXSaveEditor
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// The main entry point for the application.
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new MainForm());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Util/Converters.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace APMMHXSaveEditor.Util
8 | {
9 | public static class Converters
10 | {
11 | public static byte[] StringToByteArray(String hex)
12 | {
13 | int NumberChars = hex.Length;
14 | byte[] bytes = new byte[NumberChars / 2];
15 | for (int i = 0; i < NumberChars; i += 2)
16 | bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
17 | return bytes;
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # APMMHXSaveEditor
2 | A save editor for Monster Hunter X and Monster Hunter Generations
3 |
4 | Features:
5 | Character Editor (Name, Hr, face, color)
6 |
7 | Funds Editor
8 |
9 | Equipment Editor
10 |
11 | Item Box Editor
12 |
13 | Item Pouch Editor
14 |
15 | Palico Editor
16 |
17 | Craftable items unlocker
18 |
19 | Guild Card Editor
20 |
21 | Shoutout Editor
22 |
23 | Charm Exporter (Export charms to Athena's format)
24 |
25 | More to come
26 |
27 | GBATemp thread: https://gbatemp.net/threads/apm-mhx-mhgen-save-editor.434421/
28 |
29 | To use: Download the binaries from either the Releases tab or from a link in the GBATemp thread
30 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Windows image file caches
2 | Thumbs.db
3 | ehthumbs.db
4 |
5 | # Folder config file
6 | Desktop.ini
7 |
8 | # Recycle Bin used on file shares
9 | $RECYCLE.BIN/
10 |
11 | # Windows Installer files
12 | *.cab
13 | *.msi
14 | *.msm
15 | *.msp
16 |
17 | # Windows shortcuts
18 | *.lnk
19 |
20 | # =========================
21 | # Operating System Files
22 | # =========================
23 |
24 | # OSX
25 | # =========================
26 |
27 | .DS_Store
28 | .AppleDouble
29 | .LSOverride
30 |
31 | # Thumbnails
32 | ._*
33 |
34 | # Files that might appear on external disk
35 | .Spotlight-V100
36 | .Trashes
37 |
38 | # Directories potentially created on remote AFP share
39 | .AppleDB
40 | .AppleDesktop
41 | Network Trash Folder
42 | Temporary Items
43 | .apdisk
44 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/AboutDialog.cs:
--------------------------------------------------------------------------------
1 | using APMMHXSaveEditor.Data;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.ComponentModel;
5 | using System.Data;
6 | using System.Drawing;
7 | using System.Linq;
8 | using System.Text;
9 | using System.Threading.Tasks;
10 | using System.Windows.Forms;
11 |
12 | namespace APMMHXSaveEditor.Forms
13 | {
14 | public partial class AboutDialog : Form
15 | {
16 | public AboutDialog()
17 | {
18 | InitializeComponent();
19 | }
20 |
21 | private void AboutDialog_Load(object sender, EventArgs e)
22 | {
23 | labelText.Text = string.Format("{0}\n\nWritten by APM\n\nContact: PM APM on GBATemp", Constants.EDITOR_VERSION);
24 | }
25 |
26 | private void buttonClose_Click(object sender, EventArgs e)
27 | {
28 | this.DialogResult = DialogResult.OK;
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.34209
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace APMMHXSaveEditor.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/PalicoActionEditorDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 | using APMMHXSaveEditor.Data;
11 |
12 | namespace APMMHXSaveEditor.Forms
13 | {
14 | public partial class PalicoActionEditorDialog : Form
15 | {
16 | public byte ActionID { get; set; }
17 |
18 | public PalicoActionEditorDialog(byte actionID)
19 | {
20 | InitializeComponent();
21 | this.ActionID = actionID;
22 | comboBoxPalicoSkills.DataSource = GameConstants.PalicoSupportMoves;
23 | comboBoxPalicoSkills.SelectedIndex = actionID;
24 | }
25 |
26 | private void buttonOK_Click(object sender, EventArgs e)
27 | {
28 | this.ActionID = (byte)comboBoxPalicoSkills.SelectedIndex;
29 | this.DialogResult = DialogResult.OK;
30 | }
31 |
32 | private void buttonCancel_Click(object sender, EventArgs e)
33 | {
34 | this.DialogResult = DialogResult.Cancel;
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Data/Item.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using APMMHXSaveEditor.Data;
7 |
8 | namespace APMMHXSaveEditor.Data
9 | {
10 | public class Item
11 | {
12 | public UInt32 ItemID { get; set; }
13 | public UInt32 ItemAmount { get; set; }
14 |
15 | public Item(UInt32 ItemID, UInt32 ItemAmount)
16 | {
17 | this.ItemID = ItemID;
18 | this.ItemAmount = ItemAmount;
19 | }
20 |
21 | public Item()
22 | {
23 | this.ItemID = 0;
24 | this.ItemAmount = 0;
25 | }
26 |
27 | public Item(Item copy)
28 | {
29 | this.ItemID = copy.ItemID;
30 | this.ItemAmount = copy.ItemAmount;
31 | }
32 |
33 | public override string ToString()
34 | {
35 | if (this.ItemID >= GameConstants.ItemList.Length)
36 | {
37 | return string.Format("Unknown Item [{0}]", this.ItemID);
38 | }
39 | else
40 | {
41 | return GameConstants.ItemList[ItemID];
42 | }
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/SetItemBoxItemAmountDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 | using APMMHXSaveEditor.Data;
10 |
11 | namespace APMMHXSaveEditor.Forms
12 | {
13 | public partial class SetItemBoxItemAmountDialog : Form
14 | {
15 | private Item[] items;
16 | public SetItemBoxItemAmountDialog(Item[] items)
17 | {
18 | InitializeComponent();
19 | numericUpDownAmount.Maximum = 255;
20 | numericUpDownAmount.Value = 99;
21 | this.items = items;
22 | }
23 |
24 | private void buttonOk_Click(object sender, EventArgs e)
25 | {
26 | foreach (Item item in items)
27 | {
28 | if (item.ItemID != 0)
29 | {
30 | item.ItemAmount = (UInt32)numericUpDownAmount.Value;
31 | }
32 | }
33 | this.DialogResult = DialogResult.OK;
34 | }
35 |
36 | private void buttonCancel_Click(object sender, EventArgs e)
37 | {
38 | this.DialogResult = DialogResult.Cancel;
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/PalicoSkillEditorDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 | using APMMHXSaveEditor.Data;
11 |
12 | namespace APMMHXSaveEditor.Forms
13 | {
14 | public partial class PalicoSkillEditorDialog : Form
15 | {
16 | public byte SkillID { get; set; }
17 |
18 | public PalicoSkillEditorDialog(byte skillID)
19 | {
20 | InitializeComponent();
21 | comboBoxPalicoSkills.DataSource = GameConstants.PalicoSkills;
22 | this.SkillID = skillID;
23 | comboBoxPalicoSkills.SelectedIndex = skillID;
24 | }
25 |
26 | private void buttonOK_Click(object sender, EventArgs e)
27 | {
28 | this.SkillID = (byte)comboBoxPalicoSkills.SelectedIndex;
29 | this.DialogResult = DialogResult.OK;
30 | }
31 |
32 | private void buttonCancel_Click(object sender, EventArgs e)
33 | {
34 | this.DialogResult = DialogResult.Cancel;
35 | }
36 |
37 | private void PalicoSkillEditorDialog_Load(object sender, EventArgs e)
38 | {
39 |
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ShoutoutTextEditDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 | using APMMHXSaveEditor.Data;
10 |
11 | namespace APMMHXSaveEditor.Forms
12 | {
13 | public partial class ShoutoutTextEditDialog : Form
14 | {
15 | public string Shoutout { get; set; }
16 | public ShoutoutTextEditDialog(string shoutout)
17 | {
18 | InitializeComponent();
19 | this.Shoutout = shoutout;
20 | textBoxShoutout.Text = Shoutout;
21 | checkBoxLimit.Checked = true;
22 | }
23 |
24 | private void buttonOK_Click(object sender, EventArgs e)
25 | {
26 | this.Shoutout = textBoxShoutout.Text.PadRight(Constants.SIZEOF_SHOUTOUT, '\0'); ;
27 | this.DialogResult = DialogResult.OK;
28 | }
29 |
30 | private void buttonCancel_Click(object sender, EventArgs e)
31 | {
32 | this.DialogResult = DialogResult.Cancel;
33 | }
34 |
35 | private void checkBoxLimit_CheckedChanged(object sender, EventArgs e)
36 | {
37 | textBoxShoutout.MaxLength = checkBoxLimit.Checked ? Constants.SIZEOF_GAME_SHOUTOUT : Constants.SIZEOF_SHOUTOUT;
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Data/Equipment.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace APMMHXSaveEditor.Data
8 | {
9 | public class Equipment
10 | {
11 | public byte[] EquipmentBytes { get; set; }
12 |
13 | public Equipment(byte[] bytes)
14 | {
15 | this.EquipmentBytes = bytes;
16 | }
17 |
18 | public Equipment GetClone()
19 | {
20 | if (this.EquipmentBytes == null)
21 | return null;
22 |
23 | int length = this.EquipmentBytes.Length;
24 |
25 | byte[] temp = new byte[length];
26 | for (int i = 0; i < temp.Length; i++)
27 | {
28 | byte b = this.EquipmentBytes[i];
29 | temp[i] = b;
30 | }
31 |
32 | return new Equipment(temp);
33 | }
34 |
35 | public Equipment(Equipment equip)
36 | {
37 | byte[] temp = new byte[equip.EquipmentBytes.Length];
38 | for (int i = 0; i < temp.Length; i++)
39 | {
40 | byte b = equip.EquipmentBytes[i];
41 | temp[i] = b;
42 | }
43 |
44 | EquipmentBytes = temp;
45 | }
46 |
47 | public override string ToString()
48 | {
49 | //TODO
50 | return base.ToString();
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("APMMHXSaveEditor")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Microsoft")]
12 | [assembly: AssemblyProduct("APMMHXSaveEditor")]
13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2016")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("44741f88-d230-4d8a-b242-9b46799d39d5")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Data/Constants.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace APMMHXSaveEditor.Data
8 | {
9 | public static class Constants
10 | {
11 | public const string EDITOR_VERSION = "APM MHGen Save Editor v0.18";
12 |
13 | public const UInt16 TOTAL_ITEM_BOX_SLOTS = 1400;
14 | public const UInt16 TOTAL_PALICO_EQUIPMENT_SLOTS = 700;
15 | public const UInt16 TOTAL_ITEM_SETS = 8;
16 | public const UInt16 INVENTORY_ITEM_SLOTS = 32;
17 | public const UInt16 TOTAL_PALICOS = 60;
18 |
19 | public const UInt16 SIZEOF_NAME = 32;
20 | public const UInt16 SIZEOF_PALICO_GREETINGS = 60;
21 |
22 | public const UInt16 SIZEOF_ITEM = 18;
23 | public const UInt16 SIZEOF_ITEMBOX = 3150;
24 | public const UInt16 SIZEOF_ITEMPOUCH = 72;
25 | public const UInt16 SIZEOF_EQUIPMENT = 36;
26 | public const UInt16 SIZEOF_PALICO = 319;
27 | public const UInt16 SIZEOF_GUILD_CARD = 5208;
28 | public const UInt16 SIZEOF_CRAFTABLE_ARMOR = 392;
29 | public const UInt16 SIZEOF_CRAFTABLE_WEAPON = 40;
30 | public const UInt16 SIZEOF_CRAFTABLE_PALICO_GEAR = 104;
31 |
32 | public const UInt16 SIZEOF_FOOD_FLAGS = 4;
33 | public const UInt16 SIZEOF_AWARD_FLAGS = 13;
34 |
35 | public const UInt16 SIZEOF_SHOUTOUT = 104;
36 | public const UInt16 SIZEOF_AUTOMATIC_SHOUTOUT = 104;
37 | public const UInt16 SIZEOF_GAME_SHOUTOUT = 36;
38 |
39 | public const UInt16 ITEM_PER_BOX = 100;
40 | public const UInt16 ITEM_PER_POUCH = 8;
41 |
42 | public const UInt32 TOTAL_CRAFTABLE_ARMOR_SHOPS = 5;
43 | public const UInt16 TOTAL_CRAFTABLE_WEAPON_SHOPS = 14;
44 | public const UInt16 TOTAL_EQSHOP_SHOPS = 19;
45 | public const UInt16 TOTAL_CRAFTABLE_PALICO_SHOPS = 3;
46 |
47 | public const UInt16 TOTAL_WEAPONS = 15;
48 | public const UInt16 TOTAL_MONSTERHUNTS = 71;
49 |
50 | public const UInt16 TOTAL_SHOUTOUTS = 24;
51 | public const UInt16 TOTAL_AUTOMATIC_SHOUTOUTS = 9;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ExportEquipmentBoxDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 | using APMMHXSaveEditor.Data;
10 | using System.IO;
11 |
12 | namespace APMMHXSaveEditor.Forms
13 | {
14 | public partial class ExportEquipmentBoxDialog : Form
15 | {
16 | Equipment[] equips;
17 | public ExportEquipmentBoxDialog(Equipment[] equips)
18 | {
19 | InitializeComponent();
20 | comboBoxSelectedBox.SelectedIndex = 0;
21 | this.equips = equips;
22 | }
23 |
24 | private void buttonSave_Click(object sender, EventArgs e)
25 | {
26 | try
27 | {
28 | using (SaveFileDialog sfd = new SaveFileDialog())
29 | {
30 | sfd.Filter = "Equipment Box (*.eqpbox)|*.eqpbox|All files (*.*)|*.*";
31 | sfd.FilterIndex = 1;
32 | sfd.RestoreDirectory = true;
33 | sfd.FileName = string.Format("Equipment Box {0}", (comboBoxSelectedBox.SelectedIndex + 1));
34 |
35 | if (sfd.ShowDialog() == DialogResult.OK)
36 | {
37 | int equipIndex = comboBoxSelectedBox.SelectedIndex * 100;
38 | byte[] fileData = new byte[Constants.SIZEOF_EQUIPMENT * 100];
39 | for (int i = 0; i < 100; i++)
40 | {
41 | Buffer.BlockCopy(equips[equipIndex + i].EquipmentBytes, 0, fileData, (i * Constants.SIZEOF_EQUIPMENT), Constants.SIZEOF_EQUIPMENT);
42 | }
43 | File.WriteAllBytes(sfd.FileName, fileData);
44 |
45 | MessageBox.Show("Save Complete", "Success!");
46 | }
47 | }
48 | }
49 | catch (Exception ex)
50 | {
51 | MessageBox.Show(ex.Message);
52 | }
53 | }
54 |
55 | private void buttonClose_Click(object sender, EventArgs e)
56 | {
57 | this.DialogResult = DialogResult.Cancel;
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ItemEditDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 | using APMMHXSaveEditor.Data;
11 |
12 | namespace APMMHXSaveEditor.Forms
13 | {
14 | public partial class ItemEditDialog : Form
15 | {
16 | private Item item;
17 |
18 | public ItemEditDialog(Item item, int slot)
19 | {
20 | InitializeComponent();
21 | this.item = item;
22 | numericUpDownAmount.Maximum = 99;
23 |
24 | comboBoxItem.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown;
25 | comboBoxItem.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
26 | comboBoxItem.AutoCompleteSource = AutoCompleteSource.ListItems;
27 | comboBoxItem.Sorted = true;
28 |
29 | this.Text = string.Format("Editing Slot: [{0}]", slot);
30 | this.item = item;
31 | numericUpDownAmount.Value = item.ItemAmount;
32 |
33 | for (int i = 0; i < GameConstants.ItemList.Length; i++)
34 | {
35 | comboBoxItem.Items.Add(GameConstants.ItemList[i]);
36 | }
37 |
38 | for (int i = 0; i < comboBoxItem.Items.Count; i++)
39 | {
40 | if (comboBoxItem.Items[i] == GameConstants.ItemList[item.ItemID])
41 | {
42 | comboBoxItem.SelectedIndex = i;
43 | break;
44 | }
45 | }
46 |
47 | comboBoxItem.Refresh();
48 |
49 | }
50 |
51 | private void buttonOK_Click(object sender, EventArgs e)
52 | {
53 | if (comboBoxItem.SelectedItem == null || !GameConstants.ItemList.Contains(comboBoxItem.SelectedItem.ToString()))
54 | {
55 | return;
56 | }
57 |
58 | this.item.ItemID = GameConstants.GetItemIDFromName(comboBoxItem.SelectedItem.ToString());
59 | this.item.ItemAmount = (UInt32)numericUpDownAmount.Value;
60 |
61 | this.DialogResult = DialogResult.OK;
62 | }
63 |
64 | private void buttonCancel_Click(object sender, EventArgs e)
65 | {
66 | this.DialogResult = DialogResult.Cancel;
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Data/Palico.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace APMMHXSaveEditor.Data
8 | {
9 | public class Palico
10 | {
11 | //General
12 | public string Name { get; set; }
13 | public UInt32 XP { get; set; }
14 | public byte Level { get; set; } //Note that level 1 = 0
15 | public byte Forte { get; set; }
16 | public byte Enthusiasm { get; set; }
17 | public byte Target { get; set; }
18 |
19 | //Skills
20 | public byte[] EquippedActions { get; set; }
21 | public byte[] EquippedSkills { get; set; }
22 | public byte[] LearnedActions { get; set; }
23 | public byte[] LearnedSkills { get; set; }
24 | public UInt16 LearnedActionRNG { get; set; }
25 | public UInt16 LearnedSkillRNG { get; set; }
26 |
27 | //Text
28 | public string Greeting { get; set; }
29 | public string NameGiver { get; set; }
30 | public string PreviousMaster { get; set; }
31 |
32 | //Design
33 | public byte[] CoatRGBAValue { get; set; }
34 | public byte[] LeftEyeRGBAValue { get; set; }
35 | public byte[] RightEyeRGBAValue { get; set; }
36 | public byte[] VestRGBAValue { get; set; }
37 | public byte Voice { get; set; }
38 | public byte Eyes { get; set; }
39 | public byte Clothing { get; set; }
40 | public byte Coat { get; set; }
41 | public byte Ears { get; set; }
42 | public byte Tail { get; set; }
43 |
44 |
45 | //Unknown Values
46 | public byte[] Unknown1 { get; set; } //Place Holder Offset 0x58 Size 8
47 | public byte[] Unknown2 { get; set; } //Place Holder Offset 0xDC Size 51
48 | public byte[] Unknown3 { get; set; } //Place Holder Offset 0x0112 Size 2
49 | public byte[] Unknown4 { get; set; } //Place Holder Offset 0x0117 Size 3
50 | public byte[] Unknown5 { get; set; } //Place Holder Offset 0x012A Size 21
51 |
52 | public Palico()
53 | {
54 | }
55 |
56 | public override string ToString()
57 | {
58 | if (this.Name == "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")
59 | return "[Empty]";
60 | else
61 | return string.Format("[Lv. {0,2}] {1}", (this.Level + 1), this.Name);
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ImportEquipmentBoxDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 | using System.IO;
10 | using APMMHXSaveEditor.Data;
11 |
12 | namespace APMMHXSaveEditor.Forms
13 | {
14 | public partial class ImportEquipmentBoxDialog : Form
15 | {
16 | private Equipment[] equips;
17 | public ImportEquipmentBoxDialog(Equipment[] equips)
18 | {
19 | InitializeComponent();
20 | this.equips = equips;
21 | comboBoxDest.SelectedIndex = 0;
22 | }
23 |
24 | private void buttonOpen_Click(object sender, EventArgs e)
25 | {
26 | try
27 | {
28 | OpenFileDialog ofd = new OpenFileDialog();
29 | ofd.Filter = "Equipment Box (*.eqpbox)|*.eqpbox|All files (*.*)|*.*";
30 | ofd.FilterIndex = 1;
31 |
32 | if (ofd.ShowDialog() != DialogResult.OK)
33 | {
34 | ofd.Dispose();
35 | return;
36 | }
37 |
38 | textBoxFileLocation.Text = ofd.FileName;
39 | }
40 | catch (Exception ex)
41 | {
42 | MessageBox.Show(ex.Message, "Loading Error");
43 | }
44 | }
45 |
46 | private void buttonOk_Click(object sender, EventArgs e)
47 | {
48 | if (textBoxFileLocation.Text == "")
49 | {
50 | MessageBox.Show("Select a list first!", "Error");
51 | return;
52 | }
53 |
54 | try
55 | {
56 | byte[] fileData = File.ReadAllBytes(textBoxFileLocation.Text);
57 | if(fileData.Length != (100 * Constants.SIZEOF_EQUIPMENT))
58 | {
59 | MessageBox.Show("Invalid file!", "Error");
60 | return;
61 | }
62 |
63 | int eqpIndex = (comboBoxDest.SelectedIndex * 100);
64 | for (int i = 0; i < 100; i++)
65 | {
66 | Buffer.BlockCopy(fileData, (i * Constants.SIZEOF_EQUIPMENT), equips[eqpIndex + i].EquipmentBytes, 0, Constants.SIZEOF_EQUIPMENT);
67 | }
68 |
69 | this.DialogResult = DialogResult.OK;
70 | }
71 | catch (Exception ex)
72 | {
73 | MessageBox.Show(ex.Message, "Error");
74 | }
75 | }
76 |
77 | private void buttonCancel_Click(object sender, EventArgs e)
78 | {
79 | this.DialogResult = DialogResult.OK;
80 | }
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Data/Player.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace APMMHXSaveEditor.Data
8 | {
9 | public class Player
10 | {
11 | public UInt32 SaveOffset { get; set; }
12 | //General Info
13 | public string Name { get; set; }
14 | public UInt32 PlayTime { get; set; }
15 | public int Funds { get; set; }
16 | public UInt16 HunterRank { get; set; }
17 | public UInt16 HunterArt1 { get; set; }
18 | public UInt16 HunterArt2 { get; set; }
19 | public UInt16 HunterArt3 { get; set; }
20 |
21 | //Character Details
22 | public byte Voice { get; set; }
23 | public byte EyeColor { get; set; }
24 | public byte Clothing { get; set; }
25 | public byte Gender { get; set; } //TWO GENDERS Male = 0; Female = 1;
26 | public byte HuntingStyle { get; set; }
27 | public byte HairStyle { get; set; }
28 | public byte Face { get; set; }
29 | public byte Features { get; set; }
30 |
31 | //Character Colors
32 | public byte[] SkinColorRGBA { get; set; }
33 | public byte[] HairColorRGBA { get; set; }
34 | public byte[] FeaturesColorRGBA { get; set; }
35 | public byte[] ClothingColorRGBA { get; set; }
36 |
37 | //Points
38 | public int HRPoints { get; set; }
39 | public int Zenny { get; set; }
40 | public int AcademyPoints { get; set; }
41 | public int BerunaPoints { get; set; }
42 | public int KokotoPoints { get; set; }
43 | public int PokkePoints { get; set; }
44 | public int YukumoPoints { get; set; }
45 |
46 | public Equipment[] EquipmentBox { get; set; }
47 | public Item[] ItemBox { get; set; }
48 | public Item[] ItemPouch { get; set; }
49 | public Palico[] Palicos { get; set; }
50 | public Equipment[] PalicoEquipment { get; set; }
51 |
52 | //Shop Data
53 | public Shop[] CraftableArmorShops { get; set; }
54 | public Shop[] CraftableWeaponShops { get; set; }
55 | public Shop[] CraftablePalicoShops { get; set; }
56 |
57 | public byte[] UnlockedBoxData { get; set; } //Holds data for unlocked boxes
58 | public byte[] UnlockedFoodData { get; set; }
59 | public byte[] AwardData { get; set; }
60 |
61 | public GuildCard PlayerGuildCard { get; set; }
62 |
63 | //Shoutouts
64 | public string[] ShoutOuts { get; set; }
65 | public string[] AutomaticShoutOuts { get; set; }
66 |
67 | public Player()
68 | {
69 | }
70 |
71 | public override string ToString()
72 | {
73 | return string.Format("{0} + [HR: {1}]", this.Name, this.HunterRank);
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ImportItemBoxListDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 | using System.IO;
10 | using APMMHXSaveEditor.Data;
11 |
12 | namespace APMMHXSaveEditor.Forms
13 | {
14 | public partial class ImportItemBoxListDialog : Form
15 | {
16 | private Item[] items;
17 |
18 | public ImportItemBoxListDialog(Item[] items)
19 | {
20 | InitializeComponent();
21 | this.items = items;
22 | comboBoxDest.SelectedIndex = 0;
23 | }
24 |
25 | private void buttonOpen_Click(object sender, EventArgs e)
26 | {
27 | try
28 | {
29 | OpenFileDialog ofd = new OpenFileDialog();
30 | ofd.Filter = "Item List (*.txt)|*.txt|All files (*.*)|*.*";
31 | ofd.FilterIndex = 1;
32 |
33 | if (ofd.ShowDialog() != DialogResult.OK)
34 | {
35 | ofd.Dispose();
36 | return;
37 | }
38 |
39 | textBoxFileLocation.Text = ofd.FileName;
40 | }
41 | catch (Exception ex)
42 | {
43 | MessageBox.Show(ex.Message, "Loading Error");
44 | }
45 | }
46 |
47 | private void buttonOk_Click(object sender, EventArgs e)
48 | {
49 | if(textBoxFileLocation.Text == "")
50 | {
51 | MessageBox.Show("Select a list first!", "Error");
52 | return;
53 | }
54 |
55 | try
56 | {
57 | Item[] newItems = getItemsFromList(File.ReadAllText(textBoxFileLocation.Text));
58 | int itemIndex = (comboBoxDest.SelectedIndex * 100);
59 | for (int i = 0; i < newItems.Length && (itemIndex + i) < Constants.TOTAL_ITEM_BOX_SLOTS; i++)
60 | {
61 | items[itemIndex + i] = newItems[i];
62 | }
63 | this.DialogResult = DialogResult.OK;
64 | }
65 | catch (Exception ex)
66 | {
67 | MessageBox.Show(ex.Message, "Error");
68 | }
69 | }
70 |
71 | private void buttonCancel_Click(object sender, EventArgs e)
72 | {
73 | this.DialogResult = DialogResult.Cancel;
74 | }
75 |
76 | private Item[] getItemsFromList(string fileData)
77 | {
78 | string[] seperateData = fileData.Split(',');
79 | Item[] items = new Item[seperateData.Length];
80 |
81 | for (int i = 0; i < seperateData.Length; i++)
82 | {
83 | items[i] = new Item(UInt32.Parse(seperateData[i]), 99);
84 | }
85 |
86 | return items;
87 | }
88 |
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.34209
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace APMMHXSaveEditor.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// Returns the cached ResourceManager instance used by this class.
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("APMMHXSaveEditor.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// Overrides the current thread's CurrentUICulture property for all
51 | /// resource lookups using this strongly typed resource class.
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ShoutoutsEditDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 |
10 | namespace APMMHXSaveEditor.Forms
11 | {
12 | public partial class ShoutoutsEditDialog : Form
13 | {
14 | public string[] Shoutouts { get; set; }
15 | public string[] AutomaticShoutouts { get; set; }
16 |
17 | public ShoutoutsEditDialog(string[] shoutOuts, string[] automaticShoutouts)
18 | {
19 | InitializeComponent();
20 | this.Shoutouts = shoutOuts;
21 | this.AutomaticShoutouts = automaticShoutouts;
22 |
23 | loadShoutouts();
24 | loadAutomaticShoutouts();
25 | }
26 |
27 | private void loadShoutouts()
28 | {
29 | listViewShououts.Items.Clear();
30 | for (int i = 0; i < Shoutouts.Length; i++)
31 | {
32 | ListViewItem lvi = new ListViewItem((i + 1).ToString());
33 | lvi.SubItems.Add(Shoutouts[i]);
34 | listViewShououts.Items.Add(lvi);
35 | }
36 | }
37 |
38 | private void loadAutomaticShoutouts()
39 | {
40 | listViewAutomaticShoutouts.Items.Clear();
41 | for (int i = 0; i < AutomaticShoutouts.Length; i++)
42 | {
43 | ListViewItem lvi = new ListViewItem((i + 1).ToString());
44 | lvi.SubItems.Add(AutomaticShoutouts[i]);
45 | listViewAutomaticShoutouts.Items.Add(lvi);
46 | }
47 | }
48 |
49 | private void ShoutoutsEditDialog_Load(object sender, EventArgs e)
50 | {
51 |
52 | }
53 |
54 | private void buttonClose_Click(object sender, EventArgs e)
55 | {
56 | this.DialogResult = DialogResult.OK;
57 | }
58 |
59 | private void listViewShououts_DoubleClick(object sender, EventArgs e)
60 | {
61 | int itemSelected = listViewShououts.SelectedItems[0].Index;
62 | ShoutoutTextEditDialog sted = new ShoutoutTextEditDialog(Shoutouts[itemSelected]);
63 | if (sted.ShowDialog() == DialogResult.OK)
64 | {
65 | Shoutouts[itemSelected] = sted.Shoutout;
66 | loadShoutouts();
67 | listViewShououts.Items[itemSelected].Selected = true;
68 | listViewShououts.TopItem = listViewShououts.SelectedItems[0];
69 | }
70 | sted.Dispose();
71 | }
72 |
73 | private void listViewAutomaticShoutouts_DoubleClick(object sender, EventArgs e)
74 | {
75 | int itemSelected = listViewAutomaticShoutouts.SelectedItems[0].Index;
76 | ShoutoutTextEditDialog sted = new ShoutoutTextEditDialog(AutomaticShoutouts[itemSelected]);
77 | if (sted.ShowDialog() == DialogResult.OK)
78 | {
79 | AutomaticShoutouts[itemSelected] = sted.Shoutout;
80 | loadAutomaticShoutouts();
81 | listViewAutomaticShoutouts.Items[itemSelected].Selected = true;
82 | listViewAutomaticShoutouts.TopItem = listViewAutomaticShoutouts.SelectedItems[0];
83 | }
84 | sted.Dispose();
85 | }
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/AboutDialog.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace APMMHXSaveEditor.Forms
2 | {
3 | partial class AboutDialog
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.labelText = new System.Windows.Forms.Label();
32 | this.buttonClose = new System.Windows.Forms.Button();
33 | this.SuspendLayout();
34 | //
35 | // labelText
36 | //
37 | this.labelText.AutoSize = true;
38 | this.labelText.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
39 | this.labelText.Location = new System.Drawing.Point(12, 9);
40 | this.labelText.Name = "labelText";
41 | this.labelText.Size = new System.Drawing.Size(51, 16);
42 | this.labelText.TabIndex = 1;
43 | this.labelText.Text = "[TEXT]";
44 | //
45 | // buttonClose
46 | //
47 | this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
48 | this.buttonClose.Location = new System.Drawing.Point(121, 123);
49 | this.buttonClose.Name = "buttonClose";
50 | this.buttonClose.Size = new System.Drawing.Size(75, 23);
51 | this.buttonClose.TabIndex = 2;
52 | this.buttonClose.Text = "Close";
53 | this.buttonClose.UseVisualStyleBackColor = true;
54 | this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click);
55 | //
56 | // AboutDialog
57 | //
58 | this.AcceptButton = this.buttonClose;
59 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
60 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
61 | this.CancelButton = this.buttonClose;
62 | this.ClientSize = new System.Drawing.Size(314, 157);
63 | this.Controls.Add(this.buttonClose);
64 | this.Controls.Add(this.labelText);
65 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
66 | this.MaximizeBox = false;
67 | this.MinimizeBox = false;
68 | this.Name = "AboutDialog";
69 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
70 | this.Text = "About";
71 | this.Load += new System.EventHandler(this.AboutDialog_Load);
72 | this.ResumeLayout(false);
73 | this.PerformLayout();
74 |
75 | }
76 |
77 | #endregion
78 |
79 | private System.Windows.Forms.Label labelText;
80 | private System.Windows.Forms.Button buttonClose;
81 | }
82 | }
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/SetItemBoxItemAmountDialog.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace APMMHXSaveEditor.Forms
2 | {
3 | partial class SetItemBoxItemAmountDialog
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.labelAmount = new System.Windows.Forms.Label();
32 | this.numericUpDownAmount = new System.Windows.Forms.NumericUpDown();
33 | this.buttonOK = new System.Windows.Forms.Button();
34 | this.buttonCancel = new System.Windows.Forms.Button();
35 | ((System.ComponentModel.ISupportInitialize)(this.numericUpDownAmount)).BeginInit();
36 | this.SuspendLayout();
37 | //
38 | // labelAmount
39 | //
40 | this.labelAmount.AutoSize = true;
41 | this.labelAmount.Location = new System.Drawing.Point(12, 9);
42 | this.labelAmount.Name = "labelAmount";
43 | this.labelAmount.Size = new System.Drawing.Size(46, 13);
44 | this.labelAmount.TabIndex = 0;
45 | this.labelAmount.Text = "Amount:";
46 | //
47 | // numericUpDownAmount
48 | //
49 | this.numericUpDownAmount.Location = new System.Drawing.Point(64, 7);
50 | this.numericUpDownAmount.Name = "numericUpDownAmount";
51 | this.numericUpDownAmount.Size = new System.Drawing.Size(163, 20);
52 | this.numericUpDownAmount.TabIndex = 1;
53 | //
54 | // buttonOK
55 | //
56 | this.buttonOK.Location = new System.Drawing.Point(71, 33);
57 | this.buttonOK.Name = "buttonOK";
58 | this.buttonOK.Size = new System.Drawing.Size(75, 23);
59 | this.buttonOK.TabIndex = 2;
60 | this.buttonOK.Text = "OK";
61 | this.buttonOK.UseVisualStyleBackColor = true;
62 | this.buttonOK.Click += new System.EventHandler(this.buttonOk_Click);
63 | //
64 | // buttonCancel
65 | //
66 | this.buttonCancel.Location = new System.Drawing.Point(152, 33);
67 | this.buttonCancel.Name = "buttonCancel";
68 | this.buttonCancel.Size = new System.Drawing.Size(75, 23);
69 | this.buttonCancel.TabIndex = 3;
70 | this.buttonCancel.Text = "Cancel";
71 | this.buttonCancel.UseVisualStyleBackColor = true;
72 | this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
73 | //
74 | // SetItemBoxItemAmountDialog
75 | //
76 | this.AcceptButton = this.buttonOK;
77 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
78 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
79 | this.CancelButton = this.buttonCancel;
80 | this.ClientSize = new System.Drawing.Size(239, 61);
81 | this.Controls.Add(this.buttonCancel);
82 | this.Controls.Add(this.buttonOK);
83 | this.Controls.Add(this.numericUpDownAmount);
84 | this.Controls.Add(this.labelAmount);
85 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
86 | this.MaximizeBox = false;
87 | this.MinimizeBox = false;
88 | this.Name = "SetItemBoxItemAmountDialog";
89 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
90 | this.Text = "Set All Items To";
91 | ((System.ComponentModel.ISupportInitialize)(this.numericUpDownAmount)).EndInit();
92 | this.ResumeLayout(false);
93 | this.PerformLayout();
94 |
95 | }
96 |
97 | #endregion
98 |
99 | private System.Windows.Forms.Label labelAmount;
100 | private System.Windows.Forms.NumericUpDown numericUpDownAmount;
101 | private System.Windows.Forms.Button buttonOK;
102 | private System.Windows.Forms.Button buttonCancel;
103 | }
104 | }
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/PalicoSkillEditorDialog.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace APMMHXSaveEditor.Forms
2 | {
3 | partial class PalicoSkillEditorDialog
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.labelSkillID = new System.Windows.Forms.Label();
32 | this.buttonCancel = new System.Windows.Forms.Button();
33 | this.buttonOK = new System.Windows.Forms.Button();
34 | this.comboBoxPalicoSkills = new System.Windows.Forms.ComboBox();
35 | this.SuspendLayout();
36 | //
37 | // labelSkillID
38 | //
39 | this.labelSkillID.AutoSize = true;
40 | this.labelSkillID.Location = new System.Drawing.Point(12, 9);
41 | this.labelSkillID.Name = "labelSkillID";
42 | this.labelSkillID.Size = new System.Drawing.Size(26, 13);
43 | this.labelSkillID.TabIndex = 1;
44 | this.labelSkillID.Text = "Skill";
45 | //
46 | // buttonCancel
47 | //
48 | this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
49 | this.buttonCancel.Location = new System.Drawing.Point(171, 38);
50 | this.buttonCancel.Name = "buttonCancel";
51 | this.buttonCancel.Size = new System.Drawing.Size(75, 23);
52 | this.buttonCancel.TabIndex = 2;
53 | this.buttonCancel.Text = "Cancel";
54 | this.buttonCancel.UseVisualStyleBackColor = true;
55 | this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
56 | //
57 | // buttonOK
58 | //
59 | this.buttonOK.Location = new System.Drawing.Point(90, 38);
60 | this.buttonOK.Name = "buttonOK";
61 | this.buttonOK.Size = new System.Drawing.Size(75, 23);
62 | this.buttonOK.TabIndex = 3;
63 | this.buttonOK.Text = "OK";
64 | this.buttonOK.UseVisualStyleBackColor = true;
65 | this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
66 | //
67 | // comboBoxPalicoSkills
68 | //
69 | this.comboBoxPalicoSkills.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
70 | this.comboBoxPalicoSkills.FormattingEnabled = true;
71 | this.comboBoxPalicoSkills.Location = new System.Drawing.Point(44, 6);
72 | this.comboBoxPalicoSkills.Name = "comboBoxPalicoSkills";
73 | this.comboBoxPalicoSkills.Size = new System.Drawing.Size(202, 21);
74 | this.comboBoxPalicoSkills.TabIndex = 4;
75 | //
76 | // PalicoSkillEditorDialog
77 | //
78 | this.AcceptButton = this.buttonOK;
79 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
80 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
81 | this.CancelButton = this.buttonCancel;
82 | this.ClientSize = new System.Drawing.Size(263, 67);
83 | this.Controls.Add(this.comboBoxPalicoSkills);
84 | this.Controls.Add(this.buttonOK);
85 | this.Controls.Add(this.buttonCancel);
86 | this.Controls.Add(this.labelSkillID);
87 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
88 | this.MaximizeBox = false;
89 | this.MinimizeBox = false;
90 | this.Name = "PalicoSkillEditorDialog";
91 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
92 | this.Text = "Edit Skill";
93 | this.Load += new System.EventHandler(this.PalicoSkillEditorDialog_Load);
94 | this.ResumeLayout(false);
95 | this.PerformLayout();
96 |
97 | }
98 |
99 | #endregion
100 |
101 | private System.Windows.Forms.Label labelSkillID;
102 | private System.Windows.Forms.Button buttonCancel;
103 | private System.Windows.Forms.Button buttonOK;
104 | private System.Windows.Forms.ComboBox comboBoxPalicoSkills;
105 | }
106 | }
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/PalicoActionEditorDialog.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace APMMHXSaveEditor.Forms
2 | {
3 | partial class PalicoActionEditorDialog
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.comboBoxPalicoSkills = new System.Windows.Forms.ComboBox();
32 | this.buttonOK = new System.Windows.Forms.Button();
33 | this.buttonCancel = new System.Windows.Forms.Button();
34 | this.labelSkillID = new System.Windows.Forms.Label();
35 | this.SuspendLayout();
36 | //
37 | // comboBoxPalicoSkills
38 | //
39 | this.comboBoxPalicoSkills.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
40 | this.comboBoxPalicoSkills.FormattingEnabled = true;
41 | this.comboBoxPalicoSkills.Location = new System.Drawing.Point(35, 6);
42 | this.comboBoxPalicoSkills.Name = "comboBoxPalicoSkills";
43 | this.comboBoxPalicoSkills.Size = new System.Drawing.Size(202, 21);
44 | this.comboBoxPalicoSkills.TabIndex = 8;
45 | //
46 | // buttonOK
47 | //
48 | this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.Cancel;
49 | this.buttonOK.Location = new System.Drawing.Point(81, 38);
50 | this.buttonOK.Name = "buttonOK";
51 | this.buttonOK.Size = new System.Drawing.Size(75, 23);
52 | this.buttonOK.TabIndex = 7;
53 | this.buttonOK.Text = "OK";
54 | this.buttonOK.UseVisualStyleBackColor = true;
55 | this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
56 | //
57 | // buttonCancel
58 | //
59 | this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
60 | this.buttonCancel.Location = new System.Drawing.Point(162, 38);
61 | this.buttonCancel.Name = "buttonCancel";
62 | this.buttonCancel.Size = new System.Drawing.Size(75, 23);
63 | this.buttonCancel.TabIndex = 6;
64 | this.buttonCancel.Text = "Cancel";
65 | this.buttonCancel.UseVisualStyleBackColor = true;
66 | this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
67 | //
68 | // labelSkillID
69 | //
70 | this.labelSkillID.AutoSize = true;
71 | this.labelSkillID.Location = new System.Drawing.Point(3, 9);
72 | this.labelSkillID.Name = "labelSkillID";
73 | this.labelSkillID.Size = new System.Drawing.Size(26, 13);
74 | this.labelSkillID.TabIndex = 5;
75 | this.labelSkillID.Text = "Skill";
76 | //
77 | // PalicoActionEditorDialog
78 | //
79 | this.AcceptButton = this.buttonOK;
80 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
81 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
82 | this.CancelButton = this.buttonCancel;
83 | this.ClientSize = new System.Drawing.Size(247, 67);
84 | this.Controls.Add(this.comboBoxPalicoSkills);
85 | this.Controls.Add(this.buttonOK);
86 | this.Controls.Add(this.buttonCancel);
87 | this.Controls.Add(this.labelSkillID);
88 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
89 | this.MaximizeBox = false;
90 | this.MinimizeBox = false;
91 | this.Name = "PalicoActionEditorDialog";
92 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
93 | this.Text = "Edit Action";
94 | this.ResumeLayout(false);
95 | this.PerformLayout();
96 |
97 | }
98 |
99 | #endregion
100 |
101 | private System.Windows.Forms.ComboBox comboBoxPalicoSkills;
102 | private System.Windows.Forms.Button buttonOK;
103 | private System.Windows.Forms.Button buttonCancel;
104 | private System.Windows.Forms.Label labelSkillID;
105 |
106 | }
107 | }
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ExportEquipmentBoxDialog.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace APMMHXSaveEditor.Forms
2 | {
3 | partial class ExportEquipmentBoxDialog
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.buttonSave = new System.Windows.Forms.Button();
32 | this.comboBoxSelectedBox = new System.Windows.Forms.ComboBox();
33 | this.labelSelectedBox = new System.Windows.Forms.Label();
34 | this.buttonClose = new System.Windows.Forms.Button();
35 | this.SuspendLayout();
36 | //
37 | // buttonSave
38 | //
39 | this.buttonSave.Location = new System.Drawing.Point(96, 33);
40 | this.buttonSave.Name = "buttonSave";
41 | this.buttonSave.Size = new System.Drawing.Size(75, 23);
42 | this.buttonSave.TabIndex = 20;
43 | this.buttonSave.Text = "Save";
44 | this.buttonSave.UseVisualStyleBackColor = true;
45 | this.buttonSave.Click += new System.EventHandler(this.buttonSave_Click);
46 | //
47 | // comboBoxSelectedBox
48 | //
49 | this.comboBoxSelectedBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
50 | this.comboBoxSelectedBox.FormattingEnabled = true;
51 | this.comboBoxSelectedBox.Items.AddRange(new object[] {
52 | "Box 1",
53 | "Box 2",
54 | "Box 3",
55 | "Box 4",
56 | "Box 5",
57 | "Box 6",
58 | "Box 7",
59 | "Box 8",
60 | "Box 9",
61 | "Box 10",
62 | "Box 11",
63 | "Box 12",
64 | "Box 13",
65 | "Box 14"});
66 | this.comboBoxSelectedBox.Location = new System.Drawing.Point(44, 6);
67 | this.comboBoxSelectedBox.Name = "comboBoxSelectedBox";
68 | this.comboBoxSelectedBox.Size = new System.Drawing.Size(208, 21);
69 | this.comboBoxSelectedBox.TabIndex = 17;
70 | //
71 | // labelSelectedBox
72 | //
73 | this.labelSelectedBox.AutoSize = true;
74 | this.labelSelectedBox.Location = new System.Drawing.Point(12, 9);
75 | this.labelSelectedBox.Name = "labelSelectedBox";
76 | this.labelSelectedBox.Size = new System.Drawing.Size(25, 13);
77 | this.labelSelectedBox.TabIndex = 16;
78 | this.labelSelectedBox.Text = "Box";
79 | //
80 | // buttonClose
81 | //
82 | this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
83 | this.buttonClose.Location = new System.Drawing.Point(177, 33);
84 | this.buttonClose.Name = "buttonClose";
85 | this.buttonClose.Size = new System.Drawing.Size(75, 23);
86 | this.buttonClose.TabIndex = 21;
87 | this.buttonClose.Text = "Close";
88 | this.buttonClose.UseVisualStyleBackColor = true;
89 | this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click);
90 | //
91 | // ExportEquipmentBoxDialog
92 | //
93 | this.AcceptButton = this.buttonSave;
94 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
95 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
96 | this.CancelButton = this.buttonClose;
97 | this.ClientSize = new System.Drawing.Size(259, 59);
98 | this.Controls.Add(this.buttonClose);
99 | this.Controls.Add(this.buttonSave);
100 | this.Controls.Add(this.comboBoxSelectedBox);
101 | this.Controls.Add(this.labelSelectedBox);
102 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
103 | this.MaximizeBox = false;
104 | this.MinimizeBox = false;
105 | this.Name = "ExportEquipmentBoxDialog";
106 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
107 | this.Text = "Export Equipment Box";
108 | this.ResumeLayout(false);
109 | this.PerformLayout();
110 |
111 | }
112 |
113 | #endregion
114 |
115 | private System.Windows.Forms.Button buttonSave;
116 | private System.Windows.Forms.ComboBox comboBoxSelectedBox;
117 | private System.Windows.Forms.Label labelSelectedBox;
118 | private System.Windows.Forms.Button buttonClose;
119 | }
120 | }
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ShoutoutTextEditDialog.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace APMMHXSaveEditor.Forms
2 | {
3 | partial class ShoutoutTextEditDialog
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.labelShoutout = new System.Windows.Forms.Label();
32 | this.textBoxShoutout = new System.Windows.Forms.TextBox();
33 | this.buttonOK = new System.Windows.Forms.Button();
34 | this.buttonCancel = new System.Windows.Forms.Button();
35 | this.checkBoxLimit = new System.Windows.Forms.CheckBox();
36 | this.SuspendLayout();
37 | //
38 | // labelShoutout
39 | //
40 | this.labelShoutout.AutoSize = true;
41 | this.labelShoutout.Location = new System.Drawing.Point(12, 9);
42 | this.labelShoutout.Name = "labelShoutout";
43 | this.labelShoutout.Size = new System.Drawing.Size(50, 13);
44 | this.labelShoutout.TabIndex = 0;
45 | this.labelShoutout.Text = "Shoutout";
46 | //
47 | // textBoxShoutout
48 | //
49 | this.textBoxShoutout.Location = new System.Drawing.Point(15, 25);
50 | this.textBoxShoutout.Name = "textBoxShoutout";
51 | this.textBoxShoutout.Size = new System.Drawing.Size(297, 20);
52 | this.textBoxShoutout.TabIndex = 1;
53 | //
54 | // buttonOK
55 | //
56 | this.buttonOK.Location = new System.Drawing.Point(156, 51);
57 | this.buttonOK.Name = "buttonOK";
58 | this.buttonOK.Size = new System.Drawing.Size(75, 23);
59 | this.buttonOK.TabIndex = 2;
60 | this.buttonOK.Text = "OK";
61 | this.buttonOK.UseVisualStyleBackColor = true;
62 | this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
63 | //
64 | // buttonCancel
65 | //
66 | this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
67 | this.buttonCancel.Location = new System.Drawing.Point(237, 51);
68 | this.buttonCancel.Name = "buttonCancel";
69 | this.buttonCancel.Size = new System.Drawing.Size(75, 23);
70 | this.buttonCancel.TabIndex = 3;
71 | this.buttonCancel.Text = "Cancel";
72 | this.buttonCancel.UseVisualStyleBackColor = true;
73 | this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
74 | //
75 | // checkBoxLimit
76 | //
77 | this.checkBoxLimit.AutoSize = true;
78 | this.checkBoxLimit.Location = new System.Drawing.Point(15, 51);
79 | this.checkBoxLimit.Name = "checkBoxLimit";
80 | this.checkBoxLimit.Size = new System.Drawing.Size(47, 17);
81 | this.checkBoxLimit.TabIndex = 4;
82 | this.checkBoxLimit.Text = "Limit";
83 | this.checkBoxLimit.UseVisualStyleBackColor = true;
84 | this.checkBoxLimit.CheckedChanged += new System.EventHandler(this.checkBoxLimit_CheckedChanged);
85 | //
86 | // ShoutoutTextEditDialog
87 | //
88 | this.AcceptButton = this.buttonOK;
89 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
90 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
91 | this.CancelButton = this.buttonCancel;
92 | this.ClientSize = new System.Drawing.Size(324, 80);
93 | this.Controls.Add(this.checkBoxLimit);
94 | this.Controls.Add(this.buttonCancel);
95 | this.Controls.Add(this.buttonOK);
96 | this.Controls.Add(this.textBoxShoutout);
97 | this.Controls.Add(this.labelShoutout);
98 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
99 | this.MaximizeBox = false;
100 | this.MinimizeBox = false;
101 | this.Name = "ShoutoutTextEditDialog";
102 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
103 | this.Text = "Edit Shoutout";
104 | this.ResumeLayout(false);
105 | this.PerformLayout();
106 |
107 | }
108 |
109 | #endregion
110 |
111 | private System.Windows.Forms.Label labelShoutout;
112 | private System.Windows.Forms.TextBox textBoxShoutout;
113 | private System.Windows.Forms.Button buttonOK;
114 | private System.Windows.Forms.Button buttonCancel;
115 | private System.Windows.Forms.CheckBox checkBoxLimit;
116 | }
117 | }
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/EquipmentEditDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 | using APMMHXSaveEditor.Data;
11 | using System.IO;
12 |
13 | namespace APMMHXSaveEditor.Forms
14 | {
15 | public partial class EquipmentEditDialog : Form
16 | {
17 | private Equipment equipment;
18 |
19 | public EquipmentEditDialog(Equipment equipment)
20 | {
21 | InitializeComponent();
22 | numericUpDownItemID.Maximum = 65535;
23 | numericUpDownLevel.Minimum = 0;
24 | numericUpDownLevel.Maximum = 255;
25 | textBoxDecoration1.MaxLength = 4;
26 | textBoxDecoration2.MaxLength = 4;
27 | textBoxDecoration3.MaxLength = 4;
28 | comboBoxEquipmentType.DataSource = GameConstants.EquipmentTypes;
29 | this.equipment = equipment;
30 | loadData();
31 | }
32 |
33 | private void loadData()
34 | {
35 | comboBoxEquipmentType.SelectedIndex = equipment.EquipmentBytes[0];
36 | numericUpDownItemID.Value = (ushort)(equipment.EquipmentBytes[2] << 8 | equipment.EquipmentBytes[1]);
37 | numericUpDownLevel.Value = equipment.EquipmentBytes[3] + 1;
38 | textBoxDecoration1.Text = string.Format("{0:X2}{1:X2}", equipment.EquipmentBytes[6], equipment.EquipmentBytes[7]);
39 | textBoxDecoration2.Text = string.Format("{0:X2}{1:X2}", equipment.EquipmentBytes[8], equipment.EquipmentBytes[9]);
40 | textBoxDecoration3.Text = string.Format("{0:X2}{1:X2}", equipment.EquipmentBytes[10], equipment.EquipmentBytes[11]);
41 | }
42 |
43 | private void saveData()
44 | {
45 | if (textBoxDecoration1.Text.Length != 4 || textBoxDecoration2.Text.Length != 4 || textBoxDecoration3.Text.Length != 4)
46 | {
47 | throw new Exception("One of the decorations is invalid");
48 | }
49 |
50 | //Anyone got a better way at this?
51 | equipment.EquipmentBytes[0] = (byte)comboBoxEquipmentType.SelectedIndex;
52 | equipment.EquipmentBytes[1] = (byte)(((short)numericUpDownItemID.Value & 0x00FF));
53 | equipment.EquipmentBytes[2] = (byte)(((short)numericUpDownItemID.Value >> 8));
54 | equipment.EquipmentBytes[3] = (byte)(numericUpDownLevel.Value - 1);
55 | equipment.EquipmentBytes[6] = Convert.ToByte(textBoxDecoration1.Text.Substring(0, 2), 16);
56 | equipment.EquipmentBytes[7] = Convert.ToByte(textBoxDecoration1.Text.Substring(2, 2), 16);
57 | equipment.EquipmentBytes[8] = Convert.ToByte(textBoxDecoration2.Text.Substring(0, 2), 16);
58 | equipment.EquipmentBytes[9] = Convert.ToByte(textBoxDecoration2.Text.Substring(2, 2), 16);
59 | equipment.EquipmentBytes[10] = Convert.ToByte(textBoxDecoration3.Text.Substring(0, 2), 16);
60 | equipment.EquipmentBytes[11] = Convert.ToByte(textBoxDecoration3.Text.Substring(2, 2), 16);
61 | }
62 |
63 | private void EquipmentEditDialog_Load(object sender, EventArgs e)
64 | {
65 | }
66 |
67 | private void buttonOK_Click(object sender, EventArgs e)
68 | {
69 | saveData();
70 | this.DialogResult = DialogResult.OK;
71 | }
72 |
73 | private void buttonCancel_Click(object sender, EventArgs e)
74 | {
75 | this.DialogResult = DialogResult.Cancel;
76 | }
77 |
78 | private void buttonExport_Click(object sender, EventArgs e)
79 | {
80 | Equipment temp = new Equipment(equipment);
81 | try
82 | {
83 | using (SaveFileDialog sfd = new SaveFileDialog())
84 | {
85 | sfd.Filter = "EquipmentFile (*.eqp)|*.eqp|All files (*.*)|*.*";
86 | sfd.FilterIndex = 1;
87 | sfd.RestoreDirectory = true;
88 |
89 | if (sfd.ShowDialog() == DialogResult.OK)
90 | {
91 | saveData();
92 | File.WriteAllBytes(sfd.FileName, equipment.EquipmentBytes);
93 | this.equipment = temp;
94 | MessageBox.Show(string.Format("Exported equipment to {0}", sfd.FileName), "Success!");
95 | }
96 | }
97 | }
98 | catch (Exception ex)
99 | {
100 | MessageBox.Show(ex.Message, "Save Unsucessful");
101 | }
102 | }
103 |
104 | private void buttonImport_Click(object sender, EventArgs e)
105 | {
106 | Equipment temp = new Equipment(equipment);
107 | try
108 | {
109 | OpenFileDialog ofd = new OpenFileDialog();
110 | ofd.Filter = "EquipmentFile (*.eqp)|*.eqp|All files (*.*)|*.*";
111 | ofd.FilterIndex = 1;
112 |
113 | if (ofd.ShowDialog() != DialogResult.OK)
114 | {
115 | ofd.Dispose();
116 | return;
117 | }
118 |
119 | byte[] fileData = File.ReadAllBytes(ofd.FileName);
120 | if (fileData.Length != Constants.SIZEOF_EQUIPMENT)
121 | {
122 | MessageBox.Show("Invalid Equipment", "Error");
123 | return;
124 | }
125 |
126 | this.equipment.EquipmentBytes = fileData;
127 | loadData();
128 |
129 | ofd.Dispose();
130 | }
131 | catch (Exception ex)
132 | {
133 | MessageBox.Show(ex.Message, "Loading Error");
134 | this.equipment = temp;
135 | }
136 | }
137 | }
138 | }
139 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ItemEditDialog.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace APMMHXSaveEditor.Forms
2 | {
3 | partial class ItemEditDialog
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.label1 = new System.Windows.Forms.Label();
32 | this.comboBoxItem = new System.Windows.Forms.ComboBox();
33 | this.labelAmount = new System.Windows.Forms.Label();
34 | this.numericUpDownAmount = new System.Windows.Forms.NumericUpDown();
35 | this.buttonOK = new System.Windows.Forms.Button();
36 | this.buttonCancel = new System.Windows.Forms.Button();
37 | ((System.ComponentModel.ISupportInitialize)(this.numericUpDownAmount)).BeginInit();
38 | this.SuspendLayout();
39 | //
40 | // label1
41 | //
42 | this.label1.AutoSize = true;
43 | this.label1.Location = new System.Drawing.Point(12, 9);
44 | this.label1.Name = "label1";
45 | this.label1.Size = new System.Drawing.Size(27, 13);
46 | this.label1.TabIndex = 0;
47 | this.label1.Text = "Item";
48 | //
49 | // comboBoxItem
50 | //
51 | this.comboBoxItem.FormattingEnabled = true;
52 | this.comboBoxItem.Location = new System.Drawing.Point(45, 6);
53 | this.comboBoxItem.Name = "comboBoxItem";
54 | this.comboBoxItem.Size = new System.Drawing.Size(163, 21);
55 | this.comboBoxItem.TabIndex = 1;
56 | //
57 | // labelAmount
58 | //
59 | this.labelAmount.AutoSize = true;
60 | this.labelAmount.Location = new System.Drawing.Point(214, 9);
61 | this.labelAmount.Name = "labelAmount";
62 | this.labelAmount.Size = new System.Drawing.Size(43, 13);
63 | this.labelAmount.TabIndex = 2;
64 | this.labelAmount.Text = "Amount";
65 | //
66 | // numericUpDownAmount
67 | //
68 | this.numericUpDownAmount.Location = new System.Drawing.Point(255, 7);
69 | this.numericUpDownAmount.Name = "numericUpDownAmount";
70 | this.numericUpDownAmount.Size = new System.Drawing.Size(72, 20);
71 | this.numericUpDownAmount.TabIndex = 3;
72 | //
73 | // buttonOK
74 | //
75 | this.buttonOK.Location = new System.Drawing.Point(171, 33);
76 | this.buttonOK.Name = "buttonOK";
77 | this.buttonOK.Size = new System.Drawing.Size(75, 23);
78 | this.buttonOK.TabIndex = 4;
79 | this.buttonOK.Text = "OK";
80 | this.buttonOK.UseVisualStyleBackColor = true;
81 | this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
82 | //
83 | // buttonCancel
84 | //
85 | this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
86 | this.buttonCancel.Location = new System.Drawing.Point(252, 33);
87 | this.buttonCancel.Name = "buttonCancel";
88 | this.buttonCancel.Size = new System.Drawing.Size(75, 23);
89 | this.buttonCancel.TabIndex = 5;
90 | this.buttonCancel.Text = "Cancel";
91 | this.buttonCancel.UseVisualStyleBackColor = true;
92 | this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
93 | //
94 | // ItemEditDialog
95 | //
96 | this.AcceptButton = this.buttonOK;
97 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
98 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
99 | this.CancelButton = this.buttonCancel;
100 | this.ClientSize = new System.Drawing.Size(336, 71);
101 | this.Controls.Add(this.buttonCancel);
102 | this.Controls.Add(this.buttonOK);
103 | this.Controls.Add(this.numericUpDownAmount);
104 | this.Controls.Add(this.labelAmount);
105 | this.Controls.Add(this.comboBoxItem);
106 | this.Controls.Add(this.label1);
107 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
108 | this.MaximizeBox = false;
109 | this.MinimizeBox = false;
110 | this.Name = "ItemEditDialog";
111 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
112 | this.Text = "Item Editor";
113 | ((System.ComponentModel.ISupportInitialize)(this.numericUpDownAmount)).EndInit();
114 | this.ResumeLayout(false);
115 | this.PerformLayout();
116 |
117 | }
118 |
119 | #endregion
120 |
121 | private System.Windows.Forms.Label label1;
122 | private System.Windows.Forms.ComboBox comboBoxItem;
123 | private System.Windows.Forms.Label labelAmount;
124 | private System.Windows.Forms.NumericUpDown numericUpDownAmount;
125 | private System.Windows.Forms.Button buttonOK;
126 | private System.Windows.Forms.Button buttonCancel;
127 | }
128 | }
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/AboutDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ItemEditDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/EquipmentEditDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/PalicoEditDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ShoutoutsEditDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ExportEquipmentBoxDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/GuildCardEditorDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ImportEquipmentBoxDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ImportItemBoxListDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/PalicoActionEditorDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/PalicoSkillEditorDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ShoutoutTextEditDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/SetItemBoxItemAmountDialog.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Util/Tools.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 | using APMMHXSaveEditor.Data;
7 |
8 | namespace APMMHXSaveEditor.Util
9 | {
10 | public static class Tools
11 | {
12 | ///
13 | /// Unlock all bits in a 40 byte shop.
14 | ///
15 | /// The shop[] to change
16 | public static void CraftWeaponShopUnlock(Shop[] shops)
17 | {
18 | for (int i = 0; i < shops.Length; i++)
19 | {
20 | for (int j = 4; j < 20; j++)
21 | {
22 | shops[i].ShopData[j] = 0xFF; //Available Weapons
23 | shops[i].ShopData[j + 20] = 0xFF; //New Flags
24 | }
25 | }
26 | }
27 |
28 | ///
29 | /// Unlock all bits in a 392 byte shop
30 | ///
31 | /// shop to fill
32 | public static void CraftArmorUnlock(Shop[] shops)
33 | {
34 | for (int i = 0; i < shops.Length; i++)
35 | {
36 | for (int j = 4; j < 192; j++)
37 | {
38 | shops[i].ShopData[j] = 0x33; //Available Armors
39 | shops[i].ShopData[j + 192] = 0x33; //New Flags
40 | }
41 | }
42 | }
43 |
44 | ///
45 | /// Unlock all bits in a 48 byte shop shop
46 | ///
47 | /// shop to fill
48 | public static void CraftPalicoGearUnlock(Shop[] shops)
49 | {
50 | for (int i = 0; i < shops.Length; i++)
51 | {
52 | for (int j = 4; j < 48; j++)
53 | {
54 | shops[i].ShopData[j] = 0xFF; //Available Gear
55 | shops[i].ShopData[j + 48] = 0xFF; //New Flags
56 | }
57 | }
58 | }
59 |
60 | ///
61 | /// Set all ItemAmount in Item[] to 99
62 | ///
63 | /// Item array to max out
64 | public static void MaxItems(Item[] items)
65 | {
66 | foreach (Item item in items)
67 | {
68 | if (item.ItemID != 0)
69 | {
70 | item.ItemAmount = 99;
71 | }
72 | }
73 | }
74 |
75 | ///
76 | /// Set all ItemID ItemAmount in Item[] to 0
77 | ///
78 | /// Item array to clear out
79 | public static void ClearItems(Item[] items)
80 | {
81 | foreach (Item item in items)
82 | {
83 | item.ItemID = 0;
84 | item.ItemAmount = 0;
85 | }
86 | }
87 |
88 | ///
89 | /// Set all ItemID ItemAmount in Item[] to 0 in a set range
90 | ///
91 | /// Item list to clear
92 | /// Start index (index 0)
93 | /// End index
94 | public static void ClearItems(Item[] items, int startIndex, int endIndex)
95 | {
96 | for (int i = startIndex; i < endIndex; i++)
97 | {
98 | items[i].ItemID = 0;
99 | items[i].ItemAmount = 0;
100 | }
101 | }
102 |
103 | ///
104 | /// Set all bytes in equipment[] to 0
105 | ///
106 | ///
107 | public static void ClearEquipment(Equipment[] equipments)
108 | {
109 | foreach (Equipment equip in equipments)
110 | {
111 | Array.Clear(equip.EquipmentBytes, 0, Constants.SIZEOF_EQUIPMENT);
112 | }
113 | }
114 |
115 |
116 | ///
117 | /// Set all bytes in equipment[] to 0 in a specified range
118 | ///
119 | /// Equipment[] to clear
120 | /// Start index (index 0)
121 | /// End index
122 | public static void ClearEquipment(Equipment[] equipments, int startIndex, int endIndex)
123 | {
124 | for (int eqIndex = startIndex; eqIndex < endIndex; eqIndex++)
125 | {
126 | Array.Clear(equipments[eqIndex].EquipmentBytes, 0, Constants.SIZEOF_EQUIPMENT);
127 | }
128 | }
129 |
130 | ///
131 | /// Unlock all boxes and palico boxes
132 | ///
133 | /// box data bytes
134 | public static void UnlockAllBoxes(byte[] boxData)
135 | {
136 | byte[] unlockData = new byte[] { 0x00, 0x20, 0x60, 0x40, 0x00, 0x20, 0x60, 0x40 };
137 | Buffer.BlockCopy(unlockData, 0, boxData, 0, unlockData.Length);
138 | }
139 |
140 |
141 | ///
142 | /// Get a blank equipment with proper byte size
143 | ///
144 | /// Returns a blank equipment
145 | public static Equipment GetBlankEquipment()
146 | {
147 | return new Equipment(new byte[Constants.SIZEOF_EQUIPMENT]);
148 | }
149 |
150 | ///
151 | /// Get an empty palico
152 | ///
153 | /// Returns a blank palico
154 | public static Palico GetBlankPalico()
155 | {
156 | return DataExtractor.GetPalcio(new byte[Constants.SIZEOF_PALICO]);
157 | }
158 |
159 | ///
160 | /// Get flags for 100% completed awards
161 | ///
162 | /// Returns a byte array that contains data for 100% completed awards
163 | public static byte[] GetFullRewards()
164 | {
165 | return new byte[13] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F };
166 | }
167 |
168 | ///
169 | /// Get flags for all food recipes
170 | ///
171 | /// Return a byte array that contains data for 100% food recipes
172 | public static byte[] GetFullFoodRecipes()
173 | {
174 | return new byte[] { 0xFF, 0xFF, 0xFF, 0x7F };
175 | }
176 | }
177 | }
178 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ImportItemBoxListDialog.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace APMMHXSaveEditor.Forms
2 | {
3 | partial class ImportItemBoxListDialog
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.label1 = new System.Windows.Forms.Label();
32 | this.textBoxFileLocation = new System.Windows.Forms.TextBox();
33 | this.labelDest = new System.Windows.Forms.Label();
34 | this.comboBoxDest = new System.Windows.Forms.ComboBox();
35 | this.buttonOpen = new System.Windows.Forms.Button();
36 | this.buttonCancel = new System.Windows.Forms.Button();
37 | this.buttonOk = new System.Windows.Forms.Button();
38 | this.SuspendLayout();
39 | //
40 | // label1
41 | //
42 | this.label1.AutoSize = true;
43 | this.label1.Location = new System.Drawing.Point(12, 9);
44 | this.label1.Name = "label1";
45 | this.label1.Size = new System.Drawing.Size(26, 13);
46 | this.label1.TabIndex = 0;
47 | this.label1.Text = "File:";
48 | //
49 | // textBoxFileLocation
50 | //
51 | this.textBoxFileLocation.Location = new System.Drawing.Point(44, 6);
52 | this.textBoxFileLocation.Name = "textBoxFileLocation";
53 | this.textBoxFileLocation.Size = new System.Drawing.Size(208, 20);
54 | this.textBoxFileLocation.TabIndex = 1;
55 | //
56 | // labelDest
57 | //
58 | this.labelDest.AutoSize = true;
59 | this.labelDest.Location = new System.Drawing.Point(12, 29);
60 | this.labelDest.Name = "labelDest";
61 | this.labelDest.Size = new System.Drawing.Size(29, 13);
62 | this.labelDest.TabIndex = 2;
63 | this.labelDest.Text = "Dest";
64 | //
65 | // comboBoxDest
66 | //
67 | this.comboBoxDest.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
68 | this.comboBoxDest.FormattingEnabled = true;
69 | this.comboBoxDest.Items.AddRange(new object[] {
70 | "Box 1",
71 | "Box 2",
72 | "Box 3",
73 | "Box 4",
74 | "Box 5",
75 | "Box 6",
76 | "Box 7",
77 | "Box 8",
78 | "Box 9",
79 | "Box 10",
80 | "Box 11",
81 | "Box 12",
82 | "Box 13",
83 | "Box 14"});
84 | this.comboBoxDest.Location = new System.Drawing.Point(44, 26);
85 | this.comboBoxDest.Name = "comboBoxDest";
86 | this.comboBoxDest.Size = new System.Drawing.Size(208, 21);
87 | this.comboBoxDest.TabIndex = 3;
88 | //
89 | // buttonOpen
90 | //
91 | this.buttonOpen.Location = new System.Drawing.Point(258, 4);
92 | this.buttonOpen.Name = "buttonOpen";
93 | this.buttonOpen.Size = new System.Drawing.Size(63, 23);
94 | this.buttonOpen.TabIndex = 4;
95 | this.buttonOpen.Text = "Open";
96 | this.buttonOpen.UseVisualStyleBackColor = true;
97 | this.buttonOpen.Click += new System.EventHandler(this.buttonOpen_Click);
98 | //
99 | // buttonCancel
100 | //
101 | this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
102 | this.buttonCancel.Location = new System.Drawing.Point(246, 53);
103 | this.buttonCancel.Name = "buttonCancel";
104 | this.buttonCancel.Size = new System.Drawing.Size(75, 23);
105 | this.buttonCancel.TabIndex = 5;
106 | this.buttonCancel.Text = "Cancel";
107 | this.buttonCancel.UseVisualStyleBackColor = true;
108 | this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
109 | //
110 | // buttonOk
111 | //
112 | this.buttonOk.Location = new System.Drawing.Point(165, 53);
113 | this.buttonOk.Name = "buttonOk";
114 | this.buttonOk.Size = new System.Drawing.Size(75, 23);
115 | this.buttonOk.TabIndex = 6;
116 | this.buttonOk.Text = "OK";
117 | this.buttonOk.UseVisualStyleBackColor = true;
118 | this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);
119 | //
120 | // ImportItemBoxListDialog
121 | //
122 | this.AcceptButton = this.buttonOk;
123 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
124 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
125 | this.CancelButton = this.buttonCancel;
126 | this.ClientSize = new System.Drawing.Size(328, 82);
127 | this.Controls.Add(this.buttonOk);
128 | this.Controls.Add(this.buttonCancel);
129 | this.Controls.Add(this.buttonOpen);
130 | this.Controls.Add(this.comboBoxDest);
131 | this.Controls.Add(this.labelDest);
132 | this.Controls.Add(this.textBoxFileLocation);
133 | this.Controls.Add(this.label1);
134 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
135 | this.MaximizeBox = false;
136 | this.MinimizeBox = false;
137 | this.Name = "ImportItemBoxListDialog";
138 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
139 | this.Text = "Import Item List";
140 | this.ResumeLayout(false);
141 | this.PerformLayout();
142 |
143 | }
144 |
145 | #endregion
146 |
147 | private System.Windows.Forms.Label label1;
148 | private System.Windows.Forms.TextBox textBoxFileLocation;
149 | private System.Windows.Forms.Label labelDest;
150 | private System.Windows.Forms.ComboBox comboBoxDest;
151 | private System.Windows.Forms.Button buttonOpen;
152 | private System.Windows.Forms.Button buttonCancel;
153 | private System.Windows.Forms.Button buttonOk;
154 | }
155 | }
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ImportEquipmentBoxDialog.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace APMMHXSaveEditor.Forms
2 | {
3 | partial class ImportEquipmentBoxDialog
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.buttonOk = new System.Windows.Forms.Button();
32 | this.buttonCancel = new System.Windows.Forms.Button();
33 | this.buttonOpen = new System.Windows.Forms.Button();
34 | this.comboBoxDest = new System.Windows.Forms.ComboBox();
35 | this.labelDest = new System.Windows.Forms.Label();
36 | this.textBoxFileLocation = new System.Windows.Forms.TextBox();
37 | this.label1 = new System.Windows.Forms.Label();
38 | this.SuspendLayout();
39 | //
40 | // buttonOk
41 | //
42 | this.buttonOk.Location = new System.Drawing.Point(165, 53);
43 | this.buttonOk.Name = "buttonOk";
44 | this.buttonOk.Size = new System.Drawing.Size(75, 23);
45 | this.buttonOk.TabIndex = 13;
46 | this.buttonOk.Text = "OK";
47 | this.buttonOk.UseVisualStyleBackColor = true;
48 | this.buttonOk.Click += new System.EventHandler(this.buttonOk_Click);
49 | //
50 | // buttonCancel
51 | //
52 | this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
53 | this.buttonCancel.Location = new System.Drawing.Point(246, 53);
54 | this.buttonCancel.Name = "buttonCancel";
55 | this.buttonCancel.Size = new System.Drawing.Size(75, 23);
56 | this.buttonCancel.TabIndex = 12;
57 | this.buttonCancel.Text = "Cancel";
58 | this.buttonCancel.UseVisualStyleBackColor = true;
59 | this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
60 | //
61 | // buttonOpen
62 | //
63 | this.buttonOpen.Location = new System.Drawing.Point(258, 4);
64 | this.buttonOpen.Name = "buttonOpen";
65 | this.buttonOpen.Size = new System.Drawing.Size(63, 23);
66 | this.buttonOpen.TabIndex = 11;
67 | this.buttonOpen.Text = "Open";
68 | this.buttonOpen.UseVisualStyleBackColor = true;
69 | this.buttonOpen.Click += new System.EventHandler(this.buttonOpen_Click);
70 | //
71 | // comboBoxDest
72 | //
73 | this.comboBoxDest.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
74 | this.comboBoxDest.FormattingEnabled = true;
75 | this.comboBoxDest.Items.AddRange(new object[] {
76 | "Box 1",
77 | "Box 2",
78 | "Box 3",
79 | "Box 4",
80 | "Box 5",
81 | "Box 6",
82 | "Box 7",
83 | "Box 8",
84 | "Box 9",
85 | "Box 10",
86 | "Box 11",
87 | "Box 12",
88 | "Box 13",
89 | "Box 14"});
90 | this.comboBoxDest.Location = new System.Drawing.Point(44, 26);
91 | this.comboBoxDest.Name = "comboBoxDest";
92 | this.comboBoxDest.Size = new System.Drawing.Size(208, 21);
93 | this.comboBoxDest.TabIndex = 10;
94 | //
95 | // labelDest
96 | //
97 | this.labelDest.AutoSize = true;
98 | this.labelDest.Location = new System.Drawing.Point(12, 29);
99 | this.labelDest.Name = "labelDest";
100 | this.labelDest.Size = new System.Drawing.Size(29, 13);
101 | this.labelDest.TabIndex = 9;
102 | this.labelDest.Text = "Dest";
103 | //
104 | // textBoxFileLocation
105 | //
106 | this.textBoxFileLocation.Location = new System.Drawing.Point(44, 6);
107 | this.textBoxFileLocation.Name = "textBoxFileLocation";
108 | this.textBoxFileLocation.Size = new System.Drawing.Size(208, 20);
109 | this.textBoxFileLocation.TabIndex = 8;
110 | //
111 | // label1
112 | //
113 | this.label1.AutoSize = true;
114 | this.label1.Location = new System.Drawing.Point(12, 9);
115 | this.label1.Name = "label1";
116 | this.label1.Size = new System.Drawing.Size(26, 13);
117 | this.label1.TabIndex = 7;
118 | this.label1.Text = "File:";
119 | //
120 | // ImportEquipmentBoxDialog
121 | //
122 | this.AcceptButton = this.buttonOk;
123 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
124 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
125 | this.CancelButton = this.buttonCancel;
126 | this.ClientSize = new System.Drawing.Size(329, 82);
127 | this.Controls.Add(this.buttonOk);
128 | this.Controls.Add(this.buttonCancel);
129 | this.Controls.Add(this.buttonOpen);
130 | this.Controls.Add(this.comboBoxDest);
131 | this.Controls.Add(this.labelDest);
132 | this.Controls.Add(this.textBoxFileLocation);
133 | this.Controls.Add(this.label1);
134 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
135 | this.MaximizeBox = false;
136 | this.MinimizeBox = false;
137 | this.Name = "ImportEquipmentBoxDialog";
138 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
139 | this.Text = "Import Equipment";
140 | this.ResumeLayout(false);
141 | this.PerformLayout();
142 |
143 | }
144 |
145 | #endregion
146 |
147 | private System.Windows.Forms.Button buttonOk;
148 | private System.Windows.Forms.Button buttonCancel;
149 | private System.Windows.Forms.Button buttonOpen;
150 | private System.Windows.Forms.ComboBox comboBoxDest;
151 | private System.Windows.Forms.Label labelDest;
152 | private System.Windows.Forms.TextBox textBoxFileLocation;
153 | private System.Windows.Forms.Label label1;
154 | }
155 | }
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Data/Offsets.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace APMMHXSaveEditor.Data
8 | {
9 | public static class Offsets
10 | {
11 | //Header Data
12 | public const UInt16 FIRST_CHAR_SLOT_USED = 0x04; //Size 1
13 | public const UInt16 SECOND_CHAR_SLOT_USED = 0x05; //Size 1
14 | public const UInt16 THIRD_CHAR_SLOT_USED = 0x06; //Size 1
15 | public const UInt16 FIRST_CHARACTER_OFFSET = 0x10; //Size 4
16 | public const UInt16 SECOND_CHARACTER_OFFSET = 0x14; //Size 4
17 | public const UInt16 THIRD_CHARACTER_OFFSET = 0x18; //Size 4
18 |
19 | //Character Offsets [CHARACTER BASE + CHARACTER OFFSET]
20 | public const UInt16 NAME_OFFSET = 0x00; //Size 32
21 | public const UInt16 PLAY_TIME_OFFSET = 0x20; //Size 4
22 | //public const UInt16 FUNDS_OFFSET = 0x24; //Size 4 ;What it shows on save menu ?
23 | //public const UInt16 HUNTER_RANK_OFFSET = 0x28; //Size 2
24 | //public const UInt16 HUNTER_ART_1_OFFSET = 0x2C; //Size 2
25 | //public const UInt16 HUNTER_ART_2_OFFSET = 0x2E; //Size 2
26 | //public const UInt16 HUNTER_ART_3_OFFSET = 0X30; //Size 2
27 | public const UInt16 EQUIPPED_WEAPON_OFFSET = 0x010C; //Size 48
28 | public const UInt16 EQUIPPED_HEAD_OFFSET = 0x013C; //Size 48
29 | public const UInt16 EQUIPPED_CHEST_OFFSET = 0x016C; //Size 48
30 | public const UInt16 EQUIPPED_ARMS_OFFSET = 0x019c; //Size 48
31 | public const UInt16 EQUIPPED_WAIST_OFFSET = 0x01CC; //Size 48
32 | public const UInt16 EQUIPPED_LEG_OFFSET = 0x01FC; //Size 48
33 | public const UInt16 EQUIPPED_TALISMAN_OFFSET = 0x022C; //Size 48
34 | public const UInt16 WEAPON_TYPE_OFFSET = 0x025C; //Size 1
35 | public const UInt32 CHARACTER_VOICE_OFFSET = 0x193BB;
36 | //public const UInt16 CHARACTER_VOICE_OFFSET = 0x025D; //Size 1
37 | //public const UInt16 CHARACTER_EYE_COLOR_OFFSET = 0x025E; //Size 1
38 | //public const UInt16 CHARACTER_CLOTHING_OFFSET = 0x025F; //Size 1
39 | //public const UInt16 CHARACTER_GENDER_OFFSET = 0x0260; //Size 1
40 | //public const UInt16 CHARACTER_HUNTING_STYLE_OFFSET = 0x0261; //Size 1
41 | //public const UInt16 CHARACTER_HAIRSTYLE_OFFSET = 0x0262; //Size 1
42 | //public const UInt16 CHARACTER_FACE_OFFSET = 0x0263; //Size 1
43 | //public const UInt16 CHARACTER_FEATURES_OFFSET = 0x0264; //Size 1
44 | //public const UInt16 CHEST_ARMOR_PIGMENT_OFFSET = 0x0268; //Size 4
45 | //public const UInt16 ARMS_ARMOR_PIGMENT_OFFSET = 0x026C; //Size 4
46 | //public const UInt16 WAIST_ARMOR_PIGMENT_OFFSET = 0x0270; //Size 4
47 | //public const UInt16 LEG_ARMOR_PIGMENT_OFFSET = 0x0274; //Size 4
48 | //public const UInt16 HEAD_ARMOR_PIGMENT_OFFSET = 0x0278; //Size 4
49 | //public const UInt16 CHARACTER_SKIN_COLOR_OFFSET = 0x027C; //Size 4 ;This only used in loading screen
50 | public const UInt32 CHARACTER_SKIN_COLOR_OFFSET = 0x0193DA; //Size 4
51 | //public const UInt16 CHARACTER_HAIR_COLOR_OFFSET = 0x0280; //Size 4
52 | //public const UInt16 CHARACTER_FEATURES_COLOR_OFFSET = 0x0284; //Size 4
53 | //public const UInt16 CHARACTER_CLOTHING_COLOR_OFFSET = 0x0288; //Size 4
54 | public const UInt16 ITEM_BOX_OFFSET = 0x0290; //Size 3150 (1400 of them each 18 bits long)
55 | public const UInt16 EQUIPMENT_BOX_OFFSET = 0x4667; //Size 50415 (1400 of them each 36 bytes long)
56 | public const UInt16 ITEM_SET_OFFSET = 0x0EDE; //Size 1360 (8 of them each 170 bytes long)
57 | public const UInt16 POUCH_OFFSET = 0x142E; //Size 72 (32 Items each 18 bits long)
58 |
59 | public const UInt32 STORED_NAME_OFFSET = 0x0193ED; //Size 32
60 | public const UInt32 STORED_PLAY_TIME_OFFSET = 0x18792; //Size 4
61 |
62 | public const UInt16 HR_POINTS_OFFSET = 0x1476; //Size 4
63 | //public const UInt16 ZENNY_OFFSET = 0x147A; //Size 4
64 | //public const UInt16 UNKNOWN_FUNDS_OFFSET = 0x147E; //Size 4
65 | //public const UInt16 ACADEMY_POINTS_OFFSET = 0x1482; //Size 4
66 | //public const UInt16 BERUNA_POINTS_OFFSET = 0x1486; //Size 4
67 | //public const UInt16 KOKOTO_POINTS_OFFSET = 0X148A; //Size 4
68 | //public const UInt16 POKKE_POINTS_OFFSET = 0x148E; //Size 4
69 | //public const UInt16 YUKUMO_POINTS_OFFSET = 0x1492; //Size 4
70 | public const UInt32 PALICO_OFFSET = 0x019426; //Size 19140 (60 of them each 319 bytes long)
71 | public const UInt32 PALICO_EQUIPMENT_OFFSET = 0x10B47; //Size 25200 (700 of them 36 bytes long)
72 |
73 | public const UInt32 SHOP_OFFSETS = 0x1D76;
74 | public const UInt32 CRAFTABLE_WEAPONS_OFFSET = 0x20BE;
75 | public const UInt32 CRAFTABLE_ARMOR_SHOP_OFFSET = 0x2316;
76 | public const UInt32 CRAFTABLE_PALICO_GEAR_OFFSET = 0x02ABE;
77 |
78 | public const UInt16 FOOD_FLAG_OFFSETS = 0x1A32; //Size 4
79 | public const UInt16 AWARD_FLAG_OFFSETS = 0x1B8A; //Size 13
80 |
81 | public const UInt32 PLAYER_GUILD_CARD_OFFSET = 0x09F0FE; //Size 5208
82 |
83 | public const UInt16 UNLOCKED_BOXES_OFFSET = 0x1A22; //Size 8
84 |
85 | public const UInt16 MONSTERHUNT_OFFSETS = 0x42E7; //71 Monsters 2 bytes each
86 | public const UInt16 MONSTERCAPTURE_OFFSETS = 0x43C7; //71 Monsters 2 bytes each
87 |
88 | public const UInt32 SHOUTOUT_OFFSETS = 0xEAD6E;
89 | public const UInt32 AUTOMATIC_SHOUTOUT_OFFSETS = 0xEB72E;
90 | }
91 |
92 | public static class PalicoOffsets
93 | {
94 | public const UInt16 NAME_OFFSET = 0x00; //Size 32
95 | public const UInt16 EXP_OFFSET = 0x20; //Size 4
96 | public const UInt16 LEVEL_OFFSET = 0x24; //Size 1
97 | public const UInt16 FORTE_OFFSET = 0x25; //Size 1
98 | public const UInt16 ENTHUSIASM_OFFSET = 0x26; //Size 1
99 | public const UInt16 TARGET_OFFSET = 0x27; //Size 1
100 | public const UInt16 EQUIPPED_ACTIONS_OFFSET = 0x28; //Size 8 (8 of them 1 byte each)
101 | public const UInt16 EQUIPPED_SKILLS_OFFSET = 0x30; //Size 8 (8 of them 1 byte each)
102 | public const UInt16 LEARNED_ACTIONS_OFFSET = 0x38; //Size 16 (16 of them 1 byte each)
103 | public const UInt16 LEARNED_SKILLS_OFFSET = 0x48; //Size 16 (16 of them 1 byte each)
104 | public const UInt16 LEARNED_ACTION_RNG_OFFSET = 0x54; //Size 2
105 | public const UInt16 LEARNED_SKILL_RNG_OFFSET = 0x56; //Size 2
106 | public const UInt16 GREETING_OFFSET = 0x60; //Size 60
107 | public const UInt16 NAME_GIVER_OFFSET = 0x9C; //Size 32
108 | public const UInt16 PREVIOUS_MASTER_OFFSET = 0xBC; //Size 32
109 | public const UInt16 RGBA_VALUE_OFFSET = 0x011A; //Size 4
110 | }
111 |
112 | public static class GuildCardOffsets
113 | {
114 | public static UInt16 GUILD_CARD_ID_OFFSET = 0x0828; //Size 8
115 | //Guild Card Offsets by Ukee
116 | public static UInt16 PLAYTIME_OFFSET = 0x088C; //Size 4
117 | public static UInt16 VILLAGE_WEAPON_USAGE_OFFSET = 0x0830; //Size 30
118 | public static UInt16 LOW_HUB_WEAPON_USAGE_OFFSET = 0x084E; //Size 30
119 | public static UInt16 HUB_WEAPON_USAGE_OFFSET = 0x086C; //Size 30
120 |
121 | public static UInt16 VILLAGE_QUEST_OFFSETS = 0x07DA; //Size 2
122 | public static UInt16 LOW_HUB_QUEST_OFFSETS = 0x07DC; //Size 2
123 | public static UInt16 HIGH_HUB_QUEST_OFFSETS = 0x07DE; //Size 2
124 | public static UInt16 SPECIAL_PERMIT_QUEST_OFFSETS = 0x07e0; //Size 2
125 | public static UInt16 ARENA_QUEST_OFFSETS = 0x07E2; //Size 2
126 | public static UInt16 STREET_PASS_OFFSETS = 0x07E8; //Size 2
127 | public static UInt16 MONSTER_HUNT_OFFSETS = 0x0EE0; //Size 552 (69 Monsters, 8 Bytes Each)
128 |
129 | public static UInt16 GUILDCARD_CHARACTER_VOICE_OFFSET = 0x19; //Size 1
130 | }
131 | }
132 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/ShoutoutsEditDialog.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace APMMHXSaveEditor.Forms
2 | {
3 | partial class ShoutoutsEditDialog
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.tabControlShoutOutEditor = new System.Windows.Forms.TabControl();
32 | this.tabPageShoutOuts = new System.Windows.Forms.TabPage();
33 | this.listViewShououts = new System.Windows.Forms.ListView();
34 | this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
35 | this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
36 | this.tabPageAutomaticShoutOuts = new System.Windows.Forms.TabPage();
37 | this.listViewAutomaticShoutouts = new System.Windows.Forms.ListView();
38 | this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
39 | this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
40 | this.buttonClose = new System.Windows.Forms.Button();
41 | this.tabControlShoutOutEditor.SuspendLayout();
42 | this.tabPageShoutOuts.SuspendLayout();
43 | this.tabPageAutomaticShoutOuts.SuspendLayout();
44 | this.SuspendLayout();
45 | //
46 | // tabControlShoutOutEditor
47 | //
48 | this.tabControlShoutOutEditor.Controls.Add(this.tabPageShoutOuts);
49 | this.tabControlShoutOutEditor.Controls.Add(this.tabPageAutomaticShoutOuts);
50 | this.tabControlShoutOutEditor.Location = new System.Drawing.Point(1, 12);
51 | this.tabControlShoutOutEditor.Name = "tabControlShoutOutEditor";
52 | this.tabControlShoutOutEditor.SelectedIndex = 0;
53 | this.tabControlShoutOutEditor.Size = new System.Drawing.Size(514, 238);
54 | this.tabControlShoutOutEditor.TabIndex = 0;
55 | //
56 | // tabPageShoutOuts
57 | //
58 | this.tabPageShoutOuts.BackColor = System.Drawing.SystemColors.Control;
59 | this.tabPageShoutOuts.Controls.Add(this.listViewShououts);
60 | this.tabPageShoutOuts.Location = new System.Drawing.Point(4, 22);
61 | this.tabPageShoutOuts.Name = "tabPageShoutOuts";
62 | this.tabPageShoutOuts.Padding = new System.Windows.Forms.Padding(3);
63 | this.tabPageShoutOuts.Size = new System.Drawing.Size(506, 212);
64 | this.tabPageShoutOuts.TabIndex = 0;
65 | this.tabPageShoutOuts.Text = "Shoutouts";
66 | //
67 | // listViewShououts
68 | //
69 | this.listViewShououts.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
70 | | System.Windows.Forms.AnchorStyles.Left)
71 | | System.Windows.Forms.AnchorStyles.Right)));
72 | this.listViewShououts.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
73 | this.columnHeader3,
74 | this.columnHeader4});
75 | this.listViewShououts.FullRowSelect = true;
76 | this.listViewShououts.GridLines = true;
77 | this.listViewShououts.Location = new System.Drawing.Point(-2, -2);
78 | this.listViewShououts.Name = "listViewShououts";
79 | this.listViewShououts.Size = new System.Drawing.Size(510, 218);
80 | this.listViewShououts.TabIndex = 9;
81 | this.listViewShououts.UseCompatibleStateImageBehavior = false;
82 | this.listViewShououts.View = System.Windows.Forms.View.Details;
83 | this.listViewShououts.DoubleClick += new System.EventHandler(this.listViewShououts_DoubleClick);
84 | //
85 | // columnHeader3
86 | //
87 | this.columnHeader3.Text = "Slot";
88 | this.columnHeader3.Width = 40;
89 | //
90 | // columnHeader4
91 | //
92 | this.columnHeader4.Text = "Shoutout";
93 | this.columnHeader4.Width = 425;
94 | //
95 | // tabPageAutomaticShoutOuts
96 | //
97 | this.tabPageAutomaticShoutOuts.BackColor = System.Drawing.SystemColors.Control;
98 | this.tabPageAutomaticShoutOuts.Controls.Add(this.listViewAutomaticShoutouts);
99 | this.tabPageAutomaticShoutOuts.Location = new System.Drawing.Point(4, 22);
100 | this.tabPageAutomaticShoutOuts.Name = "tabPageAutomaticShoutOuts";
101 | this.tabPageAutomaticShoutOuts.Padding = new System.Windows.Forms.Padding(3);
102 | this.tabPageAutomaticShoutOuts.Size = new System.Drawing.Size(506, 212);
103 | this.tabPageAutomaticShoutOuts.TabIndex = 1;
104 | this.tabPageAutomaticShoutOuts.Text = "Automatic Shoutouts";
105 | //
106 | // listViewAutomaticShoutouts
107 | //
108 | this.listViewAutomaticShoutouts.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
109 | | System.Windows.Forms.AnchorStyles.Left)
110 | | System.Windows.Forms.AnchorStyles.Right)));
111 | this.listViewAutomaticShoutouts.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
112 | this.columnHeader1,
113 | this.columnHeader2});
114 | this.listViewAutomaticShoutouts.FullRowSelect = true;
115 | this.listViewAutomaticShoutouts.GridLines = true;
116 | this.listViewAutomaticShoutouts.Location = new System.Drawing.Point(-2, -2);
117 | this.listViewAutomaticShoutouts.Name = "listViewAutomaticShoutouts";
118 | this.listViewAutomaticShoutouts.Size = new System.Drawing.Size(510, 218);
119 | this.listViewAutomaticShoutouts.TabIndex = 8;
120 | this.listViewAutomaticShoutouts.UseCompatibleStateImageBehavior = false;
121 | this.listViewAutomaticShoutouts.View = System.Windows.Forms.View.Details;
122 | this.listViewAutomaticShoutouts.DoubleClick += new System.EventHandler(this.listViewAutomaticShoutouts_DoubleClick);
123 | //
124 | // columnHeader1
125 | //
126 | this.columnHeader1.Text = "Slot";
127 | this.columnHeader1.Width = 40;
128 | //
129 | // columnHeader2
130 | //
131 | this.columnHeader2.Text = "Shoutout";
132 | this.columnHeader2.Width = 425;
133 | //
134 | // buttonClose
135 | //
136 | this.buttonClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
137 | this.buttonClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
138 | this.buttonClose.Location = new System.Drawing.Point(438, 252);
139 | this.buttonClose.Name = "buttonClose";
140 | this.buttonClose.Size = new System.Drawing.Size(75, 23);
141 | this.buttonClose.TabIndex = 1;
142 | this.buttonClose.Text = "Close";
143 | this.buttonClose.UseVisualStyleBackColor = true;
144 | this.buttonClose.Click += new System.EventHandler(this.buttonClose_Click);
145 | //
146 | // ShoutoutsEditDialog
147 | //
148 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
149 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
150 | this.CancelButton = this.buttonClose;
151 | this.ClientSize = new System.Drawing.Size(516, 281);
152 | this.Controls.Add(this.buttonClose);
153 | this.Controls.Add(this.tabControlShoutOutEditor);
154 | this.Name = "ShoutoutsEditDialog";
155 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
156 | this.Text = "Edit Shoutouts";
157 | this.Load += new System.EventHandler(this.ShoutoutsEditDialog_Load);
158 | this.tabControlShoutOutEditor.ResumeLayout(false);
159 | this.tabPageShoutOuts.ResumeLayout(false);
160 | this.tabPageAutomaticShoutOuts.ResumeLayout(false);
161 | this.ResumeLayout(false);
162 |
163 | }
164 |
165 | #endregion
166 |
167 | private System.Windows.Forms.TabControl tabControlShoutOutEditor;
168 | private System.Windows.Forms.TabPage tabPageShoutOuts;
169 | private System.Windows.Forms.TabPage tabPageAutomaticShoutOuts;
170 | private System.Windows.Forms.ListView listViewAutomaticShoutouts;
171 | private System.Windows.Forms.ColumnHeader columnHeader1;
172 | private System.Windows.Forms.ColumnHeader columnHeader2;
173 | private System.Windows.Forms.ListView listViewShououts;
174 | private System.Windows.Forms.ColumnHeader columnHeader3;
175 | private System.Windows.Forms.ColumnHeader columnHeader4;
176 | private System.Windows.Forms.Button buttonClose;
177 | }
178 | }
--------------------------------------------------------------------------------
/APMMHXSaveEditor/Forms/GuildCardEditorDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 | using System.IO;
10 | using APMMHXSaveEditor.Data;
11 | using APMMHXSaveEditor.Util;
12 |
13 | namespace APMMHXSaveEditor.Forms
14 | {
15 | public partial class GuildCardEditorDialog : Form
16 | {
17 | public GuildCard GuildCard { get; set; }
18 |
19 | private UInt16[] villageWeaponUsage;
20 | private UInt16[] hunterHubWeaponUsage;
21 | private UInt16[] arenaWeaponUsage;
22 | private int currentWeaponUsageIndex = -1;
23 | private int currentMonsterIndex = -1;
24 |
25 | public GuildCardEditorDialog(GuildCard guildCard)
26 | {
27 | InitializeComponent();
28 | this.GuildCard = guildCard;
29 |
30 | textBoxName.Enabled = false;
31 | textBoxGuildCardID.MaxLength = 16;
32 |
33 | numericUpDownPlayTime.Maximum = UInt32.MaxValue;
34 | numericUpDownStreetPasses.Maximum = UInt16.MaxValue;
35 | numericUpDownVillageQuests.Maximum = UInt16.MaxValue;
36 | numericUpDownLowHubQuests.Maximum = UInt16.MaxValue;
37 | numericUpDownHighHubQuests.Maximum = UInt16.MaxValue;
38 | numericUpDownSpecialPermitQuests.Maximum = UInt16.MaxValue;
39 | numericUpDownArenaQuests.Maximum = UInt16.MaxValue;
40 | numericUpDownVillageWeapons.Maximum = UInt16.MaxValue;
41 | numericUpDownHunterHubWeapons.Maximum = UInt16.MaxValue;
42 | numericUpDownArenaWeapons.Maximum = UInt16.MaxValue;
43 | numericUpDownMonsterCaptures.Maximum = UInt16.MaxValue;
44 | numericUpDownMonsterKills.Maximum = UInt16.MaxValue;
45 |
46 | loadGuildCard();
47 | comboBoxWeapons.DataSource = GameConstants.WeaponTypes;
48 | comboBoxMonsters.DataSource = GameConstants.MonsterHuntNames;
49 | }
50 |
51 | private void loadGuildCard()
52 | {
53 | BinaryReader binaryReader = new BinaryReader((Stream) new MemoryStream(GuildCard.GuildCardData));
54 | char nextchar = binaryReader.ReadChar();
55 | while (nextchar != '\0')
56 | {
57 | textBoxName.Text += nextchar;
58 | binaryReader.ReadChar();
59 | nextchar = binaryReader.ReadChar();
60 | }
61 |
62 | binaryReader.BaseStream.Seek(GuildCardOffsets.GUILD_CARD_ID_OFFSET, SeekOrigin.Begin);
63 | textBoxGuildCardID.Text = BitConverter.ToString(binaryReader.ReadBytes(8)).Replace("-", "");
64 |
65 | binaryReader.BaseStream.Seek(GuildCardOffsets.PLAYTIME_OFFSET, SeekOrigin.Begin);
66 | numericUpDownPlayTime.Value = binaryReader.ReadUInt32();
67 |
68 | binaryReader.BaseStream.Seek(GuildCardOffsets.STREET_PASS_OFFSETS, SeekOrigin.Begin);
69 | numericUpDownStreetPasses.Value = binaryReader.ReadUInt16();
70 |
71 | binaryReader.BaseStream.Seek(GuildCardOffsets.VILLAGE_QUEST_OFFSETS, SeekOrigin.Begin);
72 | numericUpDownVillageQuests.Value = binaryReader.ReadUInt16();
73 | numericUpDownLowHubQuests.Value = binaryReader.ReadUInt16();
74 | numericUpDownHighHubQuests.Value = binaryReader.ReadUInt16();
75 | numericUpDownSpecialPermitQuests.Value = binaryReader.ReadUInt16();
76 | numericUpDownArenaQuests.Value = binaryReader.ReadUInt16();
77 |
78 | binaryReader.BaseStream.Seek(GuildCardOffsets.VILLAGE_WEAPON_USAGE_OFFSET, SeekOrigin.Begin);
79 | villageWeaponUsage = new UInt16[Constants.TOTAL_WEAPONS];
80 | for (int i = 0; i < Constants.TOTAL_WEAPONS; i++)
81 | {
82 | villageWeaponUsage[i] = binaryReader.ReadUInt16();
83 | }
84 |
85 | hunterHubWeaponUsage = new UInt16[Constants.TOTAL_WEAPONS];
86 | for (int i = 0; i < Constants.TOTAL_WEAPONS; i++)
87 | {
88 | hunterHubWeaponUsage[i] = binaryReader.ReadUInt16();
89 | }
90 |
91 | arenaWeaponUsage = new UInt16[Constants.TOTAL_WEAPONS];
92 | for (int i = 0; i < Constants.TOTAL_WEAPONS; i++)
93 | {
94 | arenaWeaponUsage[i] = binaryReader.ReadUInt16();
95 | }
96 |
97 | //Character Information
98 | binaryReader.BaseStream.Seek(GuildCardOffsets.GUILDCARD_CHARACTER_VOICE_OFFSET, SeekOrigin.Begin);
99 | numericUpDownVoice.Value = binaryReader.ReadByte();
100 | numericUpDownEyeColor.Value = binaryReader.ReadByte();
101 | numericUpDownClothing.Value = binaryReader.ReadByte();
102 | comboBoxGender.SelectedIndex = binaryReader.ReadByte();
103 | binaryReader.ReadByte();
104 | numericUpDownHair.Value = binaryReader.ReadByte();
105 | numericUpDownFace.Value = binaryReader.ReadByte();
106 | numericUpDownFeatures.Value = binaryReader.ReadByte();
107 | }
108 |
109 | private void saveGuildCard()
110 | {
111 | saveWeaponUsage();
112 | saveMonsterHunts();
113 | BinaryWriter binaryWriter = new BinaryWriter((Stream)new MemoryStream(GuildCard.GuildCardData));
114 |
115 | binaryWriter.BaseStream.Seek(GuildCardOffsets.GUILD_CARD_ID_OFFSET, SeekOrigin.Begin);
116 | binaryWriter.Write(Converters.StringToByteArray(textBoxGuildCardID.Text.PadLeft(16, '0')));
117 |
118 | binaryWriter.BaseStream.Seek(GuildCardOffsets.PLAYTIME_OFFSET, SeekOrigin.Begin);
119 | binaryWriter.Write((UInt32)numericUpDownPlayTime.Value);
120 |
121 | binaryWriter.BaseStream.Seek(GuildCardOffsets.STREET_PASS_OFFSETS, SeekOrigin.Begin);
122 | binaryWriter.Write((UInt16)numericUpDownStreetPasses.Value);
123 |
124 | binaryWriter.BaseStream.Seek(GuildCardOffsets.VILLAGE_QUEST_OFFSETS, SeekOrigin.Begin);
125 | binaryWriter.Write((UInt16)numericUpDownVillageQuests.Value);
126 | binaryWriter.Write((UInt16)numericUpDownLowHubQuests.Value);
127 | binaryWriter.Write((UInt16)numericUpDownHighHubQuests.Value);
128 | binaryWriter.Write((UInt16)numericUpDownSpecialPermitQuests.Value);
129 | binaryWriter.Write((UInt16)numericUpDownArenaQuests.Value);
130 |
131 | binaryWriter.BaseStream.Seek(GuildCardOffsets.VILLAGE_WEAPON_USAGE_OFFSET, SeekOrigin.Begin);
132 | for (int i = 0; i < Constants.TOTAL_WEAPONS; i++)
133 | {
134 | binaryWriter.Write(villageWeaponUsage[i]);
135 | }
136 | for (int i = 0; i < Constants.TOTAL_WEAPONS; i++)
137 | {
138 | binaryWriter.Write(hunterHubWeaponUsage[i]);
139 | }
140 | for (int i = 0; i < Constants.TOTAL_WEAPONS; i++)
141 | {
142 | binaryWriter.Write(arenaWeaponUsage[i]);
143 | }
144 |
145 | //Character Information
146 | binaryWriter.BaseStream.Seek(GuildCardOffsets.GUILDCARD_CHARACTER_VOICE_OFFSET, SeekOrigin.Begin);
147 | binaryWriter.Write((byte)numericUpDownVoice.Value);
148 | binaryWriter.Write((byte)numericUpDownEyeColor.Value);
149 | binaryWriter.Write((byte)numericUpDownClothing.Value);
150 | binaryWriter.Write((byte)comboBoxGender.SelectedIndex);
151 | binaryWriter.BaseStream.Seek(1, SeekOrigin.Current);
152 | binaryWriter.Write((byte)numericUpDownHair.Value);
153 | binaryWriter.Write((byte)numericUpDownFace.Value);
154 | binaryWriter.Write((byte)numericUpDownFeatures.Value);
155 | }
156 |
157 | private void buttonOK_Click(object sender, EventArgs e)
158 | {
159 | try
160 | {
161 | saveGuildCard();
162 | this.DialogResult = DialogResult.OK;
163 | }
164 | catch (Exception ex)
165 | {
166 | MessageBox.Show(ex.Message, "Save Unsuccessful");
167 | }
168 | }
169 |
170 | private void buttonCancel_Click(object sender, EventArgs e)
171 | {
172 | this.DialogResult = DialogResult.Cancel;
173 | }
174 |
175 | private void GuildCardEditorDialog_Load(object sender, EventArgs e)
176 | {
177 |
178 | }
179 |
180 | private void comboBoxWeapons_SelectedIndexChanged(object sender, EventArgs e)
181 | {
182 | if (currentWeaponUsageIndex != -1)
183 | {
184 | saveWeaponUsage();
185 | }
186 | currentWeaponUsageIndex = comboBoxWeapons.SelectedIndex;
187 | numericUpDownVillageWeapons.Value = villageWeaponUsage[currentWeaponUsageIndex];
188 | numericUpDownHunterHubWeapons.Value = hunterHubWeaponUsage[currentWeaponUsageIndex];
189 | numericUpDownArenaWeapons.Value = arenaWeaponUsage[currentWeaponUsageIndex];
190 | }
191 |
192 | private void saveWeaponUsage()
193 | {
194 | villageWeaponUsage[currentWeaponUsageIndex] = (UInt16)numericUpDownVillageWeapons.Value;
195 | hunterHubWeaponUsage[currentWeaponUsageIndex] = (UInt16)numericUpDownHunterHubWeapons.Value;
196 | arenaWeaponUsage[currentWeaponUsageIndex] = (UInt16)numericUpDownArenaWeapons.Value;
197 | }
198 |
199 | private void comboBoxMonsters_SelectedIndexChanged(object sender, EventArgs e)
200 | {
201 | if (currentMonsterIndex != -1)
202 | {
203 | saveMonsterHunts();
204 | }
205 | currentMonsterIndex = comboBoxMonsters.SelectedIndex;
206 | numericUpDownMonsterKills.Value = GuildCard.MonsterKills[currentMonsterIndex];
207 | numericUpDownMonsterCaptures.Value = GuildCard.MonsterCaptures[currentMonsterIndex];
208 | }
209 |
210 | private void saveMonsterHunts()
211 | {
212 | GuildCard.MonsterKills[currentMonsterIndex] = (UInt16)numericUpDownMonsterKills.Value;
213 | GuildCard.MonsterCaptures[currentMonsterIndex] = (UInt16)numericUpDownMonsterCaptures.Value;
214 | }
215 |
216 |
217 | }
218 | }
219 |
--------------------------------------------------------------------------------
/APMMHXSaveEditor/APMMHXSaveEditor.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {E4768C41-32C8-4423-AB81-B0B6E8DBD5AD}
8 | WinExe
9 | Properties
10 | APMMHXSaveEditor
11 | APMMHXSaveEditor
12 | v4.0
13 | 512
14 |
15 |
16 |
17 | AnyCPU
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 |
26 |
27 | AnyCPU
28 | pdbonly
29 | true
30 | bin\Release\
31 | TRACE
32 | prompt
33 | 4
34 |
35 |
36 | app.ico
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | Form
63 |
64 |
65 | AboutDialog.cs
66 |
67 |
68 | Form
69 |
70 |
71 | EquipmentEditDialog.cs
72 |
73 |
74 | Form
75 |
76 |
77 | ExportEquipmentBoxDialog.cs
78 |
79 |
80 | Form
81 |
82 |
83 | GuildCardEditorDialog.cs
84 |
85 |
86 | Form
87 |
88 |
89 | ImportEquipmentBoxDialog.cs
90 |
91 |
92 | Form
93 |
94 |
95 | ImportItemBoxListDialog.cs
96 |
97 |
98 | Form
99 |
100 |
101 | ItemEditDialog.cs
102 |
103 |
104 | Form
105 |
106 |
107 | MainForm.cs
108 |
109 |
110 | Form
111 |
112 |
113 | PalicoActionEditorDialog.cs
114 |
115 |
116 | Form
117 |
118 |
119 | PalicoEditDialog.cs
120 |
121 |
122 | Form
123 |
124 |
125 | PalicoSkillEditorDialog.cs
126 |
127 |
128 | Form
129 |
130 |
131 | SetItemBoxItemAmountDialog.cs
132 |
133 |
134 | Form
135 |
136 |
137 | ShoutoutsEditDialog.cs
138 |
139 |
140 | Form
141 |
142 |
143 | ShoutoutTextEditDialog.cs
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 | AboutDialog.cs
152 |
153 |
154 | EquipmentEditDialog.cs
155 |
156 |
157 | ExportEquipmentBoxDialog.cs
158 |
159 |
160 | GuildCardEditorDialog.cs
161 |
162 |
163 | ImportEquipmentBoxDialog.cs
164 |
165 |
166 | ImportItemBoxListDialog.cs
167 |
168 |
169 | ItemEditDialog.cs
170 |
171 |
172 | MainForm.cs
173 |
174 |
175 | PalicoActionEditorDialog.cs
176 |
177 |
178 | PalicoEditDialog.cs
179 |
180 |
181 | PalicoSkillEditorDialog.cs
182 |
183 |
184 | SetItemBoxItemAmountDialog.cs
185 |
186 |
187 | ShoutoutsEditDialog.cs
188 |
189 |
190 | ShoutoutTextEditDialog.cs
191 |
192 |
193 | ResXFileCodeGenerator
194 | Resources.Designer.cs
195 | Designer
196 |
197 |
198 | True
199 | Resources.resx
200 | True
201 |
202 |
203 | SettingsSingleFileGenerator
204 | Settings.Designer.cs
205 |
206 |
207 | True
208 | Settings.settings
209 | True
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
226 |
--------------------------------------------------------------------------------