Cronusmax TW

 找回密碼
 立即註冊
搜索
熱搜: 活動 交友 discuz
查看: 5020|回復: 4

關於重複執行腳本問題

[複製鏈接]

3

主題

8

帖子

109

積分

註冊會員

Rank: 2

積分
109
發表於 2016-12-27 23:21:34 | 顯示全部樓層 |閱讀模式
請問....我想寫一個 按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分鐘按口的程式碼要怎麼寫進去?
回復

使用道具 舉報

7

主題

20

帖子

155

積分

版主

Rank: 7Rank: 7Rank: 7

積分
155
發表於 2016-12-28 01:13:09 | 顯示全部樓層
本帖最後由 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次的時候,就是執行方塊的時候







回復 支持 2 反對 0

使用道具 舉報

3

主題

8

帖子

109

積分

註冊會員

Rank: 2

積分
109
 樓主| 發表於 2016-12-28 08:55:25 | 顯示全部樓層
原來可以用計數器的方式,感謝s099064146的回覆

大學畢業後就沒碰程式語言了,幾乎都忘光光了
回復 支持 反對

使用道具 舉報

217

主題

1281

帖子

8558

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8558
發表於 2016-12-28 13:56:45 | 顯示全部樓層
s099064146 發表於 2016-12-28 01:13
如果沒記錯,應該可以這樣寫

int onoff;int time_square = 0;

利用計數器真是一個好方法
回復 支持 反對

使用道具 舉報

217

主題

1281

帖子

8558

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8558
發表於 2016-12-28 15:09:37 | 顯示全部樓層
這裡提供一個計時的程式給大家參考, 是利用克麥內建計時指令來做, 範例是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

GMT+8, 2024-3-29 08:08 , Processed in 0.090701 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表