!このコードは Lua です!
たとえばsm/sscファイルの中に
#TEST:AAABBBCCCDDD;
というパラメータが存在した場合、
GetSMParameter(song,"TEST");
とすると AAABBBCCCDDD が返ってきます。
存在しない場合は空文字。
Str2Colorはおまけ。
"1.0,0.5,0.8,1.0" のように、色情報が文字列となっているときに使うことで
各色情報が個別にテーブルデータで返ってきます。
値が異常な場合は白が返ってきます。
例:水色を返す
local str_col="0.0,0.5,1.0,1.0";
local tab_col=Str2Color(str_col);
self:diffuse(tab_col[1],tab_col[2],tab_col[3],tab_col[4]);
—
2021年追記
悲しいことに標準で同じ機能が用意されていた。無知は罪。
local str_col="0.0,0.5,1.0,1.0"
self:diffuse(color(str_col))
!このコードは Lua です!
たとえばsm/sscファイルの中に
#TEST:AAABBBCCCDDD;
というパラメータが存在した場合、
GetSMParameter(song,"TEST");
とすると AAABBBCCCDDD が返ってきます。
存在しない場合は空文字。
Str2Colorはおまけ。
"1.0,0.5,0.8,1.0" のように、色情報が文字列となっているときに使うことで
各色情報が個別にテーブルデータで返ってきます。
値が異常な場合は白が返ってきます。
例:水色を返す
local str_col="0.0,0.5,1.0,1.0";
local tab_col=Str2Color(str_col);
self:diffuse(tab_col[1],tab_col[2],tab_col[3],tab_col[4]);
—
2021年追記
悲しいことに標準で同じ機能が用意されていた。無知は罪。
local str_col="0.0,0.5,1.0,1.0"
self:diffuse(color(str_col))
function GetSMParameter(song,prm) local st=song:GetAllSteps(); if #st<1 then return ""; end; local t; t=st[1]:GetFilename(); if not FILEMAN:DoesFileExist(t) then return ""; end; local f=RageFileUtil.CreateRageFile(); f:Open(t,1); local tmp={}; local pl=string.lower(prm); while true do l=f:GetLine(); local ll=string.lower(l); if string.find(ll,"#notes:.*") or f:AtEOF() then tmp[1]=""; break; -- [ja] BOM考慮して .* を頭につける elseif string.find(ll,".*#"..pl..":.*") then tmp=split(":",l); if tmp[2]==";" then tmp[1]=""; else tmp=split(";",tmp[2]); end; break; end; end; f:Close(); return tmp[1]; end; function Str2Color(prm) local c={"1.0","1.0","1.0","1.0"}; c=split(",",prm); if #c<4 then c={"1.0","1.0","1.0","1.0"} end; return c; end;