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

Project1

 找回密码
 注册会员
搜索
查看: 7132|回复: 10
打印 上一主题 下一主题

[已经解决] 什么插件能在角色状态栏 增加其他属性,比如杀戮值。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
81
在线时间
65 小时
注册时间
2015-6-4
帖子
67
跳转到指定楼层
1
发表于 2016-3-22 16:02:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本人在做一款修仙类的小游戏,需要杀戮值 来对应突破的时候对应的天劫,或者突破的时候的成功率。

还有一问,怎么在游戏开始菜单之前插入 自己的图片或游戏说明

Lv2.观梦者

梦石
0
星屑
642
在线时间
165 小时
注册时间
2012-4-18
帖子
264
2
发表于 2016-3-22 17:13:19 | 只看该作者
本帖最后由 salvareless 于 2016-3-22 17:31 编辑

这个不需要特定的插件,你自己修改一下插件就可以了。你看我的状态界面:

右侧的属性都是我自己加上去的。
具体你要找到你工程下面的js文件夹,在那里找到rpg_windows.js文件。建议你编辑之前下载一个文本编辑器,这样比较不容易乱码。我用的是Notepad++。
你打开rpg_windows.js,找到Window_Status.prototype.drawEquipments = function(x, y)这个函数。这个函数是用来在状态界面显示你穿了哪些装备的,我自己用的时候把它整个屏蔽了,用来写自己的东西。
不过你只有一个值的话应该用不着这样。你可以这样,我猜你再怎么说也应该是用了YEP_CoreEngine.js这个插件的吧,那你可以找到这个插件的Window_Status.prototype.drawParameters = function(x, y)函数,然后在这个函数改成这样:
  1. Window_Status.prototype.drawParameters = function(x, y) {
  2.     var lineHeight = this.lineHeight();
  3.     for (var i = 0; i < 6; i++) {
  4.       var paramId = i + 2;
  5.       var y2 = y + lineHeight * i;
  6.       this.changeTextColor(this.systemColor());
  7.       this.drawText(TextManager.param(paramId), x+20, y2 - 20, 160);
  8.       this.resetTextColor();
  9.                         var actorParam = Yanfly.Util.toGroup(this._actor.param(paramId));
  10.                         var dw = this.textWidth(Yanfly.Util.toGroup(this._actor.paramMax(i + 2)));
  11.       this.drawText(actorParam, x + 180, y2 - 20, dw, 'right');
  12.     }
  13.         //杀戮
  14.       var paramId = 6;
  15.       var y2 = y + lineHeight * 6;
  16.       this.changeTextColor(this.systemColor());
  17.       this.drawText("杀戮", x +20, y2 - 20, 160);
  18.       this.resetTextColor();
  19.           var shaluzhi =$gameVariables.value(2);    //这里你需要改成你用来计算杀戮之的那个变量,我这里暂时用2号变量,你用哪个就改成哪个。
  20.           var dw = this.textWidth(Yanfly.Util.toGroup(this._actor.paramMax(3)));
  21.       this.drawText(shaluzhi, x + 180, y2 - 20, dw, 'right');
  22. };
复制代码
改完这里,你还要把刚才说的那个rpg_windows.js里面的2632行,Window_Status.prototype.maxEquipmentLines = function() {
    return 6;
};
里面的6改成7,这样就可以了。只有你所有需要增加杀戮值的时候都可以用事件的变量操作来做。

