查看单个帖子
旧 2005-11-05   #1
fengyue_xyj
天平座童虎

级别:39 | 在线时长:3988小时 | 升级还需:112小时级别:39 | 在线时长:3988小时 | 升级还需:112小时级别:39 | 在线时长:3988小时 | 升级还需:112小时级别:39 | 在线时长:3988小时 | 升级还需:112小时级别:39 | 在线时长:3988小时 | 升级还需:112小时级别:39 | 在线时长:3988小时 | 升级还需:112小时
 
fengyue_xyj 的头像
 
注册: 02年05月24日
来自: 莲花宝座
帖子: 5,966
声望力: 99
声望: 1639 fengyue_xyj 脱胎换骨fengyue_xyj 脱胎换骨fengyue_xyj 脱胎换骨fengyue_xyj 脱胎换骨fengyue_xyj 脱胎换骨fengyue_xyj 脱胎换骨fengyue_xyj 脱胎换骨fengyue_xyj 脱胎换骨fengyue_xyj 脱胎换骨fengyue_xyj 脱胎换骨fengyue_xyj 脱胎换骨
积分:18
精华:29
现金:4213197两梁山币
资产:4223197两梁山币
致谢数: 2
获感谢文章数:10
获会员感谢数:10
【转帖】zmud 4.62 hash 解决方法 + 文件访问

zmud 4.62 hash 解决方法 + 文件访问
原理:
zmud 4.62 提供很稳定的mud 解析。而且没有注册的麻烦。
他提供了文件访问和一些基本函数,但是缺少数组和hash 类型变量,
对于quest 来说,有一个中英文对照表,将会大大减少键盘输入,提高
游戏乐趣,减少失误。在此抛砖引玉了。

这里提供了一个示范的解决方法,适用于一般变量作为hash变量使用:
因为4.62的字符串变量没有限制长度,现在我用_隔开hash 单元,|隔开hash key and value:
比如
id_list: _阿菜哥|waiter|_阿草|a cao|cao|_阿大|a da|_阿二|a er|_阿发|afa|_阿发日记|afrji|_
这个是一部分 中英文对照表。

hash主要有以下函数(alias)
hash_find:用于用key 寻找hash value, 返回到hash_value 变量,失败的话,hash_value=0.
使用方法: hash_find varname keyname
使用举例:hash_find id_list 阿发日记
输出:_阿发日记| : afrji
hash_value 值= afrji

hash_add:用于添加hash 键值,如果有完全重复的键值,将不予增加。
使用方法: hash_add varname keyname hashvalue
使用举例:hash_add id_list 嘟嘟嘴 ddz
输出:
newvalue: 嘟嘟嘴|ddz|_ added.
或者:嘟嘟嘴|ddz|_ exists... no add!

其他还有文件读入写入函数:

save_var:存入变量值
使用方法: save_var varname
使用举例:save_var id_list
输出:
id_list.txt
Opened id_list.txt as file 3
id_list.txt erased.
Opened id_list.txt as file 3
Closed id_list.txt on file 3
VAR id_list saved to id_list.txt

load_var:读入变量值,同时把内容写入varname.bak文件
使用方法: load_var varname
使用举例:load_var id_list
输出:
Opened id_list.txt as file 3
Closed id_list.txt on file 3
_阿菜哥|waiter|_阿草|a cao|cao|_阿大|a da|_阿二|a er|_阿发|afa|_阿发日记|afrji|_
_阿菜哥|waiter|_阿草|a cao|cao|_阿大|a da|_阿二|a er|_阿发|afa|_阿发日记|afrji|_
Opened id_list.bak as file 4
id_list.bak erased.
Opened id_list.bak as file 4
Closed id_list.bak on file 4


以上函数实现方法:
//usage:hash_find %hash_list %hash_id,(_hash_id|hash_value|_),
//return to @hash_value;
//e.g. 阿发日记
hash_find:
varlist=@<%1>;
hash_id=_%2|;
#if %pos(@hash_id,<@varlist>) {temp=%pos(@hash_id,<@varlist>);
temp=%right(<@varlist>,@temp+%len(@hash_id)-1);
temp=%left(@temp,%pos("|",@temp)-1);
hash_value=@temp;
#echo @hash_id : @hash_value;
} {#echo not found!;
hash_value=0;
}
//usage:hash_add %hash_list %hash_id %hash_value//(_hash_id|hash_value|_),
//e.g. hash_add id_list 嘟嘟嘴 ddz

hash_add:
varlist=@<%1>;
hash_key=%2|%3|_;
#if %pos(@hash_key,<@varlist>) {#echo @hash_key exists... no add!;} {
temp=<@varlist>@hash_key;
#var <%1> @temp;
#echo newvalue: @hash_key added.
}

//usage:set varname (e.g. id_list, no @);
save_var:
varname=%1;
filename=@varname.txt;
#echo @filename;
#file 3 @filename;
#erase 3;
#file 3 @filename;
var2=@<@varname>;
#write 3 <@var2>;
#close 3;
#echo VAR @varname saved to @filename;

//usage:set varname (e.g. id_list, no @);
load_var:
varname=%1;
filename=@varname.txt;
var2=@<@varname>;
#file 3 @filename;
temp=%read(3);
#close 3;
#var <@varname> @temp;
#echo @temp;
#echo @var2;
fileback=@varname.bak;
#file 4 @fileback;
#erase 4;
#file 4 @fileback;
#write 4 <@var2>;
#close 4

西游记2000新纪元的历史性时刻:现在时间 Mon Oct 07 01:34:56 CDT 2003
第一个全白的人物出现了
check fengyue
你口中念了几句咒文,眼中突然精光一闪,大喝一声“顺风耳何在!”
只听嘿嘿几声奸笑,不知从哪里钻出来一个肥头大耳的家伙,在你耳边低声说了几句话。
顺风耳告诉你:痴风梦月的道行已达天人合一的境界。
顺风耳告诉你:痴风梦月的武功已达深不可测的境界。
顺风耳告诉你:痴风梦月的法力修为已达法力无边的境界。
顺风耳告诉你:痴风梦月的内力修为已有一甲子的火候。
你忽然莫名其妙地哆嗦了一下。
你急忙掐指一算,原来是痴风梦月(fengyue)正在打听你的道行。

总站最神奇的老尼姑。唯一一个死掉了15M武学还有15M武学、死掉了三万年道行还有三万年道行、拜了观音学了佛法还娶了老婆的、整天活蹦乱跳但又没人看得见的、神经兮兮、傻傻乎乎的、身受女孩子爱戴、身受男孩子痛恨的、长得很帅又风情万种的、看起来是八十多、实际上是六百多岁的、人称小甜甜的老太婆。
帅哥 fengyue_xyj 当前离线  
回复时引用此帖