Hatena::ブログ(Diary)

永字八法 RSSフィード Twitter

 | 

2009-05-26 Tuesday

む式ver.lua

む式ライブラリver.2 - 永字八法の続き。
技術進歩はたいしたもので、一部にご好評いただいた「む式」もついにバージョンアップすることができました。
2009-05-27バージョンバージョンアップ

導入方法

  • nscr.exeを、Luaが使える最新の物にさしかえる。
  • 最新のnscr.exeには、nslua.dllがついているはずなので、それを同梱する。
  • nscr.exeと同じ場所にsystem.luaファイルを作り、そこに下記内容をコピペして保存する。

次にstart節のできるだけ早い段階で、

  • 「chnsa umineko4」とか宣言する。
  • その次の行で「music_set umineko4」とか宣言する。

「移動が必要」なオリスクが、たったこれだけの手間で「移動が不要」になります。

機能説明

以下の五つの命令を追加します。

  • chnsa
  • get_addnsadir
  • fullpath
  • music_set
  • music_get

また、音楽系の6種類の命令を上書きします。
さらに、nsaLuaの中から呼ぶようにしました。これで、define節中に呼び出すのを忘れても安心。

chnsa

このライブラリの肝。たとえば、「chnsa umineko4」と宣言するだけで、「うみねこのなく頃に Alliance of the golden witch」のarc.nsaと音楽ファイルを余所から使えるようになります。
※機能的には前バージョンと変わっていません。

get_addnsadir

追加命令。
「get_addnsadir $0」とすると、$0に、今現在参照している余所のディレクトリが入ります。

music_set

音楽ファイルに限って、別のディレクトリを参照するためのものです。

music_get

music_setで設定されたディレクトリを返します。

fullpath

追加命令。
「fullpath $0,$1」とすると、$0に、music_getの結果と$1をつなげた内容が入ります。
oggを扱う時、最初にカッコで繰り返し時間を指定する場合、この命令でファイル名をフルパスにしてから、カッコを頭につけてください。
※もしかして不要かも。

バージョンとの相違点

うみねこのなく頃に」の基本システムとの相性を主眼に置きました。

エラーチェック機能を強くしました。
chnsaを実行した時、指定されたバージョンの「うみねこのなく頃に」がなかったり、あったとしても本来あるべき場所にarc.nsaがなかったりすると、それだけでエラーを出して止めるようにしました。music_setでも同様です。
音量記録機能を省略しました。
うみねこのなく頃に」の基本システムについているようなので、省略しました。
変数領域を汚しません。
うみねこのなく頃に」の基本システムが使う変数と、絶対にバッティングしなくなりました。つーか、NScripter本来の変数を使いません。汚しません。なので、オリスクユーザーが気にしないといけないのは、基本システムとのバッティングだけです。

system.lua

-- む式 ver.lua 2009-05-27
NSExec("nsa")

