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

Project1

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

[已经解决] 这样的问题,难道真的需要副本才能实现?请给解决办法.

[复制链接]

Lv2.观梦者

梦石
0
星屑
814
在线时间
122 小时
注册时间
2018-7-23
帖子
114
跳转到指定楼层
1
发表于 2021-3-24 20:35:37 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
我跟某个其他群游戏作者设想着这么一类装备。装备之后能提升等级。就是这么一类装备。但有衍生问题。角色的职业等级本身有上限(虽然不是原设的99而是35而已)但是哪怕35级的主角穿上可以增加1级的装备(带上某件装备,增加等级的公共事件是存在,也找到了。)问题就是,判断上是突破破不了设定好的等级上限的。除非,设定为穿上装备后换角色。但换角色带来的后果就是换个人之后,整个游戏都出现逻辑BUG。请问,有没有办法能不换角色的前提下,穿上增加等级的装备可以突破职业等级上限呢?

如果有人看不懂,看蒙蔽了。我就简单描述一次。角色小风,职业 掌教,等级上限35 有一件叫天人司仗的权杖。这件权杖设定里有一项可以增加职业等级的项目。但是已经是等级上限35的小风掌教带上这个装备后,没办法突破35级以上。在不换角色的前提下,请给出解决办法。

Lv2.观梦者

梦石
0
星屑
777
在线时间
70 小时
注册时间
2017-12-2
帖子
14
14
发表于 2021-3-26 16:02:41 | 只看该作者
上班摸鱼写的纯脚本,不需要使用事件。

依赖是之前我写的备注扩展: https://rpg.blue/forum.php?mod=v ... p;page=1#pid2915152
需要把该贴最底下折起来的406行代码贴到这个脚本之前

用法是装备里写备注(如果你没改上面那个代码的常量配置)
  1. add_level = 10
  2. ----

复制代码

装备时会临时把属性和职业里设置的升级能获得的技能临时加上,取下来属性和技能会消失。
因为默认情况下数据库里没有99以上的值,就直接限制了parame_base最高只能拿99级,也就是说角色99级装备一个等级+10虽然会变成109级,但基础属性还是99级的(21行重写param_base的地方你可以根据你使用的破限制脚本修改)

冲突可能是 level, param_base 和 skills 方法是覆盖定义,没有想到什么兼容性特别好的写法

  1. class Game_Actor
  2.   # 装备带来的临时等级提升
  3.   def add_level
  4.     equips.compact.inject(0) { |r, item| r + (item.ext(:add_level) || 0) }
  5.   end

  6.   # 临时等级提升带来的临时技能
  7.   def add_level_skills
  8.     final_level = level
  9.     self.class.learnings
  10.       .select { |v| @level < v.level && v.level <= final_level }
  11.       .map(&:skill_id)
  12.   end

  13.   # 覆盖原定义
  14.   def level
  15.     @level + add_level
  16.   end

  17.   # 覆盖原定义(原定义使用@level,现在走 level 方法,但是要限制上限
  18.   def param_base(param_id)
  19.     self.class.params[param_id, [level, 99].min]
  20.   end

  21.   # 覆盖原定义,增加临时等级提升带来的临时技能
  22.   def skills
  23.     (@skills | added_skills | add_level_skills).sort.collect {|id| $data_skills[id] }
  24.   end
  25. end
复制代码
java.lang.NullPointerException
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26184
在线时间
5343 小时
注册时间
2016-3-8
帖子
1655
13
发表于 2021-3-25 11:37:27 | 只看该作者
本帖最后由 alexncf125 于 2021-3-25 13:56 编辑
leungzero 发表于 2021-3-25 03:41
这条我稍微查了下翻译     add_limit = 1 if @actor_id  这条的意思大概是添加限制=1等级@角色ID  

那么 ...


不是, add_limit 只是个我随便写成的局部变量,
你喜欢的话, 写成abcdefg也可以正常运行的说~~
甚至有不写它的写法, 脚本的可观性更差一些而已...
有兴趣的话, 可看4L新增的折叠内容

或许你可以建个並行的公共事件


又或许可以用以下的脚本, 不过可能会有bug且没兼顾其他情况
RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 更换装备
  4.   # slot_id : 装备栏 ID
  5.   # item : 武器/护甲(为 nil 时装备解除)
  6.   #--------------------------------------------------------------------------
  7.   alias change_equip_refresh_lvlimit change_equip
  8.   def change_equip(slot_id, item)
  9.     change_equip_refresh_lvlimit(slot_id, item)
  10.     if @actor_id == 小风的ID && @level > 35 && slot_id == 0 && (item.nil? || item.id != 法杖的ID) #slot_id == 0 指法杖是件武器
  11.       change_level(35, false)
  12.       refresh
  13.     end
  14.   end
  15. end

