瀏覽代碼

feat(pkuxkx): 北侠自动签约

dzp 2 年之前
父節點
當前提交
d157ec75ad
共有 2 個文件被更改,包括 92 次插入50 次删除
  1. 10 1
      ids/DEFAULT
  2. 82 49
      mud/pkuxkx/plugins/basic/login.tin

+ 10 - 1
ids/DEFAULT

@@ -6,7 +6,7 @@
           用户配置文件的模版请参见 ids/EXAMPLE
 版权声明:本文件属于 PaoTin++ 的一部分
 ===========
-PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
+PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
 ===========
 */
@@ -49,6 +49,15 @@ mudlib.Set {pkuxkx};
 #nop 是否开启鼠标支持,默认开启;
 #var user[MOUSE]            true;
 
+#nop 是否开启北侠自动签约功能,默认关闭;
+#nop ===============;
+#nop 【重要提醒】作者声明:
+#nop 请永远都不要开启本选项,以避免错过阅读并人工签署北侠玩家要约的机会。
+#nop 如果开启,则视同你已同意北侠任何过去、现在、将来提出的玩家要约,而不论你认为它是否合理。
+#nop 同时,开启本选项意味着你同意放弃向 PaoTin++ 追溯连带责任的权利。
+#nop ===============;
+#var user[AGREE]            false;
+
 #nop 默认的食物和饮料;
 #var char[favorite][food]   {gan liang};
 #var char[favorite][water]  {niurou tang};

+ 82 - 49
mud/pkuxkx/plugins/basic/login.tin

@@ -1,6 +1,3 @@
-#class login kill;
-#class login open;
-
 #var login[session]     {};
 #var login[user]        {};
 #var login[autoexec]    {};
@@ -13,64 +10,100 @@
 };
 
 #event {SESSION CONNECTED} {
-    #if { "%0" == "$login[session][name]" } {
-        #class auto-login kill;
-        #class auto-login open;
+    #if { "%0" !== "$login[session][name]" } {
+        #return;
+    };
 
-        #nop 如果角色设置了 GMCP 支持,则积极回应服务器的 GMCP 协商请求。;
-        #if { "$user[GMCP]" == "true" } {
-            load-lib gmcp;
-            gmcp.Enable;
-        };
+    login.auto-login;
+};
 
-        #if { "$session[UTF8]" == "true" } {
-            #config {charset} {UTF-8};
-        };
-        #else {
-            #config {charset} {GBK1TOUTF8};
-        };
+#alias {login.auto-login} {
+    #class login.auto-login open;
 
-        #line oneshot #action {^Input 1 for GBK, 2 for UTF8, 3 for BIG5$} {
-            #nop;
-        };
+    #nop 如果角色设置了 GMCP 支持,则积极回应服务器的 GMCP 协商请求。;
+    #if { "$user[GMCP]" == "true" } {
+        load-lib gmcp;
+        gmcp.Enable;
+    };
 
-        #line oneshot #action {^您的英文名字(要注册新人物请输入new。):$} {
-            #if { "$session[UTF8]" == "false" } {
-                #delay 0 #send {2};
-            };
+    #if { "$session[UTF8]" == "true" } {
+        #config {charset} {UTF-8};
+    };
+    #else {
+        #config {charset} {GBK1TOUTF8};
+    };
 
-            #config {charset} {UTF-8};
+    #line oneshot #action {^北大侠客行已经执行了%*。$} {
+        #local uptime {@time.ParseDoC{%%1}};
+    };
 
-            xtt.Answer {$login[user][id]};
-        };
+    #line oneshot #action {^Input 1 for GBK, 2 for UTF8, 3 for BIG5$} {
+        #nop;
+    };
 
-        #line oneshot #action {^此ID档案已存在,请输入密码:$} {
-            xtt.Answer {$login[user][passwd]};
-            #delay 1 {look};
+    #line oneshot #action {^您的英文名字(要注册新人物请输入new。):$} {
+        #if { "$session[UTF8]" == "false" } {
+            #delay 0 #send {2};
         };
 
-        #line oneshot #action {^您要将另一个连线中的相同人物赶出去,取而代之吗?(y/n)$} {
-            xtt.Answer y;
+        #config {charset} {UTF-8};
+
+        xtt.Answer {$login[user][id]};
+    };
+
+    #line oneshot #action {^此ID档案已存在,请输入密码:$} {
+        xtt.Answer {$login[user][passwd]};
+        #delay {login.check} {look} 1;
+    };
+
+    #line oneshot #action {^您要将另一个连线中的相同人物赶出去,取而代之吗?(y/n)$} {
+        xtt.Answer y;
+    };
+
+    #line oneshot #action {^%s欢迎来到北大侠客行!%s$} {
+        #delay {login.auto-login.success} {login.auto-login.success 重新登录} 0;
+    };
+
+    #line oneshot #action {^%s目前权限:(player)%s$} {
+        #delay {login.auto-login.success} {login.auto-login.success} 1;
+    };
+
+    #line oneshot #action {^如果同意请用agree %w命令签署确认这些条款。$} {
+        #if { @isTrue{$user[AGREE]} } {
+            #send {agree %%1};
         };
+        #else {
+            #undelay {login.auto-login.success};
+            #undelay {login.check};
+            warnLog 请在十秒内输入 agree %%1 命令以继续游戏。;
+            #delay {login.agree.fail} {#zap} 10;
+        };
+    };
 
-        #line oneshot #action {^%s{欢迎来到北大侠客行!|目前权限:\(player\)|重新连线完毕。}%s$} {
-            #delay 0 {
-                #showme 登录成功。;
-                #local handler $login[autoexec];
-                #class auto-login kill;
-                #class login kill;
-                $handler;
-                #if { "$user[GMCP]" == "true" } {
-                    #delay 1 {
-                        load-module gmcp;
-                        gmcp.pkuxkx.Enable;
-                    };
-                };
+    #line oneshot #action {^感谢您同意北侠玩家要约,现在可以正常进入游戏。$} {
+        #undelay {login.agree.fail};
+    };
+
+    #line oneshot #action {^重新连线完毕。$} {
+        #delay {login.auto-login.success} {login.auto-login.success 断线重连} 0;
+    };
+
+    #alias {login.auto-login.success} {
+        #local type {%%1};
+
+        #showme 登录成功。;
+        #local handler $login[autoexec];
+        #class login.auto-login kill;
+        #undelay login.auto-login.success;
+        kill-module login;
+        $handler;
+        #if { "$user[GMCP]" == "true" } {
+            #delay 1 {
+                load-module gmcp;
+                gmcp.pkuxkx.Enable;
             };
         };
-
-        #class auto-login close;
     };
-};
 
-#class login close;
+    #class login.auto-login close;
+};