これでどうでしょうか。PCの時計を変えるのが面倒で、テストはしていませんが...。
上手く動かなかったらごめんなさい。
*start
Day = gettime(3);ループ内で、前回の値として参照する、「日付」を初期化。当然だがこれが変わったとき、日が変わっている。
flag_NewDay = 1;新しい日になっているかどうかのフラグ。最初(=ソフト起動時)は手動でONに。
*main
while
num1_main = gettime(3);今この瞬間の日付を取得。これが「Day」変数の内容と違っていたら、日付が変わったということ。ループは1秒周期なので、日付が変わってから少なくとも 「1秒 + (その他の処理にかかる時間)」 以内に日付が変わったことを検知できる。
if num1_main ! Day : Day = num1_main : flag_NewDay = 1;日付が変わっていたら、「ループ内で、前回の値として参照する日付 = 「Day」変数」 を更新し、同時に新しい日になっていることを宣言する。
if (flag_NewDay = 1)&(gettime(4) = 13) : gosub *action;条件「13時 かつ 今日始めての検知」が満たされている場合のみアクションを起こす。
wait 100
wend
*action
dialog "13時になりました。"
///////////////////////
;何かやりたいことをやる。
///////////////////////
flag_NewDay = 0;最後に、今日の分の13時判定は使い切った(今日はもう13時判定しなくていい)ということを記憶しておく。
;帰る
return