-
Notifications
You must be signed in to change notification settings - Fork 11
Home
位置:objnam.c
调用过程:an() -> just_an()
just_an()处理后,一般会给字符串前面加上"a "或者"an "
所以在处理中文字符串时,要去掉an(),an(str)改为str
位置objnam.c
先判断物品otmp的数量是否是复数,不是复数,就调用vtense(),否则直接返回动词
汉化时无需处理
位置objnam.c
判断物品subj本身为单数还是复数,最后决定动词verb是否要加"s"或者"es",结果返回动词
中文下,verb都会处理为加"s",我直接修改了函数
Strcasecpy(bspot + 1, "s");
改为Strcasecpy(bspot + 1, "");
汉化时无需额外处理
通用函数,把 str1 和 str2 进行比较,最多比较前 n 个字节
在处理中文时,中文在不同编码下的字节不一样,不能使用这个函数
我在config.h中定义了3种标识符
#define cnstrcmpi(bp, str, l) strncmpi(bp, str, l = strlen(str))
#define cnstrcmp(bp, str) strncmp(bp, str, strlen(str))
#define cnbstrcmp(bp, p, str) BSTRCMPI(bp, p - strlen(str), str)
所以把strncmp(str1, str2, n)替换为cnstrcmp(str1, str2)
把strncmpi(str1, str2, l = n)替换为cnstrcmpi(str1, str2, l)
把BSTRCMPI(str1, p - n, str2)替换为cnbstrcmp(str1, p, str2)
allmain.c/moveloop(),游戏启动!
在NetHack/dat文件夹下的一些des文件中,每个职业都有各自的des文件
从des文件的的判断过程代码为sp_lev.c/spo_object() -> sp_lev.c/create_object() -> do_name.c/oname() -> artifact.c/exist_artifact()