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

Project1

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

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

[复制链接]

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(扣减)就是相反的脚本呢?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
36392
在线时间
10789 小时
注册时间
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


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

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26259
在线时间
5354 小时
注册时间
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 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 23:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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