另外,考虑到你是做渡劫成功率,所以我觉得你只用一个杀戮值是不够的,你真正需要的是度过天劫的成功率,是有一个几率,所以下面我补充了一下,在具体的杀戮值后面补充一个括号,括号中显示成功率,这样就还需要一个变量,这个变量用来充当当前境界突破天劫所需的杀戮值。于是代码变成下面这个样子:
  1. Window_Status.prototype.drawParameters = function(x, y) {
  2.     var lineHeight = this.lineHeight();
  3.     for (var i = 0; i < 6; i++) {
  4.       var paramId = i + 2;
  5.       var y2 = y + lineHeight * i;
  6.       this.changeTextColor(this.systemColor());
  7.       this.drawText(TextManager.param(paramId), x+20, y2 - 20, 160);
  8.       this.resetTextColor();
  9.                         var actorParam = Yanfly.Util.toGroup(this._actor.param(paramId));
  10.                         var dw = this.textWidth(Yanfly.Util.toGroup(this._actor.paramMax(i + 2)));
  11.       this.drawText(actorParam, x + 180, y2 - 20, dw, 'right');
  12.     }
  13.         //杀戮
  14.       var paramId = 6;
  15.       var y2 = y + lineHeight * 6;
  16.       this.changeTextColor(this.systemColor());
  17.       this.drawText("杀戮", x +20, y2 - 20, 160);
  18.       this.resetTextColor();
  19.           var shaluzhi =$gameVariables.value(2);    //这里你需要改成你用来计算杀戮之的那个变量,我这里暂时用2号变量,你用哪个就改成哪个。
  20.           var shaluxuqiu = $gameVariables.value(3);    //这里是度天劫需要的杀戮值,相当于一个上限,达到就能稳过,达不到就只能凭运气。
  21.           var shalujilv = Math.round(100 * shaluzhi / shaluxuqiu)  / 100;
  22.           var dw = this.textWidth(Yanfly.Util.toGroup(this._actor.paramMax(3)));
  23.       this.drawText(shalizhi + "(" + shalujilv + "%)", x + 180, y2 - 20, dw, 'right');
  24. };
复制代码
上面6改7的地方还是要改哦。这样改后,你就可以用2号变量来计算当前的杀戮值,然后用3号变量来规定要多少杀戮之才能顺利度过天劫了。

不过话说,修仙设定用杀戮值创天劫啊~~~~杀戮越重天劫不是会更强么~~~~这个以杀证道的调调我很喜欢。



至于你的第二问,你看到的那些都不是你想的那样,他们是用了跳过开始界面的插件,然后自己用事件结合数据库的公共事件来做的自定义开始界面,做法有简单有复杂。
以下是跳过开始菜比较可靠的代码:

  1. (function() {

  2.         var parameters = PluginManager.parameters('SkipTitle');
  3.         var scenetogo = parameters['scene'];
  4.         var addscript = parameters['addscript'];

  5.         Scene_Boot.prototype.start = function() {
  6.                 Scene_Base.prototype.start.call(this);
  7.                 SoundManager.preloadImportantSounds();
  8.                 if (DataManager.isBattleTest()) {
  9.                         DataManager.setupBattleTest();
  10.                         SceneManager.goto(Scene_Battle);
  11.                 } else if (DataManager.isEventTest()) {
  12.                         DataManager.setupEventTest();
  13.                         SceneManager.goto(Scene_Map);
  14.                 } else {
  15.                         this.checkPlayerLocation();
  16.                         DataManager.setupNewGame();
  17.                         if(scenetogo.length>0){
  18.                                 SceneManager.goto(eval(scenetogo));
  19.                                 eval(addscript);
  20.                         }else{
  21.                                 SceneManager.goto(Scene_Title);
  22.                                 Window_TitleCommand.initCommandPosition();
  23.                         }
  24.                 }
  25.                 this.updateDocumentTitle();
  26.         };
  27. })();
复制代码
你把它保存到一个txt文件中,然后把文件的改名为" SkipTitle.js ",记住要确保后缀名改成.js,多说一句怕你没开电脑的显示文件后缀名。然后你把你改好名字的文件放到你的工程文件夹下面的\js\plugins中,再用MV的插件编辑器加载就行了,然后你就会发现你一进游戏就只是黑一下就到地图上了。
这个时候,你就需要都你游戏的第一张地图,也就是你放了主角的那张地图上建事件来控制,一般就是显示图片啊,判断之类,具体你就要去搜一搜‘事件标题’这类的帖子了。
这里有一个你可以参考:https://rpg.blue/forum.php?mod=viewthread&tid=388315

点评

其实我只会改不会自己写= =不过能帮到你,我也很高兴。  发表于 2016-3-22 21:37
神一般的教学,抱走。  发表于 2016-3-22 19:26

评分

参与人数 2星屑 +60 +1 收起 理由
封尘 + 1 塞糖
king + 60 塞糖

查看全部评分

回复 支持 3 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
81
在线时间
65 小时
注册时间
2015-6-4
帖子
67
3
 楼主| 发表于 2016-3-22 22:49:45 | 只看该作者
salvareless 发表于 2016-3-22 17:13
这个不需要特定的插件,你自己修改一下插件就可以了。你看我的状态界面:

右侧的属性都是我自己加上去的。 ...

