login.tin 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 模块名称:几个常用的别名
  4. 模块说明:本文件属于框架代码的一部分,不建议修改。如有需求请在 GitHub 发 issue 或者 PR
  5. 版权声明:本文件属于 PaoTin++ 的一部分
  6. ===========
  7. PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  8. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  9. ===========
  10. */
  11. #var login[session] {};
  12. #var login[user] {};
  13. #var login[autoexec] {};
  14. #alias {login} {
  15. #var login[session] {%1};
  16. #var login[user] {%2};
  17. #var login[autoexec] {%3};
  18. #session {$session[name]} {$session[host]} {$session[port]};
  19. };
  20. #event {SESSION CONNECTED} {
  21. #if { "%0" !== "$login[session][name]" } {
  22. #return;
  23. };
  24. login.auto-login;
  25. };
  26. #alias {login.login-success} {
  27. #local type {%%1};
  28. #showme 登录成功。;
  29. #nop 如果角色设置了 MXP 支持,则在建连之后主动向服务器发起 MXP 协商。;
  30. #nop 否则需要主动回车以放弃 MXP 协商。;
  31. #if { "$user[MXP]" == "true" } {
  32. load-lib mxp;
  33. #if { @existsAlias{mxp.Enable} } {
  34. mxp.Enable;
  35. };
  36. #else {
  37. #cr;
  38. };
  39. };
  40. #else {
  41. #cr;
  42. };
  43. #if { @isFalse{$login[user][manual]} } {
  44. login.online;
  45. #return;
  46. };
  47. #class login.finger open;
  48. #action {^%u目前正在连线中。$} {
  49. #var login[user][name] {%%1};
  50. #delay login.finger.done {login.finger.done} 0;
  51. };
  52. #alias {login.finger.done} {
  53. #class login.finger kill;
  54. login.write-id-file;
  55. login.init-game;
  56. login.online;
  57. };
  58. #delay login.finger.fail {login.finger.done} 5;
  59. #class login.finger close;
  60. finger $login[user][id];
  61. };
  62. #alias {login.online} {
  63. #local handler $login[autoexec];
  64. #class login.auto-login kill;
  65. #undelay login.login-success;
  66. kill-module login;
  67. $handler;
  68. #if { "$user[GMCP]" == "true" } {
  69. #delay 1 {
  70. load-module gmcp;
  71. gmcp.${gCurrentMUDLIB}.Enable;
  72. };
  73. };
  74. };
  75. #alias {login.init-game} {
  76. #if { "$login[user][id]" == "" || "$user[id]" != "" } {
  77. #return;
  78. };
  79. #var user[id] {$login[user][id]};
  80. #var user[passwd] {$login[user][passwd]};
  81. #gts #var user[id] {$login[user][id]};
  82. #gts #var user[passwd] {$login[user][passwd]};
  83. #local path {$user[id]};
  84. #if { "$session[log_path]" != "" } {
  85. #local path {$session[log_path]};
  86. };
  87. #if { !@InitLog{$path} } {
  88. #echo {<119>创建日志目录 $gLog[PATH]/$path 时遇到错误。<299>};
  89. #echo {<139>请检查你的安装环境,或者参考使用手册重新安装本软件。<299>};
  90. #return;
  91. };
  92. log.Open;
  93. #screen set title GAME-$user[id];
  94. };
  95. #alias {login.write-id-file} {
  96. #if { "$login[user][id]" == "" || "$user[id]" != "" } {
  97. #return;
  98. };
  99. #local id-file {ids/$login[user][id]};
  100. #if { @existsDir{var/ids} } {
  101. #local id-file {var/$id-file};
  102. };
  103. #if { !@existsFile{$id-file} } {
  104. #scan {file} {ids/$gCurrentMUDLIB} {login.write-id-file.do {$id-file} {&1}};
  105. };
  106. #if { "@uname{}" == "Windows_NT" } {
  107. windows-terminal-setup {$login[user][id]} {$id-file};
  108. #local menu {$login[user][id]@$gCurrentMUDLIB};
  109. NOTE 菜单已更新,请重启 Windows Terminal 并选择 $menu 进入游戏。交流请加 QQ 群: 951665549 暗号:「PaoTin++ for Windows」。;
  110. };
  111. #else {
  112. NOTE 启动配置文件已生成,下次你可以直接 start $login[user][id] 进入游戏。;
  113. };
  114. };
  115. #nop 因为 #scan 命令和 #replace 命令都要用 &1,会存在冲突,因此需要分开两个 #alias 来写。;
  116. #alias {login.write-id-file.do} {
  117. #local file {%1};
  118. #local content {%2};
  119. #replace {content} {#var user[id] %s \x7b%*\x7d;} {#var user[id] &1 {$login[user][id]};};
  120. #replace {content} {#var user[name] %s \x7b%*\x7d;} {#var user[name] &1 {$login[user][name]};};
  121. #replace {content} {#var user[passwd] %s \x7b%*\x7d;} {#var user[passwd] &1 {$login[user][passwd]};};
  122. #replace {content} {#nop 上面三处修改完毕之后,请删除下面这行文字:;\n} {};
  123. #replace {content} {#var user[manual] %s \x7b%*\x7d;\n} {};
  124. #line quiet #log remove $file;
  125. #line log $file {$content\};
  126. };
  127. #alias {windows-terminal-setup} {
  128. #local id {%1};
  129. #local id-file {%2};
  130. load-config windows;
  131. #local json {\x7b\r
  132. \x20\x20"profiles":\r
  133. \x20\x20{\r
  134. \x20\x20\x20\x20"defaults": {},\r
  135. \x20\x20\x20\x20"list": \r
  136. \x20\x20\x20\x20[\r
  137. \x20\x20\x20\x20\x20\x20{\r
  138. \x20\x20\x20\x20\x20\x20\x20\x20"commandline": "$gPaoTinPath/bin/tt++.exe $id-file",\r
  139. \x20\x20\x20\x20\x20\x20\x20\x20"hidden": false,\r
  140. \x20\x20\x20\x20\x20\x20\x20\x20"name": "$id@$gCurrentMUDLIB",\r
  141. \x20\x20\x20\x20\x20\x20\x20\x20"startingDirectory": "$gPaoTinPath"\r
  142. \x20\x20\x20\x20\x20\x20}\r
  143. \x20\x20\x20\x20]\r
  144. \x20\x20}\r
  145. \x7d\r
  146. };
  147. #local appdata {@getenv{LOCALAPPDATA}};
  148. #local file {$appdata/Microsoft/Windows Terminal/Fragments/PaoTin++/${id}.json};
  149. #line quiet #line remove {$file};
  150. #line log {$file} {$json};
  151. };