-- 共通部分
function id2reg(id)
	local lid = id:lower()
	
	local reg_key = ""
	local reg_var = ""
	
	if id == "singingmoon" then
		reg_key = 'Software\\TYPE-MOON\\歌月十夜'
		reg_var = 'directory'
	else
		    if id == "higurasi1" then reg_key = 'Software\\07th_Expansion\\higurasi'
		elseif id == "higurasi2" then reg_key = 'Software\\07th_Expansion\\higurasi2'
		elseif id == "higurasi3" then reg_key = 'Software\\07th_Expansion\\higurasi3'
		elseif id == "higurasi4" then reg_key = 'Software\\07th_Expansion\\higurasi4'
		elseif id == "higurasi5" then reg_key = 'Software\\07th_Expansion\\higurasi5'
		elseif id == "higurasi6" then reg_key = 'Software\\07th_Expansion\\higurasi6'
		elseif id == "higurasi7" then reg_key = 'Software\\07th_Expansion\\higurasi7'
		elseif id == "higurasi8" then reg_key = 'Software\\07th_Expansion\\higurasi8'
		elseif id == "higurasi9" then reg_key = 'Software\\07th_Expansion\\higurasi9'
		elseif id == "umineko1" then reg_key = 'Software\\07th_Expansion\\Umineko1'
		elseif id == "umineko2" then reg_key = 'Software\\07th_Expansion\\Umineko2'
		elseif id == "umineko3" then reg_key = 'Software\\07th_Expansion\\Umineko3'
		elseif id == "umineko4" then reg_key = 'Software\\07th_Expansion\\Umineko4'
		elseif id == "umineko5" then reg_key = 'Software\\07th_Expansion\\Umineko5'
		elseif id == "umineko6" then reg_key = 'Software\\07th_Expansion\\Umineko6'
		elseif id == "umineko7" then reg_key = 'Software\\07th_Expansion\\Umineko7'
		elseif id == "umineko8" then reg_key = 'Software\\07th_Expansion\\Umineko8'
		end
		if reg_key ~= "" then reg_var = 'gamedir' end
	end
	
	if reg_key == "" then
		NSOkBox("正しいキーワードを指定してください。", "む式。")
		NSSystemCall("end")
	end
	
	-- 取得してみる。
	local temp0 = NSGetStrValue(0) -- 退避
	NSExec('_getreg $0,"'..reg_key..'","'..reg_var..'"')
	local dir = NSGetStrValue(0)
	NSSetStrValue(0, temp0) -- 復帰
	
	if dir == "" then
		NSOkBox(id.."はインストールされていません。", "む式。")
		NSSystemCall("end")
	end
	
	-- 末尾に\がなければ\をつける。
	if string.char(dir:byte(dir:len())) ~= "\\" then dir = dir .. "\\" end

	-- そこにnsaがあるかどうかチェックする。
	temp0 = NSGetIntValue(0) -- 退避
	NSExec('_fileexist %0,"'..dir..'arc.nsa"')
	local exist = NSGetIntValue(0)
	NSSetIntValue(0, temp0) -- 復帰
	
	if exist == 0 then
		NSOkBox(id.."のarc.nsaがみつかりません。", "む式。")
		NSSystemCall("end")
	end
	
	return dir
end

-- nsa関係
local chnsa_dir = "" -- 現在のchnsaディレクトリ
NSExec("luasub chnsa")
function NSCOM_chnsa()
	-- IDの取得
	local dir = id2reg(NSPopID())
	
	-- ディレクトリを追加する。
	NSExec('_addnsadir "'..dir..'"')
	-- ディレクトリを保存する。
	chnsa_dir = dir
end

NSExec("luasub get_addnsadir")
function NSCOM_get_addnsadir()
	NSSetStrValue(NSPopStrRef(), chnsa_dir)
end


-- 音楽系
local music_dir = ""
NSExec("luasub music_set")
function NSCOM_music_set()
	-- IDの取得
	local dir = id2reg(NSPopID())
	-- ディレクトリを保存する。
	music_dir = dir
end

NSExec("luasub music_get")
function NSCOM_music_get()
	NSSetStrValue(NSPopStrRef(), music_dir)
end

NSExec("luasub fullpath")
function NSCOM_fullpath()
	local ref = NSPopStrRef()
	NSPopComma()
	NSSetStrValue(ref, music_dir..NSPopStr())
end

-- 既存命令の上書き
NSExec("luasub bgm")
function NSCOM_bgm()
	NSExec('_bgm "'..music_dir..NSPopStr()..'"')
end
NSExec("luasub bgmonce")
function NSCOM_bgmonce()
	NSExec('_bgmonce "'..music_dir..NSPopStr()..'"')
end
NSExec("luasub loopbgm")
function NSCOM_loopbgm()
	local file1 = NSPopStr()
	NSPopComma()
	local file2 = NSPopStr()
	NSExec('_loopbgm "'..music_dir..file1..'","'..music_dir..file2..'"')
end
NSExec("luasub dwave")
function NSCOM_dwave()
	local ch = NSPopInt()
	NSPopComma()
	NSExec('_dwave '..ch..',"'..music_dir..NSPopStr()..'"')
end
NSExec("luasub dwaveload")
function NSCOM_dwaveload()
	local ch = NSPopInt()
	NSPopComma()
	NSExec('_dwaveload '..ch..',"'..music_dir..NSPopStr()..'"')
end
NSExec("luasub dwaveloop")
function NSCOM_dwaveloop()
	local ch = NSPopInt()
	NSPopComma()
	NSExec('_dwaveloop '..ch..',"'..music_dir..NSPopStr()..'"')
end

