作者laechan (小太保)
看板mud_sanc
标题Re: [wiz]一些程式码
时间Tue Jun 22 15:38:26 2010
※ 引述《justinj (闇冥)》之铭言:
: 等级排序由低至高 G,F,E,D,C,B,A,S,SS,SSS
: 那我要如何简单的比较大小呢?
: 例如我的等级为D....某个任务要求为E级...那D>E..可以接之类的
mixed levels=({"G","F","E","D","C","B","A","S","SS","SSS"});
tar_level=tar->query_level(); // 比方取出 "D"
need_level="E";
if(member_array(need_level,levels) > member_array(tar_level,levels))
return notify_fail("你的等级至少要 "+need_level+" 级才能接任务喔.\n");
member_array 的意思是, 如果 "D" 有在 levels 阵列里面,
它就 return "D" 这个字串在 levels 的阵列位置,例如它会
return 3 (因为阵列位置是从 0 开始)
而像 "H" 没有在 levels 里头,它就会 return -1。
所以当 "E" 的位置在 "D" 的後面,return 回来的值就会比较
大。
: 第二个问题...中文字的转码写法
: 看看有没有像 "日"->ansii码为何...
: "D3E5"转成中文码之类的...
首先,你要自己写 10 进位转 16 进位的函数。我是不确定
LPC 有没有内建,但没内建也没关系。
string to_hex(int v)
{
int a,b;
mixed hexs=({"0","1","2","3","4","5","6","7",
"8","9","A","B","C","D","E","F"});
if(v<1 || v>255)
return "ERROR";
b=v%16;
a=(v-b)/16;
return ""+hexs[a]+""+hexs[b];
}
string chinese_to_ascii(string str)
{
int i,s,v;
string msg=str+" 转换後的结果 = ";
s=strlen(str);
for(i=0;i<s;i++)
{
v=str[i];
msg+=to_hex(v);
}
return msg;
}
刚有试,「小太保」会被转为「A470 A4D3 AB4F」
刚 google 了一下 小 的 ascii 码应该是没错。
上面应该有更简单的写法。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.225.161.242
1F:推 justinj :.wa~~没想到第2个问题有答案...3Q...... 06/22 17:25