看板 mud 關於我們 聯絡資訊
: int strlen sizeof(string); : : 從上面可以發現 string 就跟「陣列」的概念是類似的,也就是 : 說如果一 string = "abcde", 它就類似({"a","b","c","d",e"}) : 這樣的陣列排在一起的結果。 : : strlen 就是計算字串的長度。strwidth 也相當於 strlen 只是 : 一般都用 strlen。 在啟用 fluffos 的 USE_ICONV 選項後, strwidth 的行為將會與 strlen 不同 strlen("中文字") = 9 (UTF-8 的一個中文字佔 3 個 byte, 故長度為 9) strwidth("中文字") = 3 USE_ICONV 選項開啟後, 所有 lib 的文件都必須以 UTF-8 作為文字編碼格式 既然是要弄新的 lib, 小弟建議開啟 USE_ICONV : string *explode(string, string); 這個 efun 會因為 fluffos 的編譯選項, 而有不同的行為 請問 L 大是以 /adm/etc/options.h.example 來編譯 fluffos 嗎? : void move_object(object | string); 把 this_object() 移動到所給的參數裏面 如 user 在 room 之間移動 或 物品在容器之間移動, 最終都是透過這個 efun 不過通常都不會直接使用 move_object() 而是會另外再包一層, 處理重量...之類的東西 : mixed *commands(); 回傳 this_object() 透過 add_action() 取得的指令資訊列表 可供 user 查詢目前可使用那些特殊指令 (如某 room 或 item 才有的特殊指令) : void set_living_name(string); 在小貓, npc 通常不使用此 efun 因為當名稱一樣時, find_living() 只找的到最後一個呼叫此 efun 的物件 除非特例, 不然不建議大量使用這個 efun : livings 傳回的就是所有被 set_living_name 且被載入的生物 livings() 應該是回傳曾經呼叫過 enable_commands() 的物件 : int inherits(string, object default: F__THIS_OBJECT); inherits(ROOM, this_object()) 判斷 this_object() 是否有繼承 ROOM : void replace_program(string); 以參數的程式區塊取代 this_object() 的程式區塊 可提高效能與節省記憶體, 但限制很多 以目前的環境來說, 應該不太需要使用這個 efun 了 : int set_encoding(string); : string to_utf8(string, string); : string utf8_to(string, string); : int *str_to_arr(string); : string arr_to_str(int *); 這幾個 efun 是需要開啟 USE_ICONV 選項之後才會有的 用途是處理文字編碼格式 例如 utf8_to("中文", "Big-5") 可以將文字從 UTF-8 轉換為 Big5 str_to_arr("中文") 會回傳 ({ 20013, 25991, 0 }), 可用來判斷是否為中文字 UTF-8 的中文範圍為 0x4E00 ~ 0x9FA5 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.15.21 ※ 文章網址: http://www.ptt.cc/bbs/mud/M.1404811400.A.0A3.html