最近在補強鑑賞模式,想把bgm鑑賞做成像cg鑑賞那樣的登錄方式
爬了幾個文跟範例之後
得到的方法是先在first.ks初始化處定義空字典
這邊在first是這樣寫:
;------------------------------------------------------------
;初始化
;------------------------------------------------------------
[iscript]
if (sf.初始化==false)
{
//option初始化
kag.allskip=false;//SKIP時只允許略過已讀部分
kag.bgmvolume=50;//背景音樂音量
kag.textspeed=5;//文字速度
kag.autospeed=5;//自動前進速度
//系統變數初始化
sf.cglist=%[];
sf.bgmlist=%[];
sf.歷史=[];
sf.最近存儲頁=1;
sf.初始化=true;
}
[endscript]
接著在macro_play.ks BGM處寫上[eval exp="sf.bgmlist[mp.storage]=true"],如下
[macro name=bgm]
[xchgbgm * storage=%storage overlap=%overlap|500 time=%time|1000]
[eval exp="sf.bgmlist[mp.storage]=true"]
[endmacro]
最後在macro_bgm.ks的BgmButton(name)補上了
[iscript]
function BgmButton(name)
{
=
中間略
=
if (text[1]==kag.bgm.playingStorage)
{
dic.normal=list.over;
}
dic.exp="tf.當前BGM=\""+text[1]+"\"";
dic.target="*播放音樂";
if (sf.bgmlist[text[1]]==true)
{
kag.current.addButton(dic);
//在按鈕上描繪文字
var x=(int)list.x;//設定按鈕上文字位置的地方
var y=(int)list.y;
var str=text[0];
var button=kag.current.links[kag.current.links.count-1].object;
button.font.height=list.size;//設定字體大小
button.font.italic=list.italic;//是否斜體
button.font.bold=list.bold;//是否粗體
if (list.edge)
{
button.drawText(x,y, str, list.color, 255, true, 255, list.edgecolor, 1, 0, 0);
button.drawText(x+button.width,y, str, list.color, 255, true, 255, list.edgecolor, 1, 0, 0);
button.drawText(x+button.width*2,y, str, list.color, 255, true, 255, list.edgecolor, 1, 0, 0);
}
else if (list.shadow)
{
button.drawText(x,y, str, list.color, 255, true, 255, list.shadowcolor, 0, 2, 2);
button.drawText(x+button.width,y, str, list.color, 255, true, 255, list.shadowcolor, 0, 2, 2);
button.drawText(x+button.width*2,y, str, list.color, 255, true, 255, list.shadowcolor, 0, 2, 2);
}
else
{
button.drawText(x,y,str,list.color);
button.drawText(x+button.width,y,str,list.color);
button.drawText(x+button.width*2,y,str,list.color);
}
}
}
function draw_bgmlist()
{
//簡寫名稱
var list=f.config_bgmmode.list;
//載入按鈕圖片確定大小
var temp=new Layer(kag, kag.fore.base);
temp.loadImages(list.normal);
temp.setSizeToImageSize();
var width=temp.width;
var height=temp.height;
for (var i=0;i<list.num;i++)
{
if ((tf.當前BGM頁-1)*list.num+i>=f.bgmlist.count) break;
if (list.line=="single")
{
var btnx=list.left;
var btny=list.top+(height+(int)list.disy)*i;
kag.tagHandlers.locate(%["x"=>btnx,"y"=>btny]);
}
else
{
var btnx=list.left+(width+(int)list.disx)*(i%2);
var btny=list.top+(height+(int)list.disy)*(int)(i/2);
kag.tagHandlers.locate(%["x"=>btnx,"y"=>btny]);
}
BgmButton(f.bgmlist[(tf.當前BGM頁-1)*list.num+i]);
}
}
[endscript]
......不過還是一直跳出錯誤訊息||| 初始化清空部份也失敗了
想問問還有沒有什麼需要注意的地方或是沒改到的地方(暈
另外就是不知道為什麼這邊的CG鑑賞一直沒辦法順利把CG登錄進去
已經有在腳本裡寫好登錄指令,也檢查了Cglist.txt裡面有沒有編輯完成...|||
不過每次還是失敗,真的不知道是不是漏了什麼><
如果還知道有什麼地方能另外注意的還請不吝告知|||||||||謝謝
爬了幾個文跟範例之後
得到的方法是先在first.ks初始化處定義空字典
這邊在first是這樣寫:
;------------------------------------------------------------
;初始化
;------------------------------------------------------------
[iscript]
if (sf.初始化==false)
{
//option初始化
kag.allskip=false;//SKIP時只允許略過已讀部分
kag.bgmvolume=50;//背景音樂音量
kag.textspeed=5;//文字速度
kag.autospeed=5;//自動前進速度
//系統變數初始化
sf.cglist=%[];
sf.bgmlist=%[];
sf.歷史=[];
sf.最近存儲頁=1;
sf.初始化=true;
}
[endscript]
接著在macro_play.ks BGM處寫上[eval exp="sf.bgmlist[mp.storage]=true"],如下
[macro name=bgm]
[xchgbgm * storage=%storage overlap=%overlap|500 time=%time|1000]
[eval exp="sf.bgmlist[mp.storage]=true"]
[endmacro]
最後在macro_bgm.ks的BgmButton(name)補上了
[iscript]
function BgmButton(name)
{
=
中間略
=
if (text[1]==kag.bgm.playingStorage)
{
dic.normal=list.over;
}
dic.exp="tf.當前BGM=\""+text[1]+"\"";
dic.target="*播放音樂";
if (sf.bgmlist[text[1]]==true)
{
kag.current.addButton(dic);
//在按鈕上描繪文字
var x=(int)list.x;//設定按鈕上文字位置的地方
var y=(int)list.y;
var str=text[0];
var button=kag.current.links[kag.current.links.count-1].object;
button.font.height=list.size;//設定字體大小
button.font.italic=list.italic;//是否斜體
button.font.bold=list.bold;//是否粗體
if (list.edge)
{
button.drawText(x,y, str, list.color, 255, true, 255, list.edgecolor, 1, 0, 0);
button.drawText(x+button.width,y, str, list.color, 255, true, 255, list.edgecolor, 1, 0, 0);
button.drawText(x+button.width*2,y, str, list.color, 255, true, 255, list.edgecolor, 1, 0, 0);
}
else if (list.shadow)
{
button.drawText(x,y, str, list.color, 255, true, 255, list.shadowcolor, 0, 2, 2);
button.drawText(x+button.width,y, str, list.color, 255, true, 255, list.shadowcolor, 0, 2, 2);
button.drawText(x+button.width*2,y, str, list.color, 255, true, 255, list.shadowcolor, 0, 2, 2);
}
else
{
button.drawText(x,y,str,list.color);
button.drawText(x+button.width,y,str,list.color);
button.drawText(x+button.width*2,y,str,list.color);
}
}
}
function draw_bgmlist()
{
//簡寫名稱
var list=f.config_bgmmode.list;
//載入按鈕圖片確定大小
var temp=new Layer(kag, kag.fore.base);
temp.loadImages(list.normal);
temp.setSizeToImageSize();
var width=temp.width;
var height=temp.height;
for (var i=0;i<list.num;i++)
{
if ((tf.當前BGM頁-1)*list.num+i>=f.bgmlist.count) break;
if (list.line=="single")
{
var btnx=list.left;
var btny=list.top+(height+(int)list.disy)*i;
kag.tagHandlers.locate(%["x"=>btnx,"y"=>btny]);
}
else
{
var btnx=list.left+(width+(int)list.disx)*(i%2);
var btny=list.top+(height+(int)list.disy)*(int)(i/2);
kag.tagHandlers.locate(%["x"=>btnx,"y"=>btny]);
}
BgmButton(f.bgmlist[(tf.當前BGM頁-1)*list.num+i]);
}
}
[endscript]
......不過還是一直跳出錯誤訊息||| 初始化清空部份也失敗了
想問問還有沒有什麼需要注意的地方或是沒改到的地方(暈
另外就是不知道為什麼這邊的CG鑑賞一直沒辦法順利把CG登錄進去
已經有在腳本裡寫好登錄指令,也檢查了Cglist.txt裡面有沒有編輯完成...|||
不過每次還是失敗,真的不知道是不是漏了什麼><
如果還知道有什麼地方能另外注意的還請不吝告知|||||||||謝謝