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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 玄天
打印 上一主题 下一主题

[交流讨论] 来,我也问个问题:如何直接指定特征里的那些东西

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
370 小时
注册时间
2016-1-7
帖子
81
11
发表于 2016-8-28 22:45:43 | 只看该作者
脚本rpg_objects.js :


MV数据库角色栏的特征:


事件编辑器。
以下为当前玩家添加法术特征,并学会用火球术。
假设数据库中【火球术】的 dataId = 9:





详情请参考 data\Actors.json - "traits" 以及
Game_Interpreter.prototype.command321 。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
311
在线时间
204 小时
注册时间
2007-2-4
帖子
1817
12
 楼主| 发表于 2016-8-29 01:17:27 | 只看该作者
本帖最后由 玄天 于 2016-8-29 01:19 编辑


哦,原来脚本是写成这样,懂了

另外根据职业来限定等级上限这个要怎么做呢?
新しい誕生祝いだッ!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
370 小时
注册时间
2016-1-7
帖子
81
13
发表于 2016-8-29 11:20:34 | 只看该作者

打开游戏时按 F8,输入 $dataClasses :



不难看见,MV默认的数据库中,
并没有职业限制等级这一项,
在职业中关于等级方面的描述是空白的,
所以楼主爱怎么写就怎么写好了。
可以在备注中写入预设的最高等级,后期用正则提取 note;
也可以在goto(Scene_Map)之前,
(比如在 Scene_Boot.prototype.start 里面),
直接往 $dataClasses 中循环压入新的参数,
例如压入一个“职业限级”(下述以第一个职业为例):



由于实际响应等级限制的数据在角色(Actor)这个范畴中,
所以最后最好还是关联到 Game_Actor 里面设分支吧,
重写 Game_Actor.prototype.maxLevel 。

由于不清楚楼主最终要实现怎样的效果,
比如说限级后是否要清理超越的等级,经验值的处理等等等等。
如果要一个一个去写备注的话,还是会蹦出想死的心情...
那时候,还得预定义数组或哈希表什么的以备后期校验,越写会越多。
所以这里就不参与调试了;
毕竟预设职业如果是很多很多的话...
别人的现成插件或许会更适合。



回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
311
在线时间
204 小时
注册时间
2007-2-4
帖子
1817
14
 楼主| 发表于 2016-8-29 13:04:42 | 只看该作者
本帖最后由 玄天 于 2016-8-29 13:58 编辑
在野月光 发表于 2016-8-29 11:20
打开游戏时按 F8,输入 $dataClasses :


1)就是跟角色设定里的那样,比如说这个职业上限是50,那么升到50级就封顶,经验值那里变成『-----』那样。至于如果转职业之前等级高于限定怎么办这个可以在流程中控制,比如说前期游戏你能转的职业都是上限30的,到了中期开放升到50的,这样就能避免。所以不考虑现有职业大于上限时的情况

2)也算比较多的,预测大概得有十几二十个职业

3)我就是没找到这方面的插件脚本才要来问……
新しい誕生祝いだッ!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
370 小时
注册时间
2016-1-7
帖子
81
15
发表于 2016-8-29 19:02:45 | 只看该作者

可以试试如下:
JAVASCRIPT 代码复制
  1. var sbc = Scene_Boot.prototype.start;
  2. Scene_Boot.prototype.start = function() {
  3. /*自定义参数*/
  4. var n, i = 1;
  5.  
  6. /*取职业上限*/
  7. n = $dataClasses.length;
  8.  
  9. if(n){
  10.         /*遍历职业*/
  11.         for(;i < n; i++){
  12.                 /*给每个职业(创建)初始化等级限制*/
  13.                 $dataClasses[i].maxLevel = 99;
  14.         };
  15. };
  16.  
  17. /*调入原函数*/       
  18. sbc.call(this);
  19. };
  20.  
  21. /*---------------------------------------------------*/
  22.  
  23. Game_Actor.prototype.maxLevel = function() {
  24. /*取职业id*/
  25. var id = this.actor().classId;
  26.  
  27. /*(参照职业)重置当前角色的最大等级*/
  28. this.actor().maxLevel = $dataClasses[id].maxLevel;
  29.  
  30. /*返回当前角色的最大等级值*/
  31. return this.actor().maxLevel;
  32. };


可以预定义等级的数组,替换了那些 99;
也可以不管它,到事件编辑器时再临场修改这些 99,
即 $dataClasses[职业id].maxLevel 的值;
只是一旦职业很多的话,会容易忘了修改。
游戏中,可以F8后输入
$gameActors.actor(数据库中的角色id).maxLevel();
查看最大等级的值。

以上仅供参考。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
311
在线时间
204 小时
注册时间
2007-2-4
帖子
1817
16
 楼主| 发表于 2016-8-29 22:52:33 | 只看该作者


看上去略麻烦……我还是决定用流程控制的方式来限制角色等级上限好了……虽然不是直接动职业,但是从玩家视角看也没差了
新しい誕生祝いだッ!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 07:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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