jobquery.tin 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 本文件属于 PaoTin++ 的一部分。
  4. PaoTin++ © 2020~2022 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  5. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  6. */
  7. #var basic_cmds_jobquery[META] {
  8. {NAME} {任务查询}
  9. {DESC} {解析 jq 命令的输出结果,方便玩家使用}
  10. {NOTE} {重载了两个命令,jq 不 gag,jobquery 会 gag,两个命令的结果都会被解析}
  11. {AUTHOR} {担子炮}
  12. };
  13. /*
  14. ╭───北侠任务查询助理────────┬───────────────────────────────────╮
  15. │编号 │类型 │名称 │状态 │
  16. │[12] │[主] │韩世忠 │未满足接受此任务的所有条件,至少需要30年功力。 │
  17. │[13] │[主] │公孙止 │未满足接受此任务的所有条件,经验必须达到2000000。 │
  18. │[14] │[主] │破阵 │未满足接受此任务的所有条件,占卜之术的级别不足1级。 │
  19. │[15] │[主] │破阵(40) 70.2% │仍需二十五秒才能接到下个任务。 │
  20. │[19] │[主] │海棠(10) │现在即可接到下个任务。 │
  21. │[20] │[主] │捉蛊 │未满足接受此任务的所有条件,身上必须有蛊盒。 │
  22. ╰────┴────┴─────────┴───────────────────────────────────╯
  23. ╭─────────────────────────────────────┬─────────────────╮
  24. │ │jobquery支持参数++/--增加 │
  25. │ │/减少任务到自定义列表,参数intro │
  26. │ │给出所有任务简介。支持MXP。 │
  27. ╰─────────────────────────────────────┴────────北大侠客行────╯
  28. */
  29. event.Define {jobquery} {无参} {$MODULE} {任务CD状态查询结果已更新,内容在变量 gJobState 中};
  30. /*
  31. jobquery 本来就有两个别名:
  32. 1. jobquery 长一些,不方便输入,用的较少,因此重定义其行为,默认屏蔽系统输出
  33. 2. jq 短一些,平时用的比较多,则不屏蔽系统输出,以免影响玩家使用习惯。
  34. */
  35. #alias {^jobquery{| %*}$} {job.Query gag {%1}};
  36. #alias {^jq{| %*}$} {job.Query nogag {%1}};
  37. #func {basic_cmds_jobquery.Init} {
  38. #class data/basic/cmds/jobquery open;
  39. #var gJobState {};
  40. #var gJobStateUpdate {0};
  41. #class data/basic/cmds/jobquery close;
  42. #return true;
  43. };
  44. #alias {job.Query} {
  45. #local gag {%1};
  46. #local args {%2};
  47. #nop 如果命令不是预期的格式,则直接透传给服务器,不予处理。;
  48. #if { "$args" != "{|-m|-x|-z|-t|-zn|-cur|-avail|[0-9]+}" } {
  49. #send {jobquery $args};
  50. #return;
  51. };
  52. #class job.Query open;
  53. #highlight {^你刚刚查询过任务,请稍后再查。$} {bold light red};
  54. #if { "$gag" == "gag" } {
  55. #action {^%*{|ID=cmds/jobquery}$} {
  56. #line gag;
  57. } {5.1};
  58. };
  59. #line oneshot #action {^你刚刚查询过任务,请稍后再查。$} {
  60. #class job.Query kill;
  61. #local now {};
  62. #local cd {0};
  63. #format now {%T};
  64. #math cd {$gJobStateUpdate + 11 - $now};
  65. #if { $cd < 0 } {
  66. #local cd {10};
  67. };
  68. #delay jobquery {job.Query {%1} {%2}} $cd;
  69. };
  70. #line oneshot #action {^╭───北侠任务查询助理─{(─|┬)+}─╮$} {
  71. jobquery.parse.output {%1};
  72. };
  73. #line oneshot #action {^╰─{(─|┴)+}──北大侠客行────╯{|ID=cmds/jobquery}$} {
  74. #class jobquery-parser kill;
  75. #class job.Query kill;
  76. #if { "%1" == "gag" } {
  77. #line gag;
  78. };
  79. #delay 0 jobquery.parse.done;
  80. };
  81. #class job.Query close;
  82. #send {jobquery $args};
  83. };
  84. #alias {jobquery.parse.output} {
  85. #local gag {%1};
  86. #class jobquery open;
  87. #var gJobState {};
  88. #var gJobStateUpdate {0};
  89. #class jobquery close;
  90. #class jobquery-parser open;
  91. #nop 这里一共有 7 个占位符;
  92. #local jobHeader {│[%d]%!s│[{门|新|主|特}]%!s│%S{|\((\d+)\)} {|([0-9.]+)%}%!s};
  93. #local jobEnd {%!s│};
  94. #alias {jq.set} {
  95. #local {name} {%%3};
  96. #local {times} {%%4};
  97. #local {pct} {%%6};
  98. #if { "$times" != "" } {#local {times} {%%5}};
  99. #if { "$pct" != "" } {#local {pct} {%%7}};
  100. #var gJobState[$name] {
  101. {ID} {%%1}
  102. {类型} {%%2}
  103. {名称} {$name}
  104. {次数} {$times}
  105. {成功率} {$pct}
  106. {CD} {%%8}
  107. {附加信息} {%%9}
  108. };
  109. #if { "%1" == "gag" } {
  110. #line gag;
  111. };
  112. };
  113. #action {^$jobHeader│仍需%S才能接到下个任务。$jobEnd$} {
  114. jq.set {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {@parseTime{%%8}} {等待CD中};
  115. };
  116. #action {^$jobHeader│现在即可接到下个任务。$jobEnd$} {
  117. jq.set {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {0} {现在即可接到下个任务};
  118. };
  119. #action {^$jobHeader│任务正在进行中。地点在%*。$jobEnd$} {
  120. jq.set {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {-1} {%%8};
  121. };
  122. #action {^$jobHeader│未满足接受此任务的所有条件,%*。$jobEnd$} {
  123. jq.set {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {-2} {%%8};
  124. };
  125. #class jobquery-parser close;
  126. };
  127. #alias {jobquery.parse.done} {
  128. #format gJobStateUpdate {%T};
  129. #local name {};
  130. #local cdStr {};
  131. #local doingStr {};
  132. #foreach {*gJobState[]} {name} {
  133. #if { $gJobState[$name][CD] > 0 } {
  134. #local cdStr {$cdStr <130>$name<070>(<110>$gJobState[$name][CD]s<070>)};
  135. };
  136. #elseif { $gJobState[$name][CD] == -1 } {
  137. #local doingStr {$doingStr <120>$name<070>(<130>$gJobState[$name][附加信息]<070>)};
  138. };
  139. };
  140. #if { "$doingStr$cdStr" == "" } {
  141. okLog 任务 CD 状态已更新,没有任务处于 CD 中。;
  142. };
  143. #elseif { "$doingStr" == "" } {
  144. okLog 任务 CD 状态已更新,以下任务仍然处于 CD 中:$cdStr;
  145. };
  146. #elseif { "$cdStr" == "" } {
  147. okLog 任务 CD 状态已更新,以下任务正在进行中:$doingStr;
  148. };
  149. #else {
  150. okLog 任务 CD 状态已更新,以下任务正在进行中:$doingStr,以下任务仍然处于 CD 中:$cdStr;
  151. };
  152. event.Emit {jobquery};
  153. };