rpgmaker吧 关注:13,340贴子:23,842
  • 7回复贴,共1

rpgmaker全部按键都可以拿来使用的脚本

只看楼主收藏回复

之前我发了-----通过事件指令的脚本来实现的全键盘功能【rpgmaker吧】-----这个帖子
但是这个帖子说的好像是按下按键之后会连续执行,而不是按下之后只执行一次。
这个好像是Input.isPressed 和 Input.isRepeated 、 Input.isTriggered 甚至是Input.isLongPressed 这类的问题。
有兴趣的可以到developer点rpgmakerweb点com/rpg-maker-mz/Input.html这里使用浏览器翻译成中文后看一看。
也是类似于虚幻引擎的操作映射和轴映射这里的问题。

也就是说,在游戏里,通常人物的移动是按下按键之后就需要持续执行的轴映射,
人物的跳跃是按一次就执行一次的操作映射。

于是,前段时间我又到文心一言那里去叫它写脚本。只是,今天我才有闲心发这个帖子。
它这次写的脚本好像是按下的时候检测一次,按键弹起来的时候也检测一次,
打开开关和关闭开关好像可以控制调用事件页或公共事件来执行指令,好像也可以重置按键按下和弹起的检测。

let isQKeyTriggered = false; // 标记Q键是否被触发
// 监听keydown事件
window.addEventListener('keydown', function(event) {
// 将event.key转换为小写,然后进行比较
if (event.key.toLowerCase() === 'q' && !isQKeyTriggered) { // 只在Q键被按下且未被触发时执行
// 检查111号开关是否关闭
if (!$gameSwitches.value(111)) {
isQKeyTriggered = true; // 标记Q键为已触发
// 执行事件指令
$gameMessage.add("你按下了Q键");
// 打开111号开关
$gameSwitches.setValue(111, true);
}
}
});
// 监听keyup事件
window.addEventListener('keyup', function(event) {
// 仍然将event.key转换为小写进行比较
if (event.key.toLowerCase() === 'q' && isQKeyTriggered) { // 只在Q键被释放且已触发时执行
isQKeyTriggered = false; // 标记Q键为未触发
// 关闭111号开关,无论它之前的状态是什么
$gameSwitches.setValue(111, false);
}
});

上面这段是按下Q键的,想要哪个按键再复制一个,把Q和'q'替换一下就可以了。
引号里的Q好像是要小写才能起作用。
而且好像还是大小写的时候都可以正常检测到。

上面这个截图就不一样了,这个截图好像是只有在小写状态下才能检测到,
要写让大写状态下检测到的话,就要把'q'这里的q改成Q。
按理来说,这个脚本好像太不方便了,根本就没有存在的必要。
但是仔细一想的话,或许要检测玩家输入文字内容的时候,这种区分大小写的特性就刚好用得上了。
配合上输入文字的111_InputForm.js和MZ版的111_InputFormMZ.js
输入记录器 - InputRecorder.js、密码输入 - PasswordInput.js、MNKR 演员姓名随机更改 - MNKR_RandomActorNameMV.js、敌人名称输入屏幕显示 - MKR_InputEnemyName.js这几个插件也可以去试一试。

以上的这些,写到MZ版的脚本那里是可以的,因为MZ版的脚本框可以上下拉伸。
MV版的话,由于脚本框的大小有一个限制。
或许就需要把注释和空行给删除掉,或许还需要文心一言来简化或再次切分一个完整的脚本为两个需要配合的脚本了。。又或者是可以考虑一下写到插件那里去。

以下的这些,是把按键都集合到一起的,想要什么按键起作用就把哪个按键都写进去。。。好像也需要各自配合一个专属的开关给它。
要是觉得这个麻烦的话,可以去找一找输入键扩展 - MpiInputEx.js这个插件。
通过插件发布网站指向的插件下载页面,可以看到好像是2017年就发布了。但可能是这个插件有什么问题,好像是取消掉下载的点击框了。

// 创建一个对象来跟踪按键状态
const pressedKeys = {};
// 监听keydown事件
window.addEventListener('keydown', function(event) {
// 将event.key转换为小写,以便进行不区分大小写的比较
const key = event.key.toLowerCase();
// 检查按键是否已经被按下
if (!pressedKeys[key]) {
// 如果按键没有被按下,则设置它为已按下
pressedKeys[key] = true;
// 根据按键执行不同的操作
switch (key) {
case 'q':
// 检查111号开关是否关闭
if (!$gameSwitches.value(111)) {
// 执行事件指令
$gameParty.gainGold(100);
$gameMessage.add("你按下了Q键,增加100金币");
// 打开111号开关
$gameSwitches.setValue(111, true);
}
break;
case 'w':
// 对于W键的处理逻辑...
break;
case 'e':
// 对于E键的处理逻辑...
break;
case 'r':
// 对于R键的处理逻辑...
break;
// ... 可以继续添加其他按键的处理逻辑
}
}
});
// 监听keyup事件
window.addEventListener('keyup', function(event) {
// 将event.key转换为小写,以便进行不区分大小写的比较
const key = event.key.toLowerCase();
// 检查按键是否已经被按下(即它是否在pressedKeys中存在)
if (pressedKeys[key]) {
// 如果按键被按下,则设置它为未按下
pressedKeys[key] = false;
// 根据按键执行释放时的操作(如果需要的话)
switch (key) {
case 'q':
SceneManager.push(Scene_Save)
// 例如,关闭111号开关(无论它之前的状态是什么)
$gameSwitches.setValue(111, false);
break;
case 'w':
// 对于W键在释放时的处理逻辑...
break;
case 'e':
// 对于E键在释放时的处理逻辑...
break;
case 'r':
// 对于R键在释放时的处理逻辑...
break;
// ... 可以继续添加其他按键在释放时的处理逻辑
}
}
});

