diff --git a/CTFAK/CTFAK.csproj b/CTFAK/CTFAK.csproj
index 9c978b3..6e71e15 100644
--- a/CTFAK/CTFAK.csproj
+++ b/CTFAK/CTFAK.csproj
@@ -163,8 +163,13 @@
+
+
+
+
+
diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Group.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Group.cs
new file mode 100644
index 0000000..a3b6e37
--- /dev/null
+++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Group.cs
@@ -0,0 +1,41 @@
+using CTFAK.Utils;
+
+namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
+{
+ public class Group:ParameterCommon
+ {
+ public long Offset;
+ public ushort Flags;
+ public ushort Id;
+ public string Name;
+ public int Password;
+
+ public Group(ByteReader reader) : base(reader)
+ {
+ }
+
+ public override void Read()
+ {
+ base.Read();
+ Offset = Reader.Tell() - 24;
+ Flags = Reader.ReadUInt16();
+ Id = Reader.ReadUInt16();
+ Name = Reader.ReadWideString();
+ Password = Reader.ReadInt32();
+ }
+
+ public override void Write(ByteWriter Writer)
+ {
+ base.Write(Writer);
+ Writer.WriteUInt16(Flags);
+ Writer.WriteUInt16(Id);
+ Writer.WriteAscii(Name);
+ Writer.WriteInt32(Password);
+ }
+
+ public override string ToString()
+ {
+ return $"Group: {Name}";
+ }
+ }
+}
\ No newline at end of file
diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/GroupPointer.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/GroupPointer.cs
new file mode 100644
index 0000000..b7dcacc
--- /dev/null
+++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/GroupPointer.cs
@@ -0,0 +1,29 @@
+using CTFAK.Utils;
+
+namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
+{
+ public class GroupPointer:ParameterCommon
+ {
+ public int Pointer;
+ public short Id;
+
+ public GroupPointer(ByteReader reader) : base(reader)
+ {
+ }
+
+ public override void Read()
+ {
+ base.Read();
+ Pointer = Reader.ReadInt32();
+ Id = Reader.ReadInt16();
+
+ }
+
+ public override void Write(ByteWriter Writer)
+ {
+ base.Write(Writer);
+ Writer.WriteInt32(Pointer);
+ Writer.WriteInt32(Id);
+ }
+ }
+}
\ No newline at end of file
diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/StringParam.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/StringParam.cs
new file mode 100644
index 0000000..059c54b
--- /dev/null
+++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/StringParam.cs
@@ -0,0 +1,31 @@
+using CTFAK.Utils;
+
+namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
+{
+ public class StringParam:ParameterCommon
+ {
+ public string Value;
+
+ public StringParam(ByteReader reader) : base(reader)
+ {
+
+ }
+
+ public override void Read()
+ {
+ base.Read();
+ Value = Reader.ReadAscii();
+ }
+
+ public override void Write(ByteWriter Writer)
+ {
+ base.Write(Writer);
+ Writer.WriteAscii(Value);
+ }
+
+ public override string ToString()
+ {
+ return $"String: {Value}";
+ }
+ }
+}
\ No newline at end of file
diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/TwoShorts.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/TwoShorts.cs
new file mode 100644
index 0000000..9bd70ca
--- /dev/null
+++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/TwoShorts.cs
@@ -0,0 +1,33 @@
+using CTFAK.Utils;
+
+namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
+{
+ public class TwoShorts:ParameterCommon
+ {
+ public short Value1;
+ public short Value2;
+
+ public TwoShorts(ByteReader reader) : base(reader)
+ {
+ }
+
+ public override void Read()
+ {
+ base.Read();
+ Value1 = Reader.ReadInt16();
+ Value2 = Reader.ReadInt16();
+ }
+
+ public override void Write(ByteWriter Writer)
+ {
+ base.Write(Writer);
+ Writer.WriteInt16(Value1);
+ Writer.WriteInt16(Value2);
+ }
+
+ public override string ToString()
+ {
+ return $"Shorts: {Value1} and {Value2}";
+ }
+ }
+}
\ No newline at end of file
diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Zone.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Zone.cs
new file mode 100644
index 0000000..6acef0d
--- /dev/null
+++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Zone.cs
@@ -0,0 +1,39 @@
+using CTFAK.Utils;
+
+namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
+{
+ public class Zone:ParameterCommon
+ {
+ public short X1;
+ public short Y1;
+ public short X2;
+ public short Y2;
+
+ public Zone(ByteReader reader) : base(reader)
+ {
+ }
+
+ public override void Read()
+ {
+ base.Read();
+ X1 = Reader.ReadInt16();
+ Y1 = Reader.ReadInt16();
+ X2 = Reader.ReadInt16();
+ Y2 = Reader.ReadInt16();
+ }
+
+ public override void Write(ByteWriter Writer)
+ {
+ base.Write(Writer);
+ Writer.WriteInt16(X1);
+ Writer.WriteInt16(Y1);
+ Writer.WriteInt16(X2);
+ Writer.WriteInt16(Y2);
+ }
+
+ public override string ToString()
+ {
+ return $"Zone ({X1}x{Y1})x({X2}x{Y2})";
+ }
+ }
+}
\ No newline at end of file
diff --git a/CTFAK/Utils/Helper.cs b/CTFAK/Utils/Helper.cs
index faafa2b..c784ca2 100644
--- a/CTFAK/Utils/Helper.cs
+++ b/CTFAK/Utils/Helper.cs
@@ -133,12 +133,51 @@ namespace CTFAK.Utils
item = new Create(reader);
}
+ if (code == 13)
+ {
+ item = new Every(reader);
+ }
+
+ if (code == 24)
+ {
+ item = new Colour(reader);
+ }
+
+ if (code == 19)
+ {
+ item = new Zone(reader);
+ }
+
if (code == 14 || code == 44)
{
item = new KeyParameter(reader);
}
-
+ if (code == 38)
+ {
+ item = new CTFAK.MMFParser.EXE.Loaders.Events.Parameters.Group(reader);
+ }
+
+ if (code == 39)
+ {
+ item = new GroupPointer(reader);
+ }
+
+ if (code == 49)
+ {
+ item = new GlobalValue(reader);
+ }
+
+ if (code == 41 || code == 64)
+ {
+ item = new StringParam(reader);
+ }
+
+ if (code == 47 || code == 51)
+ {
+ item = new TwoShorts(reader);
+ }
+
if (code == 6 || code == 7 || code == 35 || code == 36)
{
item = new Sample(reader);