Events reader updates

master
1987kostya 4 years ago
parent 876ee58a29
commit cf46de6746

@ -257,6 +257,7 @@
<Compile Include="Utils\BitDict.cs" />
<Compile Include="Utils\ByteFlag.cs" />
<Compile Include="Utils\ByteWriter.cs" />
<Compile Include="Utils\Checksum.cs" />
<Compile Include="Utils\Helper.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />

@ -175,8 +175,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Banks
writer.WriteInt32(Flags);
writer.WriteInt32(0);
writer.WriteInt32(Name.Length+1);
if (IsCompressed) writer.WriteUnicode(Name);
else writer.WriteAscii(Name);
writer.WriteAscii(Name);
writer.WriteBytes(Data);

@ -23,6 +23,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
public override void Write(ByteWriter Writer)
{
ByteWriter newWriter = new ByteWriter(new MemoryStream());
Logger.Log($"{ObjectType}-{Num}-{ObjectInfo}-{ObjectInfoList}-{Flags}-{OtherFlags}-{Items.Count}-{DefType}-{Identifier}");
newWriter.WriteInt16((short) ObjectType);
newWriter.WriteInt16((short) Num);
newWriter.WriteUInt16((ushort) ObjectInfo);
@ -31,7 +32,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
newWriter.WriteUInt8((sbyte) OtherFlags);
newWriter.WriteUInt8((sbyte) Items.Count);
newWriter.WriteInt8((byte) DefType);
newWriter.WriteInt16((short) Identifier);
newWriter.WriteUInt16((ushort) (Identifier));
foreach (Parameter parameter in Items)
{
parameter.Write(newWriter);
@ -59,11 +60,12 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
OtherFlags = Reader.ReadSByte();
NumberOfParameters = Reader.ReadByte();
DefType = Reader.ReadByte();
Identifier = Reader.ReadInt16();
Identifier = Reader.ReadUInt16();
for (int i = 0; i < NumberOfParameters; i++)
{
var item = new Parameter(Reader);
item.Read();
Items.Add(item);
}
Logger.Log(this);
@ -107,7 +109,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
{
parameter.Write(newWriter);
}
Writer.WriteUInt16((ushort) (newWriter.BaseStream.Position+2));
Writer.WriteUInt16((ushort) (newWriter.BaseStream.Position));
Writer.WriteWriter(newWriter);
}
@ -137,7 +139,6 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
}
Logger.Log(this);
}
public override string ToString()
{
@ -158,6 +159,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
{
var newWriter = new ByteWriter(new MemoryStream());
newWriter.WriteInt16((short) Code);
Logger.Log("Writing PARAMETER: " + Loader.GetType().Name);
Loader.Write(newWriter);
Writer.WriteUInt16((ushort) (newWriter.BaseStream.Position+2));
Writer.WriteWriter(newWriter);
@ -178,6 +180,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
var actualLoader = Helper.LoadParameter(Code,Reader);
Logger.Log("Loading PARAMETER: "+actualLoader.GetType().Name);
this.Loader = actualLoader;
if (Loader!=null)
{

@ -13,6 +13,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Expressions
public int ObjectInfoList;
public object value;
public object floatValue;
public DataLoader Loader;
public Expression(ByteReader reader) : base(reader) { }
public override void Write(ByteWriter Writer)
{
@ -20,56 +21,30 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Expressions
Writer.WriteInt16((short) Num);
if (ObjectType == 0 && Num == 0) return;
var dataWriter = new ByteWriter(new MemoryStream());
switch (ObjectType)
if(ObjectType==Constants.ObjectType.System)
{
case Constants.ObjectType.System:
switch (Num)
Logger.Log("WRITING EXPRESSION "+Num);
if (Loader != null)
{
//Long
case 0:
{
dataWriter.WriteInt32((int) value);
break;
}
//String
case 3:
{
dataWriter.WriteUnicode(((string) value),true);
break;
}
//Double
case 23:
{
dataWriter.WriteSingle((float) value);
dataWriter.WriteSingle((float) value);
break;
}
//GlobalString
case 24:
break;
//GlobalValue
case 50:
break;
default:
{
if ((int)ObjectType >= 2 || (int)ObjectType == 7)
{
dataWriter.WriteInt16((short) ObjectInfo);
dataWriter.WriteInt16((short) ObjectInfoList);
// if self.num in extensionLoaders:
// loader = extensionLoaders[self.num]
// self.loader = self.new(loader, reader)
}
Loader.Write(dataWriter);
dataWriter.WriteInt32(0);
dataWriter.WriteInt16(0);
break;
}
else if ((int) ObjectType >= 2 || (int) ObjectType == 7)
{
Writer.WriteInt16((short) ObjectInfo);
Writer.WriteInt16((short) ObjectInfoList);
if (Num == 16 || Num == 19)
{
Writer.WriteInt32((short) value);
}
}
break;
}
Writer.WriteInt16((short) (dataWriter.Size()+6));
Writer.WriteUInt16((ushort) (dataWriter.Size()));
Writer.WriteWriter(dataWriter);
}
@ -86,21 +61,20 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Expressions
Num = Reader.ReadInt16();
if (ObjectType == 0 & Num == 0) return;
var size = Reader.ReadUInt16();
switch (ObjectType)
if(ObjectType==Constants.ObjectType.System)
{
case Constants.ObjectType.System:
switch (Num)
switch (Num)
{
//Long
case 0:
{
value = Reader.ReadInt32();
Loader = new LongExp(Reader);
break;
}
//String
case 3:
{
value = Reader.ReadWideString();
Loader = new StringExp(Reader);
break;
}
//Double
@ -116,31 +90,113 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Expressions
//GlobalValue
case 50:
break;
case 16:
// value = Reader.ReadInt16();
break;
case 19:
// value = Reader.ReadInt16();
break;
default:
{
if ((int)ObjectType >= 2 || (int)ObjectType == 7)
{
ObjectInfo = Reader.ReadUInt16();
ObjectInfoList = Reader.ReadUInt16();
// if self.num in extensionLoaders:
// loader = extensionLoaders[self.num]
// self.loader = self.new(loader, reader)
if (Num == 16 || Num == 19)
{
value = Reader.ReadInt16();
}
}
break;
}
}
break;
Logger.Log("Reading Expression: "+Num);
Loader?.Read();
}
Reader.Seek(currentPosition+size);
// Reader.Seek(currentPosition+size);
}
public override string ToString()
{
return $"Expression {ObjectType}=={Num}: {value}";
return $"Expression {ObjectType}=={Num}: {((ExpressionLoader)Loader)?.Value}";
}
}
public class ExpressionLoader:DataLoader
{
public object Value;
public ExpressionLoader(ByteReader reader) : base(reader)
{
}
public ExpressionLoader(ChunkList.Chunk chunk) : base(chunk)
{
}
public override void Read()
{
throw new NotImplementedException();
}
public override void Write(ByteWriter Writer)
{
throw new NotImplementedException();
}
public override void Print()
{
throw new NotImplementedException();
}
}
public class StringExp:ExpressionLoader
{
public StringExp(ByteReader reader) : base(reader)
{
}
public StringExp(ChunkList.Chunk chunk) : base(chunk)
{
}
public override void Read()
{
Value = Reader.ReadWideString();
}
public override void Write(ByteWriter Writer)
{
Writer.WriteUnicode((string) Value,true);
}
public override void Print()
{
throw new NotImplementedException();
}
}
public class LongExp:ExpressionLoader
{
public int Val1;
public LongExp(ByteReader reader) : base(reader)
{
}
public LongExp(ChunkList.Chunk chunk) : base(chunk)
{
}
public override void Read()
{
Value = Reader.ReadInt32();
}
public override void Write(ByteWriter Writer)
{
Writer.WriteInt32((int) Value);
}
}
}

@ -5,15 +5,25 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
{
class AlterableValue : Short
{
public int Unk;
public AlterableValue(ByteReader reader) : base(reader) { }
public override void Read()
{
base.Read();
}
public override void Write(ByteWriter Writer)
{
Value = 5;
base.Write(Writer);
}
public override string ToString()
{
return $"AlterableValue{Convert.ToChar(Value).ToString().ToUpper()}";
return $"AlterableValue{Value.ToString().ToUpper()}";
}
}
}

@ -13,14 +13,12 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public override void Read()
{
base.Read();
Button = Reader.ReadByte();
IsDouble = Reader.ReadByte();
}
public override void Write(ByteWriter Writer)
{
base.Write(Writer);
Writer.WriteInt8(Button);
Writer.WriteInt8(IsDouble);

@ -16,15 +16,18 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public override void Read()
{
base.Read();
Comparsion = Reader.ReadInt16();
Items = new List<Expression>();
while (true)
{
var expression = new Expression(Reader);
expression.Read();
Items.Add(expression);
if (expression.ObjectType == 0) break;
if (expression.ObjectType == 0)
{
break;
}
else Items.Add(expression);
Logger.Log("Expression: "+expression.Num);
}
@ -32,12 +35,11 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public override void Write(ByteWriter Writer)
{
base.Write(Writer);
Writer.WriteInt16(Comparsion);
foreach (Expression item in Items)
{
item.Write(Writer);
}
}

@ -1,4 +1,5 @@
using CTFAK.Utils;
using System;
using CTFAK.Utils;
namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
{
@ -16,20 +17,23 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public override void Read()
{
base.Read();
Offset = Reader.Tell() - 24;
Flags = Reader.ReadUInt16();
Id = Reader.ReadUInt16();
Name = Reader.ReadWideString();
Password = Reader.ReadInt32();
Logger.Log("Password: "+Password);
}
public override void Write(ByteWriter Writer)
{
base.Write(Writer);
Writer.WriteUInt16(Flags);
Writer.WriteUInt16(0);
Writer.WriteUInt16(Id);
Writer.WriteAscii(Name);
Writer.WriteUnicode(Name,true);
if(true)//decrypt password
{
Password = Checksum.MakeGroupChecksum("", Name);
}
Writer.WriteInt32(Password);
}

@ -12,5 +12,9 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
Value = (short)Reader.ReadInt32();
}
public override void Write(ByteWriter Writer)
{
Writer.WriteInt32(Value);
}
}
}

@ -13,13 +13,11 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public override void Read()
{
base.Read();
Key = Reader.ReadInt16();
}
public override void Write(ByteWriter Writer)
{
base.Write(Writer);
Writer.WriteInt16(Key);
}

@ -10,10 +10,20 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public ParamObject(ByteReader reader) : base(reader) { }
public override void Read()
{
ObjectInfoList = Reader.ReadInt16();
ObjectInfo = Reader.ReadUInt16();
ObjectType = Reader.ReadInt16();
}
public override void Write(ByteWriter Writer)
{
Writer.WriteInt16((short) ObjectInfoList);
Writer.WriteInt16((short)ObjectInfo);
Writer.WriteInt16((short)ObjectType);
}
public override string ToString()
{
return $"Object {ObjectInfoList} {ObjectInfo} {ObjectType}";

@ -10,6 +10,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public ParameterCommon(ByteReader reader) : base(reader) { }
public override void Write(ByteWriter Writer)
{
throw new NotImplementedException("Unexcepted parameter: "+this.GetType().Name);
}

@ -9,6 +9,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public Remark(ByteReader reader) : base(reader) { }
public override void Read()
{
base.Read();
//TODO
}

@ -15,6 +15,14 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
Flags = Reader.ReadUInt16();
Name = Reader.ReadWideString();
}
public override void Write(ByteWriter Writer)
{
Writer.WriteInt16((short) Handle);
Writer.WriteUInt16((ushort) Flags);
Writer.WriteUnicode(Name);
}
public override string ToString()
{
return $"Sample '{Name}' handle: {Handle}";

@ -15,7 +15,6 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public override void Read()
{
base.Read();
ShootPos = new Position(Reader);
ShootPos.Read();
ObjectInstance = Reader.ReadUInt16();
@ -26,7 +25,6 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public override void Write(ByteWriter Writer)
{
base.Write(Writer);
ShootPos.Write(Writer);
Writer.WriteUInt16(ObjectInstance);
Writer.WriteUInt16(ObjectInfo);

@ -12,6 +12,12 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
Value = Reader.ReadInt16();
}
public override void Write(ByteWriter Writer)
{
Writer.WriteInt16(Value);
}
public override string ToString()
{
return $"{this.GetType().Name} value: {Value}";

@ -13,13 +13,11 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public override void Read()
{
base.Read();
Value = Reader.ReadAscii();
}
public override void Write(ByteWriter Writer)
{
base.Write(Writer);
Writer.WriteAscii(Value);
}

@ -14,6 +14,13 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
Loops = Reader.ReadInt32();
}
public override void Write(ByteWriter Writer)
{
Writer.WriteInt32(Timer);
Writer.WriteInt32(Loops);
}
public override string ToString()
{

@ -13,14 +13,12 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
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);
}

@ -42,7 +42,7 @@ namespace CTFAK.MMFParser.MFA.Loaders
public int EditorDataUnk;
public uint EventDataLen;
public uint CommentDataLen;
private byte[] _cache;
public byte[] _cache;
public bool _ifMFA;
public Events(ByteReader reader) : base(reader)

@ -65,7 +65,7 @@ namespace CTFAK.MMFParser.MFA.Loaders
Writer.AutoWriteUnicode(UnkString);
Writer.WriteInt32(LastViewedX);
Writer.WriteInt32(LastViewedY);
// Writer.WriteInt32(Palette.Count);//WTF HELP
Writer.WriteInt32(Palette.Count);//WTF HELP
foreach (var item in Palette)
{
@ -220,7 +220,8 @@ namespace CTFAK.MMFParser.MFA.Loaders
Events.Read();
Chunks = new ChunkList(Reader);
Chunks.Read();
MFA.emptyEvents = Events;
if(Events.Items.Count==0)MFA.emptyEvents = Events;
MFA.emptyFrameChunks = Chunks;
}
}

@ -5,15 +5,18 @@ using System.Linq;
using CTFAK.MMFParser.EXE;
using CTFAK.MMFParser.EXE.Loaders;
using CTFAK.MMFParser.EXE.Loaders.Events;
using CTFAK.MMFParser.EXE.Loaders.Events.Parameters;
using CTFAK.MMFParser.EXE.Loaders.Objects;
using CTFAK.MMFParser.MFA.Loaders;
using CTFAK.MMFParser.MFA.Loaders.mfachunks;
using CTFAK.Utils;
using Action = CTFAK.MMFParser.EXE.Loaders.Events.Action;
using Animation = CTFAK.MMFParser.MFA.Loaders.mfachunks.Animation;
using AnimationDirection = CTFAK.MMFParser.MFA.Loaders.mfachunks.AnimationDirection;
using Backdrop = CTFAK.MMFParser.MFA.Loaders.mfachunks.Backdrop;
using ChunkList = CTFAK.MMFParser.MFA.Loaders.ChunkList;
using Counter = CTFAK.MMFParser.MFA.Loaders.mfachunks.Counter;
using Events = CTFAK.MMFParser.MFA.Loaders.Events;
using Frame = CTFAK.MMFParser.EXE.Loaders.Frame;
using Layer = CTFAK.MMFParser.MFA.Loaders.Layer;
using Movement = CTFAK.MMFParser.MFA.Loaders.mfachunks.Movement;
@ -43,12 +46,12 @@ namespace CTFAK.MMFParser.Translation
//mfa.Stamp = wtf;
//if (game.Fonts != null) mfa.Fonts = game.Fonts;
//mfa.Sounds = game.Sounds;
//foreach (var item in mfa.Sounds.Items)
//{
// item.IsCompressed = false;
//}
//mfa.Music = game.Music;
// mfa.Sounds = game.Sounds;
// foreach (var item in mfa.Sounds.Items)
// {
// item.IsCompressed = false;
// }
// mfa.Music = game.Music;
mfa.Images.Items = game.Images.Images;
foreach (var key in mfa.Images.Items.Keys)
{
@ -319,7 +322,7 @@ namespace CTFAK.MMFParser.Translation
mfa.Frames.Clear();
foreach (Frame frame in game.Frames)
{
// if (frame.Name != "title") continue;
var newFrame = new MFA.Loaders.Frame(null);
//FrameInfo
newFrame.Handle = game.Frames.IndexOf(frame);
@ -410,54 +413,67 @@ namespace CTFAK.MMFParser.Translation
newFolder.Items = new List<uint>() {(uint) newFrameItem.Handle};
newFrame.Folders.Add(newFolder);
}
//EventInfo
List<DataLoader> quailifers = new List<DataLoader>();
newFrame.Events = MFA.MFA.emptyEvents;
newFrame.Events = new Events((ByteReader) null);//MFA.MFA.emptyEvents;
newFrame.Events.Items = new List<EventGroup>();
newFrame.Events.Objects=new List<EventObject>();
newFrame.Events._cache = MFA.MFA.emptyEvents._cache;
newFrame.Events._ifMFA = true;
newFrame.Events.Version = 1028;
foreach (var item in newFrame.Items)
{
var newObject = new EventObject((ByteReader) null);
newObject.Handle = (uint) item.Handle;
newObject.Name = item.Name ?? "";
newObject.TypeName = "";
newObject.ItemType = (ushort) item.ObjectType;
newObject.ObjectType = 1;
newObject.Flags = 0;
newObject.ItemHandle = (uint) item.Handle;
newObject.InstanceHandle = 0xFFFFFFFF;
newFrame.Events.Objects.Add(newObject);
}
for (int i = 0; i < frame.Events.Quailifers.Length; i++)
if (frame.Name == "Frame 1")
{
var item = frame.Events.Quailifers[i];
if (quailifers.Contains(item))
foreach (var item in newFrame.Items)
{
var newObject = new EventObject((ByteReader) null);
newObject.Handle = (uint) item.Handle;
newObject.Name = item.Name ?? "";
newObject.TypeName = "";
newObject.ItemType = (ushort) item.ObjectType;
newObject.ObjectType = 1;
newObject.Flags = 0;
newObject.ItemHandle = (uint) item.Handle;
newObject.InstanceHandle = 0xFFFFFFFF;
newFrame.Events.Objects.Add(newObject);
}
else
foreach (EventGroup item in frame.Events.Items)
{
var newObject = new EventObject((ByteReader) null);
quailifers.Add(newObject);
var newHandle = 0;
while (true)
foreach (Action itemAction in item.Actions)
{
for (int a=0;a<itemAction.Items.Count;a++)
{
if (itemAction.Items[a].Loader is ExpressionParameter exp)
{
itemAction.Items.Remove(itemAction.Items[a]);
}
else if (itemAction.Items[a].Loader is Sample)
{
itemAction.Items.Remove(itemAction.Items[a]);
}
}
}
}
}
foreach (Condition itemAction in item.Conditions)
{
for (int a=0;a<itemAction.Items.Count;a++)
{
if (itemAction.Items[a].Loader is ExpressionParameter exp)
{
itemAction.Items.Remove(itemAction.Items[a]);
}
else if (itemAction.Items[a].Loader is Sample)
{
itemAction.Items.Remove(itemAction.Items[a]);
}
}
}
newFrame.Events.Items.Add(item);
}
}
newFrame.Chunks = new ChunkList(null);
mfa.Frames.Add(newFrame);