有兴趣去测试上面这段脚本的话,
可能会因为$gameMessage.add("你按下了Q键,增加100金币"); 遇到显示框文本框,SceneManager.push(Scene_Save)跳出存档界面之后,
后面会再一次的跳出文本框,这可能是因为没有点击右键、手动发出结束文本框的指令。
这应该是正常的,并不是这个脚本有问题。(我之所以加上跳出存档界面,是因为除了按下按键之后触发,还因为检测到弹起之后也可以触发。。这提供了更多的可选项、更多的自定义空间。。说不定还可以检测到按下几帧之后再触发,检测到弹起几帧之后再触发也是可以看一下有没有这个需求的。)
我还在Q键这里加入了$gameParty.gainGold(100);这个脚本,你可以到菜单界面那里去查看增加的金币是没有差错的。
为了更方便的测试,你可以使用LL_VariableWindow.js这个插件来实时的检测效果。像下面这样的设置,把脚本里的对话框删掉,再来测试会更直观看到效果。
◆插件指令:LL_VariableWindow, 显示窗口
:    :窗口编号 = 1
:    :変数 = 1
:    :X座標 = 408
:    :Y座標 = 60
:    :横幅 = 400
◆变量操作:#0001 查看金币的变量 = 金币


IP属地:广东1楼2024-05-07 02:38回复
    刚用rpg makerMV,想请教一下...怎么显示怪物血量啊(还有魔塔怪物数字血量又如何显示)


    IP属地:广东2楼2024-06-06 10:55
    收起回复
      有没有简单一点的方法(学生没什么时间学脚本代码.....


      IP属地:广东3楼2024-06-06 10:56
      回复
        (上面忘说了,这里再问一下;有没有教rpg makerMV脚本的地方?虽然没什么时间,但是想了解一下,似乎好多地方都需要...),(还有...弱弱的问一句,有没有地方分享符合rpg maker样式的素材,想换一下默认素材


        IP属地:广东4楼2024-06-06 11:08
        回复
          新手到B站搜索----rpgmaker 教学----可以找到入门教程,
          搜索------rpgmaker 插件----可以找到很多介绍、讲解插件的视频。

          写给萌新的超简单事件脚本指南 - RPG Maker MV 讨论区
          非常好的脚本调用手册 - RPG Maker MV 讨论区
          【RMMV】事件脚本整合,第三次更新,更方便在网页上查看 - RPG Maker MV 讨论区
          ツクールMZスクリプトリファレンスwiki
          RpgMakerMZ/MV脚本基础教学合集_哔哩哔哩
          上面前第一到第四个网页都可能会网速不太好,网速好一点的时候,耐心等待一下还是可以打开的。。。这些都可以使用搜索引擎搜到,MV版和MZ版的脚本好像都是通用的。

          plugin点fungamemake
          rpgmakerofficial点com/product/mz/plugin/
          rpgmakerweb点com/blog/rpg-maker-mz-plugin-list
          到这三个网页去找插件,和学习插件制作,以及去找发布插件的网站。
          还可以到软件文件夹(下载的软件在软件文件夹、新建工程在工程文件夹、打包的游戏在游戏文件夹)的RPG Maker MV\dlc这个文件夹这里找插件,
          尤其是这里的KadokawaPlugins、KadokawaPlugins_New、BaseResource、RPGmakerWeb_plugins这些文件夹,
          可能在里面还包含plugins、launch、official这些专门放插件的文件夹。
          (总之就是rpgmaker的公司可能管理比较混乱,插件到处都是,这里可能会找到,那里也可能会找到。。。就连----rpgmakerofficial点com-----rpgmakerweb点com----这两个好像都是他们的官方网站,好像一个是发行公司的,一个是研发公司的,而且还不在软件上把网站列出来。)

          rpg云书
          rpg民族
          projertj1
          江湖梦网
          torigoya点hatenadiary点jp
          www点rpgchina点net(吐槽:这个网站一开始应该是一个建站新手做的,logo那里的名字叫做幻想森林,在网站名那里的标题却是-----论坛----这两个字(可能是建站系统默认的,新手不知道这是要去改的),导致搜索效果很不好,现在就将错就错了。。。而且还经历过把.com后缀改成.net后缀,这样乱搞导致SEO(搜索引擎优化)非常的不好,好像只能手动输入域名。。。但是里面的内容是真的全面和丰富,20年专一rpgmaker的老网站了,网速也很好。)
          上面这几个网站好像都有专门的素材板块,还可以到下面这个网页去找DLC(浏览器翻译成中文,找到后记住英文名,再到steam去等打折)。
          pgmakerofficial点com/product/makerofficialdlc/en/

          由于百度不怎么收录外面的网站,而把服务器放在国内的网站需要备案审核。
          所以,搜索外面的网站和小众的网站(小众的网站哪有那么多的耐心去搞网站的备案和审核啊),必应会比较全面。


          IP属地:广东5楼2024-06-06 16:14
          回复
            贴吧真是太不方便发脚本了


            IP属地:河南7楼2024-06-10 18:12
            收起回复