|
本帖最后由 oolong 于 2017-8-12 10:41 PM 编辑
最近写了一个公孙止任务辅助。里面用到一些颜色触发的基础。
zmud 462 中颜色字符基本都是乱码的,所以需要截取下来才能分析出来。
当然每人有各自的写法,这里抛砖引玉提出我的机器思路。
首先需要标准化得到的乱码字符串。目标格式:
a --颜色a 的替代字母
b --颜色b 的替代字母
c --其他乱码颜色的替代字母
大概会变成这样
a? c?c?c? b? c? a? c? c?
为啥要标准化?因为我要根据颜色字符位置判断要截取实际中文的位置。不是标准化的不好截取和判断中文大小。
具体代码如下:
需要变量
含字符的信息:gszrawline
不含字符的信息:gszline
#var gszrawline %replace(@gszrawline,%copy(@gszrawline,1,1),e);
#var colora %copy(@gszrawline,7,2);
#var temp2 %copy(@gszrawline,1,12);
#var temp %copy(@temp2,4,1);
#var gszrawline %replace(@gszrawline,e[0m,);
#var gszrawline %replace(@gszrawline,@temp2,a);
#var gszrawline %replace(@gszrawline,%concat(e[1,@temp,@colora,m),a);
#var gszrawline %replace(@gszrawline,%concat(e[0,@temp,@colora,m),a);
#var gszrawline %replace(@gszrawline,e[1m,c);
#if %pos(m,@gszrawline)>2 {#var colorb %copy(@gszrawline,%eval(%pos(m,@gszrawline)-2),2);
#var gszrawline %replace(@gszrawline,%concat(e[1,@temp,@colorb,m),b);
#var gszrawline %replace(@gszrawline,%concat(e[0,@temp,@colorb,m),b);
#var gszrawline %replace(@gszrawline,%concat(%copy(@temp2,1,6),@colorb,%copy(@colorall,9,4)),b)} {#var colorb 0};
#sh %len(@gszrawline);
#unvar colora;
#unvar colorb;
#var gszwugong "";
#if %numwords(@gszrawline,a)>%numwords(@gszrawline,b) {#loop %numwords(@gszrawline,b)-1 {#var temp %word(%word(@{gszrawline}a,%i+1,b),1,a);
#var temp2 %eval(%len(%word(@gszrawline,1,b@temp))/2);
#var temp %eval(%len(b@temp)/2);
#var gszwugong %additem(%copy(@gszline,@temp2+1,@temp),@gszwugong);
};
#unvar temp;
#unvar temp2;
} {#loop %numwords(@gszrawline,a)-1 {#var temp %word(%word(@{gszrawline}b,%i+1,a),1,b);
#var temp2 %eval(%len(%word(@gszrawline,1,a@temp))/2);
#var temp %eval(%len(a@temp)/2);
#var gszwugong %additem(%copy(@gszline,@temp2+1,@temp),@gszwugong);
};
#unvar temp;
#unvar temp2;
};
#unvar gszrawline;
#unvar gszline;
#var gszwugong %replace(@gszwugong,|,);
#sh @gszwugong
输出:gszwugong (未调整格式)
测试机器见附件,有bug通知我。
修订1:
发现一个可能的bug,就是目标字在所有文字结尾出现。修改见红色部分。
北大侠客行MUD,中国最好的MUD |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|