Cronusmax TW

標題: 如何寫按鍵連點腳本? [打印本頁]

作者: exew    時間: 2017-1-1 19:35
標題: 如何寫按鍵連點腳本?
請問一下
我想寫只有在按著按鍵時才連點的腳本(向連發搖桿那樣,按住時才連點該按鍵,放開就停止)
請問需要用哪個語法?
目前我是用其他帖的範例來改

int onoff2;
main {
      if(event_press(PS4_SQUARE)) onoff2=!onoff2;   //目前是按下方塊切換onoff2
        if(onoff2){
        combo_run(repeat2);}
      
combo repeat2 {        
      set_val(PS4_SQUARE,100);
      wait(30);               
      set_val(PS4_SQUARE,0);   
       wait(30); }         

不過我把
第三行的  if(event_press(PS4_SQUARE)) onoff2=!onoff2;
改成
set_val(PS4_SQUARE,100)

get_val(PS4_SQUARE,100)
都會出現錯誤,

如果我想要設定成"放開方塊時觸發onoff2"或"僅僅在按住方塊時觸發onoff2",要如何修改?
謝謝
作者: admin    時間: 2017-1-1 20:46
您好, 看了下您的程式發現您的程式是"一鍵觸發循環, 再一鍵停止"的方式:

if(event_press(PS4_SQUARE)) onoff2=!onoff2;   //目前是按下方塊切換onoff2 (當按下PS4方塊時, onoff2被設定為1, 再按一次方塊onoff2被設為0..以此類推)
        if(onoff2){ (當onoff2=1時, 就執行combo repeat2, onoff2=0時則不執行)
        combo_run(repeat2);}

因此你按一次方塊鍵, 就會一直執行combo reapeat2巨集, 因為onoff2一直是1, 除非你再按一次方塊鍵, 把onoff2設為0, 才會停止執行combo repaet2巨集.

按你的要求是有按才執行, 放開就停止, 則把條件判斷式改為下面的寫法:

if(get_val(PS4_SQUARE)) {  
    combo_run(repeat2);}
(如果PS4方塊鍵有被按下去則執行{}裏面的程式, 也就是combo_run(repeat2)這個程式指令, get_val()表示克麥得到()裏面這個案件的數值, 也就是有被按下, 反之若沒有按下方塊鍵則不會執行下面{}裏的程式.)

get_val()語法為get_val(PS4_SQUARE), ()內為按鍵代號, 後面不接數值.
set_val()不能放在if的()裏, 這指令是去設定某按鍵的數值, 不能拿來做條件判斷依據.

至於
if(event_press(PS4_SQUARE)), 這個意思是, 當PS4方塊鍵有被按下就會執行{}內指令, 但只做一次, 也就是您按下並壓住方塊鍵他只會做一次combo repeat2, 這是不同之處.

以上供您參考
作者: admin    時間: 2017-1-1 21:00
如果我想要設定成"放開方塊時觸發onoff2"

這問題我不大了解, 是否是沒按按鍵就一直觸發combo巨集?
作者: exew    時間: 2017-1-1 21:49
admin 發表於 2017-1-1 21:00
如果我想要設定成"放開方塊時觸發onoff2"

這問題我不大了解, 是否是沒按按鍵就一直觸發combo巨集? ...

謝謝你上面那段教學。

"放開方塊時觸發onoff2",是指,我"這一次"按下方塊時不會觸發combo,但是"這一次"的方塊在放掉的時候觸發combo。
目前我還沒想到什麼遊戲實際需要用到,只是好奇,
我的想法是來自像的洛克人的集氣,我自己按下方塊的時候開始集氣,在我放掉方塊的時候除了我本身放掉方塊射出集氣攻擊之外,還會自動接一個跳躍之類的combo,
或是射擊類遊戲,放掉射擊後自動換一次彈夾。

作者: admin    時間: 2017-1-3 16:12
exew 發表於 2017-1-1 21:49
謝謝你上面那段教學。

"放開方塊時觸發onoff2",是指,我"這一次"按下方塊時不會觸發combo,但是"這一次 ...

啊! 集氣後觸發巨集或射擊後換彈匣, 很好的點子啊!

簡單一點的做法就是用event_release()

if(event_release(PS4_SQUARE)) {  
    combo_run(repeat2);}

當PS4方塊鍵一放開就執行{}裏的指令.

不過這寫法沒有計算集氣時間, 你按按鍵0.5秒或5秒放開都一樣會觸發巨集

給您參考
作者: fatkeboy    時間: 2017-1-6 10:10
admin 發表於 2017-1-3 16:12
啊! 集氣後觸發巨集或射擊後換彈匣, 很好的點子啊!

簡單一點的做法就是用event_release()

那要請問一下工程師大大~

有可以偵測按住某個按鍵幾秒後觸發巨集,
放開後停止巨集的運算式嗎?

最近一直在想辦法寫一個萬用的連發巨集,
最後發現還是按住以後連發比較直覺,
也不會在遊戲中誤按到其他鈕,
如果可判斷按住該鍵幾秒後執行,
例如按住一秒後開始連打,放開即停止,
應該會很完美。
作者: admin    時間: 2017-1-6 11:44
fatkeboy 發表於 2017-1-6 10:10
那要請問一下工程師大大~

有可以偵測按住某個按鍵幾秒後觸發巨集,

可以的, 請參考下列語法:

if(get_val(PS4_SQUARE) && get_ptime(PS4_SQUARE) > 1000){combo_run();}
如果PS4方塊鍵壓住不放超過1秒(1000)就執行combo_run()

if(get_ptime(PS4_SQUARE) > 1000){combo_run();}
如果按PS4方塊鍵, 不管有無按住不放, 按了之後超過1秒(1000)就執行combo_run()

get_ptime(PS4_SQUARE) 表示按下按鍵後經過的時間, 但最多只能4秒(4000)

以上, 供您參考
作者: 73029    時間: 2018-1-20 00:04
我也想要.請問有完整的可以下載嗎
作者: aalex1113    時間: 2018-1-23 14:52
73029 發表於 2018-1-20 00:04
我也想要.請問有完整的可以下載嗎

請問大大想要什麼的下載?
作者: 73029    時間: 2018-1-24 10:39
PS4方塊鍵連點的腳本
作者: aalex1113    時間: 2018-1-24 10:59
73029 發表於 2018-1-24 10:39
PS4方塊鍵連點的腳本

請問大大是要按下方塊鍵他就一直執行連按?還是只有在按方塊鍵時才會連點,直到大大放開方塊鍵呢?
作者: 73029    時間: 2018-1-24 12:53
只有在按方塊鍵時才會連點,直到放開方塊鍵取消.謝謝
作者: aalex1113    時間: 2018-1-24 14:38
73029 發表於 2018-1-24 12:53
只有在按方塊鍵時才會連點,直到放開方塊鍵取消.謝謝

請大大試試看

作者: 73029    時間: 2018-1-24 20:24
抱歉.假如我要間格3秒要改哪裡

作者: aalex1113    時間: 2018-1-25 09:59
73029 發表於 2018-1-24 20:24
抱歉.假如我要間格3秒要改哪裡

把第一個wait()裡面的時間延長就可以了




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