评分

参与人数 1+1 收起 理由
leungzero + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36322
在线时间
10774 小时
注册时间
2009-3-15
帖子
4813
12
发表于 2021-3-25 07:39:38 | 只看该作者
本帖最后由 soulsaga 于 2021-3-25 07:53 编辑

RUBY 代码复制
  1. class Game_Actor < Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 最大等级
  4.   #--------------------------------------------------------------------------
  5.   alias :max_level_limit_breaker :max_level
  6.   def max_level
  7.     max_level_limit_breaker
  8.     add_limit = 0
  9.     if @actor_id == 小风的ID && @class_id == 职业「掌教」的ID
  10.     if equips.include?($data_weapons[天人司仗的ID]) #如果权杖是防具, 则改成equips.include?($data_armors[天人司仗的ID])
  11.     add_limit += 1#掌教小风装备了天人司仗后, 等级上限提升1
  12.     if  equips.include?($data_armors[天人法袍的ID])#掌教小疯装备了天人法袍后, 等级上限提升1
  13.     add_limit += 1  
  14.     end
  15.     end
  16.    end
  17.     actor.max_level + add_limit
  18.   end
  19. end


稍稍改了一下大佬的脚本..未测试
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
814
在线时间
122 小时
注册时间
2018-7-23
帖子
114
11
 楼主| 发表于 2021-3-25 03:41:55 | 只看该作者
alexncf125 发表于 2021-3-24 22:45
class Game_Actor < Game_Battler
  #----------------------------------------------------------------- ...

这条我稍微查了下翻译     add_limit = 1 if @actor_id  这条的意思大概是添加限制=1等级@角色ID  

那么是不是可以理解为把ADD(添加)改为deduction(扣减)就是相反的脚本呢?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
814
在线时间
122 小时
注册时间
2018-7-23
帖子
114
10
 楼主| 发表于 2021-3-25 03:33:31 | 只看该作者
alexncf125 发表于 2021-3-25 03:16
困了,,,丟个脚本上来...睡觉~

在事件中使用脚本呼叫:set_max_level_limit(角色代号 ,新等级限 ...


怎么感觉这个脚本还不如让四楼的脚本补上一条卸装后变回去的脚本来得适合?你确定没因为困觉看错了我需要的类型吗?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26184
在线时间
5343 小时
注册时间
2016-3-8
帖子
1655
9
发表于 2021-3-25 03:16:37 | 只看该作者
本帖最后由 alexncf125 于 2021-3-25 11:48 编辑

困了,,,丟个脚本上来...睡觉~

睡醒测试了一下, 这丟的脚本也有4L的状況, 还是不丟好了...
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
814
在线时间
122 小时
注册时间
2018-7-23
帖子
114
8
 楼主| 发表于 2021-3-25 03:03:23 | 只看该作者
实在不行,只好忍无可忍把这种装备设定为一旦装备就给固定化。这样就不用脱了。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
814
在线时间
122 小时
注册时间
2018-7-23
帖子
114
7
 楼主| 发表于 2021-3-25 02:58:23 | 只看该作者
alexncf125 发表于 2021-3-24 22:45
啊这...rm默认应该是没有"职业等级"这样东西的吧...

所以...以下的脚本是作用于"角色等级"...


后来我想清楚了,确实有你所说的BUG。既然有突破增加等级这个脚本设定,那么自然有一条降低等级。只要把这个脚本,下面加一条,解除装备后降低等级上限不就得?难道没这样的脚本吗?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26184
在线时间
5343 小时
注册时间
2016-3-8
帖子
1655
6
发表于 2021-3-25 02:56:58 | 只看该作者
本帖最后由 alexncf125 于 2021-3-25 03:24 编辑
leungzero 发表于 2021-3-25 02:43
我把等级上限增加的公共事件挂给装备本身也会降不回来吗?逻辑上,不可能的啊。
尤其是,我标注了这个角 ...


那当然是因为, 我4L的脚本与你的公共事件没关联啊...

而且你说的
「这件权杖设定里有一项可以增加职业等级的项目」
「我标注了这个角色穿了这个装备时」
「等级上限增加的公共事件挂给装备本身」
我都没看懂你是在哪儿和怎样地设定/标注, 也没看懂你的公共事件是怎样增加等级上限

把4L的脚本丢到空白工程测试, 就会出现我说的状況的了...
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-1 09:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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