@ -33,8 +33,8 @@ namespace CTFAK
LoadableSettings.FromFile("settings.sav");
//
MFAGenerator.ReadTestMFA();
Environment.Exit(0);
// MFAGenerator.ReadTestMFA();
// Environment.Exit(0);
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
@ -52,7 +52,7 @@ namespace CTFAK
}
if (args.Length > 1)
{
ReadFile(args[1],true,false,false);
ReadFile(args[1],true,false,true);
MFAGenerator.BuildMFA();
Environment.Exit(0);
}

@ -0,0 +1,39 @@
using System;
namespace CTFAK.Utils
{
public static class Checksum
{
public static int WrapSingleChar(int value)
{
value = value & 0xFF;
if (value > 127)
{
value -= 256;
}
return value;
}
public static int MakeGroupChecksum(string pass, string name)
{
var groupWords = @"mqojhm:qskjhdsmkjsmkdjhq\x63clkcdhdlkjhd";
var v4 = 57;
foreach (char c in name)
{
v4 += c^0x7F;
}
var v5 = 0;
foreach (char c in groupWords)
{
v4 += WrapSingleChar(groupWords[v5] + (c & 0xC3)) ^ 0xF3;
v5++;
if (v5 > groupWords.Length) v5 = 0;
}
return v4;
}
}
}