能改就很厉害了,我现在底层的代码一个都不明白。你这个给我启发很大。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
81
在线时间
65 小时
注册时间
2015-6-4
帖子
67
4
 楼主| 发表于 2016-3-22 22:58:19 | 只看该作者
我计划中渡劫的时候 是根据杀戮只决定渡劫时收到的伤害大小,不过现在练气阶段还没弄完。 主要状态栏需要杀戮值  炼丹能力 (可以学习新的配方还有丹药书提升 或者炼丹次数也少量增加) 状态栏显示 1品-10品炼丹或者炼器师 对应不同品级装备的成功率。
游戏以休闲为主 多种线路可以进行  善于发现隐藏剧情, 任务以寻找材料 宝物 破解机关为主  同一地图过关模式不少于3个。js代码慢慢研究还行。 就是地图 美工 难搞,美工盲。还有就是具体怪物 还有boss的伤害比较难  要慢慢测试才能得到很好的效果。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
81
在线时间
65 小时
注册时间
2015-6-4
帖子
67
5
 楼主| 发表于 2016-3-22 23:03:32 | 只看该作者
jgwx0000 发表于 2016-3-22 22:58
我计划中渡劫的时候 是根据杀戮只决定渡劫时收到的伤害大小,不过现在练气阶段还没弄完。 主要状态栏需要杀 ...

还有需要状态栏显示的就是修为, 我设想的是每个阶段分 初期 中期后期 还有巅峰   比如练气阶段 分101-200 201-300 301-400  401到500 就是巅峰   突破大阶段就直接到1000  后面类推 筑基期 1001-2000 2001-3000 3001-4000 4001-5000 10000以后就是金丹期了 这样体现大阶段 实力差距比较明显
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
642
在线时间
165 小时
注册时间
2012-4-18
帖子
264
6
发表于 2016-3-22 23:07:10 | 只看该作者
这个你要学的话,还是论坛那句老话:多开些工程胡改瞎改看看会变成什么样,看看各个类,函数,方法是怎么实现的,然后慢慢就能摸索到一些了。另外我给你说一段代码,要是有时候想调用属性或者参数,但是找不到正确的写法的时候可以把它插在一些函数的尾部,测试游戏时按F8就能返回这个函数中的一些情况。如下:
console.log(this._actor)//返回当前角色的所有属性
console.log(item)//返回F8可查看的当点道具的详细属性
console.log()这个方法作用应该很多,不多我目前摸索出来就这两个写法是对的,可以准确返回。如果你需要调用类似于一把武器加了多少暴击这种属性,你就会用得到这个。



回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
642
在线时间
165 小时
注册时间
2012-4-18
帖子
264
7
发表于 2016-3-23 01:00:00 | 只看该作者
jgwx0000 发表于 2016-3-22 22:58
我计划中渡劫的时候 是根据杀戮只决定渡劫时收到的伤害大小,不过现在练气阶段还没弄完。 主要状态栏需要杀 ...


你这个容易啊,你可以把数据库里面用来显示昵称的那个值拿来当作副职业的职称用,当然这样你就要个改变windows.js里面显示职业(calss)和昵称(nickname)的位置,函数Window_Status.prototype.drawBlock1 = function(y) 具体应该在2551-2552行,交换他们的值,建议改成这样:
  1. Window_Status.prototype.drawBlock1 = function(y) {
  2.     this.drawActorName(this._actor, 6, y);
  3.     this.drawActorClass(this._actor, 432, y);
  4.     this.drawActorNickname(this._actor, 192, y);
  5. };
复制代码
这样你就可以用昵称来做副职业的称号,还可以用事件在操作进行晋级什么的。
置于成功率么- -这个不必显示在状态栏中,我发给你一个地址,你看看这个合成物品的插件你用的上不?可以合成所有种类的物品,道具,武器,装甲等等,还可以给每个配方单独设成功率,也有对应合成技能的等级,每进行一次合成会根据配方的设定增加对应的合成技能等级,我那个帖子写的很详细,这里就不细讲了。
地址在这里:https://rpg.blue/thread-385568-3-1.html
从25楼开始,我发了一个实装物BUG的插件,以及接下来的几楼都是一些常见的问题的处理,你看了就明白了。
置于境界的问题,我其实建议不要以100级为一个坎- -这样游戏的耗时会非常恐怖,其实10级一个坎就很不错了,我明白你是想体现境界碾压效应或者等级碾压效应,但这其实可以用伤害公式来解决的。例如你的伤害公式这样写:(4 * a.atk - 2 * b.def) * a.luk / (b.luk * 400)  因为怪物没有等级这个属性,所以在设数据库的时候我就把luk设为和等级相等了。你看这个伤害公式,攻击力的提升,以及自身等级的提升都能提升伤害,当然,这个公式还不够极端,具体你自己可以改改看。

