Cronusmax TW

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

如何寫按鍵連點腳本?

[複製鏈接]

1

主題

2

帖子

15

積分

新手上路

Rank: 1

積分
15
發表於 2017-1-1 19:35:41 | 顯示全部樓層 |閱讀模式
請問一下
我想寫只有在按著按鍵時才連點的腳本(向連發搖桿那樣,按住時才連點該按鍵,放開就停止)
請問需要用哪個語法?
目前我是用其他帖的範例來改

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",要如何修改?
謝謝
回復

使用道具 舉報

1

主題

2

帖子

15

積分

新手上路

Rank: 1

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

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

謝謝你上面那段教學。

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

使用道具 舉報

217

主題

1281

帖子

8560

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8560
發表於 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

帖子

8560

積分

管理員

Rank: 9Rank: 9Rank: 9

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

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

使用道具 舉報

217

主題

1281

帖子

8560

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8560
發表於 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秒放開都一樣會觸發巨集

給您參考
回復 支持 反對

使用道具 舉報

3

主題

21

帖子

233

積分

中級會員

Rank: 3Rank: 3

積分
233
發表於 2017-1-6 10:10:58 | 顯示全部樓層
admin 發表於 2017-1-3 16:12
啊! 集氣後觸發巨集或射擊後換彈匣, 很好的點子啊!

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

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

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

最近一直在想辦法寫一個萬用的連發巨集,
最後發現還是按住以後連發比較直覺,
也不會在遊戲中誤按到其他鈕,
如果可判斷按住該鍵幾秒後執行,
例如按住一秒後開始連打,放開即停止,
應該會很完美。
回復 支持 反對

使用道具 舉報

217

主題

1281

帖子

8560

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
8560
發表於 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)

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

使用道具 舉報

0

主題

10

帖子

152

積分

註冊會員

Rank: 2

積分
152
發表於 2018-1-20 00:04:18 | 顯示全部樓層
我也想要.請問有完整的可以下載嗎
回復 支持 反對

使用道具 舉報

75

主題

843

帖子

2407

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
2407
發表於 2018-1-23 14:52:36 | 顯示全部樓層
73029 發表於 2018-1-20 00:04
我也想要.請問有完整的可以下載嗎

請問大大想要什麼的下載?
回復 支持 反對

使用道具 舉報

0

主題

10

帖子

152

積分

註冊會員

Rank: 2

積分
152
發表於 2018-1-24 10:39:39 | 顯示全部樓層
PS4方塊鍵連點的腳本
回復 支持 反對

使用道具 舉報

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

本版積分規則

Cronusmax TW

GMT+8, 2024-3-29 20:45 , Processed in 0.147738 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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