Esempio n. 1
0
 private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
 {
     try {
         maine_actor_data a_data = save_file.actors[listBox2.SelectedIndex];
         qx_text.Text = "QX: " + a_data.q_x.ToString();
         qy_text.Text = "QY: " + a_data.q_y.ToString();
         qz_text.Text = "QZ: " + a_data.q_z.ToString();
         qw_text.Text = "QW: " + a_data.q_w.ToString();
         x_text.Text  = "X: " + a_data.x.ToString();
         y_text.Text  = "Y: " + a_data.y.ToString();
         z_text.Text  = "Z: " + a_data.z.ToString();
         hp_text.Text = "HP: " + a_data.hp.ToString();
     } catch {
     }
 }
Esempio n. 2
0
        public void open(string folder_path)
        {
            string save_path  = folder_path + "\\World.sav";
            string save_image = folder_path + "\\SaveGameScreenshot.png";

            if (File.Exists(save_image))
            {
                screenshot = Image.FromFile(save_image);
            }

            if (File.Exists(save_path))
            {
                actors = new List <maine_actor_data>();

                file_stream   = new FileStream(save_path, FileMode.Open);
                binary_reader = new BinaryReader(file_stream);
                binary_writer = new BinaryWriter(file_stream);

                binary_reader.BaseStream.Position = 0x10;

                int item_count = binary_reader.ReadInt32();

                for (int i = 0; i < item_count; i++)
                {
                    int data_size   = binary_reader.ReadInt32();
                    int next_offset = (int)binary_reader.BaseStream.Position + data_size - 4;

                    binary_reader.BaseStream.Position += 0x14;
                    int    bp_size = binary_reader.ReadInt32();
                    string bp      = Encoding.ASCII.GetString(binary_reader.ReadBytes(bp_size - 1));

                    if (bp == "/Game/Blueprints/Global/BP_SurvivalGameState.BP_SurvivalGameState_C")
                    {
                        binary_reader.BaseStream.Position += 0x68;
                        int actor_count = binary_reader.ReadInt32();

                        for (int ac = 0; ac < actor_count; ac++)
                        {
                            maine_actor_data a_data = new maine_actor_data();

                            a_data.file_offset = (int)binary_reader.BaseStream.Position;

                            int size = binary_reader.ReadInt32();
                            int next_actor_offset = (int)binary_reader.BaseStream.Position + size - 4;

                            binary_reader.BaseStream.Position += 0xC;

                            int    actor_type_len = binary_reader.ReadInt32();
                            string actor_type_str = Encoding.ASCII.GetString(binary_reader.ReadBytes(actor_type_len - 1));

                            binary_reader.BaseStream.Position += 1;

                            int    actor_str_size = binary_reader.ReadInt32();
                            string actor_str      = Encoding.ASCII.GetString(binary_reader.ReadBytes(actor_str_size - 1));

                            binary_reader.BaseStream.Position += 1;

                            a_data.q_x = binary_reader.ReadSingle();
                            a_data.q_y = binary_reader.ReadSingle();
                            a_data.q_z = binary_reader.ReadSingle();
                            a_data.q_w = binary_reader.ReadSingle();

                            a_data.position_offset = (int)binary_reader.BaseStream.Position;

                            a_data.x = binary_reader.ReadSingle();
                            a_data.y = binary_reader.ReadSingle();
                            a_data.z = binary_reader.ReadSingle();

                            float dummy = binary_reader.ReadSingle();
                            dummy = binary_reader.ReadSingle();
                            dummy = binary_reader.ReadSingle();
                            dummy = binary_reader.ReadSingle();
                            dummy = binary_reader.ReadSingle();
                            dummy = binary_reader.ReadSingle();
                            dummy = binary_reader.ReadSingle();

                            int some_int_0 = binary_reader.ReadInt32();
                            int some_int_1 = binary_reader.ReadInt32();

                            if (some_int_1 == 0)
                            {
                                int actor_property_count = binary_reader.ReadInt32();

                                for (int apc = 0; apc < actor_property_count; apc++)
                                {
                                    int ap_size = binary_reader.ReadInt32();
                                    int next_ap = (int)binary_reader.BaseStream.Position + ap_size - 4;

                                    binary_reader.BaseStream.Position += 0xC;
                                    int    ap_str_size = binary_reader.ReadInt32();
                                    string ap_str      = Encoding.ASCII.GetString(binary_reader.ReadBytes(ap_str_size - 1));

                                    if (ap_str == "/Script/Maine.HealthLODComponent")
                                    {
                                        binary_reader.BaseStream.Position += 1;
                                        a_data.hp_offset = (int)binary_reader.BaseStream.Position;
                                        a_data.hp        = binary_reader.ReadSingle();
                                    }

                                    binary_reader.BaseStream.Position = next_ap;
                                }
                            }

                            binary_reader.BaseStream.Position = next_actor_offset;

                            a_data.bp_name = actor_str;

                            actors.Add(a_data);
                        }

                        break;
                    }

                    binary_reader.BaseStream.Position = next_offset;
                }
            }
        }