@ -107,50 +107,61 @@ namespace CTFAK.Utils
{
item = new Time(reader);
}
if (code == 50)
{
item = new AlterableValue(reader);
}
if (code == 32)
if (code == 3 || code==4 ||code == 10 || code == 11 || code == 12 || code == 17 || code == 26 || code == 31 ||
code == 43 || code == 57 || code == 58 || code == 60 || code == 61)
{
item = new Click(reader);
item = new Short(reader);
}
if (code == 16)
if (code == 5 || code == 25 || code == 29 || code == 34 || code == 48 || code == 56)
{
item=new Position(reader);
item = new Int(reader);
}
if (code == 18)
if (code == 6 || code == 7 || code == 35 || code == 36)
{
item=new Shoot(reader);
item = new Sample(reader);
}
if (code == 9 || code == 21)
{
item = new Create(reader);
}
if (code == 13)
{
item = new Every(reader);
}
if (code == 14 || code == 44)
{
item = new KeyParameter(reader);
}
if (code == 15||code == 22||code == 23||code == 27||code == 28||code == 45||code == 46||code==52||code==53||code==54||code == 59||code == 62)
{
item = new ExpressionParameter(reader);
}
if (code == 16)
{
item=new Position(reader);
}
if (code == 18)
{
item=new Shoot(reader);
}
if (code == 19)
{
item = new Zone(reader);
}
if (code == 24)
{
item = new Colour(reader);
}
if (code == 19)
if (code == 50)
{
item = new Zone(reader);
item = new AlterableValue(reader);
}
if (code == 14 || code == 44)
if (code == 32)
{
item = new KeyParameter(reader);
item = new Click(reader);
}
if (code == 38)
@ -178,26 +189,13 @@ namespace CTFAK.Utils
item = new TwoShorts(reader);
}
if (code == 6 || code == 7 || code == 35 || code == 36)
{
item = new Sample(reader);
}
if (code == 3 || code == 10 || code == 11 || code == 12 || code == 17 || code == 26 || code == 31 ||
code == 43 || code == 57 || code == 58 || code == 60 || code == 61)
{
item = new Short(reader);
}
if (code == 15||code == 22||code == 23||code == 27||code == 28||code == 45||code == 46||code == 59||code == 62)
{
item = new ExpressionParameter(reader);
}
if (code == 5 || code == 25 || code == 29 || code == 34 || code == 48 || code == 56)
{
item = new Int(reader);
}
return item;
}

@ -32,7 +32,7 @@ namespace CTFAK.Utils
Console.WriteLine(Helper.GetCurrentTime()+text);
Console.ForegroundColor = ConsoleColor.White;
}
//if(logToConsole) MainConsole.Message(text);
if(logToConsole) MainConsole.Message(text);

Loading…
Cancel
Save