負け犬負け犬 2009/05/27 00:03 試してみたけれど動きませんでした。
system.luaの作り方が悪いのかな?
1.新規テキストを作って、ファイル名、拡張子をリネーム。
2.入門LuaプログラミングのP8を参照してtrylua.batを使用。
3.以前公開されたluacall_testの時のsystem.luaをテキストエディタで開いて上書きコピペ。

この3通りでsystem.luaを作りました。

使用したスクリプトは以下

*define
game
*start
chnsa umineko4

;get_addnsadir $0
;$0

ld c,"bmp\tati\bea\1\bea_defa1.bmp",22
\
end

結果は「ファイル(ベアトの立ち絵)を開けません」
get_addnsadir $0らのコメントを除去するとcドライブのumineko4を取得しているようです。
ファイル名も間違っていないと思うのですが、はて。
明日もう一回チャレンジしてみます。


 music_setはあった方がいいかもしれません。
ひぐらしの時の様にEP5から音楽、効果音が一新されると思われます。
その時に立ち絵はEP5から、音楽・効果音をEP4から使う場合が考えられます。
 いかがなもんでしょう。

eiji8poueiji8pou 2009/05/27 07:16 00.TXTのdefine節にnsa命令がないかな?

MUSIC_SETは実装します。

負け犬負け犬 2009/05/27 18:49 これは恥ずかしい。
正常に動作しました。

これから孫の手セットとこないだのTIPSを組み込む作業に戻ります。

eiji8poueiji8pou 2009/05/27 21:02 バジョンアップしますた。music_set復帰しました。

通りすがり通りすがり 2009/05/28 18:38 些細な事ですが
music_set復帰により導入方法の説明の「一行追加」の部分を訂正した方が良いのではないでしょうか?
既に使ってる人は別としてこれから使う人は混乱する可能性があったりなかったりするかもです。

eiji8poueiji8pou 2009/05/28 20:07 ご指摘ありがとうございます。
修正しました。

通りすがり通りすがり 2009/05/28 21:00 うーん。「二行追加」ってのがどれに掛かった説明なのか理解し辛いかも。

* nscr.exeを、Luaが使える最新の物にさしかえる。
* 最新のnscr.exeには、nslua.dllがついているはずなので、それを同梱する。
* nscr.exeと同じ場所にsystem.luaファイルを作り、そこに下記内容をコピペして保存する。

後start節のできるだけ早い段階で、二行追加。
*うみねこEP4の場合、 「chnsa umineko4」とか宣言する。
* 同じく「music_set umineko4」とか宣言する。

簡単に置くだけ。ブルーレット並に簡単になりました。

つーかですね。多分、「移動が必要」なオリスクと並べて置いて、二行追加するそれだけで「移動が不要」になるはずです。

とかどうでしょうか?

eiji8poueiji8pou 2009/05/28 21:06 ご指摘ありがとうございます。表現を少々変えてみました。

パンダ5パンダ5 2011/10/03 17:43 む式置くだけ(2010-02-19版)で文字列スプライトを使うと、エラーが出ます。

mushiki\okudake.lua324:attempt to index local'str'(a nil value)

パンダ5パンダ5 2011/10/03 17:46 ↓の文字スプライト表示をテストしようとしてたんですが
;文字スプライトの登録
setwindow 31,16,22,16,50,50,0,2,20,1,1,#999999,0,0,639,479
lsp 8,":s#FFFFFFあいうえお",50,100

eiji8poueiji8pou 2011/10/04 00:15 ご指摘ありがとうございました。
バグをフィックスしたバージョンをアップしています。
http://d.hatena.ne.jp/eiji8pou/20100213/1266049260
ご確認ください。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/eiji8pou/20090526/1243343940
 | 

Notice

コメント等は基本的に自由ですが、通りすがりとかななしさんとかの場合、いじっても面白くないので放置する可能性があります。

最近のエントリー

カウンター:
<< 2009/05 >>
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
あわせて読みたい
過去ログ
0000 | 00 |
1800 | 10 |
1908 | 06 |
1983 | 06 | 12 |
1985 | 01 | 08 | 09 | 10 | 11 |
1986 | 10 |
1990 | 01 | 02 | 03 | 04 | 05 | 06 |
1995 | 01 |
1996 | 02 | 03 | 04 | 05 | 06 |
1997 | 03 | 05 |
1999 | 02 | 09 |
2000 | 00 |
2001 | 12 |
2002 | 01 | 02 | 03 | 04 |
2003 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2004 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 |

