1
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-12-10 12:11:20 +04:00
Files
parkan-playground/ParkanPlayground/Program.cs

65 lines
2.4 KiB
C#
Raw Normal View History

2024-11-14 12:04:05 +03:00
using System.Buffers.Binary;
2024-11-15 19:06:44 +03:00
using System.Text;
using NResLib;
2025-02-25 01:51:28 +03:00
using ParkanPlayground;
2024-11-14 12:04:05 +03:00
2025-02-26 04:27:16 +03:00
// var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS\\default.scr";
// var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS\\scr_pl_1.scr";
// var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS\\scream.scr";
var path = "C:\\Program Files (x86)\\Nikita\\Iron Strategy\\MISSIONS\\SCRIPTS\\scream1.scr";
2024-11-14 12:04:05 +03:00
2025-02-25 01:51:28 +03:00
using var fs = new FileStream(path, FileMode.Open);
2024-11-14 12:04:05 +03:00
2025-02-25 01:51:28 +03:00
// тут всегда число 59 (0x3b) - это число известных игре скриптов
var magic = fs.ReadInt32LittleEndian();
Console.WriteLine($"Count: {magic}");
var entryCount = fs.ReadInt32LittleEndian();
Console.WriteLine($"EntryCount: {entryCount}");
for (var i = 0; i < entryCount; i++)
2024-11-14 12:04:05 +03:00
{
2025-02-25 01:51:28 +03:00
Console.WriteLine($"Entry: {i}");
var str = fs.ReadLengthPrefixedString();
Console.WriteLine($"\tStr: {str}");
// тут игра дополнительно вычитывает ещё 1 байт, видимо как \0 для char*
fs.ReadByte();
var index = fs.ReadInt32LittleEndian();
Console.WriteLine($"\tIndex: {index}");
var innerCount = fs.ReadInt32LittleEndian();
Console.WriteLine($"\tInnerCount: {innerCount}");
for (var i1 = 0; i1 < innerCount; i1++)
{
2025-02-26 04:27:16 +03:00
var scriptIndex = fs.ReadInt32LittleEndian();
2025-02-25 01:51:28 +03:00
var unkInner2 = fs.ReadInt32LittleEndian();
var unkInner3 = fs.ReadInt32LittleEndian();
var unkInner4 = fs.ReadInt32LittleEndian();
var unkInner5 = fs.ReadInt32LittleEndian();
2025-02-26 04:27:16 +03:00
Console.WriteLine($"\t\tScriptIndex: {scriptIndex}");
2025-02-25 01:51:28 +03:00
Console.WriteLine($"\t\tUnkInner2: {unkInner2}");
Console.WriteLine($"\t\tUnkInner3: {unkInner3}");
Console.WriteLine($"\t\tUnkInner4: {unkInner4}");
Console.WriteLine($"\t\tUnkInner5: {unkInner5}");
2025-02-26 04:27:16 +03:00
var scriptArgumentsCount = fs.ReadInt32LittleEndian();
Console.WriteLine($"\t\tScript Arguments Count: {scriptArgumentsCount}");
2025-02-25 01:51:28 +03:00
2025-02-26 04:27:16 +03:00
for (var i2 = 0; i2 < scriptArgumentsCount; i2++)
2025-02-25 01:51:28 +03:00
{
2025-02-26 04:27:16 +03:00
var scriptArgument = fs.ReadInt32LittleEndian();
Console.WriteLine($"\t\t\t{scriptArgument}");
2025-02-25 01:51:28 +03:00
}
2024-11-14 12:04:05 +03:00
2025-02-25 01:51:28 +03:00
var unkInner7 = fs.ReadInt32LittleEndian();
Console.WriteLine($"\t\tUnkInner7 {unkInner7}");
Console.WriteLine("---");
}
}