Ver 1.21
This commit is contained in:
parent
9fbf4e9794
commit
e1643201e6
@ -125,6 +125,24 @@ namespace MHSEC_G
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string equipped
|
||||||
|
{
|
||||||
|
get { return Helper.byte_to_uint(_data[_obj_offset + Offsets.OFFSETR_ARM_EQUIPPED]).ToString("X2"); }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
uint parsed;
|
||||||
|
if (Helper.parse_hex_string(value, out parsed) && parsed <= 0xFF)
|
||||||
|
{
|
||||||
|
Helper.write_byte(_data, _obj_offset + Offsets.OFFSETR_ARM_EQUIPPED, parsed);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("Malformed Equipped value - must be at most 0xFF", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
|
OnPropertyChanged(nameof(equipped));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string unknown_1ch
|
public string unknown_1ch
|
||||||
{
|
{
|
||||||
set
|
set
|
||||||
|
@ -88,18 +88,18 @@ namespace MHSEC_G
|
|||||||
{
|
{
|
||||||
if (length < str.Length || arr.Length < offset + length)
|
if (length < str.Length || arr.Length < offset + length)
|
||||||
{
|
{
|
||||||
BugCheck.bug_check(BugCheck.ErrorCode.MODEL_WRITE_UNICODE_OVERFLOW, "Buffer overflowed.\nBound " + arr.Length + " Offset " + offset);
|
BugCheck.bug_check(BugCheck.ErrorCode.MODEL_WRITE_UNICODE_OVERFLOW,
|
||||||
|
"Buffer overflowed.\nBound " + arr.Length + " Offset " + offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
Array.Clear(arr, (int) offset, (int)length*2);
|
Array.Clear(arr, (int) offset, (int) length * 2);
|
||||||
for (uint i = 0; i < str.Length; i ++)
|
for (uint i = 0; i < str.Length; i++)
|
||||||
{
|
{
|
||||||
write_uint16_le(arr, offset + i*2, str.ElementAt((int) i));
|
write_uint16_le(arr, offset + i * 2, str.ElementAt((int) i));
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static bool parse_hex_string(string val, out uint result)
|
public static bool parse_hex_string(string val, out uint result)
|
||||||
{
|
{
|
||||||
result = 0;
|
result = 0;
|
||||||
|
@ -76,31 +76,31 @@
|
|||||||
VerticalAlignment="Top" Height="307" Width="417" CanUserAddRows="False"
|
VerticalAlignment="Top" Height="307" Width="417" CanUserAddRows="False"
|
||||||
AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding Path=egg_fragments}">
|
AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding Path=egg_fragments}">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="50" Binding="{Binding idx}"
|
Width="50" Binding="{Binding idx}"
|
||||||
Header="Index" IsReadOnly="True"/>
|
Header="Index" IsReadOnly="True"/>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="50" Binding="{Binding spe}"
|
Width="50" Binding="{Binding spe}"
|
||||||
Header="Genus" />
|
Header="Genus" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="60" Binding="{Binding pos}"
|
Width="60" Binding="{Binding pos}"
|
||||||
Header="Position" />
|
Header="Position" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding new_flag}"
|
Width="40" Binding="{Binding new_flag}"
|
||||||
Header="New" />
|
Header="New" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding rarity}"
|
Width="40" Binding="{Binding rarity}"
|
||||||
Header="Rarity" />
|
Header="Rarity" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding color}"
|
Width="*" Binding="{Binding color}"
|
||||||
Header="Color" />
|
Header="Color" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding dlc}"
|
Width="*" Binding="{Binding dlc}"
|
||||||
Header="DLC" />
|
Header="DLC" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding unknown_7h}"
|
Width="*" Binding="{Binding unknown_7h}"
|
||||||
Header="0x6" />
|
Header="0x6" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding unknown_6h}"
|
Width="*" Binding="{Binding unknown_6h}"
|
||||||
Header="0x7" />
|
Header="0x7" />
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
@ -118,20 +118,22 @@
|
|||||||
</Style>
|
</Style>
|
||||||
</DataGrid.RowStyle>
|
</DataGrid.RowStyle>
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding index}"
|
Width="40" Binding="{Binding index}"
|
||||||
Header="Index" IsReadOnly="True"/>
|
Header="Index" IsReadOnly="True"/>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding spe}"
|
Width="*" Binding="{Binding spe}"
|
||||||
Header="Hatched Monster Species" />
|
Header="Hatched Monster Species" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding wgt}"
|
Width="*" Binding="{Binding wgt}"
|
||||||
Header="Weight" />
|
Header="Weight" />
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
<Label x:Name="label_monster_Copy" Content="Double-click an entry to edit genes. Click twice to edit the table entry." HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.184,0.019"/>
|
<Label x:Name="label_monster_Copy" Content="Double-click an entry to edit genes. Click twice to edit the table entry." HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.184,0.019"/>
|
||||||
<Button x:Name="button_eggs_delete" Content="Delete" HorizontalAlignment="Left" Margin="319,29,0,0" VerticalAlignment="Top" Width="108" RenderTransformOrigin="1.601,-0.2" Click="button_eggs_delete_Click"/>
|
<Button x:Name="button_eggs_delete" Content="Delete" HorizontalAlignment="Left" Margin="347,29,0,0" VerticalAlignment="Top" Width="80" RenderTransformOrigin="1.601,-0.2" Click="button_eggs_delete_Click"/>
|
||||||
<Button x:Name="button_eggs_dummy" Content="Set Dummy Egg" HorizontalAlignment="Left" Margin="206,29,0,0" VerticalAlignment="Top" Width="108" RenderTransformOrigin="1.601,-0.2" Click="button_eggs_dummy_Click"/>
|
<Button x:Name="button_eggs_dummy" Content="Set Dummy" HorizontalAlignment="Left" Margin="10,29,0,0" VerticalAlignment="Top" Width="80" RenderTransformOrigin="1.601,-0.2" Click="button_eggs_dummy_Click"/>
|
||||||
|
<Button x:Name="button_eggs_export" Content="Export" HorizontalAlignment="Left" Margin="262,29,0,0" VerticalAlignment="Top" Width="80" RenderTransformOrigin="1.601,-0.2" Click="button_eggs_export_Click"/>
|
||||||
|
<Button x:Name="button_eggs_import" Content="Import" HorizontalAlignment="Left" Margin="177,29,0,0" VerticalAlignment="Top" Width="80" RenderTransformOrigin="1.601,-0.2" Click="button_eggs_import_Click"/>
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
@ -146,19 +148,19 @@
|
|||||||
</Style>
|
</Style>
|
||||||
</DataGrid.RowStyle>
|
</DataGrid.RowStyle>
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="30" Binding="{Binding box}"
|
Width="30" Binding="{Binding box}"
|
||||||
Header="Box"/>
|
Header="Box"/>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="30" Binding="{Binding slot}"
|
Width="30" Binding="{Binding slot}"
|
||||||
Header="Slot"/>
|
Header="Slot"/>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding uid}"
|
Width="40" Binding="{Binding uid}"
|
||||||
Header="UID"/>
|
Header="UID"/>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="200" Binding="{Binding name}"
|
Width="200" Binding="{Binding name}"
|
||||||
Header="Name" />
|
Header="Name" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding level}"
|
Width="*" Binding="{Binding level}"
|
||||||
Header="Level" />
|
Header="Level" />
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
@ -173,25 +175,25 @@
|
|||||||
VerticalAlignment="Top" Height="307" Width="417" CanUserAddRows="False"
|
VerticalAlignment="Top" Height="307" Width="417" CanUserAddRows="False"
|
||||||
AutoGenerateColumns="False" ItemsSource="{Binding Path=talismans}" SelectionMode="Single">
|
AutoGenerateColumns="False" ItemsSource="{Binding Path=talismans}" SelectionMode="Single">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding index}"
|
Width="40" Binding="{Binding index}"
|
||||||
Header="Index" IsReadOnly="True" />
|
Header="Index" IsReadOnly="True" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding id}"
|
Width="40" Binding="{Binding id}"
|
||||||
Header="ID" />
|
Header="ID" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding rarity}"
|
Width="40" Binding="{Binding rarity}"
|
||||||
Header="Rarity" />
|
Header="Rarity" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding new_flag}"
|
Width="40" Binding="{Binding new_flag}"
|
||||||
Header="New" />
|
Header="New" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="70" Binding="{Binding equipped}"
|
Width="70" Binding="{Binding equipped}"
|
||||||
Header="Equipped" />
|
Header="Equipped" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding skill1}"
|
Width="*" Binding="{Binding skill1}"
|
||||||
Header="Skill 1" />
|
Header="Skill 1" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding skill2}"
|
Width="*" Binding="{Binding skill2}"
|
||||||
Header="Skill 2" />
|
Header="Skill 2" />
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
@ -204,18 +206,21 @@
|
|||||||
VerticalAlignment="Top" Height="307" Width="417" CanUserAddRows="False"
|
VerticalAlignment="Top" Height="307" Width="417" CanUserAddRows="False"
|
||||||
AutoGenerateColumns="False" ItemsSource="{Binding weapons}" SelectionMode="Single">
|
AutoGenerateColumns="False" ItemsSource="{Binding weapons}" SelectionMode="Single">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding index}"
|
Width="40" Binding="{Binding index}"
|
||||||
Header="Index" IsReadOnly="True"/>
|
Header="Index" IsReadOnly="True"/>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="80" Binding="{Binding clazz}"
|
Width="80" Binding="{Binding clazz}"
|
||||||
Header="Class" />
|
Header="Class" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="80" Binding="{Binding id}"
|
Width="80" Binding="{Binding id}"
|
||||||
Header="ID" />
|
Header="ID" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding level}"
|
Width="*" Binding="{Binding level}"
|
||||||
Header="Level" />
|
Header="Level" />
|
||||||
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
|
Width="*" Binding="{Binding equipped}"
|
||||||
|
Header="Equipped" />
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
</Grid>
|
</Grid>
|
||||||
@ -226,25 +231,28 @@
|
|||||||
VerticalAlignment="Top" Height="307" Width="417" CanUserAddRows="False"
|
VerticalAlignment="Top" Height="307" Width="417" CanUserAddRows="False"
|
||||||
AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding armors}">
|
AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding armors}">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding index}"
|
Width="40" Binding="{Binding index}"
|
||||||
Header="Index" IsReadOnly="True"/>
|
Header="Index" IsReadOnly="True"/>
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding type}"
|
Width="40" Binding="{Binding type}"
|
||||||
Header="Type" />
|
Header="Type" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding id}"
|
Width="40" Binding="{Binding id}"
|
||||||
Header="ID" />
|
Header="ID" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
|
Width="60" Binding="{Binding equipped}"
|
||||||
|
Header="Equipped" />
|
||||||
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="40" Binding="{Binding level}"
|
Width="40" Binding="{Binding level}"
|
||||||
Header="Level" />
|
Header="Level" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding unknown_14h}"
|
Width="*" Binding="{Binding unknown_14h}"
|
||||||
Header="Color1 (RGB)" />
|
Header="Color1" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding unknown_18h}"
|
Width="*" Binding="{Binding unknown_18h}"
|
||||||
Header="Color2 (RGB)" />
|
Header="Color2" />
|
||||||
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False"
|
<DataGridTextColumn CanUserReorder="False" CanUserResize="False" CanUserSort="True"
|
||||||
Width="*" Binding="{Binding unknown_1ch}"
|
Width="*" Binding="{Binding unknown_1ch}"
|
||||||
Header="0x1Ch" />
|
Header="0x1Ch" />
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
@ -258,7 +266,7 @@
|
|||||||
VerticalAlignment="Top" Width="74" Click="button_load_click" />
|
VerticalAlignment="Top" Width="74" Click="button_load_click" />
|
||||||
<Button x:Name="button_about" Content="About" HorizontalAlignment="Left" Margin="379,10,0,0" VerticalAlignment="Top" Width="74" Click="button_about_Click"/>
|
<Button x:Name="button_about" Content="About" HorizontalAlignment="Left" Margin="379,10,0,0" VerticalAlignment="Top" Width="74" Click="button_about_Click"/>
|
||||||
<Label x:Name="label_save_ver_cap" Content="Save Version:" HorizontalAlignment="Left" Margin="164,7,0,0" VerticalAlignment="Top"/>
|
<Label x:Name="label_save_ver_cap" Content="Save Version:" HorizontalAlignment="Left" Margin="164,7,0,0" VerticalAlignment="Top"/>
|
||||||
<Label x:Name="label_save_ver" Content="JPN" HorizontalAlignment="Left" Margin="235,7,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.237,0.519" FontWeight="Bold"/>
|
<Label x:Name="label_save_ver" Content="No save loaded" HorizontalAlignment="Left" Margin="235,7,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.237,0.519" FontWeight="Bold"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Window>
|
</Window>
|
||||||
|
|
||||||
|
@ -29,9 +29,9 @@ namespace MHSEC_G
|
|||||||
button_save.IsEnabled = false;
|
button_save.IsEnabled = false;
|
||||||
byte[] dummy = new byte[Offsets.SAVE_FILE_SIZE_JPN];
|
byte[] dummy = new byte[Offsets.SAVE_FILE_SIZE_JPN];
|
||||||
Array.Clear(dummy, 0, dummy.Length);
|
Array.Clear(dummy, 0, dummy.Length);
|
||||||
this.Title = "MHSEC-G Ver " + get_app_version();
|
|
||||||
Offsets.init(dummy);
|
Offsets.init(dummy);
|
||||||
init(dummy);
|
init(dummy);
|
||||||
|
this.Title = "MHSEC-G Ver " + get_app_version();
|
||||||
DataContext = this;
|
DataContext = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,7 +53,8 @@ namespace MHSEC_G
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (buffer.Length == Offsets.SAVE_FILE_SIZE_JPN)
|
Offsets.init(buffer);
|
||||||
|
if (Offsets.VER == Offsets.Version.JPN)
|
||||||
{
|
{
|
||||||
label_save_ver.Content = "JPN";
|
label_save_ver.Content = "JPN";
|
||||||
}
|
}
|
||||||
@ -61,7 +62,6 @@ namespace MHSEC_G
|
|||||||
{
|
{
|
||||||
label_save_ver.Content = "EUR/USA";
|
label_save_ver.Content = "EUR/USA";
|
||||||
}
|
}
|
||||||
Offsets.init(buffer);
|
|
||||||
init(buffer);
|
init(buffer);
|
||||||
OnPropertyChanged(null);
|
OnPropertyChanged(null);
|
||||||
button_save.IsEnabled = true;
|
button_save.IsEnabled = true;
|
||||||
@ -238,5 +238,61 @@ namespace MHSEC_G
|
|||||||
PartyWindow partyWnd = new PartyWindow(_model);
|
PartyWindow partyWnd = new PartyWindow(_model);
|
||||||
partyWnd.Show();
|
partyWnd.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void button_eggs_export_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (this.egg_grid.SelectedItem == null)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Please select an egg.", "MHSEC-G", MessageBoxButton.OK);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Egg theEgg = egg_grid.SelectedItem as Egg;
|
||||||
|
SaveFileDialog dialog = new SaveFileDialog();
|
||||||
|
|
||||||
|
dialog.Filter = "Binary files (*.bin)|*.bin|All files (*.*)|*.*";
|
||||||
|
dialog.Title = "Please select the export location.";
|
||||||
|
dialog.FileName = "egg_" + theEgg.spe + ".bin";
|
||||||
|
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||||
|
{
|
||||||
|
byte[] binary = theEgg.toByteArray();
|
||||||
|
File.WriteAllBytes(dialog.FileName, binary);
|
||||||
|
MessageBox.Show("Exported to \"" + dialog.FileName + "\"", "MHSEC-G", MessageBoxButton.OK,
|
||||||
|
MessageBoxImage.Information);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void button_eggs_import_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (this.egg_grid.SelectedItem == null)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Please select an egg.", "MHSEC-G", MessageBoxButton.OK);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Egg theEgg = egg_grid.SelectedItem as Egg;
|
||||||
|
OpenFileDialog dialog = new OpenFileDialog();
|
||||||
|
dialog.Filter = "Binary files (*.bin)|*.bin|All files (*.*)|*.*";
|
||||||
|
dialog.Title = "Please select the monster file.";
|
||||||
|
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
||||||
|
{
|
||||||
|
byte[] buffer = File.ReadAllBytes(dialog.FileName);
|
||||||
|
if (buffer.Length != Offsets.SIZE_EGG)
|
||||||
|
{
|
||||||
|
System.Windows.Forms.MessageBox.Show(
|
||||||
|
"Wrong egg file size!",
|
||||||
|
"Error",
|
||||||
|
MessageBoxButtons.OK,
|
||||||
|
MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
theEgg.setByteArray(buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,88 +5,88 @@
|
|||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:local="clr-namespace:MHSEC_G"
|
xmlns:local="clr-namespace:MHSEC_G"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="Monster Editor" Height="313.238" Width="339.947" ResizeMode="NoResize">
|
Title="Monster Editor" Height="313.238" Width="364.618" ResizeMode="NoResize">
|
||||||
<Grid Background="#FFE5E5E5">
|
<Grid Background="#FFE5E5E5">
|
||||||
<Label x:Name="label_mhp" Content="HP" HorizontalAlignment="Left" Margin="26,39,0,0"
|
<Label x:Name="label_mhp" Content="HP" HorizontalAlignment="Left" Margin="69,39,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
||||||
<Label x:Name="label_mat" Content="Atk" HorizontalAlignment="Left" Margin="23,68,0,0"
|
<Label x:Name="label_mat" Content="Atk" HorizontalAlignment="Left" Margin="67,68,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
||||||
<Label x:Name="label_mdf" Content="Def" HorizontalAlignment="Left" Margin="22,97,0,0"
|
<Label x:Name="label_mdf" Content="Def" HorizontalAlignment="Left" Margin="65,98,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
||||||
<Label x:Name="label_mhiv" Content="IV-HP" HorizontalAlignment="Left" Margin="11,125,0,0"
|
<Label x:Name="label_mhiv" Content="IV-HP" HorizontalAlignment="Left" Margin="55,128,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
||||||
<Label x:Name="label_mdiv" Content="IV-Atk" HorizontalAlignment="Left" Margin="8,154,0,0"
|
<Label x:Name="label_mdiv" Content="IV-Atk" HorizontalAlignment="Left" Margin="52,154,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
||||||
<Label x:Name="label_maiv" Content="IV-Def" HorizontalAlignment="Left" Margin="7,182,0,0"
|
<Label x:Name="label_maiv" Content="IV-Def" HorizontalAlignment="Left" Margin="50,183,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
||||||
<Label x:Name="label_mhpu" Content="PowerUp-HP" HorizontalAlignment="Left" Margin="157,123,0,0"
|
<Label x:Name="label_mhpu" Content="PowerUp-HP" HorizontalAlignment="Left" Margin="191,126,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
||||||
<Label x:Name="label_mapu" Content="PowerUp-Atk" HorizontalAlignment="Left" Margin="154,151,0,0"
|
<Label x:Name="label_mapu" Content="PowerUp-Atk" HorizontalAlignment="Left" Margin="188,153,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
||||||
<Label x:Name="label_mdpu" Content="PowerUp-Def" HorizontalAlignment="Left" Margin="154,179,0,0"
|
<Label x:Name="label_mdpu" Content="PowerUp-Def" HorizontalAlignment="Left" Margin="186,180,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
||||||
<TextBox x:Name="textbox_mhp" HorizontalAlignment="Left" Height="23" Margin="56,39,0,0"
|
<TextBox x:Name="textbox_mhp" HorizontalAlignment="Left" Height="23" Margin="99,39,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.hp}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.hp}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
<TextBox x:Name="textbox_mat" HorizontalAlignment="Left" Height="23" Margin="56,69,0,0"
|
<TextBox x:Name="textbox_mat" HorizontalAlignment="Left" Height="23" Margin="99,69,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.atk}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.atk}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
<TextBox x:Name="textbox_mdf" HorizontalAlignment="Left" Height="23" Margin="56,97,0,0"
|
<TextBox x:Name="textbox_mdf" HorizontalAlignment="Left" Height="23" Margin="99,98,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.def}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.def}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
<TextBox x:Name="textbox_mhiv" HorizontalAlignment="Left" Height="23" Margin="56,126,0,0"
|
<TextBox x:Name="textbox_mhiv" HorizontalAlignment="Left" Height="23" Margin="99,126,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.hiv}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.hiv}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
<TextBox x:Name="textbox_maiv" HorizontalAlignment="Left" Height="23" Margin="56,154,0,0"
|
<TextBox x:Name="textbox_maiv" HorizontalAlignment="Left" Height="23" Margin="99,154,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.aiv}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.aiv}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" RenderTransformOrigin="1.222,0.547" />
|
||||||
<TextBox x:Name="textbox_mdiv" HorizontalAlignment="Left" Height="23" Margin="56,182,0,0"
|
<TextBox x:Name="textbox_mdiv" HorizontalAlignment="Left" Height="23" Margin="99,183,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.div}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.div}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
<TextBox x:Name="textbox_mhpu" HorizontalAlignment="Left" Height="23" Margin="240,126,0,0"
|
<TextBox x:Name="textbox_mhpu" HorizontalAlignment="Left" Height="23" Margin="273,126,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.hpu}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.hpu}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
<TextBox x:Name="textbox_mapu" HorizontalAlignment="Left" Height="23" Margin="240,154,0,0"
|
<TextBox x:Name="textbox_mapu" HorizontalAlignment="Left" Height="23" Margin="273,154,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.apu}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.apu}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
<TextBox x:Name="textbox_mdpu" HorizontalAlignment="Left" Height="23" Margin="240,182,0,0"
|
<TextBox x:Name="textbox_mdpu" HorizontalAlignment="Left" Height="23" Margin="273,182,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.dpu}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.dpu}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
<Label x:Name="label_mlv" Content="Level" HorizontalAlignment="Left" Margin="198,36,0,0"
|
<Label x:Name="label_mlv" Content="Level" HorizontalAlignment="Left" Margin="228,37,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="-0.263,0.135" />
|
VerticalAlignment="Top" RenderTransformOrigin="-0.263,0.135" />
|
||||||
<Label x:Name="label_mex" Content="Exp" HorizontalAlignment="Left" Margin="172,69,0,0"
|
<Label x:Name="label_mex" Content="Exp" HorizontalAlignment="Left" Margin="200,68,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="-0.263,0.135" />
|
VerticalAlignment="Top" RenderTransformOrigin="-0.263,0.135" />
|
||||||
<Label x:Name="label_spe" Content="Species (Hex)" Margin="156,97,94,0"
|
<Label x:Name="label_spe" Content="Species (Hex)" Margin="188,97,82.5,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="-0.263,0.135" />
|
VerticalAlignment="Top" RenderTransformOrigin="-0.263,0.135" />
|
||||||
<TextBox x:Name="textbox_mlv" HorizontalAlignment="Left" Height="24" Margin="240,38,0,0"
|
<TextBox x:Name="textbox_mlv" HorizontalAlignment="Left" Height="24" Margin="272,38,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.level}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.level}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
<TextBox x:Name="textbox_mex" HorizontalAlignment="Left" Height="24" Margin="240,68,0,0"
|
<TextBox x:Name="textbox_mex" HorizontalAlignment="Left" Height="24" Margin="273,67,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.exp}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.exp}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" RenderTransformOrigin="1.06,0.436" />
|
||||||
<TextBox x:Name="textbox_spe" HorizontalAlignment="Left" Height="24" Margin="240,97,0,0"
|
<TextBox x:Name="textbox_spe" HorizontalAlignment="Left" Height="24" Margin="273,97,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.spe, StringFormat=\{0:X2\}}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.spe, StringFormat=\{0:X2\}}" VerticalAlignment="Top"
|
||||||
Width="75"/>
|
Width="74"/>
|
||||||
<Label x:Name="label_mname" Content="Name" HorizontalAlignment="Left" Margin="10,10,0,0"
|
<Label x:Name="label_mname" Content="Name" HorizontalAlignment="Left" Margin="10,10,0,0"
|
||||||
VerticalAlignment="Top" />
|
VerticalAlignment="Top" />
|
||||||
<TextBox x:Name="textbox_mname" HorizontalAlignment="Left" Height="22" Margin="56,12,0,0"
|
<TextBox x:Name="textbox_mname" HorizontalAlignment="Left" Height="22" Margin="56,12,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.name}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.name}" VerticalAlignment="Top"
|
||||||
Width="118" />
|
Width="118" />
|
||||||
<Button x:Name="button_mexp" Content="Max" HorizontalAlignment="Left" Margin="200,72,0,0"
|
<Button x:Name="button_mexp" Content="Max" HorizontalAlignment="Left" Margin="229,70,0,0"
|
||||||
VerticalAlignment="Top" Width="35" Click="button_mexp_Click" />
|
VerticalAlignment="Top" Width="35" Click="button_mexp_Click" RenderTransformOrigin="1.375,0.544" />
|
||||||
<Button x:Name="button_mdel" Content="Export" HorizontalAlignment="Left" Margin="7,251,0,0" VerticalAlignment="Top" Width="76" Click="button_mdel_Click" Height="24"/>
|
<Button x:Name="button_mdel" Content="Export" HorizontalAlignment="Left" Margin="10,251,0,0" VerticalAlignment="Top" Width="76" Click="button_mexport_Click" Height="24"/>
|
||||||
<Label x:Name="label_mon_skill" Content="Skill 1" HorizontalAlignment="Left" Margin="10,211,0,0" VerticalAlignment="Top"/>
|
<Label x:Name="label_mon_skill" Content="Skill 1 (Hex)" HorizontalAlignment="Left" Margin="23,208,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.274,0.562"/>
|
||||||
<TextBox x:Name="textbox_mon_skill" HorizontalAlignment="Left" Height="24" Margin="56,211,0,0"
|
<TextBox x:Name="textbox_mon_skill" HorizontalAlignment="Left" Height="24" Margin="99,210,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.skill1}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.skill1}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
<Button x:Name="button_mdel_import" Content="Import" HorizontalAlignment="Left" Margin="88,251,0,0" VerticalAlignment="Top" Width="76" Click="button_mimport_Click" RenderTransformOrigin="0.167,-0.328" Height="24"/>
|
<Button x:Name="button_mdel_import" Content="Import" HorizontalAlignment="Left" Margin="98,251,0,0" VerticalAlignment="Top" Width="76" Click="button_mimport_Click" RenderTransformOrigin="0.167,-0.328" Height="24"/>
|
||||||
<Button x:Name="button_mdel_delete" Content="Delete" HorizontalAlignment="Left" Margin="169,251,0,0" VerticalAlignment="Top" Width="76" Click="button_mdelete_Click" Height="24" RenderTransformOrigin="-0.095,0.426"/>
|
<Button x:Name="button_mdel_delete" Content="Delete" HorizontalAlignment="Left" Margin="186,251,0,0" VerticalAlignment="Top" Width="76" Click="button_mdelete_Click" Height="24" RenderTransformOrigin="-0.095,0.426"/>
|
||||||
<Button x:Name="button_mdel_genes" Content="Edit Genes" HorizontalAlignment="Left" Margin="250,251,0,0" VerticalAlignment="Top" Width="75" Click="button_mdel_genes_Click" Height="24" RenderTransformOrigin="0.415,0.563"/>
|
<Button x:Name="button_mdel_genes" Content="Edit Genes" HorizontalAlignment="Left" Margin="274,251,0,0" VerticalAlignment="Top" Width="74" Click="button_mdel_genes_Click" Height="24" RenderTransformOrigin="0.415,0.563"/>
|
||||||
<Label x:Name="label_mon_uid" Content="UID (Hex)" HorizontalAlignment="Left" Margin="176,10,0,0"
|
<Label x:Name="label_mon_uid" Content="UID (Hex)" HorizontalAlignment="Left" Margin="204,10,0,0"
|
||||||
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
VerticalAlignment="Top" RenderTransformOrigin="0.564,2.072" />
|
||||||
<TextBox HorizontalAlignment="Left" Height="23" Margin="240,10,0,0" TextWrapping="Wrap" Text="{Binding monster.uid}" VerticalAlignment="Top" Width="75"/>
|
<TextBox HorizontalAlignment="Left" Height="23" Margin="272,10,0,0" TextWrapping="Wrap" Text="{Binding monster.uid}" VerticalAlignment="Top" Width="75"/>
|
||||||
<Label x:Name="lab" Content="Skill 2" HorizontalAlignment="Left" Margin="195,211,0,0" VerticalAlignment="Top"/>
|
<Label x:Name="lab" Content="Skill 2 (Hex)" HorizontalAlignment="Left" Margin="197,208,0,0" VerticalAlignment="Top"/>
|
||||||
<TextBox x:Name="textbox_mon_skill_Copy" HorizontalAlignment="Left" Height="24" Margin="240,211,0,0"
|
<TextBox x:Name="textbox_mon_skill_Copy" HorizontalAlignment="Left" Height="24" Margin="273,210,0,0"
|
||||||
TextWrapping="Wrap" Text="{Binding monster.skill2}" VerticalAlignment="Top"
|
TextWrapping="Wrap" Text="{Binding monster.skill2}" VerticalAlignment="Top"
|
||||||
Width="75" />
|
Width="75" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -34,29 +34,73 @@ namespace MHSEC_G
|
|||||||
byte[] buffer = File.ReadAllBytes(dialog.FileName);
|
byte[] buffer = File.ReadAllBytes(dialog.FileName);
|
||||||
if (buffer.Length != Offsets.SIZE_MONSTER)
|
if (buffer.Length != Offsets.SIZE_MONSTER)
|
||||||
{
|
{
|
||||||
|
buffer = convert_monster(buffer);
|
||||||
|
if (buffer.Length != Offsets.SIZE_MONSTER)
|
||||||
|
{
|
||||||
|
// failed again
|
||||||
|
System.Windows.Forms.MessageBox.Show(
|
||||||
|
"Wrong monster file size!",
|
||||||
|
"MHSEC-G",
|
||||||
|
MessageBoxButtons.OK,
|
||||||
|
MessageBoxIcon.Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
System.Windows.Forms.MessageBox.Show(
|
System.Windows.Forms.MessageBox.Show(
|
||||||
"Wrong monster file size!",
|
"Detected " + (Offsets.VER == Offsets.Version.JPN ? "USA" : "JPN") + " monster export format. Automatically converted.",
|
||||||
"Error",
|
"MHSEC-G",
|
||||||
MessageBoxButtons.OK,
|
MessageBoxButtons.OK,
|
||||||
MessageBoxIcon.Error);
|
MessageBoxIcon.Information);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_monster.setByteArray(buffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_monster.setByteArray(buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void button_mdelete_Click(object sender, RoutedEventArgs e)
|
private static byte[] convert_monster(byte[] save)
|
||||||
{
|
{
|
||||||
MessageBoxResult confirm = MessageBox.Show("Are you sure you want to delete the monster?", "MHSEC-G", MessageBoxButton.YesNo);
|
byte[] ret = null;
|
||||||
if (confirm == MessageBoxResult.Yes)
|
if (Offsets.VER == Offsets.Version.JPN)
|
||||||
{
|
{
|
||||||
_monster.setByteArray(Offsets.MONSTER_NULL_TEMPLATE);
|
uint other_offset_uid = Offsets.OFFSETR_MONSTER_UID + 0x28;
|
||||||
|
|
||||||
|
// USA -> JPN
|
||||||
|
if (save.Length < other_offset_uid)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = new byte[save.Length - 0x28];
|
||||||
|
// copy everything till my UID
|
||||||
|
Array.Copy(save, 0, ret, 0, Offsets.OFFSETR_MONSTER_UID);
|
||||||
|
// copy everything after it
|
||||||
|
Array.Copy(save, other_offset_uid, ret, Offsets.OFFSETR_MONSTER_UID,
|
||||||
|
save.Length - other_offset_uid);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uint other_offset_uid = Offsets.OFFSETR_MONSTER_UID - 0x28;
|
||||||
|
|
||||||
|
// JPN -> USA
|
||||||
|
if (save.Length < other_offset_uid)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = new byte[save.Length + 0x28];
|
||||||
|
// copy everything till other uid
|
||||||
|
Array.Copy(save, 0, ret, 0, other_offset_uid);
|
||||||
|
// fill 0s
|
||||||
|
Array.Clear(ret, (int) (other_offset_uid), 0x28);
|
||||||
|
// copy everything else
|
||||||
|
Array.Copy(save, other_offset_uid, ret, Offsets.OFFSETR_MONSTER_UID,
|
||||||
|
save.Length - other_offset_uid);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void button_mdel_Click(object sender, RoutedEventArgs e)
|
private void button_mexport_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
SaveFileDialog dialog = new SaveFileDialog();
|
SaveFileDialog dialog = new SaveFileDialog();
|
||||||
dialog.Filter = "Binary files (*.bin)|*.bin|All files (*.*)|*.*";
|
dialog.Filter = "Binary files (*.bin)|*.bin|All files (*.*)|*.*";
|
||||||
@ -71,6 +115,16 @@ namespace MHSEC_G
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void button_mdelete_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
MessageBoxResult confirm = MessageBox.Show("Are you sure you want to delete the monster?", "MHSEC-G",
|
||||||
|
MessageBoxButton.YesNo);
|
||||||
|
if (confirm == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
_monster.setByteArray(Offsets.MONSTER_NULL_TEMPLATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void button_mexp_Click(object sender, RoutedEventArgs e)
|
private void button_mexp_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
_monster.exp = Offsets.LIMIT_MONSTER_EXP;
|
_monster.exp = Offsets.LIMIT_MONSTER_EXP;
|
||||||
|
@ -9,6 +9,18 @@ namespace MHSEC_G
|
|||||||
{
|
{
|
||||||
public static class Offsets
|
public static class Offsets
|
||||||
{
|
{
|
||||||
|
//
|
||||||
|
// Ver
|
||||||
|
//
|
||||||
|
public enum Version
|
||||||
|
{
|
||||||
|
JPN,
|
||||||
|
USA
|
||||||
|
};
|
||||||
|
|
||||||
|
private static Version _VER;
|
||||||
|
public static Version VER => _VER;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Save
|
// Save
|
||||||
//
|
//
|
||||||
@ -26,6 +38,10 @@ namespace MHSEC_G
|
|||||||
//
|
//
|
||||||
// Armors
|
// Armors
|
||||||
//
|
//
|
||||||
|
|
||||||
|
private static uint _OFFSETR_ARM_EQUIPPED;
|
||||||
|
public static uint OFFSETR_ARM_EQUIPPED => _OFFSETR_ARM_EQUIPPED;
|
||||||
|
|
||||||
private static uint _OFFSETA_ARM;
|
private static uint _OFFSETA_ARM;
|
||||||
public static uint OFFSETA_ARM => _OFFSETA_ARM;
|
public static uint OFFSETA_ARM => _OFFSETA_ARM;
|
||||||
|
|
||||||
@ -283,8 +299,8 @@ namespace MHSEC_G
|
|||||||
private static uint _OFFSETR_TALI_ID;
|
private static uint _OFFSETR_TALI_ID;
|
||||||
public static uint OFFSETR_TALI_ID => _OFFSETR_TALI_ID;
|
public static uint OFFSETR_TALI_ID => _OFFSETR_TALI_ID;
|
||||||
|
|
||||||
private static uint _OFFSETR_EQUIPPED;
|
private static uint _OFFSETR_TALI_EQUIPPED;
|
||||||
public static uint OFFSETR_EQUIPPED => _OFFSETR_EQUIPPED;
|
public static uint OFFSETR_TALI_EQUIPPED => _OFFSETR_TALI_EQUIPPED;
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -293,6 +309,9 @@ namespace MHSEC_G
|
|||||||
private static uint _OFFSETA_WEAPON_START;
|
private static uint _OFFSETA_WEAPON_START;
|
||||||
public static uint OFFSETA_WEAPON_START => _OFFSETA_WEAPON_START;
|
public static uint OFFSETA_WEAPON_START => _OFFSETA_WEAPON_START;
|
||||||
|
|
||||||
|
private static uint _OFFSETR_WEAPON_EQUIPPED;
|
||||||
|
public static uint OFFSETR_WEAPON_EQUIPPED => _OFFSETR_WEAPON_EQUIPPED;
|
||||||
|
|
||||||
private static uint _OFFSETA_WEAPON_END;
|
private static uint _OFFSETA_WEAPON_END;
|
||||||
public static uint OFFSETA_WEAPON_END => _OFFSETA_WEAPON_END;
|
public static uint OFFSETA_WEAPON_END => _OFFSETA_WEAPON_END;
|
||||||
|
|
||||||
@ -313,6 +332,8 @@ namespace MHSEC_G
|
|||||||
{
|
{
|
||||||
if (save.Length == SAVE_FILE_SIZE_JPN)
|
if (save.Length == SAVE_FILE_SIZE_JPN)
|
||||||
{
|
{
|
||||||
|
_VER = Version.JPN;
|
||||||
|
|
||||||
//
|
//
|
||||||
//Armors
|
//Armors
|
||||||
//
|
//
|
||||||
@ -325,6 +346,7 @@ namespace MHSEC_G
|
|||||||
_OFFSETR_ARM_1C = 0x1c;
|
_OFFSETR_ARM_1C = 0x1c;
|
||||||
_OFFSETA_ARM_END = 0x720E;
|
_OFFSETA_ARM_END = 0x720E;
|
||||||
_OFFSETR_ARM_TYPE = 0x0;
|
_OFFSETR_ARM_TYPE = 0x0;
|
||||||
|
_OFFSETR_ARM_EQUIPPED = 0x11;
|
||||||
|
|
||||||
//
|
//
|
||||||
//Character
|
//Character
|
||||||
@ -415,13 +437,14 @@ namespace MHSEC_G
|
|||||||
_OFFSETR_TALI_SKILL1 = 0x28;
|
_OFFSETR_TALI_SKILL1 = 0x28;
|
||||||
_OFFSETR_TALI_SKILL2 = 0x2A;
|
_OFFSETR_TALI_SKILL2 = 0x2A;
|
||||||
_OFFSETR_TALI_ID = 0x2;
|
_OFFSETR_TALI_ID = 0x2;
|
||||||
_OFFSETR_EQUIPPED = 0x11;
|
_OFFSETR_TALI_EQUIPPED = 0x11;
|
||||||
|
|
||||||
//
|
//
|
||||||
//Weapons
|
//Weapons
|
||||||
//
|
//
|
||||||
_OFFSETA_WEAPON_START = 0x39D0;
|
_OFFSETA_WEAPON_START = 0x39D0;
|
||||||
_OFFSETA_WEAPON_END = 0x55EF;
|
_OFFSETA_WEAPON_END = 0x55EF;
|
||||||
|
_OFFSETR_WEAPON_EQUIPPED = 0x11;
|
||||||
_SIZE_WEAPON = 0x24;
|
_SIZE_WEAPON = 0x24;
|
||||||
_OFFSETR_CLASS = 0x0;
|
_OFFSETR_CLASS = 0x0;
|
||||||
_OFFSETR_ID = 0x2;
|
_OFFSETR_ID = 0x2;
|
||||||
@ -432,6 +455,7 @@ namespace MHSEC_G
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
_VER = Version.USA;
|
||||||
//
|
//
|
||||||
// Armors ok
|
// Armors ok
|
||||||
//
|
//
|
||||||
@ -444,6 +468,7 @@ namespace MHSEC_G
|
|||||||
_OFFSETR_ARM_1C = 0x1c;
|
_OFFSETR_ARM_1C = 0x1c;
|
||||||
_OFFSETA_ARM_END = 0x72B3;
|
_OFFSETA_ARM_END = 0x72B3;
|
||||||
_OFFSETR_ARM_TYPE = 0x0;
|
_OFFSETR_ARM_TYPE = 0x0;
|
||||||
|
_OFFSETR_ARM_EQUIPPED = 0x11;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Character ok
|
// Character ok
|
||||||
@ -535,13 +560,14 @@ namespace MHSEC_G
|
|||||||
_OFFSETR_TALI_SKILL1 = 0x28;
|
_OFFSETR_TALI_SKILL1 = 0x28;
|
||||||
_OFFSETR_TALI_SKILL2 = 0x2A;
|
_OFFSETR_TALI_SKILL2 = 0x2A;
|
||||||
_OFFSETR_TALI_ID = 0x2;
|
_OFFSETR_TALI_ID = 0x2;
|
||||||
_OFFSETR_EQUIPPED = 0x11;
|
_OFFSETR_TALI_EQUIPPED = 0x11;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Weapons ok
|
// Weapons ok
|
||||||
//
|
//
|
||||||
_OFFSETA_WEAPON_START = 0x3A74;
|
_OFFSETA_WEAPON_START = 0x3A74;
|
||||||
_OFFSETA_WEAPON_END = 0x5693;
|
_OFFSETA_WEAPON_END = 0x5693;
|
||||||
|
_OFFSETR_WEAPON_EQUIPPED = 0x11;
|
||||||
_SIZE_WEAPON = 0x24;
|
_SIZE_WEAPON = 0x24;
|
||||||
_OFFSETR_CLASS = 0x0;
|
_OFFSETR_CLASS = 0x0;
|
||||||
_OFFSETR_ID = 0x2;
|
_OFFSETR_ID = 0x2;
|
||||||
|
@ -51,5 +51,5 @@ using System.Windows;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.2.0.0")]
|
[assembly: AssemblyVersion("1.2.1.0")]
|
||||||
[assembly: AssemblyFileVersion("1.2.0.0")]
|
[assembly: AssemblyFileVersion("1.2.1.0")]
|
||||||
|
@ -106,13 +106,13 @@ namespace MHSEC_G
|
|||||||
|
|
||||||
public string equipped
|
public string equipped
|
||||||
{
|
{
|
||||||
get { return Helper.byte_to_uint(_data[_obj_offset + Offsets.OFFSETR_EQUIPPED]).ToString("X2"); }
|
get { return Helper.byte_to_uint(_data[_obj_offset + Offsets.OFFSETR_TALI_EQUIPPED]).ToString("X2"); }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
uint parsed;
|
uint parsed;
|
||||||
if (Helper.parse_hex_string(value, out parsed) && parsed <= 0xFF)
|
if (Helper.parse_hex_string(value, out parsed) && parsed <= 0xFF)
|
||||||
{
|
{
|
||||||
Helper.write_byte(_data, _obj_offset + Offsets.OFFSETR_EQUIPPED, parsed);
|
Helper.write_byte(_data, _obj_offset + Offsets.OFFSETR_TALI_EQUIPPED, parsed);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -35,6 +35,24 @@ namespace MHSEC_G
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string equipped
|
||||||
|
{
|
||||||
|
get { return Helper.byte_to_uint(_data[_obj_offset + Offsets.OFFSETR_WEAPON_EQUIPPED]).ToString("X2"); }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
uint parsed;
|
||||||
|
if (Helper.parse_hex_string(value, out parsed) && parsed <= 0xFF)
|
||||||
|
{
|
||||||
|
Helper.write_byte(_data, _obj_offset + Offsets.OFFSETR_WEAPON_EQUIPPED, parsed);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("Malformed Equipped value - must be at most 0xFF", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
|
OnPropertyChanged(nameof(equipped));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string id
|
public string id
|
||||||
{
|
{
|
||||||
set
|
set
|
||||||
|
Loading…
Reference in New Issue
Block a user