@@ -28,7 +28,7 @@ namespace DemoScanner.DG
2828 public static class DemoScanner
2929 {
3030 public const string PROGRAMNAME = "Unreal Demo Scanner";
31- public const string PROGRAMVERSION = "1.75.2b ";
31+ public const string PROGRAMVERSION = "1.75.4b ";
3232
3333 public static string FoundNewVersion = "";
3434
@@ -536,7 +536,7 @@ public PrimHistory(float prim, float att)
536536
537537 public struct CmdHistory
538538 {
539- public int frameNextNum ;
539+ public int cmdFrameId ;
540540 public float cmdTime;
541541 public string cmdStr;
542542 // 0 - user, 1 - server, 2 - by scanner
@@ -1492,30 +1492,19 @@ public static void CheckConsoleCommand(string s2, bool isstuff = false)
14921492 if (LastStuffCmdCommand != "" && s == LastStuffCmdCommand.Trim().TrimBad())
14931493 {
14941494 LastStuffCmdCommand = "";
1495- CommandHistory.Add(new CmdHistory { frameNextNum = CurrentFrameId, cmdTime = LastKnowRealTime, cmdStr = s, cmdSource = 1 });
1496- if (CommandHistory.Count > 1)
1497- {
1498- var tmpCmd = CommandHistory[CommandHistory.Count - 2];
1499- tmpCmd.frameNextNum = CurrentFrameId;
1500- CommandHistory[CommandHistory.Count - 2] = tmpCmd;
1501- }
1495+ CommandHistory.Add(new CmdHistory { cmdFrameId = CurrentFrameId, cmdTime = LastKnowRealTime, cmdStr = s, cmdSource = 1 });
15021496 return;
15031497 }
15041498
15051499 LastStuffCmdCommand = "";
1500+
15061501 if (isstuff)
15071502 {
1508- CommandHistory.Add(new CmdHistory { frameNextNum = CurrentFrameId, cmdTime = LastKnowRealTime, cmdStr = s, cmdSource = 2 });
1503+ CommandHistory.Add(new CmdHistory { cmdFrameId = CurrentFrameId, cmdTime = LastKnowRealTime, cmdStr = s, cmdSource = 2 });
15091504 }
15101505 else
15111506 {
1512- CommandHistory.Add(new CmdHistory { frameNextNum = CurrentFrameId, cmdTime = LastKnowRealTime, cmdStr = s, cmdSource = 0 });
1513- }
1514- if (CommandHistory.Count > 1)
1515- {
1516- var tmpCmd = CommandHistory[CommandHistory.Count - 2];
1517- tmpCmd.frameNextNum = CurrentFrameId;
1518- CommandHistory[CommandHistory.Count - 2] = tmpCmd;
1507+ CommandHistory.Add(new CmdHistory { cmdFrameId = CurrentFrameId, cmdTime = LastKnowRealTime, cmdStr = s, cmdSource = 0 });
15191508 }
15201509
15211510 if (sLower == "-showscores")
@@ -8951,65 +8940,83 @@ следующий кадр изменение и 5 кадров нет движ
89518940 List<string> CommandsDump = new List<string>();
89528941 CommandsDump.Add("This file created by Unreal Demo Scanner\n\n");
89538942
8954- int prevFrameNum = 0 ;
8955- float prevCmdTime = 0.0f;
8956- foreach (var cmd in CommandHistory)
8943+ //CommandHistory.Add(CommandHistory[CommandHistory.Count - 1]) ;
8944+
8945+ for (int i = 1; i < CommandHistory.Count; i++ )
89578946 {
8958- string timeCmdStr = "[ERROR]";
8947+ var cur_cmd = CommandHistory[i];
8948+ var prev_cmd = CommandHistory[i - 1];
89598949
8960- if (prevFrameNum == 0)
8961- {
8962- prevFrameNum = cmd.frameNextNum;
8963- prevCmdTime = cmd.cmdTime;
8964- }
8950+ string timeCmdStr = "[ERROR]";
89658951
89668952 try
89678953 {
8968- var t = TimeSpan.FromSeconds(cmd .cmdTime);
8954+ var t = TimeSpan.FromSeconds(cur_cmd .cmdTime);
89698955 timeCmdStr = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms", t.Hours,
89708956 t.Minutes, t.Seconds, t.Milliseconds);
89718957 }
89728958 catch
89738959 { }
89748960
8975- if (abs(prevCmdTime - cmd.cmdTime) > 1.0f)
8961+ bool foundIllegal = false;
8962+ string combinedCmdStr = prev_cmd.cmdStr;
8963+
8964+ if (cur_cmd.cmdSource == 0 && cur_cmd.cmdStr.IndexOf(';') > -1)
8965+ {
8966+ foundIllegal = true;
8967+ }
8968+
8969+ while (i < CommandHistory.Count && prev_cmd.cmdFrameId == cur_cmd.cmdFrameId
8970+ && prev_cmd.cmdSource == cur_cmd.cmdSource)
8971+ {
8972+ if (cur_cmd.cmdSource == 0 && cur_cmd.cmdStr.IndexOf(';') > -1)
8973+ {
8974+ foundIllegal = true;
8975+ }
8976+
8977+ combinedCmdStr += ";" + cur_cmd.cmdStr;
8978+
8979+ i++;
8980+ if (i < CommandHistory.Count)
8981+ {
8982+ prev_cmd = cur_cmd;
8983+ cur_cmd = CommandHistory[i];
8984+ }
8985+ }
8986+
8987+ int waitTime = cur_cmd.cmdFrameId - prev_cmd.cmdFrameId;
8988+
8989+ if (Math.Abs(prev_cmd.cmdTime - cur_cmd.cmdTime) < 1.0f)
89768990 {
89778991 if (IsRussia)
89788992 {
8979- CommandsDump.Add(timeCmdStr + " [НОМЕР КАДРА: " + cmd.frameNextNum + "] : " + cmd.cmdStr + ";wait" + (cmd.frameNextNum - prevFrameNum) + ";" + "(" +
8980- cmd.cmdTime + ")" + (cmd.cmdSource == 1 ?
8981- " --> ВЫПОЛНЕНО СЕРВЕРОМ" : cmd.cmdSource == 2 ? " --> ВЫПОЛНЕНО ЧЕРЕЗ STUFFTEXT" : ""));
8993+ CommandsDump.Add(timeCmdStr + " [НОМЕР КАДРА: " + prev_cmd.cmdFrameId + "] : " + combinedCmdStr + ";wait" + waitTime + ";" + (prev_cmd.cmdSource == 1 ?
8994+ " --> ВЫПОЛНЕНО СЕРВЕРОМ" : prev_cmd.cmdSource == 2 ? " --> ВЫПОЛНЕНО ЧЕРЕЗ STUFFTEXT" : ""));
89828995 }
89838996 else
89848997 {
8985- CommandsDump.Add(timeCmdStr + " [FRAME NUMBER: " + cmd.frameNextNum + "] : " + cmd.cmdStr + ";wait" + (cmd.frameNextNum - prevFrameNum) + ";" + "(" +
8986- cmd.cmdTime + ")" + (cmd.cmdSource == 1 ?
8987- " --> EXECUTED BY SERVER" : cmd.cmdSource == 2 ? " --> EXECUTED BY SERVER" : ""));
8998+ CommandsDump.Add(timeCmdStr + " [FRAME NUMBER: " + prev_cmd.cmdFrameId + "] : " + combinedCmdStr + ";wait" + waitTime + ";" + (prev_cmd.cmdSource == 1 ?
8999+ " --> EXECUTED BY SERVER" : prev_cmd.cmdSource == 2 ? " --> EXECUTED BY STUFFTEXT" : ""));
89889000 }
89899001 }
89909002 else
89919003 {
89929004 if (IsRussia)
89939005 {
8994- CommandsDump.Add(timeCmdStr + " [НОМЕР КАДРА: " + cmd.frameNextNum + "] : " + cmd.cmdStr + ";" + "(" +
8995- cmd.cmdTime + ")" + (cmd.cmdSource == 1 ?
8996- " --> ВЫПОЛНЕНО СЕРВЕРОМ" : cmd.cmdSource == 2 ? " --> ВЫПОЛНЕНО ЧЕРЕЗ STUFFTEXT" : ""));
9006+ CommandsDump.Add(timeCmdStr + " [НОМЕР КАДРА: " + prev_cmd.cmdFrameId + "] : " + combinedCmdStr + ";" + (prev_cmd.cmdSource == 1 ?
9007+ " --> ВЫПОЛНЕНО СЕРВЕРОМ" : prev_cmd.cmdSource == 2 ? " --> ВЫПОЛНЕНО ЧЕРЕЗ STUFFTEXT" : ""));
89979008 }
89989009 else
89999010 {
9000- CommandsDump.Add(timeCmdStr + " [FRAME NUMBER: " + cmd.frameNextNum + "] : " + cmd.cmdStr + ";" + "(" +
9001- cmd.cmdTime + ")" + (cmd.cmdSource == 1 ?
9002- " --> EXECUTED BY SERVER" : cmd.cmdSource == 2 ? " --> EXECUTED BY SERVER" : ""));
9011+ CommandsDump.Add(timeCmdStr + " [FRAME NUMBER: " + prev_cmd.cmdFrameId + "] : " + combinedCmdStr + ";" + (prev_cmd.cmdSource == 1 ?
9012+ " --> EXECUTED BY SERVER" : prev_cmd.cmdSource == 2 ? " --> EXECUTED BY STUFFTEXT" : ""));
90039013 }
90049014 }
90059015
9006- if (cmd.cmdSource == 0 && cmd.cmdStr.IndexOf(';') > -1 )
9016+ if (foundIllegal )
90079017 {
90089018 CommandsDump[CommandsDump.Count - 1] += " [ILLEGAL!!]";
90099019 }
9010-
9011- prevCmdTime = cmd.cmdTime;
9012- prevFrameNum = cmd.frameNextNum;
90139020 }
90149021
90159022 var textdatapath = CurrentDemoFilePath.Remove(CurrentDemoFilePath.Length - 4) +
0 commit comments