小弟來幫忙回答一下

1.
首先是樓上和樓上上二位小惡魔 ,有關輸入"/xhud"沒反應的問題
請先看一下,是否有安裝這個UI : LibSlash
小弟安裝的版本是V2.6-Release
有部分的UI指令,會需要這個Lib才能使用"/指令"

2.
再來就是有無法移動彩帶或是移動後彩帶消失的情況
因為目前上班中,所以仔細情況可能要等小弟下班再回家測試一下
在Postition這裡,請不要用all for frames去移動
最好還是一個一個frames選,一個一個移

在移動彩帶時,其實小弟沒有用過那4個方向鍵
都是直接在xy框填入數值(不過我看到有人的UI怎麼沒有出現填xy值的框框 @@)
這一點小弟回家再進一步check,謝謝大家

3.
紅色字,也就是敵對目標的名字變成亂碼
這個在台版的確會這樣子,推測可能原UI使用的coding 不支援中文
問題點可能在function : WStringToString(TargetInfo:UnitName("selfhostiletarget"))
要查一下WAR API看看
所以小弟是直接把敵對目標的名字拿掉
回家拍圖,再來寫教學囉 @@
冏...
有關於xHud無法正常顯示目標名稱的問題
小弟這幾天搞了很久,還是沒辦法把字串問題解決
簡單地來說,要把遊戲資料裡(e.g.目標名稱)的中文抓出來,再轉成字串
會因為API的支援不足而產生亂碼......
(xHud裡的數值、名稱都是用API function抓遊戲的data)

然後再推另一個類似的UI
http://war.curse.com/downloads/war-addons/details/metahud.aspx
MetaHud這UI在WOW也是有啦,搞不好有人用過
今天回家再來試看看,或許在字串問題有解也說不定 XD

xHUD努力再測試看看
小弟也是從cb1就一直想解決這個問題..只可惜但到現在為止問題依舊..@@

我想這問題可能是真的發生在WStringToString

因為同樣的問題發生在另一個ui....pure

以下截兩小段程式碼:
from pure.lua
-- Print our initialization usage
local init = WStringToString( T["Pure %s initialized."] )
Pure.Print( init:format( DisplayVersion ) )

from zhTW.lua
T["Profiles"] = L"設定檔"
T["Pure - Configuration"] = L"Pure - 設定"
T["Pure %s initialized."] = L"Pure %s 已初始化."

可以發現, 經過 WStringToString 要求轉譯的文字, 就會發生問題

PS: 以上pure訊息出現在聊天視窗的載入訊息中, 不特別注意的話, 在設定視窗是看不見的

但是 WStringToString 的作用是什麼? 經查維基百科(http://www.thewarwiki.com/wiki/Main_Page), 有下列一段敘述

Since the base tostring() Lua function doesn't handle non-ASCII characters in wstrings properly, this function is provided to allow backwards conversion in a useful manner.

也就是, 這個API是用來轉譯遊戲中的文字為字串的, 而明顯的, 目前在對於中文的部份是有點問題!

曾想到一個做法是:
也許可以利用自設定一個local字串變數使其成為WStringToString抓到字串的輸出, 再利用L"xxx"的方式讓其正確顯示中文. 但是想不出辦法來讓L"xxx"中間的xxx可以接受變數而非實際文字, 故作罷.

****************************************************************************
另外, 除了WStringToString是有可能發生的原因之外, 中文版本對於文字輸出的方式可能有暇疵!
如: emotes這個ui:

在修改了部份主程式, 讓他可以認識的語言增加T_CHINESE之後, 如下:

emotes.T_CHINESE={
{L"/同意",L"同意"},
{L"/beckon",L"beckon"},
{L"/beg",L"beg"},
{L"/boast",L"boast"},
{L"/感到無聊",L"感到無聊"},
{L"/鞠躬",L"鞠躬"},

emotes.GERMAN={
{"/agree","zustimmen"},
{"/beckon","herbeiwinken"},
{"/beg","betteln"},
{"/boast","prahlen "},
{"/bored","gelangweilt"},
{"/bow","verbeugen"},
{"/brandish","mit Waffe fuchteln"},
{"/burp","rpsen"},

以上, 在T_CHINESE之中, 我必需加上L""這個功能來強迫local顯示才會正常! 但原本的德語卻不需要. 這就是讓我搞不懂的地方了!
****************************************************************************
anyway....總是希望能有高人有效解決這部份中文字顯示不正常的問題, 才有更多更完善的ui可以讓大家使用!
說真的,被xHUD搞到沒力 XDD
害我後面的UI介紹都沒力寫了(事實上是玩太兇)

先來看看中文字串這個大問題
WAR API很多在處理中文字都怪怪的
(所以,當初戰谷因為的中文問題而delay CB是真的很難搞)
小弟寫了一個簡單UI來測試中文字輸出

function gimi()
EA_ChatWindow.Print(towstring(" ---test area str--- "));
EA_ChatWindow.Print(towstring(" warhammer "));
EA_ChatWindow.Print(towstring(L" 基米拉 "));
EA_ChatWindow.Print(towstring(L"".. WAR ));
EA_ChatWindow.Print((L" t1 小惡魔 "));
EA_ChatWindow.Print(StringToWString(" t2 小惡魔 "));
EA_ChatWindow.Print(towstring(" ---test area end--- "));
end

在範例裡,warhammer,WAR等這些英文字都完全OK
不過以中文來看,只有"基米拉","t1 小惡魔"可以正常輸出在對話框裡

不過也不是上面那樣子就可以正常輸出中文 OTZ,
還要把檔案改為UCS-2 Little Endian來編碼....

再回來看WStringToString這個function
那是不是把xHUDTexts.lua改為UCS-2 Little Endian編碼就好....
很抱歉XDDD,不行 = =
所以問題就是在中文字串轉換

不過在有些UI,
原作者有把名詞獨立成為一個檔案,中文化作者針對該檔案來翻譯並轉碼就可以
以JunkDump(一鍵賣垃圾)這UI來說
(抱歉小弟找不到中文化的大大,在此謝謝你,也借你的中文化檔為例)
JunkDump的所有英文都定義為字串陣列,中文化作者翻譯每個字串後,就可以用了
不過同樣方式用在xHUD,還是......失敗

目前先介紹UI(都快OB了)
WAR API有空再回來K,搞不好有些API在台版根本被改過了 OTZ

有人想試看看寫簡單UI的,小弟附上附件
它的功能只有一個,就是...........在對話框顯示一堆廢話而已 XD
使用方法和其他UI都相同

錦標Server : 身懷六甲的英雄
砍霸Server : 基米拉 (薩滿)


附加壓縮檔: 200905/mobile01-3dd5f9b61c2c80b6aa29a375bf6743b4.zip
對了,xHUD最新版是2.1.6.5
新版改寫了移動血條/AP條的方式
變得更好移動和調整了

之前有人提到無法移動血條或AP條
或是移動血條/AP條很慢很難用的人
記得更新喔
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!