Cronusmax TW

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

如何寫按鍵連點腳本?

[複製鏈接]

217

主題

1281

帖子

8628

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8628
樓主
發表於 2017-1-1 20:46:24 | 顯示全部樓層
您好, 看了下您的程式發現您的程式是"一鍵觸發循環, 再一鍵停止"的方式:

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, 這是不同之處.

以上供您參考
回復 支持 1 反對 0

使用道具 舉報

217

主題

1281

帖子

8628

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8628
沙發
發表於 2017-1-1 21:00:31 | 顯示全部樓層
如果我想要設定成"放開方塊時觸發onoff2"

這問題我不大了解, 是否是沒按按鍵就一直觸發combo巨集?
回復 支持 反對

使用道具 舉報

217

主題

1281

帖子

8628

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8628
板凳
發表於 2017-1-3 16:12:20 | 顯示全部樓層
exew 發表於 2017-1-1 21:49
謝謝你上面那段教學。

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

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

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

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

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

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

給您參考
回復 支持 反對

使用道具 舉報

217

主題

1281

帖子

8628

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8628
地板
發表於 2017-1-6 11:44:36 | 顯示全部樓層
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)

以上, 供您參考
回復 支持 反對

使用道具 舉報

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

本版積分規則

Cronusmax TW

GMT+8, 2024-5-19 02:06 , Processed in 0.086104 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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