Re: [wiz]一些程式碼
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間15年前 (2010/06/22 15:38)推噓1(1推 0噓 0→)留言1則, 1人參與討論串3/3 (看更多)
※ 引述《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
推
06/22 17:25, , 1F
06/22 17:25, 1F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
10
18