设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: apple5740
打印 上一主题 下一主题

[交流讨论] 萌新求教贴 包含简单教程

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1606
在线时间
220 小时
注册时间
2022-2-3
帖子
160
11
 楼主| 发表于 2022-3-27 18:12:44 | 只看该作者
HM495 发表于 2022-3-27 12:21
楼主的头像是什么插件的效果吗
这地图透视效果不错呀

在狼大的群看到的 加尔蓝传说的图。。很喜欢,我也想知道是什么插件。。
我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1606
在线时间
220 小时
注册时间
2022-2-3
帖子
160
12
 楼主| 发表于 2022-3-27 18:15:32 | 只看该作者
本帖最后由 apple5740 于 2022-4-3 04:50 编辑

昨晚翻到的资料。。
又一位良师益友
给我们萌新详细地讲解了脚本学习过程
千万不要错过,以下是链接。
https://blog.csdn.net/xmoss/article/details/89577365
我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1606
在线时间
220 小时
注册时间
2022-2-3
帖子
160
13
 楼主| 发表于 2022-3-28 02:47:26 | 只看该作者
本帖最后由 apple5740 于 2022-4-3 05:42 编辑

//////////////////////////////////////////已解决////////////////////////////////////////
问题:在默认战斗中无限遇怪。
思路1:将死亡的怪物,恢复其生命值。
这其中遇到了困难,如果场上只有一只怪物,
(或者AOE伤害导致全部怪物同时死亡)当怪物被击败的时候,并不会执行战斗事件页上的脚本,直接进行了战后结算。
有办法,在战后结算前执行事件页上的脚本吗? 或者是有其他的思路?
//////////////////////////////////////////解决办法////////////////////////////////////
解决办法由 新耀012478 提供
为怪物增加死亡免疫状态。在每回合结束时候进行判定,满足条件解除死亡免疫状态。

我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
848
在线时间
117 小时
注册时间
2018-4-7
帖子
114
14
发表于 2022-3-28 16:06:08 | 只看该作者
本帖最后由 新耀012478 于 2022-3-28 16:11 编辑
apple5740 发表于 2022-3-28 02:47
问题:在默认战斗中无限遇怪。
思路1:将死亡的怪物,恢复其生命值。
这其中遇到了困难,如果场上只有一只怪物 ...


我的思路:这个问题的核心在于死亡这个状态。亲测,哪怕它HP归零了,只要没被加上死亡状态战斗继续就会继续。
所以可以利用这个。在回合开始的时候给所有敌人加上不死状态(免疫死亡)。
然后在回合结束的时候进行判定,这样就好了。
满足判定条件就解除免疫死亡的状态,然后全体添加死亡。这样战斗就会正常结束。
需要解决的新问题:这样唯一的问题就是当它HP归零的时候,它的形象不会像平时挂掉了那样慢慢消失。
而是会留在那里,等到死了的时候一起没掉。
当然这个问题可以用别的方法去解决
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1606
在线时间
220 小时
注册时间
2022-2-3
帖子
160
15
 楼主| 发表于 2022-4-3 04:50:11 | 只看该作者
新耀012478 发表于 2022-3-28 16:06
我的思路:这个问题的核心在于死亡这个状态。亲测,哪怕它HP归零了,只要没被加上死亡状态战斗继续就会继 ...

泪目!感谢大佬的回复!这下有了方向。
我现在在想办法获取怪物的当前HP。
还在一个一个属性测试中。(效率有点低)
我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1606
在线时间
220 小时
注册时间
2022-2-3
帖子
160
16
 楼主| 发表于 2022-4-3 05:42:03 | 只看该作者
本帖最后由 apple5740 于 2022-4-9 14:25 编辑