然后是境界的显示问题,这里只能再改代码了。这要看你是想改哪里,有两个地方,一个是主菜单,它会简单显示角色的头像,名字,职业,生命值,法力值。另一个是状态页面,这里显示的比较详细。但是实际上是同一个函数在控制:Window_Base.prototype.drawActorLevel = function(actor, x, y),在YEP_CoreEngine.js的1183行:这里需要加一些判断。改好之后大概是这样:
把1190行的this.drawText(level, x + dw1, y, dw2, 'right');替换为以下代码:
  1.         if (level > 99){
  2.                 this.drawText("飞升" + level +"层", x + dw1 + 20, y, 120, 'right');
  3.         } else if (level > 89){
  4.                 this.drawText("大乘" + level +"层", x + dw1 + 20, y, 120, 'right');
  5.         } else if (level > 79){
  6.                 this.drawText("渡劫" + level +"层", x + dw1 + 20, y, 120, 'right');
  7.         } else if (level > 69){
  8.                 this.drawText("合体" + level +"层", x + dw1 + 20, y, 120, 'right');
  9.         } else if (level > 59){
  10.                 this.drawText("化身" + level +"层", x + dw1 + 20, y, 120, 'right');
  11.         } else if (level > 49){
  12.                 this.drawText("元婴" + level +"层", x + dw1 + 20, y, 120, 'right');
  13.         } else if (level > 39){
  14.                 this.drawText("金丹" + level +"层", x + dw1 + 20, y, 120, 'right');
  15.         } else if (level > 29){
  16.                 this.drawText("假丹" + level +"层", x + dw1 + 20, y, 120, 'right');
  17.         } else if (level > 19){
  18.                 this.drawText("筑基" + level +"层", x + dw1 + 20, y, 120, 'right');
  19.         } else if (level > 9){
  20.                 this.drawText("练气" + level +"层", x + dw1 + 20, y, 120, 'right');
  21.         } else {
  22.                 this.drawText("锻体" + level +"层", x + dw1 + 20, y, 120, 'right');
  23.         }
复制代码
具体的境界名称,就根据你的设计来改了~~~

话说是不是是不是觉得我知道得太多了~~~~~哈哈哈哈~~~~是因为你问的问题我自己之前都在自己的工程里实现过,后来改剧本,就放弃掉了一部分想法,恰好你问到的这些我都有自己狠花时间研究,做出来过= =我那么厉害= =
其实我还有很多奇葩的修改:
比如为每个主角分配不同的修炼路线,例如法修,灵修,妖修,修神,这样就还要判断是那个主角,然后为它单独写不同的境界名称。
再比如,还是上面的情况,因为每个人修炼路线不同,所以吸收的能量也不同,然后分别为每个主角规定不同的法力值和怒气值的名称。
其他诸如不用金币而用上中下品灵石当作货币(金银铜模式),声望啊之类的都有过。我想我应该可以帮到你不少忙。
啊~~~~~打一个哈欠~~~~~~,都一点了= =睡觉了,还有什么问题就=就明天回复了哟。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
81
在线时间
65 小时
注册时间
2015-6-4
帖子
67
8
 楼主| 发表于 2016-3-23 12:44:10 | 只看该作者
状态栏右边 那个显示装备 怎么去掉换成自己想要的。那个杀戮值 是添加进去了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
81
在线时间
65 小时
注册时间
2015-6-4
帖子
67
9
 楼主| 发表于 2016-3-23 13:34:25 | 只看该作者
jgwx0000 发表于 2016-3-23 12:44
状态栏右边 那个显示装备 怎么去掉换成自己想要的。那个杀戮值 是添加进去了。 ...

刚刚研究了下基本会了,还有那个多货币系统的插件,能讲下吗,英语我看不懂。
百度翻译后惨不忍睹
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
81
在线时间
65 小时
注册时间
2015-6-4
帖子
67
10
 楼主| 发表于 2016-3-23 14:11:08 | 只看该作者

为什么我左右对不齐呢。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 20:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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