suspend.js
https://gyazo.com/43d085816c59ec503fcfe5bd4b556428
code:script.js
const day = new Date(2023, 7,20,20,0,0);
const callback = () => {
const now = new Date();
if (scrapbox.Project.name !== "villagepump") return;
if (19 <= now.getHours() && now.getHours() < 20) return;
document.body.textContent = "issac1体を対象とする。それを井戸端から追放し、それの上に時間(time)カウンター23個を置く。それが井戸端待機を持たないなら、それは井戸端待機を得る。(それのオーナーの毎時始めに、そのプレイヤーは時間カウンター1個を取り除く。最後の1個が取り除かれたとき、そのプレイヤーはissacをマナ・コストを支払うことなくプレイする。それがクリーチャーなら、それは速攻を持つ。)";
};
callback();
// 1分ごとに時刻を確認
setInterval(callback, 60 * 1000);
ねらい
井戸端にたむろする時間が長すぎたため制限しようと思い立ったのであった
所感
マナ・コストを支払うことなくプレイ、というのは違ってそうだ
井戸端に入るのも書きこむのも何らかの資源を費やしているため
時間を決めている点については青の呪文らしく、良い
意志が感じられる
個人プロジェクトと共同プロジェクトの両方で呪文(script)を唱え続けなければならない脆弱性がある
開放されるべき時間について、どこが良いか定かでない
もっと遅くてもいいかも
GPT-3.5.icon
このJavaScriptコードは、特定の条件をチェックして、特定のメッセージを表示するためのものです。
最初に、指定した日時(2023年8月11日20時0分0秒)をdayという変数に設定します。
次に、callbackという名前の関数を定義します。この関数は、以下の動作をします:
現在の日時を取得し、nowという変数に格納します。
現在の時刻がdayの時刻よりも早いか等しい場合、何もせずに関数を終了します(待つ)。
scrapbox.Project.nameが "villagepump" でない場合、何もせずに関数を終了します。
現在の時刻が12時以上かつ14時未満の場合、何もせずに関数を終了します。
上記の条件に該当しない場合、HTMLの文書全体のテキストコンテンツを "キミにはやるべきことがあるんじゃないのか?" に置き換えます。
callback関数を1度呼び出して、初回のチェックを行います。
setInterval関数を使用して、callback関数を1分ごとに繰り返し呼び出します。これにより、プログラムは実行後1分ごとにチェックを行い、条件に応じてメッセージを表示します。
要するに、このプログラムは特定の日時、プロジェクト名、時間帯に対して、特定のメッセージを表示するために使用されます。日時が達成されるまで待ったり、特定の条件を満たさない場合にはメッセージを表示しないようになっています。
改良1:別のサイトに遷移する
code:suspend.js
const day = new Date(2023, 7,20,20,0,0);
const callback = () => {
const now = new Date();
if (scrapbox.Project.name !== "villagepump") return;
if (19 <= now.getHours() && now.getHours() < 20) return;
document.body.textContent = "issac1体を対象とする。それを井戸端から追放し、それの上に時間(time)カウンター23個を置く。それが井戸端待機を持たないなら、それは井戸端待機を得る。(それのオーナーの毎時始めに、そのプレイヤーは時間カウンター1個を取り除く。最後の1個が取り除かれたとき、そのプレイヤーはissacをマナ・コストを支払うことなくプレイする。それがクリーチャーなら、それは速攻を持つ。)";
};
callback();
// 1分ごとに時刻を確認
setInterval(callback, 60 * 1000);
改良2:時間が経つと別のサイトに遷移する
code:suspend.js
const day = new Date(2023, 7,20,20,0,0);
const callback = () => {
const now = new Date();
if (scrapbox.Project.name !== "villagepump") return;
if (19 <= now.getHours() && now.getHours() < 20) return;
document.body.textContent = "issac1体を対象とする。それを井戸端から追放し、それの上に時間(time)カウンター23個を置く。それが井戸端待機を持たないなら、それは井戸端待機を得る。(それのオーナーの毎時始めに、そのプレイヤーは時間カウンター1個を取り除く。最後の1個が取り除かれたとき、そのプレイヤーはissacをマナ・コストを支払うことなくプレイする。それがクリーチャーなら、それは速攻を持つ。)";
setTimeout(() => {
}, 5000); // 5000ミリ秒(5秒)待機
};
callback();
// 1分ごとに時刻を確認
setInterval(callback, 60 * 1000);
改良3:遷移までの時間をカウントダウンする
code:suspend.js
//改良3
const day = new Date(2023, 7,20,20,0,0);
const callback = () => {
const now = new Date();
if (scrapbox.Project.name !== "villagepump") return;
if (19 <= now.getHours() && now.getHours() < 20) return;
document.body.textContent = "issac1体を対象とする。それを井戸端から追放し、それの上に時間(time)カウンター23個を置く。それが井戸端待機を持たないなら、それは井戸端待機を得る。(それのオーナーの毎時始めに、そのプレイヤーは時間カウンター1個を取り除く。最後の1個が取り除かれたとき、そのプレイヤーはissacをマナ・コストを支払うことなくプレイする。それがクリーチャーなら、それは速攻を持つ。)";
const remainingTime = 5000; // 5秒の遅延時間
let countdown = remainingTime / 1000; // ミリ秒を秒に変換
document.body.textContent += ${countdown}秒後に遷移します...
// カウントダウン表示と遷移
const countdownInterval = setInterval(() => {
countdown--;
document.body.textContent = ${countdown}秒後に遷移します...;
if (countdown === 0) {
clearInterval(countdownInterval);
}
}, 1000); // 1秒ごとに更新
};
callback();
// 1分ごとに時刻を確認
setInterval(callback, 60 * 1000);
別処理:ランダムな数字を取る
ランダムな時刻を表示する
code:suspend.js
const day = new Date(2023, 7, 20, 20, 0, 0);
const callback = () => {
const now = new Date();
const randomStartHour = Math.floor(Math.random() * 24); // 0から23のランダムな時刻
if (scrapbox.Project.name !== "villagepump") return;
if (randomStartHour <= now.getHours() && now.getHours() < randomStartHour + 1)
const message = ${randomStartHour} 時から60分間開くことが可能です。; // 現在の時刻をメッセージに組み込む
document.body.textContent = message;
return;
else {
// 5秒後に特定のサイトに遷移する
setTimeout(() => {
}, 5000); // 5000ミリ秒(5秒)待機
return;
}
};
callback();
// 1分ごとに時刻を確認
setInterval(callback, 60 * 1000);