Cronusmax TW

標題: 關於刀劍神域 彼岸遊境 計時器+重複使用劍技和buff問題 [打印本頁]

作者: chenyingkai0504    時間: 2020-9-13 13:13
標題: 關於刀劍神域 彼岸遊境 計時器+重複使用劍技和buff問題
本帖最後由 chenyingkai0504 於 2020-9-13 13:22 編輯

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

main {
     if(event_press(PS4_R3)) onoff=!onoff; //按PS4 R3,設定onoff=1

                       milliseconds = milliseconds + get_rtime(); //克麥內建計時器(毫秒計數)累加至milliseconds裏
                        
                        set_val(PS4_LY, -100);

       if(milliseconds >= 1000) {
          milliseconds = milliseconds - 1000;
          seconds = seconds + 1;
          if(seconds < 150){
          combo_run(skill_num);
          }
          if(seconds == 150) {

                 combo_stop(skill_num);
                 combo_run(wait);
                 combo_run(buff2_num);
                 combo_run(wait);
                 combo_run(buff1_num);
                 milliseconds = 0;
                 seconds = 0;

            }
         }
   }


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


combo skill_num{
                                call(skill);                        
}
combo buff1_num{

                                call(buff1);        
                                wait(100);                                 
}

combo buff2_num{
                            set_val(PS4_CIRCLE,100);
                             wait(200);
                                 set_val(PS4_CIRCLE,0);
                             wait(200);
                            call(buff2);        
                            wait(100);
                                       
}



combo skill{
                          set_val(PS4_R1, 100);
                          set_val(PS4_SQUARE, 100);
                          wait(100);
                          set_val(PS4_R1, 0);
                          set_val(PS4_SQUARE, 0);
                          wait(100);                          
                          
                          }
                          
combo buff1{
                set_val(PS4_R1,100);
                     set_val(PS4_UP,100);
                 wait(200);
                     set_val(PS4_R1,0);
                     set_val(PS4_UP,0);
                 wait(200);
                 wait(1000);
}

combo buff2{
                set_val(PS4_R1,100);
                     set_val(PS4_DOWN,100);
                 wait(200);
                     set_val(PS4_R1,0);
                     set_val(PS4_DOWN,0);
                 wait(200);
                 wait(1000);
}
combo wait{
                          wait(10000);        
}
                          

         
以我的想法是劍技重複循環到150秒時會停ˋ只劍技的迴圈(skill_num),執行BUFF1和BUFF2,並將計時器歸0,跳回執行劍技迴圈(skill_num)

但是目前是劍技迴圈(skill_num)停止後,只會執行Buff1,就會馬上跳回發動劍技迴圈

貌似劍技停止combo_stop(skill_num)不會等到Buff1和Buff2完全執行完畢就直接開始執行

不知出了什麼問題,請問有管理員可以幫忙看一下嗎?



作者: chenyingkai0504    時間: 2020-9-13 13:18
本帖最後由 chenyingkai0504 於 2020-9-14 13:51 編輯

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

main {
     if(event_press(PS4_R3)) onoff=!onoff; //按PS4 R3,設定onoff=1

                       milliseconds = milliseconds + get_rtime(); //克麥內建計時器(毫秒計數)累加至milliseconds裏
                       
                        set_val(PS4_LY, -100); combo_run(skill_num);

       if(milliseconds >= 1000) {
          milliseconds = milliseconds - 1000;
          seconds = seconds + 1;

          if(seconds == 150) {

                 combo_stop(skill_num);
                 combo_run(wait);
                 combo_run(buff2_num);
                 combo_run(wait);
                 combo_run(buff1_num);
                 milliseconds = 0;
                 seconds = 0;

            }
         }
   }


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


combo skill_num{
                                call(skill);                       
}
combo buff1_num{

                                call(buff1);      
                                wait(100);                                
}

combo buff2_num{
                            set_val(PS4_CIRCLE,100);
                             wait(200);
                                 set_val(PS4_CIRCLE,0);
                             wait(200);
                            call(buff2);      
                            wait(100);
                                       
}



combo skill{
                          set_val(PS4_R1, 100);
                          set_val(PS4_SQUARE, 100);
                          wait(100);
                          set_val(PS4_R1, 0);
                          set_val(PS4_SQUARE, 0);
                          wait(100);                        
                        
                          }
                        
combo buff1{
                set_val(PS4_R1,100);
                     set_val(PS4_UP,100);
                 wait(200);
                     set_val(PS4_R1,0);
                     set_val(PS4_UP,0);
                 wait(200);
                 wait(1000);
}

combo buff2{
                set_val(PS4_R1,100);
                     set_val(PS4_DOWN,100);
                 wait(200);
                     set_val(PS4_R1,0);
                     set_val(PS4_DOWN,0);
                 wait(200);
                 wait(1000);
}
combo wait{
                          wait(10000);      
}

這種寫法我也有試過,
有時候可能剛好150秒在這劍技動畫中,動畫結束後已經超過150秒了,combo_stop(skill_num)這個指令不知是不是會被跳過,
會變成BUFF1和BUFF2完全不會被執行




作者: admin    時間: 2020-9-14 14:13
if(seconds == 150) {

                 combo_stop(skill_num);
                 combo_run(wait);
                 combo_run(buff2_num);
                 combo_run(wait);
                 combo_run(buff1_num);
                 milliseconds = 0;
                 seconds = 0;

            }

這段, 當seconds=150時, 5個combo會同時做, 同時也做seconds=0, 這樣會亂掉....

請問combo執行有順序嗎? 還是有幾個combo要照這順序, 有的要同時?? 這很重要

作者: admin    時間: 2020-9-14 14:17
chenyingkai0504 發表於 2020-9-13 13:18
int minutes;
int seconds;
int onoff;

當seconds超過150時會被重置為0, 有可能會有的combo並未執行, 因為seconds=150的條件不成立了
作者: chenyingkai0504    時間: 2020-9-14 14:18
本帖最後由 chenyingkai0504 於 2020-9-14 14:21 編輯

原來會同時執行,還以為他會照排序一個一個往下執行

有順序喔

首先要先停止skill_num這個combo

然後執行buff2_num,buff2_num執行完後,再執行buff1_num,最後時間歸0,重新啟動skill_num

stop skill_num >> run buff2_num >> run buff1_num 然後時間歸0


作者: chenyingkai0504    時間: 2020-9-14 14:30
admin 發表於 2020-9-14 14:13
if(seconds == 150) {

                 combo_stop(skill_num);

所以要把combo_run(buff2_num)和combo_run(buff1_num)合併成一個嗎?
作者: chenyingkai0504    時間: 2020-9-14 14:45
本帖最後由 chenyingkai0504 於 2020-9-14 14:59 編輯

我想到錯誤在哪了,下班後再修改看看,

感謝admin管理員的指點,

希望這次修正後能正常執行

作者: admin    時間: 2020-9-14 18:32
chenyingkai0504 發表於 2020-9-14 14:30
所以要把combo_run(buff2_num)和combo_run(buff1_num)合併成一個嗎?

若是連續2個combo, 是可以串成一個
作者: admin    時間: 2020-9-14 18:33
chenyingkai0504 發表於 2020-9-14 14:45
我想到錯誤在哪了,下班後再修改看看,

感謝admin管理員的指點,

好的




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