Cronusmax TW

標題: 關於重複執行腳本問題 [打印本頁]

作者: chenyingkai0504    時間: 2016-12-27 23:21
標題: 關於重複執行腳本問題
請問....我想寫一個 按O 加上 每6分鐘按口的無限重複腳本

重複按O我目前是這樣寫

int onoff;
main {
      if(event_press(PS4_R3)) onoff=!onoff;   //按下R3後重覆執行
      if(onoff){
       combo_run(Favorability);
       }
}

combo Favorability {
        set_val(PS4_CIRCLE, 100); //按下圓圈鍵
        wait(10);
        set_val(PS4_CIRCLE, 0); //放開圓圈鍵
        wait(10);
}


可是要加入每6分鐘按口的程式碼要怎麼寫進去?

作者: s099064146    時間: 2016-12-28 01:13
本帖最後由 s099064146 於 2016-12-28 01:32 編輯

如果沒記錯,應該可以這樣寫

int onoff;int time_square = 0;

main {
      if(event_press(PS4_R3)) onoff=!onoff;   //按下R3後重覆執行
      if(onoff){
       combo_run(Favorability);
       time_square = time_square+1;
       }
       if(time_square == 18000){
       combo_run(Favorability_2);
       time_square = 0;
       }
}

combo Favorability {
        set_val(PS4_CIRCLE, 100); //按下圓圈鍵
        wait(10);
        set_val(PS4_CIRCLE, 0); //放開圓圈鍵
        wait(10);
}

combo Favorability_2 {
        set_val(PS4_SQUARE, 100); //按下方塊鍵
        wait(10);
        set_val(PS4_SQUARE, 0); //放開方塊鍵
        wait(10);
}


原理是 wait()裡的時間單位是1毫秒
所以要等6分鐘
ˊ6*60=360秒
因為要換算成wait的時間單位
360*1000=360000毫秒
然而,假設執行一次原本的無限圓圈的時間需要20毫秒
則當計數器為18000次的時候,就是執行方塊的時候








作者: chenyingkai0504    時間: 2016-12-28 08:55
原來可以用計數器的方式,感謝s099064146的回覆

大學畢業後就沒碰程式語言了,幾乎都忘光光了
作者: admin    時間: 2016-12-28 13:56
s099064146 發表於 2016-12-28 01:13
如果沒記錯,應該可以這樣寫

int onoff;int time_square = 0;

利用計數器真是一個好方法
作者: admin    時間: 2016-12-28 15:09
這裡提供一個計時的程式給大家參考, 是利用克麥內建計時指令來做, 範例是FFXV彈珠台掛機刷AP(1HR版), 內有秒-分-時的計時程式, 有興趣的可以COPY需要的程式段落來運用 歡迎大家一起討論!

int minutes;
int seconds;
int onoff;
int milliseconds;

main {
     if(event_press(PS4_L3)) onoff=!onoff; //按PS4 L3,設定onoff=1
     if(!onoff){milliseconds=0; seconds=0; minutes=0;} //如果!onoff=1(也就是onoff=0),則所有計數時間歸零
     if(onoff){ //如果onoff=1, 執行下列指令
               combo_run(Glitch); //執行Glitch combo巨集
               milliseconds = milliseconds + get_rtime(); //克麥內建計時器(毫秒計數)累加至milliseconds裏
        
       if(milliseconds >= 1000) { //如果milliseonds累積 >= 1000毫秒(1秒),則做下列指令
          milliseconds = milliseconds - 1000; //milliseconds減1000,表示每1000毫秒(1秒)重新計數,這是產生秒的計算
          seconds = seconds + 1; //second(秒數)計數累加,每1000毫秒,seconds秒數加一,也就是秒數的計時
          if(seconds == 60) { //如果秒數累積到60秒時, 做下列指令
             seconds = 0; //每60秒,秒數計數歸零,重新計數
              set_val(PS4_TRIANGLE,100); //按下PS4三角鍵一次
              minutes = minutes + 1; //每60秒,minutes(分)數值累加1,這是分鐘的計時
              if(minutes == 60) { //如果分鐘計數累積到60分鐘時,做下列指令(此版本為掛機1HR(60分鐘)版,如要掛機2HR,只需修改minutes==120).
                 minutes = 0; //分鐘計數歸零
                 onoff=!onoff; //設定onoff=0
                 combo_stop(Glitch); //停止執行Glitch巨集Combo
                 combo_run(recycle); //執行recycle巨集Combo
                           
            }
         }
     }  
   }


set_val(TRACE_3, minutes); //debug監控minutes計數
set_val(TRACE_4, seconds); //debug監控seconds計數
set_val(TRACE_5, milliseconds / 10); //debug監控millseconds計數
}

combo Glitch { //Glitch巨集Combo (自動打彈珠檯)
         
     set_val(PS4_R1,100); //PS4 R1按下
     set_val(PS4_CIRCLE,100); //PS4圈鍵按下
     set_val(PS4_SQUARE,100); //PS4方塊鍵按下
     wait(40); //等待0.04秒
     set_val(PS4_R1,0); //PS4 R1放開
     set_val(PS4_CIRCLE,0); //PS4圈鍵放開
     set_val(PS4_SQUARE,0); //PS4方塊鍵放開
     wait(40); //等待0.04秒
           
}

combo recycle{ //recycle巨集Combo(退出彈珠檯後兌換獎品在自動進彈珠檯)

       set_val(PS4_CROSS, 100); //PS4叉鍵按下
       wait(200); //等待0.2秒
       set_val(PS4_CROSS, 0); //PS4叉鍵放開
       wait(200); //等待0.2秒
       set_val(PS4_UP,100); //PS4方向鍵上鍵按下
       wait(200); //等待0.2秒
       set_val(PS4_UP,0); //PS4方向鍵上鍵放開
       wait(200); //等待0.2秒
       set_val(PS4_CIRCLE,100); //PS4圈鍵按下
       wait(500); //等待0.5秒
       set_val(PS4_CIRCLE,0); //PS4圈鍵放開
       wait(7500); //等待7.5秒
       set_val(PS4_CIRCLE,100); //PS4圈鍵按下
       wait(500); //等待0.5秒
       set_val(PS4_CIRCLE,0); //PS4圈鍵放開
       wait(500); //等待0.5秒
       set_val(PS4_CIRCLE,100); //PS4圈鍵按下
       wait(500); //等待0.5秒
       set_val(PS4_CIRCLE,0); //PS4圈鍵放開
       wait(5500); //等待5.5秒
       set_val(PS4_CIRCLE,100); //PS4圈鍵按下
       wait(250); //等待0.25秒
       set_val(PS4_CIRCLE,0); //PS4圈鍵放開
       wait(250); //等待0.25秒
       set_val(PS4_CIRCLE,100); //PS4圈鍵按下
       wait(500); //等待0.5秒
       set_val(PS4_CIRCLE,0); //PS4圈鍵放開
       wait(4500); //等待4.5秒
       onoff=!onoff; //設定onoff=1
       }




歡迎光臨 Cronusmax TW (http://www.cronusmax.com.tw/forum/) Powered by Discuz! X3.2