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

Project1

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

[已经解决] RMXP自动升级修改

[复制链接]

Lv1.梦旅人

梦石
0
星屑
85
在线时间
210 小时
注册时间
2013-7-26
帖子
346
跳转到指定楼层
1
发表于 2014-11-18 23:35:52 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

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

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

x
RMXP脚本中的自动升级在哪里?
怎么取消自动升级,我重写了个变量,代替了经验,但要防止原来的经验增加(修改器)影响等级,怎么取消?

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
4
发表于 2014-11-19 13:21:32 | 只看该作者
本帖最后由 恐惧剑刃 于 2014-11-19 13:33 编辑

范例
手动升级.zip (228.35 KB, 下载次数: 63)

修正个小问题
  1. class Game_Actor < Game_Battler
  2.   def zan_exp_up_level#升级方法
  3.     return if @exp_list[@level + 1] < 0 or @exp < @exp_list[@level + 1]
  4.     @exp -= @exp_list[@level + 1]
  5.     @level += 1
  6.     @hp = self.maxhp
  7.     @sp = self.maxsp
  8.     # 学会特技
  9.     for j in $data_classes[@class_id].learnings
  10.       if j.level == @level
  11.         learn_skill(j.skill_id)
  12.       end
  13.     end
  14.   end
  15.   def exp=(exp)
  16.     @exp = [[exp, 9999999].min, 0].max
  17.     # 降级
  18.     while @exp < @exp_list[@level]
  19.       @level -= 1
  20.       # 修正当前的 HP 与 SP 超过最大值
  21.       @hp = [@hp, self.maxhp].min
  22.       @sp = [@sp, self.maxsp].min
  23.     end
  24.   end
  25. end
复制代码

点评

self 对象本身 self不是函数,而是一种变量,类似属性的东西,方便使用者。  发表于 2014-11-20 12:50
self是指函数吗?  发表于 2014-11-20 12:37
self这里指的是“角色本身”,self.maxhp 就是 自身的最大HP  发表于 2014-11-19 21:26
解决了,请问一下这个self. 具体的用法是什么,我发现很多脚本里面都有,但我不会用...  发表于 2014-11-19 21:03

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
210 小时
注册时间
2013-7-26
帖子
346
3
 楼主| 发表于 2014-11-19 12:48:51 | 只看该作者
  1.   def level=(level)
  2.     # 检查上下限
  3.     level = [[level, new_final_level].min, 1].max
  4.     if level > @level
  5.       for i in @level...level
  6.         self.exp += @exp_list[i+1]
  7.       end
  8.     else
  9.       @level = level
  10.     end
  11.   end
复制代码
@H·H·Y 这个要怎么改  
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

梦石
0
星屑
2315
在线时间
5539 小时
注册时间
2011-1-10
帖子
6619

青铜编剧史诗剧作家剧作品鉴家

2
发表于 2014-11-19 12:12:41 | 只看该作者
本帖最后由 H·H·Y 于 2014-11-19 13:42 编辑

刚刚弄错了。
Game_Actor的458行更改exp的方法改为
RUBY 代码复制
  1. def exp=(exp)
  2.     @exp = [[exp, 9999999].min, 0].max
  3.     @level_remember = @level
  4.     # 升级
  5.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  6.       @level += 1
  7.       # 学会特技
  8.       for j in $data_classes[@class_id].learnings
  9.         if j.level == @level
  10.           learn_skill(j.skill_id)
  11.         end
  12.       end
  13.     end
  14.     # 降级
  15.     while @exp < @exp_list[@level]
  16.       @level -= 1
  17.     end
  18.     # 修正当前的 HP 与 SP 超过最大值
  19.     @hp = [@hp, self.maxhp].min
  20.     @sp = [@sp, self.maxsp].min
  21.     if $level_switch != true
  22.       @level = @level_remember
  23.     else
  24.       $level_switch = false
  25.     end
  26.   end


Interpreter 6的198行增减等级方法改为
RUBY 代码复制
  1. def command_316
  2.     $level_switch = true
  3.     # 获取操作值
  4.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  5.     # 处理重复
  6.     iterate_actor(@parameters[0]) do |actor|
  7.       # 更改角色的等级
  8.       actor.level += value
  9.     end
  10.     # 继续
  11.     return true
  12.   end


这样可以做到即便经验值已经到达升级需求也不会升级的效果。


不过我这改的有点问题,使用事件增减等级需要分开增加,不能“全体成员”,否则只会给第一位角色加等级,暂时不知道解决方法。
还有要做到完全剃掉默认的exp要搞很多工作呢。

@夕仔  







评分

参与人数 2星屑 +210 收起 理由
RyanBern + 200 认可答案
夕仔 + 10 谢谢啦

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 02:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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