#nop vim: set filetype=tt:; /* 本文件属于 PaoTin++ 的一部分。 PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp ) 享有并保留一切法律权利 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。 */ #var basic_cmds_jobquery[META] { {NAME} {任务查询} {DESC} {解析 jq 命令的输出结果,方便玩家使用} {NOTE} {重载了两个命令,jq 不 gag,jobquery 会 gag,两个命令的结果都会被解析} {AUTHOR} {担子炮} }; /* 2023-12-15 22:58:47 INPUT: jq ╭──┬北侠任务查询助理──────────┬─────────────────────────────────────╮ │编号│类型 │名称 │状态 │ │[01]│[门] │门忠任务 │现在即可接到下个任务。 │ │[02]│[门] │门派任务 │现在即可接到下个任务。 │ │[03]│[新] │送信 │现在即可接到下个任务。 │ │[04]│[新] │唱戏任务 │现在即可接到下个任务。 │ │[05]│[新] │灵鹫护卫 │现在即可接到下个任务。 │ │[06]│[主] │慕容(13) │现在即可接到下个任务。 │ │[07]│[主] │韩员外 │现在即可接到下个任务。 │ │[08]│[主] │都府刺杀 │现在即可接到下个任务。 │ │[09]│[主] │胡一刀(1) 100.0% │现在即可接到下个任务。 │ │[10]│[主] │萧峰(21) 84.0% │现在即可接到下个任务。 │ │[11]│[主] │韩世忠(10) 100.0% │现在即可接到下个任务。 │ │[12]│[主] │公孙止(10) 76.9% │现在即可接到下个任务。 │ │[13]│[主] │万安塔(100) 82.6% │现在即可接到下个任务。 │ │[14]│[主] │破阵 │现在即可接到下个任务。 │ │[15]│[主] │天珠(10) 83.3% │现在即可接到下个任务。 │ │[16]│[主] │偷学 │未满足接受此任务的所有条件,前置任务次数不够。 │ │[17]│[主] │宋远桥 │现在即可接到下个任务。 │ │[18]│[主] │谍报(10) 83.3% │现在即可接到下个任务。 │ │[19]│[主] │海棠(65) │任务已经失败。 │ │[20]│[主] │捉蛊 │未满足接受此任务的所有条件,身上必须有蛊盒。 │ │[21]│[主] │神游八方 │未满足接受此任务的所有条件,级别必须达到60。 │ │[22]│[主] │苗王 │现在即可接到下个任务。 │ │[23]│[主] │活人祭 │未满足接受此任务的所有条件,蛊术的级别不足100级。 │ │[24]│[主] │见性成佛 │现在即可接到下个任务。 │ │[25]│[主] │心上人 │现在即可接到下个任务。 │ │[26]│[主] │暗杀 │未满足接受此任务的所有条件,杀手帮积分至少积累20点。 │ │[27]│[主] │纪晓芙(26) │现在即可接到下个任务。 │ │[28]│[主] │南国围猎(26) 96.3% │现在即可接到下个任务。 │ │[29]│[主] │山宗锄奸 │未满足接受此任务的所有条件,完成山宗上祭礼才能接到这个任务。 │ │[30]│[主] │西行 │现在即可接到下个任务。 │ │[31]│[主] │香闺怨 │未满足接受此任务的所有条件,级别必须达到40。 │ │[32]│[主] │破解武功 │未满足接受此任务的所有条件,职业等阶必须达到1。 │ │[33]│[主] │青城山采药(11) 100.0% │现在即可接到下个任务。 │ │[34]│[主] │青城派追查 │未满足接受此任务的所有条件,经验必须达到30000000。 │ │[35]│[主] │华山送信任务 │现在即可接到下个任务。 │ │[36]│[主] │投名状任务 │现在即可接到下个任务。 │ │[37]│[主] │萧半和任务 │现在即可接到下个任务。 │ │[38]│[主] │鄱阳湖寻宝(19) │现在即可接到下个任务。 │ │[39]│[主] │运镖(2384) │现在即可接到下个任务。[普通镖局] │ │[40]│[特] │藏经阁 │现在即可接到下个任务。今天还能进行2次藏经阁任务。 │ │[41]│[特] │大唐爵位任务 │现在即可接到下个任务。 │ │[42]│[特] │锻造任务 │现在即可接到下个任务。 │ │[43]│[特] │铜雀台任务 │现在即可接到下个任务。 │ │[44]│[特] │百晓生任务 │现在即可接到下个任务。 │ │[45]│[特] │公孙绿萼任务 │ │ ╰──┴───┴──────────────┴─────────────────────────────────────╯ ╭─────────────────────────────────────────┬─────────────────╮ │全局事件 (天魔) 任务环剩余 │jobquery支持参数++/-- 增加/ 减少任│ │胡一刀任务->韩员外任务->胡一刀任务->萧峰任务->护镖任务->天珠任务->破阵任务->破阵任│务到自定义列表,参数intro 给出所有│ │务->绝情谷任务->绝情谷任务->宋远桥任务->萧峰任务->宋远桥任务->萧峰任务->谍报任务->│任务简介。 │ │胡一刀任务->胡一刀任务->都府刺杀任务->胡一刀任务->都府刺杀任务。#(已完成:0) │ │ ╰─────────────────────────────────────────┴────────北大侠客行────╯ */ event.Define {jobquery} {无参} {$MODULE} {任务CD状态查询结果已更新,内容在变量 gJobState 中}; /* jobquery 本来就有两个别名: 1. jobquery 长一些,不方便输入,用的较少,因此重定义其行为,默认屏蔽系统输出 2. jq 短一些,平时用的比较多,则不屏蔽系统输出,以免影响玩家使用习惯。 */ #alias {jobquery} {job.Query gag {%0}}; #alias {jq} {job.Query nogag {%0}}; VAR {任务CD状态查询结果} gJobState {}; #func {basic_cmds_jobquery.Init} { #class data/basic/cmds/jobquery open; #var gJobStateUpdate {0}; #class data/basic/cmds/jobquery close; #return true; }; #alias {job.Query} { #local gag {%1}; #local args {%2}; #nop 如果命令不是预期的格式,则直接透传给服务器,不予处理。; #if { "$args" != "{|-m|-x|-z|-t|-zn|-cur|-avail|[0-9]+}" } { xtt.Send {jobquery $args}; #return; }; #class job.Query open; #highlight {^你刚刚查询过任务,请稍后再查。$} {bold light red}; #if { "$gag" == "gag" } { #action {^%*{|ID=cmds/jobquery}$} { #line gag; } {5.1}; }; #line oneshot #action {^你刚刚查询过任务,请稍后再查。$} { #class job.Query kill; #local now {}; #local cd {0}; #format now {%T}; #math cd {$gJobStateUpdate + 11 - $now}; #if { $cd < 0 } { #local cd {10}; }; #delay jobquery {job.Query {%1} {%2}} $cd; }; #line oneshot #action {^╭──┬北侠任务查询助理─{(─|┬)+}─╮$} { jobquery.parse.output {%1}; #if { "%1" == "gag" } { #line gag; }; }; #line oneshot #action {{*UTF8}{^}╰─{(─|┴)+}──{\p{Han}+}────╯{|ID=cmds/jobquery}$} { #class jobquery-parser kill; #class job.Query kill; #if { "%1" == "gag" } { #line gag; }; #delay 0 jobquery.parse.done; }; #class job.Query close; xtt.Send {jobquery $args}; }; #alias {jobquery.parse.output} { #local gag {%1}; #class jobquery open; #var gJobState {}; #var gJobStateUpdate {0}; #class jobquery close; #class jobquery-parser open; #nop 这里一共有 7 个占位符; #local jobHeader {│[%d]%!s│[{门|新|主|特}]%!s│%S{|\((\d+)\)} {|([0-9.]+)%}%!s}; #local jobEnd {%!s│}; #alias {jq.set} { #local {name} {%%3}; #local {times} {%%4}; #local {pct} {%%6}; #if { "$times" != "" } {#local {times} {%%5}}; #if { "$pct" != "" } {#local {pct} {%%7}}; #var gJobState[$name] { {ID} {%%1} {类型} {%%2} {名称} {$name} {次数} {$times} {成功率} {$pct} {CD} {%%8} {附加信息} {%%9} }; #if { "%1" == "gag" } { #line gag; }; }; #action {^$jobHeader│任务已经失败。$jobEnd$} { jq.set {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {-3} {任务已经失败。}; }; #action {^$jobHeader│仍需%S才能接到下个任务。$jobEnd$} { jq.set {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {@time.ParseDoC{%%8}} {等待CD中}; }; #action {^$jobHeader│现在即可接到下个任务。%S$jobEnd$} { jq.set {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {0} {%%8}; }; #action {^$jobHeader│任务正在进行中。%S$jobEnd$} { jq.set {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {-2} {%%8}; }; #action {^$jobHeader│未满足接受此任务的所有条件,%S$jobEnd$} { jq.set {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {-1} {%%8}; }; #class jobquery-parser close; }; #alias {jobquery.parse.done} { #format gJobStateUpdate {%T}; #local name {}; #local cdStr {}; #local doingStr {}; #foreach {*gJobState[]} {name} { #if { $gJobState[$name][CD] > 0 } { #local cdStr {$cdStr <139>$name<299>(<119>$gJobState[$name][CD]s<299>)}; }; #elseif { $gJobState[$name][CD] == -2 } { #local doingStr {$doingStr <129>$name<299>(<139>$gJobState[$name][附加信息]<299>)}; }; }; #if { "$doingStr$cdStr" == "" } { okLog 任务 CD 状态已更新,没有任务处于 CD 中。; }; #elseif { "$doingStr" == "" } { okLog 任务 CD 状态已更新,以下任务仍然处于 CD 中:$cdStr; }; #elseif { "$cdStr" == "" } { okLog 任务 CD 状态已更新,以下任务正在进行中:$doingStr; }; #else { okLog 任务 CD 状态已更新,以下任务正在进行中:$doingStr,以下任务仍然处于 CD 中:$cdStr; }; event.Emit {jobquery}; };