loyalty.tin 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 本文件属于 PaoTin++ 的一部分。
  4. PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  5. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  6. */
  7. #var basic_char_loyalty[META] {
  8. {NAME} {门忠任务}
  9. {DESC} {解析 loyalty 命令的输出结果,方便玩家使用}
  10. {NOTE} {重载了两个命令,mz 不 gag,loyalty 会 gag,两个命令的结果都会被解析}
  11. {AUTHOR} {担子炮}
  12. };
  13. event.Define {loyalty} {无参} {$MODULE} {门忠任务查询结果已更新,内容在变量 gLoyalty 中};
  14. VAR {门忠任务查询结果} gLoyalty {};
  15. /*
  16. loyalty 本来就有两个别名:
  17. 1. loyalty 长一些,不方便输入,用的较少,因此重定义其行为,默认屏蔽系统输出。
  18. 2. mz 短一些,平时用的比较多,则不屏蔽系统输出,以免影响玩家使用习惯。
  19. */
  20. #alias {mz list} {mz.List nogag};
  21. #alias {loyalty list} {mz.List gag};
  22. #action {@re.TableHeader{门忠任务列表(共%*项)}} {
  23. #var gLoyalty {};
  24. mz.parse;
  25. };
  26. #alias {mz.parse} {
  27. #class mz.parse open;
  28. #alias {mz.parse.desc} {
  29. #local last {&gLoyalty[]};
  30. #if { $last > 0 } {
  31. #switch {"$gLoyalty[$last][类型]/$gLoyalty[$last][描述]"} {
  32. #case {"教训/%*"} {#0};
  33. #match {"杀死/%*的%*(%*)%s。"} {
  34. #var gLoyalty[$last][房间] {&1};
  35. #var gLoyalty[$last][姓名] {&2};
  36. #var gLoyalty[$last][NPC] {@str.ToLower{&3}};
  37. };
  38. #match {"找到/%*(%*)%s,送给%*的%*(%*)%s。%*描述大致如下:%*"} {
  39. #var gLoyalty[$last][物品] {&1};
  40. #var gLoyalty[$last][ID] {@str.ToLower{&2}};
  41. #var gLoyalty[$last][房间] {&4};
  42. #var gLoyalty[$last][姓名] {&5};
  43. #var gLoyalty[$last][NPC] {@str.ToLower{&6}};
  44. #var gLoyalty[$last][描述] {&9};
  45. };
  46. #default {
  47. okLog 未知格式。;
  48. };
  49. };
  50. };
  51. };
  52. #action {^│%s%d%s│要求给%*的%*(%*)一点教训。%s│%s%d%s│%*│$} {
  53. mz.parse.desc;
  54. #var gLoyalty[%%2] {
  55. {序号} {%%2}
  56. {类型} {教训}
  57. {位置} {%%4}
  58. {姓名} {%%5}
  59. {NPC} {@str.ToLower{%%6}}
  60. {积分} {%%9}
  61. {描述} {}
  62. };
  63. };
  64. #action {^│%s%d%s│要求{找到|杀死}%*│%s%d%s│%*│$} {
  65. mz.parse.desc;
  66. #var gLoyalty[%%2] {
  67. {序号} {%%2}
  68. {类型} {%%4}
  69. {描述} {@str.Trim{%%5}}
  70. {积分} {%%7}
  71. };
  72. };
  73. #action {^│%s│%*│%s│%s│$} {
  74. #local len {&gLoyalty[]};
  75. #cat gLoyalty[$len][描述] {@str.Trim{%%2}};
  76. };
  77. #action {^╰─{(─)+}───%S────╯$} {
  78. mz.parse.desc;
  79. };
  80. event.ClassHandleOnce GA {basic/char} {basic/char} {
  81. #delay 0 {okLog 门忠任务信息已更新。};
  82. #class mz.parse kill;
  83. #0
  84. };
  85. #class mz.parse close;
  86. };
  87. #alias {mz.List} {
  88. #local gag {@default{%1;nogag}};
  89. #class mz.parse open;
  90. #local ID {|ID=basic/char};
  91. #action {^你找到%*,ask门忠任务就可以接到门忠任务了。{$ID}$} {
  92. okLog 尚未接到任何门忠任务。;
  93. #class mz.parse kill;
  94. };
  95. #if { "$gag" == "gag" } {#gag {^%*{$ID}$}};
  96. #class mz.parse close;
  97. xtt.Send {loyalty list};
  98. };