Mail Form
お名前
メールアドレス
本文
公開の是非 公開してもよござんす/公開してはいけません
ブロ電™切符
RSS feed meter for http://d.hatena.ne.jp/eiji8pou/
著作権保護期間の70年延長に反対
NHK(日本放置協会)は放置される側の団体です
やる気の無いサイトリング
時間のないサイト運営者リング
ヒロインリコメンダー
私設コミケカタログ
「ひぐらしのなく頃に」を応援しています。
07th Expansion
「ひぐらしのなく頃に」のネタばれがあるのです。

最新コメント一覧

1. 04/29 柊
2. 02/13 湖都
3. 02/13 eiji8pou
4. 02/13 湖都
5. 10/06 湖都
6. 10/06 リメ
7. 10/06 eiji8pou
8. 10/06 リメ
9. 02/13 パンダ5
10. 05/26 eiji8pou
11. 05/26 パンダ5
12. 05/26 パンダ5
13. 10/01 リメ
14. 10/01 eiji8pou
15. 09/17 eiji8pou

最新トラックバック一覧

1. 06/19 Twitter / @maedaema
2. 01/14 同人サークル 金沢自転車学校 - NScripterでプレーヤーに文字入力...
3. 01/14 吉野家 ゆでたまご
4. 12/18 ガンダム無双3
5. 08/18 長山洋子 動画
6. 06/20 聖☆おにいさん(5) (モーニングKC) |中村 光
7. 06/01 Twitter / @fkm
8. 04/03 長山洋子 おにゃんこ
9. 07/03 Myrmecoleon in Paradoxical Library. はてな新館 - Sat, Dec 19
10. 08/03 幻惑密室 西澤保彦
11. 10/01 Atelier de Muguet 制作記録 - エフェクト自作 その2
12. 10/07 Atelier de Muguet 制作記録 - 圧縮方式について
13. 09/27 Atelier de Muguet 制作記録 - 花火
14. 09/27 Atelier de Muguet 制作記録 - 花火
15. 09/26 Atelier de Muguet 制作記録 - マップ自動生成

言及URL

1. むいむい。の所蔵 / figma ファイアボール チャーミング ドロッセル( チャーミング) - メディアマーカー
2. t.co
3. 占ぃったー
4. Twitter / eiji8pou: わたしの今日の運??
5. Twitter / eiji8pou: [MM登録] コミックヴ
6. Twitter / eiji8pou: [MM登録] figma ファイ
7. eiji8pou (eiji8pou) :: twtr2src | Post your Twitter timeline to Evernote or send by mail everyday!
8. t.co
9. t.co
10. t.co

言及ISBN/ASIN

1. バブルガムクライシス 超鋼守護天使 (朝日ノベルズ)
2. UN‐GO 敗戦探偵・結城新十郎(1) (カドカワコミックス・エース)
3. UN‐GO~因果論 (カドカワコミックス・エース)
4. 京四郎と永遠の空 (1) (カドカワコミックスドラゴンJr)
5. 京四郎と永遠の空 (2) (角川コミックスドラゴンJr. (KCJ99-2))
6. 京四郎と永遠の空 3 (角川コミックス ドラゴンJr. 99-3)
7. 私立樋渡高校COMICS (1) (角川コミックス・エース・エクストラ)
8. 私立樋渡高校COMICS (2) (角川コミックス・エース・エクストラ)
9. アトムちゃん (単行本コミックス)
10. 舞-HiME戦 (電撃コミックス EX 144-1)
11. 武装神姫2036 3 (電撃コミックス)
12. 魔王なあの娘と村人A〈3〉ロボ娘は今日も空を飛べない (電撃文庫)
13. キャッツ・ワールド (2) (ドラゴンコミックス)
14. レイモンド2 (ドラゴンコミックス 56-6)
15. TWD express vol.1 (NORAコミックス)
16. 白貌の伝道師 (星海社FICTIONS)
17. 殺竜事件 (講談社ノベルス)
18. 悲鳴伝 (講談社ノベルス)
19. デビルマン(1) (講談社漫画文庫)
20. デビルマン(2) (講談社漫画文庫)
21. デビルマン(3) (講談社漫画文庫)
22. デビルマン(4) (講談社漫画文庫)
23. デビルマン(5) (講談社漫画文庫)
24. AKB0048ハート型オペレーション(1) (KCデラックス)
25. RD 潜脳調査室(1) (マガジンZコミックス)
26. ミニマム(1) (ヤングマガジンコミックス)
27. AKB0048 EPISODE0 1 (講談社コミックスなかよし)
28. 漢式青春ばくはつ劇場(2) (KCデラックス)
29. 銃夢 Last Order(17) (KCデラックス)
30. 銃夢 Last Order NEW EDITION(10) (KCデラックス)

