文字MUD游戏论坛-天下泥潭群英会-水泊梁山  

返回   文字MUD游戏论坛-天下泥潭群英会-水泊梁山 > 西游之旅 > 『 梁山论剑 』

『 梁山论剑 』 讨论西游记的武功秘技,介绍快捷有效的练功方法,解答各种游戏疑难杂症。这是高手过招,新手学艺的好地方。

发表新主题 回复
 
LinkBack 主题工具 主题评分 显示模式
旧 2011-04-22   #1
初级会员
级别:2 | 在线时长:24小时 | 升级还需:6小时级别:2 | 在线时长:24小时 | 升级还需:6小时
 
xelite 的头像
 
注册: 11年02月13日
来自: zhongguo
帖子: 17
声望力: 0
声望: 16 xelite 初领妙道
积分:3
精华:1
现金:92两梁山币
资产:142两梁山币
致谢数: 0
获感谢文章数:0
获会员感谢数:0
zmud之汉字转换为数字

这是一个普遍的需求,希望记录统计一共获得多少武学和道行等,以数字形式表现,方便计算。
由于zmud版本的不同,支持的函数有所差异。目前讨论zmud4.62和5.55版本的实现。
Trigger实例:
#tri ^你灭妖得到了(*)点潜能!
{convertnumber %1
#add reward_qn %number(@in_chinese_number)
#say 此次连线灭妖共获得@reward_qn点潜能,共@reward_guai个怪,平均每个怪[@reward_qn/@reward_guai]点潜能
#color white}
相关alias定义:
#alias reward_init {#var reward_guai 0;#var reward_wx 0;#var reward_qn 0;#var reward_time {%time()} {%time()}
#alias reward {#say 此次连线登陆时间@reward_time,灭妖共@reward_guai个怪,,共获得@reward_qn点潜能,平均每个怪[@reward_qn/@reward_guai]点潜能,共获得@reward_wx点武学,平均每个怪[@reward_wx/@reward_guai]点武学}
#alias convertnumber {#var in_chinese_number %1;#read cmd_digit.txt;#var in_chinese_number @out_number;#say @in_chinese_number}
测试:
convertnumber 一万零五百二十一
将显示 10521
最主要的cmd_digit.txt实现由于4.62和5.55版本函数的差异分别实现:
4.62版本 cmd_digit.txt
#var chinese_number_list {零|一|二|三|四|五|六|七|八|九|十|百|千|万}
#var number_list {|1|2|3|4|5|6|7|8|9|A|B|C|D}
#var ix 0
#alias item {#var tmp_n 0;#ForAll %1 {#add tmp_n 1;#if (@tmp_n=%2) {#var myitem %i}}}
#FORALL @chinese_number_list {#add ix 1;item @chinese_number_list @ix;#var tmp_chinese @myitem;item @number_list @ix;#var tmp_number @myitem;#var in_chinese_number %replace(@in_chinese_number,@tmp_chinese,@tmp_number);}
#if !%isnumber(%copy(@in_chinese_number,1,1)) {#var in_chinese_number %insert(1,@in_chinese_number,1)}
#var tmp_len %len(@in_chinese_number);
#var out_number 0;
#Loop @tmp_len {#var tmp_word %copy(@in_chinese_number,%{i},1);#if (%isnumber(@tmp_word)) {#if (%i<@tmp_len) {#var tmp_n %copy(@in_chinese_number,(%i+1),1);#if (@tmp_n=A) {#var tmp_n 1};#if (@tmp_n=B) {#var tmp_n 2};#if (@tmp_n=C) {#var tmp_n 3};#if (@tmp_n=D) {#var tmp_n 4};#case (%eval(@tmp_n)) {#add out_number (%number(@tmp_word)*10)} {#add out_number (%number(@tmp_word)*100)} {#add out_number (%number(@tmp_word)*1000)} {#add out_number (%number(@tmp_word)*10000)}} {#add out_number %number(@tmp_word)}}};
#var in_chinese_number @out_number
#say @in_chinese_number
#unvar tmp_len
#unvar chinese_number_list
#unvar number_list
#unvar ix


5.55版本(4.62版本是通用版本,即在5.55版本中也可以用上面的代码)cmd_digit.txt
#var chinese_number_list {零|一|二|三|四|五|六|七|八|九|十|百|千|万}
#var number_list {|1|2|3|4|5|6|7|8|9|A|B|C|D}
#var ix 0
#FORALL @chinese_number_list {#add ix 1;#var in_chinese_number %replace(@in_chinese_number,%item(@chinese_number_list,@ix),%item(@number_list,@ix));}
#if !%isnumber(%copy(@in_chinese_number,1,1)) {#var in_chinese_number %insert(1,@in_chinese_number,1)}
#var tmp_len %len(@in_chinese_number);
#var out_number 0;
#Loop @tmp_len {#var tmp_word %copy(@in_chinese_number,%{i},1);#if (%isnumber(@tmp_word)) {#if (%{i}<@tmp_len) {#var tmp_n %copy(@in_chinese_number,(%{i}+1),1);#case (%ascii(@tmp_n)-%ascii(A)+1) {#add out_number (%number(@tmp_word)*10)} {#add out_number (%number(@tmp_word)*100)} {#add out_number (%number(@tmp_word)*1000)} {#add out_number (%number(@tmp_word)*10000)}} {#add out_number %number(@tmp_word)}}};
#var in_chinese_number @out_number

#unvar tmp_len
#unvar chinese_number_list
#unvar number_list
#unvar ix


cmd_digit.txt放在zmud.exe的所在的目录下。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/annkie/archive/...0/6169625.aspx
帅哥 xelite 当前离线  
回复时引用此帖

发表新主题 回复

添加到书签


发帖规则
不可以发表主师
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子

论坛启用 vB 代码
论坛启用 表情图标
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为格林尼治时间 +9, 现在的时间是 21:36.


Powered by SPLS
版权所有 2001-2023 水泊梁山
皖ICP备05012024号

站长 fengyue

Search Engine Optimization by vBSEO 3.6.1