【NVL】獨立姓名框及去除外框符號

官方教學: http://www.nvlmaker.net/manual/docs/begin_nameframe.html

  基本上照著官方教學就可以把姓名和對話內容分開來了。

  不過我的需求還要把【】拿掉,而官方教學也提到,直接拿掉【】的話,歷史記錄的人名顏色會出現問題,官方教學雖然說後續教程會提到,不過不曉得是我沒看到還是本來就沒有寫?找不到相關步驟表就自己摸索啦,我的作法算是治標不治本,就是個替代方案,大致上沒有什麼執行上的問題。

預設對話框

 

  以下步驟記錄:

  首先,照著官網教學把 macro_play.ks 打開來,macro_play.ks Project(專案名稱) > Data > nvl 裡面

  選擇 macro_play.ks 檔案(可使用記事本軟體打開)

  將指定位置(第18行和44行)的分號拿掉:

  再調整一下 X 和 Y 就可以達到分離的效果了。

nvl_name04
把姓名位置移到旁邊後的效果

那接著我要把【】符號拿掉,對話框中看起來是沒啥問題。(如上圖)

  不過如果打開歷史記錄,就會發現裡面的名字都沒了顏色。

  所以這時候就要去找歷史記錄相關的程式內容,同樣在 nvl 資料夾內可以找到名稱為 function.ks 的檔案,一樣用記事本打開,找到約400行左右:

  可以知道這段程式碼是透過「【」的符號來判定說這行文字代表的是名字,是的話就往下判斷是不是姓名列表中的名字,並用對應的顏色來表示。不過因為我們已經把符號拿掉了,所以程式會判定說每一行文字都是對話,而不是人名。

  具體改法呢,我自己先試了幾種都不太完美,一開始直接把符號那個條件拿掉,可是就變成姓名列表內沒有的路人顏色會直接套用到所有對話上,程式無法判斷出哪些是對話、哪些是人名。第二種則是透過文字長度來判斷是不是人名,但是這也不實際,因為對話和人名都不是固定長度,只會讓歷史記錄顯示變的很奇怪。所以勢必要有個符號來代替「【」才行,但是我又不想用其他符號來框住人名……

  想了一個晚上,才突然想到有個符號不會顯示出來啊!那就是空白啊!

  所以就把程式改成:

  macro_play.ks 原本所在的「【」直接改成一個空白,「】」可以直接刪掉,而 function.ks 裡也如法炮製,記得在 text.length 的後面將擷取字的長度-2改成-1,因為我們已經沒有「】」了。

  最後記得把獨立姓名 X 的部分再稍微調整一下,這樣就大功告成了。

  當然這個作法還是有一些小問題的,由上圖也可看到歷史訊息的人名稍微被空格內縮了一點點,如果對這個非常介意的話可能就得另尋方法了。(我自己覺得可接受了。)

  以上,希望能幫助到有同樣需求的讀者 XD