//////////////////////////////////////////已解决////////////////////////////////////////
问题:获取当前怪物的HP
在 https://miaowm5.github.io/RMMV-F1/ 官网的js库,跟MZ脚本调用方法文档中我没办法找到获取方法。
通过上次查询 $gameMap._events 时发现自带的js文件中有许多可以利用的方法。
通过检索 hp 我发现了这个方法。
Object.defineProperties(Game_BattlerBase.prototype, {
    // Hit Points
    hp: {
然后就各种测试。。
$gameTroop.members()[0].enemy()._hp;
$gameTroop.members()[0].enemy().hp;
$gameTroop.members()[0].enemy().Game_BattlerBase.prototype.hp  之类的。。  
下载了同功能的插件..表示也看不懂。
插件中直接
var EYHP = Math.ceil(this._enemy.hp / this._enemy.mhp * 100) ;  
我拿来
this._enemy.hp。。。 。
接着在 rmmz_objects.js 中搜hp我发现了这个方法。
Game_Interpreter.prototype.gameDataOperand(type, param1, param2);
可以获取了!它还能获取很多数据。
大概有物品,武器,装备,主角,敌人等类型的数据。比如我这里需要获取第一位敌人的当前hp
Game_Interpreter.prototype.gameDataOperand(4, 0, 0);
param1 代表队伍中敌人的位置。如果场面有8只怪物,对应有 0-7的数值.
param2 代表获取的数据类型。0 是HP ,1是mp, 10是TP。其他的我不清楚了。。

遇到坑了。。。

$gameTroop.members()[0]._hp;
$gameTroop.members()[0].hp;
能直接获取战斗中位置为1的怪物的当前血量。手贱加了.enemy()。


//////////////////////////////////////////已解决////////////////////////////////////////



我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1606
在线时间
220 小时
注册时间
2022-2-3
帖子
160
17
 楼主| 发表于 2022-4-3 05:46:38 | 只看该作者
//////////////////////////////////////////已解决////////////////////////////////////////
问题:怎么写战斗时的脚本?
写到这里我说一个我之前遇到的问题。。
第一次接触地图事件的时候,我就在思考怎么写战斗的脚本啊。。
那些脚本只能运行在地图事件中,难道我要写在公共事件里吗。。
后来用到敌群的时候才发现有事件脚本。。
原来战斗的脚本是写在敌群战斗事件里
//////////////////////////////////////////已解决////////////////////////////////////////
我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1606
在线时间
220 小时
注册时间
2022-2-3
帖子
160
18
 楼主| 发表于 2022-4-9 20:24:50 | 只看该作者
本帖最后由 apple5740 于 2022-7-17 15:43 编辑

//////////////////////////////////////////已解决////////////////////////////////////////
问题:怎么用脚本修改一个敌人的最大血量?(不修改数据库中该敌人的最大血量)

我测试
$gameTroop.members()[0].mhp = 500;
没有效果。。


修改最大HP确实难以实现。
通过大佬的指点,发现在道具中有增加最大HP的方式。
查看地图文件,可以看到该道具的效果id。

使用
Game_Action.prototype.itemEffectGrow(目标, {"code":42,"dataId":0,"value1":要增加的数值,"value2":0});
可增加最大生命值

为 $gameActors.actor(2) 这个目标 增加 233 最大生命值
Game_Action.prototype.itemEffectGrow($gameActors.actor(2), {"code":42,"dataId":0,"value1":233,"value2":0});


//今天又发现一个方法,更简单了。。
目标.addParam(属性ID,数值)
//为$gameActors.actor(2) 增加最大生命值20.
$gameActors.actor(2).addParam(0,20);

//属性ID
0:最大生命值
1:最大魔法值
2:攻击力
3:防御力
4:魔法攻击力
5:魔法防御力
6:敏捷
7:运气


疑问:
Game_Action.itemEffectGrow($gameActors.actor(2), {"code":42,"dataId":0,"value1":233,"value2":0});
为啥这样不加prototype写会报错。。。
解答:
Game_Action 跟 Game_Action.prototype 是不同的对象,它们是继承关系.对象都不同了,所以调用该方法就报错了。





//////////////////////////////////////////已解决////////////////////////////////////////
我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1606
在线时间
220 小时
注册时间
2022-2-3
帖子
160
19
 楼主| 发表于 2022-4-11 18:02:40 | 只看该作者
本帖最后由 apple5740 于 2022-4-12 14:22 编辑
新耀012478 发表于 2022-3-28 16:06
我的思路:这个问题的核心在于死亡这个状态。亲测,哪怕它HP归零了,只要没被加上死亡状态战斗继续就会继 ...



//显示死亡动画参数0-2
$gameTroop.members()[0].performCollapse(0);
//敌人隐藏
$gameTroop.members()[0].hide();

这样看起来流畅了。。再次感谢!
我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1606
在线时间
220 小时
注册时间
2022-2-3
帖子
160
20
 楼主| 发表于 2022-6-19 11:19:52 | 只看该作者
我的第一个插件
原创是过分了点。。
因为测试过程中需要点击事件,测试地图中根本没有做地形,或者没有主角,每次就会把主角放在一个位置,然后周围放4个测试事件。。有点麻烦
所以写了这个插件,也算是解决了我的问题
点击触发事件
我的联系方式Q: 1127808900
欢迎一起讨论任何问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 22:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表