Просмотр исходного кода

refactor(lib/ga): 重构 GA 的处理过程

dzp 1 год назад
Родитель
Сommit
fdc2879fc9
2 измененных файлов с 23 добавлено и 12 удалено
  1. 0 9
      mud/pkuxkx/plugins/shortcut.tin
  2. 23 3
      plugins/lib/ga.tin

+ 0 - 9
mud/pkuxkx/plugins/shortcut.tin

@@ -129,11 +129,6 @@ load-lib sync;
 
 #gag {向红豆打听有关『%*』的消息。$E};
 
-#action {^请直接输入感恩之语:$TELNET[GA]$} {
-    xtt.DisableAllCommands false;
-    #line oneshot #alias {^%*{|ID=xiang}$} {#send %%0; xtt.UndoDisableAllCommands} {1.001};
-};
-
 #action {^播放短视频%*……$E} {
     #class short-video open;
     #var short-video.hp {$char.HPSummarize.Echo};
@@ -162,10 +157,6 @@ load-lib sync;
 #alias kk {look %0; lookin %0; follow %0; killall %0};
 #action {^你瞬间感到了危险临近,奸细就在附近!$E} {killall} {9.500};
 
-#action {^一支铜雀轻轻地落在你的面前,你可以选择下列任务系列中一组:$E} {
-    xtt.DisableAllCommand;
-} {9.999};
-
 #action {^你一顿棍棒乱揍,看来杀手有点怕你了。$E}                   {halt;quan} {9.500};
 #action {^( 蒙面杀手似乎十分疲惫,看来需要好好休息了。)$E}          {halt;ask killer about 认输} {9.999};
 #action {^( 蒙面杀手已经陷入半昏迷状态,随时都可能摔倒晕去。)$E}    {halt;ask killer about 认输} {9.999};

+ 23 - 3
plugins/lib/ga.tin

@@ -38,23 +38,43 @@ event.Define {GA} {有参} {$MODULE} {接收到 IAC GA 时发射本事件,参
     #list gXttPipeLine add {$cmd};
 };
 
+/*
+   这里主要目的是处理非标 GA 并努力维持命令和 GA 的对应关系。
+   如果命令和 GA 不对应,就要在这里调整。
+   主要是记录那些一个命令可能会导致多个 GA 的情形,
+   以及 GA 前的提示文本非标的情形。
+*/
 #alias {ga.received-prompt} {
     #local line     {$gTTEventArgv[1]};
+
     #if { "$line" == "== 未完继续 %*== (%*继续下一页%*)%*" } {
         #line gag; #cr; #return;
     };
+
+    #if { "$line" != "> %*" } {
+        #local cmd {$gXttPipeLine[1]};
+        #list gXttPipeLine delete {1};
+        #if { &gXttPipeLine[] == 0 } {
+            xtt.DisableAllCommands false;
+            #line oneshot #alias {^%*{|ID=lib/ga}$} {
+                #list gXttPipeLine add {{%%0}};
+                #send %%0;
+                xtt.UndoDisableAllCommands;
+            } {1.000};
+        };
+    };
 };
 
 #action {^> {$TELNET[GA]|$TELNET[EOR]}$} {
-    #local line {%0};
-    #replace line {{$TELNET[GA]|$TELNET[EOR]}$} {};
-
     #local cmd {};
 
     #if { &gXttPipeLine[] > 0 } {
         #local cmd {$gXttPipeLine[1]};
         #list gXttPipeLine delete {1};
     };
+    #else {
+        errLog 遭遇意料之外的 GA,请联系开发者。;
+    };
 
     event.Emit GA {} {$cmd};