https://linen.dev logo
iftttのjsに関して(元: ログを流す方法)
# forum
d
タイトルの通りです。 //試行錯誤中の一例 importPackage(Packages.jp.kaiz.atsassistmod.api); importPackage(Packages.jp.kaiz.atsassistmod.utils); /** * @param {TileEntityIFTTT} tile * @param {EntityTrainBase} train * @param {boolean} first */ function doThat(tile, train, first) { if(first && train != null) { NGTLog.sendChatMessageToAll("text"); } }
m
Copy code
javascript
importPackage(Packages.jp.kaiz.atsassistmod.api);
importPackage(Packages.jp.kaiz.atsassistmod.utils);
importPackage(Packages.jp.ngt.ngtlib.io);


function doThat(tile, train, first) {
    if(train && first) {
        riddenPlayer = train.field_70153_n;

        if(riddenPlayer) {
            NGTLog.sendChatMessage(riddenPlayer, "hello world");
        }
    }
}
d
ありがとうございます、 検証してみます
ログ表示確認しました。 少し発展させますが、riddenPlayerで指定したプレイヤーに特定のサウンドをループなしで再生させる方法をご教授いただければ幸いです。
m
Copy code
javascript
var iftttTileEntity = new ATSATileEntityWrapper(tile);
var world = iftttTileEntity.getWorld();
world.func_72956_a(riddenPlayer, "soundName", 1, 1);
d
ありがとうございます。試してみます
動作しました。2件ともありがとうございました!
すみません、スレッドもう一つ立てるのも少しあれなのでこちらを流用させていただきます。 以前まさ様が配布したこちらのスクリプト( https://twitter.com/masa300_fmkr/status/1448677156251336710 )をうまく応用し、IFTTT1つのみで発メロと扉閉放送を実装しようと思いました。(駆動条件から列車の有無を削除済) がしかし`world.func_72956_a`では動作しませんでしたので`KaizUtils.playSounds`を使い非ループ(扉閉放送)は実装できましたが、ループ(発車メロディー)が再生できないという状況です。`while (RSの入力 == あり)`を試したところ、無限にplaysoundを1tick毎?に実行し重くなり最終的にはクラッシュしてしまいました。 長文になりましたが何か方法はあるのでしょうか?回答お待ちしております。
h
確かデフォルトのRTMとかの踏切は、音声ファイルの長さに相当するTickの長さを測って、再生が終わったら再度元の処理に戻って、再生を始めるみたいな仕組みだったはず 現状のアプローチは良さげだから、音声ファイルの長さをTick長さに変換して(SUで取れたっけ?)、msなら Length [ms]×0.001 × 20 = Length × 0.02 でTick変換できるはず dataMapで実行時のTickを保存して、Lengthに相当するTick間は処理を中断、Lengthを抜けたらもう一度playSound相当のコマンドに戻る とかどうでしょう
d
なるほど、試行錯誤してみます
2 Views