请教一下大佬们,非战斗及没有插件脚本情况下有办法做HP判定吗?
rpgmakermv吧
全部回复
仅看楼主
level 1
星摘梦 楼主
想做一个事件,HP百分百多少的时候,触发一些变量,大概是判定需要休息,然后通过休息然后恢复10%的HP,有办法做到吗?🙏🏻
插件的话在b站找了一圈好像没找到
2025年09月11日 09点09分 1
level 8
变量有个选项是代入游戏数据,里头就有角色hp判定,这是固定值,然后想做成百分比判定的话,设置两个变量,变量a代入hp(也就是当前hp),变量b代入最大hp(上限),之后操纵变量,变量a除以变量b,变量a乘以固定数100。
比方当前血量300,最大值1000,300/1000=0.3,0.3x100=30,这样就能判定百分比。
2025年09月13日 06点09分 0
哦哦,理解了!感谢解答(。>∀<。)已经用上了
2025年09月13日 08点09分
level 1
事件就可以,你是用的公共事件并行是吧,然后条件判定里可以用变量,也可以脚本,倒是不知道休息是啥
2025年09月11日 11点09分 2
@rpgmakermvdown 嗯,是不知道怎么用hp来控制变量 休息是一个事件来实现,和快捷旅馆差不多
2025年09月11日 15点09分
level 9
【RMMV】事件脚本整合,第三次更新,更方便在网页上查看 - RPG Maker MV 讨论区 - Project1
rpg.blue/thread-403194-1-1.html
按照3楼的方法,到上面这里找到下面这两个脚本。
$gameActors.actor(1).hp//生命
$gameActors.actor(1).mhp//最大生命
[星星月亮]
另外,你想要角色休息、等待,一般的游戏引擎都是会让等待的时候来一个等待状态、呼吸状态的,
就是角色会一上一下的呼吸,下面这些脚本或许用的是,就是需要给美术增加工作量了。
下面这里的$gameMap.event(this.eventId())是本事件,
好像可以替换成$gamePlayer这个玩家,
也可以$gameMap.event(1)这样直接指定几号NPC。
(下面这个你结合着事件页左下角的图像和选项来看,就能看懂了。)
[星星月亮]
◆脚本://读取图片名以及该图片的0到7,在这张图片上8选1
:  :$gameMap.event(this.eventId()).setImage('Actor1shuzi',0)
:  :
:  ://在括号里按照8、2、4、6来设置上下左右的方向,好像是 设置事件位置 这个事件指令的脚本
:  :$gameMap.event(this.eventId()).setDirection(2);
:  :
:  ://改写原始图案位置,0到2分别是左中右
:  :$gameMap.event(this.eventId())._originalPattern = 2
:  :
:  ://步行动画,默认移动时才起效。括号里面数字1或者是1以上和true都是真,0和false都是假
:  :$gameMap.event(this.eventId()).setWalkAnime(true);
:  :
:  ://踏步动画,默认等待时才起效。括号里面数字1或者是1以上和true都是真,0和false都是假
:  :$gameMap.event(this.eventId()).setStepAnime(true);
2025年09月13日 14点09分 4
指定ID事件目前是否正在移动中 $gameMap.events()[id].isMoving() 另外,搜索 move 还有一些移动相关的脚本或许可以用到。
2025年09月13日 16点09分
感谢回复,感觉需要一点时间理解呢
2025年09月15日 00点09分
level 9
◆脚本:$gameMap.event(this.eventId()).setTileImage(4*8);
:  :$gameMap.event(this.eventId()+1).setTileImage(4*8+1);
:  :$gameMap.event(this.eventId()+2).setTileImage(5*8);
:  :$gameMap.event(this.eventId()
+3
).setTileImage(5*8+1);
◆脚本:$gameMap.event(this.eventId()).setPosition(Math.abs(TouchInput.x/48), Math.abs(TouchInput.y/48))
:  :$gameMap.event(this.eventId()+1).setPosition(Math.abs((TouchInput.x/48)+1), Math.abs(TouchInput.y/48))
:  :$gameMap.event(this.eventId()+2).setPosition(Math.abs(TouchInput.x/48), Math.abs((TouchInput.y/48))+1)
:  :$gameMap.event(this.eventId()+3).setPosition(Math.abs((TouchInput.x/48)+1), Math.abs((TouchInput.y/48))+1)
◆如果:脚本:TouchInput.isReleased()
◆独立开关操作:A = 开启

:结束分支
[星星月亮]
还可以使用这个来搞一些建造城堡、种田、种树之类的东西。
上面这段是第一分页,并行执行,
下面这段是第二分页,并行执行,出现条件为 独立开关A
另外,需要新增3个空白事件页来被这个脚本控制,
这3个空白事件页的编号要刚好是本事件页编号的加1、加2、
加3

$gameMap.event(this.eventId()).setTileImage(5);
至于为什么可以这样,你试一下上面这一行的脚本就知道了。
[星星月亮]
◆脚本:$gameMap.event(this.eventId()).setTileImage(4*8);
:  :$gameMap.event(this.eventId()+1).setTileImage(4*8+1);
:  :$gameMap.event(this.eventId()+2).setTileImage(5*8);
:  :$gameMap.event(this.eventId()+3).setTileImage(5*8+1);
2025年09月13日 14点09分 5
level 9
$gameActors.actor(id).addParam(n,v);
增减能力值
$gameActors.actor(1).addParam(0,100);
1号角色最大hp增加100
$gameActors.actor(1).addParam(1,100);
1号角色最大mp增加100
$gameActors.actor(1).addParam(2,100);
1号角色攻击力增加100
$gameActors.actor(1).addParam(3,100);
1号角色防御力增加100
$gameActors.actor(1).addParam(4,100);
1号角色魔攻增加100
$gameActors.actor(1).addParam(5,100);
1号角色魔防增加100
$gameActors.actor(1).addParam(6,100);
1号角色敏捷增加100
$gameActors.actor(1).addParam(7,100);
1号角色幸运增加100
[星星月亮]
$gameActors.actor(id).gainHp(n);
$gameActors.actor(id).gainMp(n);
$gameActors.actor(id).gainTp(n)
$gameActors.actor(id).addState(n);
$gameActors.actor(id).removeState(n);
增减HP
增减MP
增减TP
增加状态
去除状态
[星星月亮]
所以,下面这段放到脚本框那里好像是可以的,我没有测试。仅仅针对1号角色。
[星星月亮]
if($gamePlayer.isMoving()){
//$gameActors.actor(1).addParam(0,$gameActors.actor(1).mhp/10);
$gameActors.actor(1).gainHp($gameActors.actor(1).mhp/10);
}
$gamePlayer.setStepAnime(true); //玩家的踏步动画,会美术的人或许可以搞成一上一下的呼吸动画
◆等待:600帧
[星星月亮]
关于$gameParty.leader()的角色ID号如何获取 - RPG Maker MV 讨论区 - Project1
rpg.blue/thread-404172-1-1.html
如果你只是想给主角进行操作的话,或许可以直接使用$gameParty.leader()来绑定队长,
如果想给具体哪个角色进行操作的话,可以使用编号来指定,
如果想给所有队员进行操作的话,参考下面这个或许可以。
写给萌新的超简单事件脚本指南 - RPG Maker MV 讨论区 - Project1
rpg.blue/thread-478377-1-1.html
上面这里找到的下面这个脚本。
[星星月亮]
$gameParty.members().forEach(function(m){
m.gainExp(-1)
});
2025年09月15日 05点09分 6
1