#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} {担子炮} }; /* 2024-12-01 11:33:51 INPUT: jq ╭─┬─北侠任务查询助理──────┬────────────────────╮ │ │类型│名称 │状态 │ │ 1│门派│门忠任务 │门忠任务细节请用loyalty list查询 │ │ 2│门派│门派任务 │现在即可接到下个任务。 │ │ 3│新手│送信 │现在即可接到下个任务。 │ │ 4│新手│唱戏 │现在即可接到下个任务。 │ │ 5│新手│灵鹫护卫 │现在即可接到下个任务。 │ │ 6│主 │慕容◆(38) │现在即可接到下个任务。 │ │ 7│主 │韩员外◆◆ │现在即可接到下个任务。 │ │ 8│主▎│刺杀◆◆ │现在即可接到下个任务。 │ │ 9│主▎│胡一刀◆◆ │未达成条件:级别必须达到22。 │ │10│主 │萧峰◆ │现在即可接到下个任务。 │ │11│主▎│韩世忠◆ │现在即可接到下个任务。 │ │12│主 │公孙止◆ │现在即可接到下个任务。 │ │13│主 │万安塔 │现在即可接到下个任务。 │ │14│主 │破阵(73) 71.6% │现在即可接到下个任务。 │ │15│主▎│天珠◆◆(907) 91.8% │现在即可接到下个任务。 │ │16│主▎│偷学◆ │未达成条件:级别必须达到30。 │ │17│主 │宋远桥◆(1) │现在即可接到下个任务。 │ │18│主 │谍报◆ │现在即可接到下个任务。 │ │19│主▎│海棠(10) │现在即可接到下个任务。 │ │20│主▎│捉蛊◆◆ │未达成条件:身上必须有蛊盒。 │ │21│主▎│神游八方 │未达成条件:级别必须达到65。 │ │22│主▎│苗王◆◆ │现在即可接到下个任务。 │ │23│主▎│活人祭◆◆ │未达成条件:蛊术低于100级。 │ │24│主▎│见性成佛 │未达成条件:经验必须达到5000000。 │ │25│主▎│心上人◆◆ │现在即可接到下个任务。 │ │26│主 │暗杀◆◆ │未达成条件:杀手帮积分积累20点。 │ │27│主▎│纪晓芙◆◆(4) │现在即可接到下个任务。 │ │28│主▎│南国围猎 │未达成条件:级别必须达到25。 │ │29│主▎│山宗锄奸 │未达成条件:级别必须达到30。 │ │30│主 │西行 │未达成条件:级别必须达到35。 │ │31│主▎│香闺怨 │未达成条件:级别必须达到40。 │ │32│主▎│破解武功 │未达成条件:级别必须达到60。 │ │33│主▎│采药◆◆ │未达成条件:级别必须达到32。 │ │34│主▎│追查◆◆ │未达成条件:级别必须达到45。 │ │35│主▎│打擂◆◆ │未达成条件:韩世忠任务需完成1000次。 │ │36│主▎│按图索骥 │未达成条件:级别必须达到35。 │ │37│主▎│失散古谱◆ │未达成条件:级别必须达到50。 │ │38│特殊│华山送信(10) │现在即可接到下个任务。 │ │39│特殊│投名状(36) │现在即可接到下个任务。 │ │40│特殊│萧半和 │现在即可接到下个任务。 │ │41│特殊│鄱阳湖寻宝(5) │现在即可接到下个任务。今日剩余5次 │ │42│特殊│运镖(825) │任务已经失败。 │ │43│限制│藏经阁 │未达成条件:经验必须达到15000000。 │ │44│限制│大唐爵位 │现在即可接到下个任务。 │ │45│限制│锻造 │现在即可接到下个任务。 │ │46│限制│铜雀台 │现在即可接到下个任务。 │ │47│限制│百晓生 │现在即可接到下个任务。 │ │48│限制│公孙绿萼 │ │ ╰─┴──┴────────────┴────────────────────╯ ╭──────────────────────────┬───────────╮ │ │jobquery支持参数++/-- │ │ │增加/ 减少任务到自定义│ │ │列表,参数intro 给出所│ │ │有任务简介。 │ ╰──────────────────────────┴──北大侠客行────╯ */ event.Define {jobquery} {无参} {$MODULE} {任务CD状态查询结果已更新,内容在变量 gJobState 中}; load-module basic/cmds/link; /* jobquery 本来就有两个别名: 1. jobquery 长一些,不方便输入,用的较少,因此重定义其行为,默认屏蔽系统输出 2. jq 短一些,平时用的比较多,则不屏蔽系统输出,以免影响玩家使用习惯。 */ #alias {jobquery_gag} {job.Query gag {%0}}; #alias {jobquery} {job.Query nogag {%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 {@re.TableHeader{北侠任务查询助理}} { option.Push HighlightBlue false; jobquery.parse.output {%1}; #if { "%1" == "gag" } { #line gag; }; }; #line oneshot #action {{*UTF8}{^}╰─{(─|┴)+}──{\p{Han}+}────╯{|ID=cmds/jobquery}$} { option.Pop HighlightBlue; #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; #var env.Week[best] {}; #var env.Week[buff] {}; #var env.Week[debuff] {}; #var env.Week[normal] {}; #class jobquery-parser open; link.Enable jobquery 0 {藏经阁;大唐爵位任务}; #nop 这里一共有 7 个占位符; #local jobLeader {│%!s%d│{门派|新手|特殊|限制|主|主▎}%!s│%S{?:(?:◆)*}{|\(([0-9万+]+)\)} {|([0-9.]+)%}%!s}; #local jobEnd {%!s│}; #alias {jq.set} { #local {rawLine} {%%1}; #local {type} {%%3}; #local {name} {%%4}; #local {times} {%%5}; #local {pct} {%%7}; #local {reason} {%%10}; #replace type {▎} {}; #if { "$type" == "主" } {#local type {主流}}; #if { "$times" != "" } {#local {times} {%%6}}; #if { "$pct" != "" } {#local {pct} {%%8}}; #replace {reason} {。$} {}; #if { "$times" == "%d万+" } { #replace times {万+} {}; #math times {$times * 10000}; }; #local color {\e\[[0-9;]+m}; #replace {rawLine} {^%*│%!c{(主|特殊)($color(($color)+)▎$color|)}%!C│%!+1c%+0..2c$name{(?:\e\[2;37;0m($color)+◆)*}%*} { {type} {&3} {group} {&5} {buff} {&7} {color} {&8} }; #local moreInfo {$rawLine}; #if { "$moreInfo[buff]" != "" } {#local moreInfo[buff] {@str.Color{$moreInfo[buff]}}}; #if { "$moreInfo[group]" != "" } {#local moreInfo[group] {@str.Color{$moreInfo[group]}}}; #if { "$moreInfo[color]" != "" } { #replace moreInfo[color] {\e[2;37;0m{(\e\[([0-9;]+)m)+}◆} {@str.Replace{{&3};{;};{-}};}; #replace moreInfo[color] {;$} {}; }; #switch {"$moreInfo[buff]"} { #case {"42;1;1;37"} {#local moreInfo[buff] {最佳}; #var env.Week[best] {@sset.Add{{$env.Week[best]};$name}}}; #case {"1;32"} {#local moreInfo[buff] {上升}; #var env.Week[buff] {@sset.Add{{$env.Week[buff]};$name}}}; #case {"31"} {#local moreInfo[buff] {下降}; #var env.Week[debuff] {@sset.Add{{$env.Week[debuff]};$name}}}; #case {"2;37;0"} {#local moreInfo[buff] {正常}; #var env.Week[normal] {@sset.Add{{$env.Week[normal]};$name}}}; }; #local cd {%%9}; #local next {0}; #if { $cd >= 0 } { #local next {@math.Eval{@time.Now{} + $cd}}; }; #var gJobState[$name] { {ID} {%%2} {类型} {$type} {名称} {$name} {次数} {$times} {成功率} {$pct} {CD} {$cd} {NEXT} {$next} {附加信息} {$reason} {增益} {$moreInfo[buff]} {增益联动} {$moreInfo[group]} {名号加成} {$moreInfo[color]} }; #if { "%1" == "gag" } { #line gag; }; }; #action {^$jobLeader│任务已经失败。$jobEnd$} { jq.set {%%99} {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {-3} {任务已经失败。}; }; #action {^$jobLeader│仍需%S才能接到下个任务。$jobEnd$} { jq.set {%%99} {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {@time.ParseDoC{%%8}} {等待CD中}; }; #action {^$jobLeader│现在即可接到下个任务。%S$jobEnd$} { jq.set {%%99} {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {0} {%%8}; }; #action {^$jobLeader│任务正在进行中。%S$jobEnd$} { jq.set {%%99} {%%1} {%%2} {%%3} {%%4} {%%5} {%%6} {%%7} {-2} {%%8}; }; #action {^$jobLeader│未达成条件:%S$jobEnd$} { jq.set {%%99} {%%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 env/week/update; prompt.Set {{weekBest}{$env.Week[best]}}; prompt.Set {{weekBuff}{$env.Week[buff]}}; prompt.Set {{weekNormal}{$env.Week[normal]}}; prompt.Set {{weekDebuff}{$env.Week[debuff]}}; event.Emit {jobquery}; };