Cronusmax TW

 找回密碼
 立即註冊
搜索
熱搜: 活動 交友 discuz
查看: 4274|回復: 8
打印 上一主題 下一主題

關於刀劍神域 彼岸遊境 計時器+重複使用劍技和buff問題

[複製鏈接]

3

主題

8

帖子

109

積分

註冊會員

Rank: 2

積分
109
跳轉到指定樓層
樓主
發表於 2020-9-13 13:13:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 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完全執行完畢就直接開始執行

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


回復

使用道具 舉報

3

主題

8

帖子

109

積分

註冊會員

Rank: 2

積分
109
沙發
 樓主| 發表於 2020-9-13 13:18:24 | 只看該作者
本帖最後由 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完全不會被執行



回復 支持 反對

使用道具 舉報

217

主題

1281

帖子

8571

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8571
板凳
發表於 2020-9-14 14:13:57 | 只看該作者
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要照這順序, 有的要同時?? 這很重要
回復 支持 反對

使用道具 舉報

217

主題

1281

帖子

8571

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8571
地板
發表於 2020-9-14 14:17:18 | 只看該作者
chenyingkai0504 發表於 2020-9-13 13:18
int minutes;
int seconds;
int onoff;

當seconds超過150時會被重置為0, 有可能會有的combo並未執行, 因為seconds=150的條件不成立了
回復 支持 反對

使用道具 舉報

3

主題

8

帖子

109

積分

註冊會員

Rank: 2

積分
109
5#
 樓主| 發表於 2020-9-14 14:18:17 | 只看該作者
本帖最後由 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

回復 支持 反對

使用道具 舉報

3

主題

8

帖子

109

積分

註冊會員

Rank: 2

積分
109
6#
 樓主| 發表於 2020-9-14 14:30:42 | 只看該作者
admin 發表於 2020-9-14 14:13
if(seconds == 150) {

                 combo_stop(skill_num);

所以要把combo_run(buff2_num)和combo_run(buff1_num)合併成一個嗎?
回復 支持 反對

使用道具 舉報

3

主題

8

帖子

109

積分

註冊會員

Rank: 2

積分
109
7#
 樓主| 發表於 2020-9-14 14:45:33 | 只看該作者
本帖最後由 chenyingkai0504 於 2020-9-14 14:59 編輯

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

感謝admin管理員的指點,

希望這次修正後能正常執行
回復 支持 反對

使用道具 舉報

217

主題

1281

帖子

8571

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8571
8#
發表於 2020-9-14 18:32:45 | 只看該作者
chenyingkai0504 發表於 2020-9-14 14:30
所以要把combo_run(buff2_num)和combo_run(buff1_num)合併成一個嗎?

若是連續2個combo, 是可以串成一個
回復 支持 反對

使用道具 舉報

217

主題

1281

帖子

8571

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8571
9#
發表於 2020-9-14 18:33:06 | 只看該作者
chenyingkai0504 發表於 2020-9-14 14:45
我想到錯誤在哪了,下班後再修改看看,

感謝admin管理員的指點,

好的
回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

Cronusmax TW

GMT+8, 2024-4-19 11:09 , Processed in 0.070014 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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