言及JAN/EAN

1. HGST 3.5inch 7200rpm 2.0TB 64MB SATA 6.0Gbps
2. 裸族のインテリジェントビル5Bay USB3.0 eSATAコンボ
3. luv wave
4. 妄想科学シリーズ ワンダバスタイル 1(限定盤)
5. 妄想科学シリーズ ワンダバスタイル 1
6. 妄想科学シリーズ ワンダバスタイル 2
7. 妄想科学シリーズ ワンダバスタイル 3
8. 妄想科学シリーズ ワンダバスタイル 4
9. 妄想科学シリーズ ワンダバスタイル 5
10. 妄想科学シリーズ ワンダバスタイル 6
11. カステラ あんサンド
12. ScanSnap S1500
13. スタンド型ワンクリックスキャナー
14. アンドロイド ローション付
15. FUTURE LOID ミクティー
16. FUTURE LOID ミクティ ver.2.0
17. ミクティPocket
18. ミクティPocket Ver.2.0
19. ヴァージンロイド ルルカ ローション付
20. ヴァージンロイド リンリン ローション付
21. Transformers: The Movie
22. アニメ★マニア
23. 『超重神グラヴィオンツヴァイ』オリジナルサウンドトラック
24. 月光嗜好症〜moonlights intoxication〜
25. 雪と氷の旋律
26. Noblerot
27. MUSIC TRACKS FROM Wi
28. 麗人ニルヴァーナ来駕〜ボクのアンドロ
29. 星と月のソナタ
30. 決定盤! ローカルヒーロー大全集

eiji8pouのアンテナ

1. Yahoo!ブログ - マンガ好きの戯れ言
2. ほぼ日刊資料保存
3. 『書店員の本音で生きたい!』
4. くすみんと
5. 放蕩オペラハウス
6. ゆうきさらのほんよみにっき
7. すいーとポテト@はてな
8. 本屋さんからの風景
9. diary / nowadays
10. はてなダイアリー - 永字八法
11. 富士書房
12. EXPLORE MONOGAMY BLOG
13. 雑多三昧記//禅
14. みてのとおりのありさまだ
15. 駄目社員はむの日記
16. 落葉のささやき
17. 雲上四季
18. モルツーの日々
19. ”裏”日本工業新聞!!
20. 本のがんこ堂 ブログ

注目URL

1. t2b - Twitterのツイートをブログに自動投稿
2. georss - GeoRSS
3. # - Twitter Search
4. 読書メーター - あなたの読書量をグラフで管理
.
.
.
.
.
.

注目ISBN/ASIN

1. ドラゴンクエストモンスターズ テリーのワンダーランド3D
2. きのう何食べた?(6) (モーニング KC)
3. レセプタクル (書籍扱い楽園コミックス)
4. 乙嫁語り 4巻 (ビームコミックス)
5. 東雲侑子は全ての小説をあいしつづける (ファミ通文庫)
6. カゲロウデイズ -in a daze- (KCG文庫)
7. スマイレージ ベストアルバム完全版 (1) (初回生産限定盤)
8. ドラゴンクエスト25thアニバーサリー モンスター大図鑑
9. ドラゴンズドグマ
10. 私がモテないのはどう考えてもお前らが悪い!(2) (ガンガンコミックスONLINE)

最新JAN/EAN

1. クリアアサヒ スリムボトル缶 350ml
2. ハーゲンダッツ クレープグラッセ ティラミス
3. ハートキャッチプリキュア! 耐熱コップ
4. ハーゲンダッツ kajitsu マンゴー
5. トイザらス限定 スマイルプリキュア! なりきりキャラリートキッズ

注目JAN/EAN

1. クリアアサヒ スリムボトル缶 350ml
.
.
.
.

書いたコメント