Project1

标题: 如何使用腳本模擬按下[特殊]按鈕的....[求助] [打印本页]

作者: play337    时间: 2021-5-26 13:12
标题: 如何使用腳本模擬按下[特殊]按鈕的....[求助]
本帖最后由 play337 于 2021-5-26 15:29 编辑

我如果使用 PictureCallCommon.js
01. 創建一個[圖片1]按下 k 鍵
02. 事件輸入腳本
Input._currentState["k"] = true;

結果他會按一下有反應... 但是第二下就沒有反應了...
那輸入錯誤嗎?

------------------------------
我發現如果我做另一個按鈕[圖片2]輸入腳本

Input._currentState["k"] = false;

這樣就必須要按一下[圖片1]放出去...在按一下[圖片2]取消

------------------------------

但是如果把它們放在一起

Input._currentState["k"] = true;
Input._currentState["k"] = false;

這樣就又不會跑


------------------------------

但是如果把它們放在一起加入一個等待...

Input._currentState["k"] = true;
this.wait(500);
Input._currentState["k"] = false;

這樣還是不會跑


------------------------------
但是如果把它們放在一起加入一個加100金幣

Input._currentState["k"] = true;
$gameParty.gainGold(100);
Input._currentState["k"] = false;
$gameParty.gainGold(100);

就會變成 加200金幣 但是不會跑...

---------------------------------
Input._currentState["k"] = true;
我發現 K 如果是 方向鍵 ... 他好像是會 一直走 走到底... 黏住 除非你執行
Input._currentState["k"] = false;

但是他們又不能放在一起... 真頭大

---------------------------------
Input.isTriggered('k')
改成這個也不會動...


請教各位大佬 有解嗎 ?

作者: zths    时间: 2021-5-26 14:33
本帖最后由 zths 于 2021-5-26 15:28 编辑

  1. //KeyEvent 事件属性 或者一个按键字(仅限 a-z 0-9)
  2. function fireKeyEv(keyOrOption,time){
  3.     return new Promise(function(r,rj){
  4.         var opt;
  5.         if (typeof keyOrOption === 'string' || keyOrOption instanceof String){
  6.             var keycode = keyOrOption.toUpperCase().charCodeAt(0);
  7.             opt = {
  8.                 key: keyOrOption[0],
  9.                 which: keycode,
  10.                 code: "Key"+keyOrOption.toUpperCase()[0],
  11.                 keyCode: keycode
  12.             };
  13.         }else{
  14.             opt = keyOrOption;
  15.         }
  16.         if(time === undefined){
  17.             time = 300;
  18.         }
  19.         var downEv = new KeyboardEvent("keydown", opt);
  20.         var pressEv = new KeyboardEvent("keypress", opt);
  21.         var upEv = new KeyboardEvent("keyup", opt);
  22.         document.dispatchEvent(downEv);
  23.         var inv = setInterval(function(){
  24.             document.dispatchEvent(downEv);
  25.             document.dispatchEvent(pressEv);
  26.         }, 500);
  27.         setTimeout(function(){
  28.             r();
  29.             clearInterval(inv);
  30.             document.dispatchEvent(pressEv);
  31.             document.dispatchEvent(upEv);
  32.         }, time)
  33.     });
  34. }
  35. (async function(){
  36.     await fireKeyEv("x");
  37.     await fireKeyEv({keyCode: 40});//{key:"ArrowDown", which:40, keyCode:40, code:"ArrowDown"}
  38.     await fireKeyEv("z");
  39.     await fireKeyEv("z");
  40. })();
复制代码

试试.
作者: play337    时间: 2021-5-26 15:28



作者: play337    时间: 2021-5-26 15:48
zths 发表于 2021-5-26 14:33
试试.

ReferenceError: n3 is not defined
作者: play337    时间: 2021-5-26 15:51
Game_Temp.prototype.loadInput = function() {
        Input.keyMapper[97] = 'n1';
        Input.keyMapper[98] = 'n2';
        Input.keyMapper[99] = 'n3';
    Input.keyMapper[101] = 'n5';
        Input.keyMapper[74] = 'j';
        Input.keyMapper[75] = 'k';
        Input.keyMapper[76] = 'l';
    Input.keyMapper[73] = 'i';
};

----------------------------

如果我要從腳本裡面 呼叫按下 n3 這個按鈕 我應該要如何做呢 ?

我現在在腳本用 fireKeyEv(n3,300)

結果還是錯誤...
作者: zths    时间: 2021-5-26 15:57
本帖最后由 zths 于 2021-5-26 15:59 编辑

fireKeyEv({keyCode: 99});

https://keycode.info/




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1