挨拶
-- 訪問客ごとに執事に別の挨拶をさせることができます。
-- 下記のテーブルにキャラクター名と、その方が訪問した際の挨拶を入力してください。
helloTable = {
["キャラクター名1"] = {"こんにちは", H.Percussion.fx2 },
["キャラクター名2"] = {"ども", H.Percussion.fx11 },
["キャラクター名3"] = {"いらっしゃい", H.Percussion.fx6 },
};
function GetHelloString(desc)
if (helloTable[desc] == nil) then
return desc.." さん、こんにちは。";
end
return helloTable[desc][1];
end
function GetHelloSound(desc)
if (helloTable[desc] == nil) then
return H.Percussion.fx9;
end
return helloTable[desc][2];
end
-- スクリプトが初期化されると呼び出されます。
function OnInit()
-- SetSensorは執事がユーザーを認識する距離を設定します。
-- 最初の変数の内側に入ると執事が認識し、
-- 二番目の変数の外側に出ると執事が認識しません。
-- 下記のように設定すると、3m内に入って来た場合認識し、
-- 30m内から外に出ると認識しません。
H.SetSensor(3, 30);
end
-- 執事が認識する距離にユーザーが近付くと呼び出されます。
function OnUserEntered(desc)
-- PlaySoundは音楽を演奏したりlabelを設定します。
-- 最初の変数はチャンネルで、二番目の変数は楽譜です。
-- 下記のように設定すると、0番チャンネルに二つのlabelを設定します。
H.PlaySound(0, "r[1]r[2]");
-- 訪ねてきた人ごとに効果音を演奏します。
if (GetHelloSound(desc) ~= nil) then
-- SetPercussionは音を設定します。
H.SetPercussion(1, GetHelloSound(desc));
-- "x"はSetPercussionで設定した音を演奏します。
H.PlaySound(1, "x");
end
-- 執事がアニメーションを始めます。
-- 最初の変数0は執事を示しています。
-- 二番目の変数1は上のPlaySoundの[1]番labelです。
-- 三番目の変数は手を振るモーションです。
H.StartAnimation(0, 1, H.Emotion.wave);
-- 執事が噴き出しと共に話します。
-- 最初の変数2は上のPlaySoundの[2]番labelです。
-- 二番目の変数には執事がしゃべる言葉を入れます。
H.Say(2, GetHelloString(desc));
end
-- 設定可能なモーション:
-- point, sleep, angry, blush, dance, clap, comfort, drink, eat, laugh, kneel, no,
-- otl, pat, plead, ready, sad, slap, surprise, taunt, thanks, thunder,
-- useup, victory, yes, wave, boo, charge, dislike, panic, salute, smile,
-- sorry, think, blueflag, twoflag, whiteflag, sing, jump
青旗白旗ゲーム
-- 以下の命令分列を変えながらゲームができます。
g_flagTable = {
{ "青旗あげて", H.Emotion.blueflag },
{ "白旗あげないで青旗あげて", H.Emotion.blueflag },
{ "白旗あげて", H.Emotion.whiteflag },
{ "青旗あげないで白旗あげて", H.Emotion.whiteflag },
{ "両方あげて", H.Emotion.twoflag },
{ "青旗あげないで両方あげて", H.Emotion.twoflag },
};
-- スクリプトが初期化される時に呼び出されます。
g_playerName = "";
function OnInit()
H.SetSensor(20, 30);
-- OnSoundPlay 関数を活性化します。
H.EnableSoundCallback(1);
g_playerName = H.GetPlayerName();
end
g_userTable = {};
g_failTable = {};
g_curFlagCount = 0;
g_curFlagMotion = "";
g_inGame = 0;
g_hostGame = 0;
function StartGame()
g_inGame = 1;
for k,v in pairs(g_userTable) do g_userTable[k] = 0 end;
for k,v in pairs(g_failTable) do g_userTable[k] = 0 end;
g_failTable = {};
g_curFlagCount = 0;
g_curFlagMotion= "";
math.randomseed(H.GetGameTime());
H.Say(1, "青旗白旗準備!");
H.PlaySound(1, "r[1]rrrrr x[2]rrrrr x[3]rrrrr x[4]rrrrr x[5]rrrrr x[6]rrrrr x[7]");
if (g_hostGame == 1) then
H.Broadcast("Ready", 0, 0);
end
end
function AddUser(desc)
g_userTable[desc] = 0;
end
function OnBroadcasted(fromUser, msg, param1, param2)
-- ゲーム参加を確認
if (msg == "Ready") then
if (g_hostGame == 0 and g_playerName ~= fromUser) then
H.Broadcast("Join", 0, 0);
end
elseif (msg == "Join") then
if (g_hostGame == 1 and g_playerName ~= fromUser) then
AddUser(fromUser);
end
-- 成功、失敗出力、及び効果音
elseif (string.find(msg, "success")) then
H.SayNoBalloon(1, msg.sub(msg, 8, -1) .. " 様成功!");
if (string.find(msg, g_playerName)) then
H.SetPercussion(5, H.Percussion.fx7);
H.PlaySound(5, "x");
end
elseif (string.find(msg, "failure")) then
H.SayNoBalloon(1, msg.sub(msg, 8, -1) .. " 様脱落!");
if (string.find(msg, g_playerName)) then
H.SetPercussion(5, H.Percussion.fx4);
H.PlaySound(5, "x");
end
end
end
function EndGame()
for k,v in pairs(g_userTable) do
H.SayAllNoBalloon(1, "青旗白旗ゲーム成功: "..k);
end
for k,v in pairs(g_failTable) do
H.SayAllNoBalloon(1, "青旗白旗ゲーム失敗: "..k);
end
H.PlaySound(4, "r[1]");
g_hostGame = 0;
g_inGame = 0;
end
function FailUser(desc)
H.Broadcast("failure" .. desc, 0, 0);
g_failTable[desc] = 1;
end
function OutFailedUsers()
for k, v in pairs(g_failTable) do
g_userTable[k] = nil;
end
end
function CheckPlayerFlag()
for k, v in pairs(g_userTable) do
if (v ~= g_curFlagCount) then
FailUser(k);
end
end
OutFailedUsers();
end
-- 使用者が感情表現をすると呼び出されます。
function OnUserEmotion(motion, desc)
if (motion == H.Emotion.blueflag or motion == H.Emotion.whiteflag or motion == H.Emotion.twoflag) then
if (g_hostGame == 1) then
if (g_userTable[desc] ~= nil) then
if (motion == g_curFlagMotion) then
H.Broadcast("success" .. desc, 0, 0);
g_userTable[desc] = g_curFlagCount;
else
FailUser(desc);
OutFailedUsers();
end
end
end
H.PlaySound(2, "r[1]");
end
end
function SetRandomFlagType()
randVal = math.random(#g_flagTable);
g_curFlagMotion = g_flagTable[randVal][2];
randFlagName = g_flagTable[randVal][1];
g_curFlagCount = g_curFlagCount+1;
H.AlertAll(1, randFlagName);
H.PlaySound(3, "r[1]");
end
function GetUserCount()
count = 0;
for k,v in pairs(g_userTable) do count = count + 1; end
return count;
end
-- 音楽が演奏される時呼び出されます。
function OnSoundPlay(channel, note, len, label)
if (g_hostGame == 1) then
if ((1 < label) and (label < 7)) then
CheckPlayerFlag();
if (GetUserCount() == 0) then
EndGame();
else
SetRandomFlagType();
end
end
if (label == 7) then
CheckPlayerFlag();
EndGame();
end
else
if (label == 7) then
g_inGame = 0;
end
end
end
function OnUserEntered(desc)
AddUser(desc);
end
function OnUserSay(str, desc)
if (string.find(str, "青旗白旗開始")) then
if (g_inGame == 0) then
if (desc == g_playerName) then
g_hostGame = 1;
end
StartGame();
end
end
end
もぐらゲーム
constStageNum = 10;
constMoleNum = 6;
constMoleNumPerStage = 2; -- constMoleNumの 1/3程度が適当
gsReady = 0;
gsInGame = 1;
isHost = false;
gameState = gsReady;
outletState = {};
userScore = {};
function OnInit()
if (constMoleNum < 3) then constMoleNum = 3; end
if (constMoleNum > 9) then constMoleNum = 9; end
H.SetOutletCount(constMoleNum);
H.EnableSoundCallback(true);
end
function OnPlayerSay(str)
if (string.find(str, "もぐら開始")) then
isHost = true;
H.Broadcast("BeginGame", 0, 0);
end
end
function BeginGameHost()
if (gameState == gsReady) then
gameState = gsInGame;
--初期化
for i = 1, constMoleNum do
outletState[i] = 0;
end
math.randomseed(H.GetGameTime());
--シンクを合わせるための string
local str = "";
for i = 1, constStageNum do
str = str .. "r1r1[" .. i .. "]";
end
H.PlaySound(0, str);
-- もぐら初期化
for i = 1, constMoleNum do
H.Broadcast("SetOutletState", i, 0);
end
-- スコア初期化
userScore = {};
-- スタート
H.SayAll(-1, "もぐらゲームスタート ===========");
end
end
function EndGameHost()
if (gameState == gsInGame) then
H.SayAll(-1, "ゲームオーバー");
H.SayAll(-1, "================");
for k, v in pairs(userScore) do
if (k) then
H.SayAll(-1, k .. ": " .. (v or 0));
end
end
H.SayAll(-1, "================");
isHost = false;
gameState = gsReady;
end
end
function BeginGameGuest()
if (gameState == gsReady) then
gameState = gsInGame;
for i = 1, constMoleNum do
outletState[i] = 0;
end
local str = "";
for i = 1, constStageNum do
str = str .. "r1r1"
end
str = str .. "r1[" .. constStageNum .. "]"; -- 余分時間を与える
H.PlaySound(0, str);
end
end
function newStage()
-- 新しくもぐらを選択して出るようにする
local i = 1;
local count = 0;
repeat
local newMole = math.random(constMoleNum);
local state = outletState[newMole]
if (state == nil or state == 0) then
outletState[newMole] = 100;
count = count + 1;
end
i = i + 1;
until count >= constMoleNumPerStage or i > 100;
-- 他のクライアントに知らせる
for i = 1, constMoleNum do
if (outletState[i] == 1 or outletState[i] == 2) then
H.Broadcast("SetOutletState", i, 0);
elseif (outletState[i] == 100) then
outletState[i] = 1;
H.Broadcast("SetOutletState", i, 1);
end
end
end
function OnSoundPlay(channel, note, len, label)
if (isHost and channel == 0 and label > 0) then
newStage();
end
if (label == constStageNum) then
if (isHost) then
H.Broadcast("EndGame", 0, 0);
else
gameState = gsReady;
end
end
end
function OnBroadcasted(fromUser, msg, outletIndex, state)
if (msg == "SetOutletState") then
-- 0: 初期化, 1: highlight, 2: 得点
if (isHost and state == 2 and outletState[outletIndex] ~= 1) then
return;
end
outletState[outletIndex] = state;
if (state == 0 or state == 2) then
H.GlowNow(outletIndex, -1, 0, 0, 0);
H.SetPosNow(outletIndex, 0, 0, -0.3, 0.5);
elseif (state == 1) then
H.GlowNow(outletIndex, 100, 0, 0, 255);
H.SetPosNow(outletIndex, 0, 0, 0, 0.5);
end
if (state == 2) then
-- hostの場合採点をする
if (isHost) then
userScore[fromUser] = userScore[fromUser] and (userScore[fromUser]+1) or 1;
H.SayAll(-1, "得点:".. fromUser);
end
-- 効果音
H.SetPercussion(1, H.Percussion.fx2);
H.PlaySound(1, "x");
end
elseif (msg == "BeginGame") then
if (isHost) then
BeginGameHost();
else
BeginGameGuest();
end
elseif (msg == "EndGame") then
if (isHost) then
EndGameHost();
else
gameState = gsReady;
end
-- もぐらの位置へ
for i = 1, constMoleNum do
H.SetPosNow(i, 0, 0, 0, 0.5);
H.GlowNow(i, -1, 0, 0, 0);
end
end
end
function OnPlayerJumpEnd(outletIndex)
if (outletState[outletIndex] == 1) then
H.Broadcast("SetOutletState", outletIndex, 2);
H.GlowNow(outletIndex, 1, 255, 0, 0);
end
end
演奏する
-- スクリプトが初期化されると呼びだされます。
function OnInit()
-- 執事の右クリックメニューを追加します。
-- 最初の変数はメニューの名前です。
-- 二番目の変数はメニューの固有IDです。
-- この値はOnMenu() 関数として使われます。
H.RegisterMenu("演奏する", 1);
end
-- 執事を右クリックしてメニューを選択すると呼び出されます。
-- menuNumはRegisterMenuで設定した固有IDです。
function OnMenu(menuNum)
-- 固有IDが"演奏する"かどうか判断します。
if (menuNum == 1) then
H.SetInstrument(2, H.Instrument.accordion); -- 楽器を設定します。
H.PlaySound(2, "t250 o6 b2 b2 f# f# a2 a2 g2 e2 f# f# g2 f# f# f# f# c# c# d2 e2 f# f# o5 b2 b2 b2 a# a# a# a# b2 o6 c# c# f# e d a# b r o4 b");
H.SetInstrument(1, H.Instrument.aguitar);
H.PlaySound(1, "t250 o4 e b o5 e g e o4 b a# o5 c# e g e o4 a# a o5 e a e b e o4 g o5 d g f# e d o4 e b o5 e g e o4 b g b o5 g f# e o4 b f# o5 c# e f# e g# a# a# f# e d c# o4 b r o3 b");
H.SetInstrument(0, H.Instrument.abass);
H.PlaySound(0, "t250 o3 e2 e2 e2 a# a# a# a# a# a# a2 a2 a2 g2 g2 g2 e2 e2 e2 g2 g2 g2 f# f# f# f# f# f# a# a# o4 f# e d c# o3 b r b r");
H.SetPercussion(3, H.Percussion.hihatclose); -- 打楽器を設定します。
H.PlaySound(3, "t250 x_ r x_ r r r r r x_ r x_ r x_ r x_ r r r r r x_ r r r x_ r x_ r r r r r x_ r x_ r x_ r x_ r r r r r x_ r r x_ ");
H.SetPercussion(4, H.Percussion.tambourine);
H.PlaySound(4, "t250 r r r r r r r r r r r r r r r r r r r r r r x_ r r r r r r r r r r r r r r r r r r r r r r r r r x_r");
H.SetPercussion(5, H.Percussion.hihatopen);
H.PlaySound(5, "t250 r r r r x_ r r r r r r r r r r r x_ r r r r r r r r r r r x_r r r r r r r r r r r x_r r r r r x_");
H.SetPercussion(6, H.Percussion.triangle);
H.PlaySound(6, "t250 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r x_");
end
end
-- 音階: ド(c), レ(d), ミ(e), ファ(f), ソ(g), ラ(a), シ(b)
-- 音符の長さ: 4分音符(4), 8分音符(8), 16分音符(16)
-- その他のコマンド: 休止符(r), オクターブ(o), ボリューム(v), テンポ(t)
-- 楽器:
-- SetInstrument() で使われるもの: 基本値はピアノです。
-- H.Instrument.abass (アコースティック ベース), H.Instrument.ebass (エレクトリック ベース),
-- H.Instrument.aguitar (アコースティック ギター), H.Instrument.accordion (アコーディオン)
-- SetPercussion() で使われるもの: 基本値はタンバリンです。
-- H.Percussion.tambourine (タンバリン) H.Percussion.triangle (トライアングル)
-- H.Percussion.cymbal (シンバル) H.Percussion.hihatclose (ハイハット クローズ)
-- H.Percussion.hihatopen (ハイハット オープン) H.Percussion.kick (キック)
-- H.Percussion.snare (スネア) H.Percussion.tomtom1 (トムトム1)
-- H.Percussion.tomtom2 (トムトム2) H.Percussion.tomtom3 (トムトム3)
-- H.Percussion.fx1 ~ H.Percussion.fx20 (効果音 1~20)
演奏する(効果音)
-- スクリプトが初期化されると呼びだされます。
function OnInit()
-- 執事の右クリックメニューを追加します。
-- 最初の変数はメニューの名前です。
-- 二番目の変数はメニューの固有IDです。
-- この値はOnMenu() 関数で使われます。
H.RegisterMenu("演奏する(効果音)", 1);
end
-- 執事を右クリックしてメニューを選択すると呼び出されます。
-- menuNumはRegisterMenuで設定した固有IDです。
function OnMenu(menuNum)
-- 固有IDが "演奏する"かどうか判断します。
if (menuNum == 1) then
H.SetInstrument(2, H.Instrument.accordion); -- 楽器を設定します。
H.PlaySound(2, "t250 o6 b2 b2 f# f# a2 a2 g2 e2 f# f# g2 f# f# f# f# c# c# d2 e2 f# f# o5 b2 b2 b2 a# a# a# a# b2 o6 c# c# f# e d a# b r o4 b");
H.SetInstrument(1, H.Instrument.aguitar);
H.PlaySound(1, "t250 o4 e b o5 e g e o4 b a# o5 c# e g e o4 a# a o5 e a e b e o4 g o5 d g f# e d o4 e b o5 e g e o4 b g b o5 g f# e o4 b f# o5 c# e f# e g# a# a# f# e d c# o4 b r o3 b");
H.SetInstrument(0, H.Instrument.abass);
H.PlaySound(0, "t250 o3 e2 e2 e2 a# a# a# a# a# a# a2 a2 a2 g2 g2 g2 e2 e2 e2 g2 g2 g2 f# f# f# f# f# f# a# a# o4 f# e d c# o3 b r b r");
H.SetPercussion(3, H.Percussion.hihatclose); -- 打楽器を設定します。
H.PlaySound(3, "t250 x_ r x_ r r r r r x_ r x_ r x_ r x_ r r r r r x_ r r r x_ r x_ r r r r r x_ r x_ r x_ r x_ r r r r r x_ r r x_ ");
H.SetPercussion(4, H.Percussion.fx2);
H.PlaySound(4, "t250 r r r r r r r r r r r r r r r r r r r r r r x_ r r r r r r r r r r r r r r r r r r r r r r r r r x_r");
H.SetPercussion(5, H.Percussion.fx9);
H.PlaySound(5, "t250 r r r r x_ r r r r r r r r r r r x_ r r r r r r r r r r r x_r r r r r r r r r r r x_r r r r r x_");
H.SetPercussion(6, H.Percussion.fx13);
H.PlaySound(6, "t250 r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r r x_");
end
end
-- 音階: ド(c), レ(d), ミ(e), ファ(f), ソ(g), ラ(a), シ(b)
-- 音符の長さ: 4分音符(4), 8分音符(8), 16分音符(16)
-- 楽器: 基本値はピアノです。
-- H.Instrument.abass (アコースティック ベース), H.Instrument.ebass (エレクトリック ベース),
-- H.Instrument.aguitar (アコースティック ギター), H.Instrument.accordion (アコーディオン)
-- その他コマンド: 休止符(r), オクターブ(o), ボリューム(v), テンポ(t)
ダンス
-- ハウススクリプトが初期化されると呼びだされます。
function OnInit()
end
-- ユーザーがエモーションを使うと呼び出されます。
function OnUserEmotion(motion)
-- エモーションが "ダンス"かどうか確認します。
if (motion == H.Emotion.dance) then
-- 最初の0は執事を表します。
-- 二番目の1はPlaySoundの[1]番labelを表します。
-- 三番目の変数に執事のモーションを歌うに設定します。
H.StartAnimation(0, 1, H.Emotion.sing);
-- [1]番labelが演奏となる際に上のモーションが現れます。
H.PlaySound(2, "t250 o5 a[1] g f r e r d r g1");
H.SetInstrument(1, H.Instrument.accordion);
H.PlaySound(1, "t250 o4 c o3 b a r g r f r e e e2 e2");
H.SetInstrument(0, H.Instrument.abass);
H.PlaySound(0, "t250 o4 c[1] c o2 a# r a r g r o3 c r o2 c2 c2");
H.SetPercussion(3, H.Percussion.hihatclose);
H.PlaySound(3, "t250 x_ r r r x_ r x_ r ");
H.SetPercussion(4, H.Percussion.tambourine);
H.PlaySound(4, "t250 r r x_");
H.SetPercussion(5, H.Percussion.cymbal);
H.PlaySound(5, "t250 r r r r r r r r x_");
end
end
設置物を動かす
-- ハウススクリプトが初期化されると呼びだされます。
function OnInit()
-- 執事の周囲4m以内に入ると作動します。
H.SetSensor(4, 4);
-- アウトレット個数を1個に設定します。
-- アウトレットアイコンを右クリックするとアウトレットが選択できます。
H.SetOutletCount(1);
end
-- ユーザーがチャットすると呼び出されます。
function OnUserSay(str)
-- "移動"と入力するとアウトレット設置物が動きます。
if (string.find(str, "移動")) then
-- [1]. [2]と同じlabelを設定します。
H.PlaySound(0, "r2[1] r2[2]");
-- [1]番labelの場合、アウトレット設置物が上に動きます。
H.SetPos(H.Outlet.outlet1, 1, 0, 0, 0.5, 1);
-- [2]番labelの場合、アウトレット設置物がもっと上に動きます。
H.SetPos(H.Outlet.outlet1, 2, 0, 0, 1, 1);
end
end
設置物を光らせる
-- ハウススクリプトが初期化されると呼びだされます。
function OnInit()
-- 執事の右クリックメニューを追加します。
-- 最初の変数はメニューの名前です。
-- 二番目の変数はメニューの固有IDです。
-- この値はOnMenu() 関数で使われます。
H.RegisterMenu("光らせる", 2);
-- アウトレット個数を1個に設定します。
H.SetOutletCount(1);
end
-- 執事を右クリックしてメニューを選択すると呼び出されます。
-- menuNumはRegisterMenuで設定した固有IDです。
function OnMenu(menuNum)
-- メニューの固有IDが "光らせる"であるか判断します。
if (menuNum ~= 2) then
return;
end
-- 最初の変数は1番のアウトレットを意味します。
-- 二番目の変数はPlaySoundの[1]番labelを意味します。
-- 三番目の変数は1秒間光るということを意味します。
-- 四番目の変数は赤 (R),
-- 五番目の変数は緑 (G),
-- 六番目の変数は青(B)値に色を設定します。
-- 設置物の一部は色が変わりません。
H.Glow( H.Outlet.outlet1, 1, 1, 255, 0, 0);
-- [1]番labelを設定します。
H.PlaySound(0, "r2[1]");
end
設置物がジャンプする
-- ハウススクリプトが初期化されると呼びだされます。
function OnInit()
-- アウトレット個数を1個に設定します。
-- アウトレット アイコンを右クリックすると、アウトレットが選択できます。
H.SetOutletCount(1);
end
-- ユーザーがチャットすると呼び出されます。
function OnUserSay(str)
-- "ジャンプ"と入力するとアウトレットに指定した家具がジャンプします。
if (string.find(str, "ジャンプ")) then
-- [1]番labelを設定します。
H.PlaySound(0, "r2[1]");
-- [1]番labelの場合、アウトレット設置物がジャンプします。
-- 最初の変数は1番のアウトレットを意味します。
-- 二番目の変数はPlaySoundの[1]番labelを意味します。
-- 三番目の変数で高さを設定します。
H.Jump(H.Outlet.outlet1, 1, 1);
end
end
みつめる
-- ハウススクリプトが初期化されると呼びだされます。
function OnInit()
end
-- ユーザーがチャットすると呼び出されます。
-- 最初の因子はチャット内容、二番目の因子はユーザー名です。
function OnUserSay(str, username)
-- "執事"と入力するとみつめます。
if (string.find(str, "執事")) then
-- 最初の変数はlabelです。
-- 二番目の変数はターゲット名です。
-- 三番目の変数はみつける時間です。
-- 下記のようにすると、[1]番labelから2秒間
-- descのような名前のターゲットをみつめます。
-- PlaySoundが終わると、設定した時間に関係なく、元に戻ります。
H.Target(1, username, 2);
-- [1]番labelを設定します。
H.PlaySound(0, "r2[1] r2");
end
end
青旗白旗
-- ハウススクリプトが初期化されると呼びだされます。
function OnInit()
end
-- ユーザーがチャットすると呼び出されます。
function OnUserSay(str)
-- "白旗"と入力すると白旗を上げます。
if (string.find(str, "白旗")) then
-- 最初の変数0は執事を意味します。
-- 二番目の変数1は[1]番labelです。
-- 三番目の変数に白旗のモーションを設定します。
H.StartAnimation(0, 1, H.Emotion.whiteflag);
-- 0番のチャンネルに[1]番labelを設定します。
H.PlaySound(0, "r[1]");
-- "青旗"と入力すると青旗を上げます。
elseif (string.find(str, "青旗")) then
H.StartAnimation(0, 1, H.Emotion.blueflag);
H.PlaySound(0, "r[1]");
elseif (string.find(str, "両方")) then
H.StartAnimation(0, 1, H.Emotion.twoflag);
H.PlaySound(0, "r[1]");
end
end
パーティータイム
-- ハウススクリプトが初期化されると呼びだされます。
function OnInit()
-- アウトレット個数を1個に設定します。
-- アウトレット アイコンを右クリックすると、アウトレットが選択できます。
H.SetOutletCount(5);
end
function PartyTime()
-- 最初の0は執事を表します。
-- 二番目の1はPlaySoundの[1]番labelを表します。
-- 三番目の変数は執事のモーションを拍手に設定します。
H.StartAnimation(0, 1, H.Emotion.clap);
-- 最初の変数は1番のアウトレットを意味します。
-- 二番目の変数はPlaySoundの[2]番labelを意味します。
-- 三番目の変数は1秒間光るということを意味します。
-- 四番目の変数は赤 (R),
-- 五番目の変数は緑 (G),
-- 六番目の変数は青(B)値に色を設定します。
-- 設置物の一部は色が変わりません。
H.Glow( H.Outlet.outlet1, 2, 1, 0, 0, 255);
-- [3] 番labelで赤い光が放たれます。
H.Glow( H.Outlet.outlet1, 3, 1, 255, 0, 0);
H.Glow( H.Outlet.outlet2, 4, 1, 0, 0, 255);
H.Glow( H.Outlet.outlet2, 5, 1, 255, 0, 0);
H.Glow( H.Outlet.outlet3, 6, 1, 0, 0, 255);
H.Glow( H.Outlet.outlet3, 7, 1, 255, 0, 0);
H.Glow( H.Outlet.outlet4, 8, 1, 0, 0, 255);
H.Glow( H.Outlet.outlet4, 9, 1, 255, 0, 0);
H.Glow( H.Outlet.outlet5, 10, 1, 0, 0, 255);
H.Glow( H.Outlet.outlet5, 11, 1, 255, 0, 0);
H.SetPercussion(1, H.Percussion.kick); -- 1番チャンネルをKick soundに設定します。
H.SetPercussion(2, H.Percussion.snare);
H.SetPercussion(3, H.Percussion.hihatclose);
H.SetPercussion(4, H.Percussion.hihatopen);
H.SetPercussion(5, H.Percussion.cymbal);
H.SetPercussion(6, H.Percussion.tomtom1);
H.SetPercussion(7, H.Percussion.tomtom2);
H.SetPercussion(0, H.Percussion.tomtom3);
-- 次は x と _, r にエンコードされた楽譜です。
H.PlaySound(1, "r[1]r r r x[2] _ r[3] r _ x x[4] r16 x[5] r16 x r r x[6]_ r[7] r _x x[8] x x[9] x x[10] x x[11] x r r r r"); -- Kick
H.PlaySound(2, "r r r r r r x _ r r r x _ r r r x_ r r r x _ r r r r r"); -- Snare
H.PlaySound(3, "r r r r x x x x x x x x x x x x x x _ x x x x x x x x x x x x x x x x _ r r r r"); -- hit close
H.PlaySound(4, "x _ x _ x _ x _ r r r r r r r x _ r r r r r r r _ x r r r r"); -- hihatopen
H.PlaySound(5, "r r r r x _ r r r r r r r x _ r r r r r r r x_r r r");
H.PlaySound(6, "r r _ x r r r r r r r _ x r r r r r r r x x x x r r r r");
H.PlaySound(7, "r r r _ x r r r r r r r _ x r r r r r x x x x r r r r r");
H.PlaySound(0, "r r r _ r16 x16 r r r r r r r _ r16 x16 r r r r x x x x r r r r r r");
end
-- ユーザーがエモーションを使うと呼び出されます。
function OnUserEmotion(motion)
-- 感情表現が"勝利"なのか確認します。
if (motion == H.Emotion.victory) then
PartyTime()
end
end
-- ユーザーがチャットすると呼び出されます。
function OnUserSay(str)
-- "開始"と入力するとPartyTime()が呼び出されます。
if (string.find(str, "開始")) then
PartyTime()
end
end
光の演奏
-- ハウススクリプトが初期化されると呼びだされます。
function OnInit()
-- アウトレット個数を7個に設定します。
-- アウトレット アイコンを右クリックすると、アウトレットが選択できます。
H.SetOutletCount(7);
-- OnSoundPlay 関数を活性化します。
H.EnableSoundCallback(1)
end
function PlayNow()
H.SetPercussion(1, H.Percussion.kick);
H.SetPercussion(2, H.Percussion.snare);
H.SetPercussion(3, H.Percussion.hihatclose);
H.SetPercussion(4, H.Percussion.hihatopen);
H.SetPercussion(5, H.Percussion.fx5);
H.SetPercussion(6, H.Percussion.fx14);
H.SetPercussion(7, H.Percussion.fx18);
H.SetPercussion(0, H.Percussion.fx11);
H.PlaySound(1, "t150 x_rrx_r_x_xrx_rrx_ r_x_xrx_rrrrx_rrx_rrrrx");
H.PlaySound(2, "t150 rrx_r rrx_r rrx_r rrx_r rrx__x rrx_r rrx__x rrx_r ");
H.PlaySound(3, "t150 x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x"); -- hit close
H.PlaySound(4, "t150 rrrrrr_xr rrrr _xr_xr rrrr rrr_x");
H.PlaySound(5, "t150 _xrrrrrr_x_xrrrrr_x_rxrrrrrrr_x");
H.PlaySound(6, "t150 r_xrrrr_xrr_xrrrrr_xrrrrrrrrrx");
H.PlaySound(7, "t150 rrr_x_xrrrrrr_x_xrrrrx_rrrrrrrrrr_x");
H.PlaySound(0, "t150 rrrrrrrrrrrrrrrrx");
end
-- ユーザーがチャットすると呼び出されます。
function OnUserSay(str)
-- "明かり"と入力するとPlayNow() を呼び出します。
if (string.find(str, "明かり")) then
PlayNow()
end
end
-- 音楽が演奏されると呼びだされます。
function OnSoundPlay(channel, note, len, label)
if (note == 'x') then
H.GlowNow( H.Outlet.outlet0+channel, 0.1, 0, 0, 255);
end
end
青旗白旗ダンス
-- ハウススクリプトが初期化されると呼びだされます。
function OnInit()
-- アウトレット個数を3個に設定します。
-- アウトレット アイコンを右クリックすると、アウトレットが選択できます。
H.SetOutletCount(3);
-- OnSoundPlay 関数を活性化します。
H.EnableSoundCallback(1)
end
function PlayNow()
H.SetPercussion(1, H.Percussion.kick);
H.SetPercussion(2, H.Percussion.snare);
H.SetPercussion(3, H.Percussion.hihatclose);
H.SetPercussion(4, H.Percussion.hihatopen);
H.SetPercussion(5, H.Percussion.fx5);
H.SetPercussion(6, H.Percussion.fx14);
H.SetPercussion(7, H.Percussion.fx18);
H.SetPercussion(0, H.Percussion.fx11);
H.PlaySound(1, "t150 x_rrx_r_x_xrx_rrx_ r_x_xrx_rrrrx_rrx_rrrrx");
H.PlaySound(2, "t150 rrx_r rrx_r rrx_r rrx_r rrx__x rrx_r rrx__x rrx_r ");
H.PlaySound(3, "t150 x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x_ x"); -- hit close
H.PlaySound(4, "t150 rrrrrr_xr rrrr _xr_xr rrrr rrr_x");
H.PlaySound(5, "t150 _xrrrrrr_x_xrrrrr_x_rxrrrrrrr_x");
H.PlaySound(6, "t150 r_xrrrr_xrr_xrrrrr_xrrrrrrrrrx");
H.PlaySound(7, "t150 rrr_x_xrrrrrr_x_xrrrrx_rrrrrrrrrr_x");
H.PlaySound(0, "t150 rrrrrrrrrrrrrrrrx");
end
-- ユーザーがチャットすると呼び出されます。
function OnUserSay(str)
-- "旗"と入力するとPlayNow()を呼び出します。
if (string.find(str, "旗")) then
PlayNow()
end
end
-- 音楽が演奏されると呼びだされます。
function OnSoundPlay(channel, note, len, label)
if (note == 'x') then
if (channel == 1) then
H.StartAnimationNow(H.Outlet.outlet1, H.Emotion.whiteflag);
end
if (channel == 2) then
H.StartAnimationNow(H.Outlet.outlet1, H.Emotion.blueflag);
end
if (channel == 3) then
H.StartAnimationNow(H.Outlet.outlet2, H.Emotion.whiteflag);
end
if (channel == 4) then
H.StartAnimationNow(H.Outlet.outlet2, H.Emotion.blueflag);
end
if (channel == 5) then
H.StartAnimationNow(H.Outlet.outlet3, H.Emotion.whiteflag);
end
if (channel == 6) then
H.StartAnimationNow(H.Outlet.outlet3, H.Emotion.blueflag);
end
end
end
ライブ ボックス
-- ハウススクリプトが初期化されると呼びだされます。
function OnInit()
-- 執事の右クリックメニューを追加します。
-- 最初の変数はメニューの名前です。
-- 二番目の変数はメニューの固有IDです。
-- この値はOnMenu() 関数で使われます。
H.RegisterMenu("ライブ ボックス", 1);
-- アウトレット個数を14個に設定します。
H.SetOutletCount(14);
end
-- 執事を右クリックしてメニューを選択すると呼び出されます。
-- menuNumはRegisterMenuで設定した固有IDです。
function OnMenu(menuNum)
-- メニューの固有IDが "ライブ ボックス"であるか判断します。
if (menuNum ~= 1) then
return;
end
-- [1]番から[4]番までlabelを設定します。
H.PlaySound(0, "t130 r2[1] r2 r2 r2[2] r2 r2 r2[3] r2 r2 r2[4]");
H.SetInstrument(1, H.Instrument.aguitar);
H.PlaySound(1, "t130 o5 e f# g o6 c o5 d# e f# b e f# g o6 c o5 d# e f# b o5 g8 f8# g8 o4 b8 o5 e g a8 o4 a8 o5 g8 o4 b8 o5 d8# o4 b8 g8 d8# e");
H.PlaySound(2, "t130 o6 c8 o5 g8 f8# e8 o6 c8 o5 g8 f8# e8 o6 c8 o5 b8 f8# d8# o6 c8 o5 b8 f8# d8# o6 c8 o5 g8 f8# e8 o6 c8 o5 g8 f8# e8 o6 c8 o5 b8 f8# d8# o6 c8 o5 b8 f8# d8# e8 f8# g8 b8 o6 e8 f8# g8 f8# d8# o5 a8 g8 d8# o4 b8 r8 d8# r8 e");
H.SetInstrument(3, H.Instrument.accordion);
H.PlaySound(3, "t130 v15 r r8 o4 g8 o5 c8 d8 e8 g8 b2 f2# r r8 o4 g8 o5 c8 d8 e8 g8 b2 d# f# b8 r8 b g8 r8 g o6 c8 r8 o5 a8 r8 d8# r8 o4 b8 r8 o5 e");
H.PlaySound(4, "t130 x_ r x_ r x_ r x_ r x_ r x_ r x_ r x_ r x_ x_ x_ r x_ r x_ x_ x_ ");
H.SetPercussion(5, H.Percussion.hihatopen);
H.PlaySound(5, "t130 rrrr rrrx_ rrrr rrrx_ rrrx_ ");
H.SetPercussion(6, H.Percussion.fx10);
H.PlaySound(6, "t130 rrrr rrrr rrrr rrrr rrrr rrrr x");
H.SetPercussion(7, H.Percussion.fx15);
H.PlaySound(7, "t130 rrrr rrrr rrrr rrrr rrrr rx");
-- 最初の変数はアウトレットです。
-- 二番目の変数はPlaySoundの[1]番labelを意味します。
-- 三番目の変数から五番目の変数はX, Y, Z が動きの大きさです。
-- 六番目の変数は動く時間です。
H.SetPos(H.Outlet.outlet1, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet2, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet3, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet4, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet5, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet6, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet7, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet8, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet9, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet10, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet11, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet12, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet13, 1, 0, 0, 0.5, 1);
H.SetPos(H.Outlet.outlet14, 1, 0, 0, 0.5, 1);
-- H.Outlet.outlet1の代わりに1を使用してよいです。
H.SetPos(1, 2, 1, 0, 0.5, 1);
H.SetPos(2, 2, 0, 1, 0.5, 1);
H.SetPos(3, 2, 0, 0, 1.5, 1);
H.SetPos(4, 2, 1, 0, 0.5, 1);
H.SetPos(5, 2, 0, 1, 0.5, 1);
H.SetPos(6, 2, 0, 0, 1.5, 1);
H.SetPos(7, 2, 1, 0, 0.5, 1);
H.SetPos(8, 2, 0, 1, 0.5, 1);
H.SetPos(9, 2, 0, 0, 1.5, 1);
H.SetPos(10, 2, 1, 0, 0.5, 1);
H.SetPos(11, 2, 0, 1, 0.5, 1);
H.SetPos(12, 2, 0, 0, 1.5, 1);
H.SetPos(13, 2, 1, 0, 0.5, 1);
H.SetPos(14, 2, 0, 1, 0.5, 1);
H.SetPos(1, 3, 1, 1, 0.5, 1);
H.SetPos(2, 3, 0, 1, 1.5, 1);
H.SetPos(3, 3, 1, 0, 1.5, 1);
H.SetPos(4, 3, 1, 1, 0.5, 1);
H.SetPos(5, 3, 0, 1, 1.5, 1);
H.SetPos(6, 3, 1, 0, 1.5, 1);
H.SetPos(7, 3, 1, 1, 0.5, 1);
H.SetPos(8, 3, 0, 1, 1.5, 1);
H.SetPos(9, 3, 1, 0, 1.5, 1);
H.SetPos(10, 3, 1, 1, 0.5, 1);
H.SetPos(11, 3, 0, 1, 1.5, 1);
H.SetPos(12, 3, 1, 0, 1.5, 1);
H.SetPos(13, 3, 1, 1, 0.5, 1);
H.SetPos(14, 3, 0, 1, 1.5, 1);
H.SetPos(1, 4, 0, 0, 2, 1);
H.SetPos(2, 4, 0, 0, 2, 1);
H.SetPos(3, 4, 0, 0, 2, 1);
H.SetPos(4, 4, 0, 0, 2, 1);
H.SetPos(5, 4, 0, 0, 2, 1);
H.SetPos(6, 4, 0, 0, 2, 1);
H.SetPos(7, 4, 0, 0, 2, 1);
H.SetPos(8, 4, 0, 0, 2, 1);
H.SetPos(9, 4, 0, 0, 2, 1);
H.SetPos(10, 4, 0, 0, 2, 1);
H.SetPos(11, 4, 0, 0, 2, 1);
H.SetPos(12, 4, 0, 0, 2, 1);
H.SetPos(13, 4, 0, 0, 2, 1);
H.SetPos(14, 4, 0, 0, 2, 1);
end
AIONとは無関係なメモ(使用可能なイベントハンドラを探索するためのゲーム用スクリプト)
0 件のコメント:
コメントを投稿