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

Project1

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

[已经过期] 请教,改了上限,但是战斗和学习新技能后就又便回去了

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2016-1-28
帖子
17
跳转到指定楼层
1
发表于 2016-1-28 14:49:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
   小弟最近玩了一款武侠rpg游戏,没有升级一说,但是可以通过学习新技能(武学),新技能会永久增加属性。或者服用一些东西(天材地宝)也会永久增加,但是都有上限。

我尝试用rpgmaker xp修改,

可是不管我怎么改,生命上限和MP上限只有19999,就算暂时能够加到九十多万,可是一旦学习了新的技能或者战斗一场后,就有跌回了19999了

最后我瞎猫碰上死耗子,把min改成了max,这回到是成功了,但是刚新建出来的人物就是满属性!!!我希望能够一点一点的增加

求前辈门指点下,怎么改脚本呢?和升级的不同,是通过学习技能和服用一些物品增加六维上限的

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2016-1-28
帖子
17
2
 楼主| 发表于 2016-1-28 14:50:52 | 只看该作者
■ Game_Battler (分割定义 1)
#------------------------------------------------------------------------------
#  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
# 超级类来使用。
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :battler_name             # 战斗者 文件名
  attr_reader   :battler_hue              # 战斗者 色相
  attr_reader   :hp                       # HP
  attr_reader   :sp                       # SP
  attr_reader   :states                   # 状态
  attr_accessor :hidden                   # 隐藏标志
  attr_accessor :immortal                 # 不死身标志
  attr_accessor :damage_pop               # 显示伤害标志
  attr_accessor :damage                   # 伤害值
  attr_accessor :critical                 # 会心一击标志
  attr_accessor :animation_id             # 动画 ID
  attr_accessor :animation_hit            # 动画 击中标志
  attr_accessor :white_flash              # 白色屏幕闪烁标志
  attr_accessor :blink                    # 闪烁标志
  attr_accessor :last_action              # 上回合动作
  attr_accessor :skill_s                  # 特技快捷键
  attr_accessor :item_s                   # 物品快捷键
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    @battler_name = ""
    @battler_hue = 0
    @hp = 0
    @sp = 0
    @states = []
    @states_turn = {}
    @maxhp_plus =
    @maxsp_plus =
    @str_plus =
    @dex_plus =
    @agi_plus =
    @int_plus =
    #=======破限参数设定======
    @str_ot = 9999
    @dex_ot = 9999
    @agi_ot = 9999
    @int_ot = 9999
    #=========================
    @Hidden = false
    @immortal = false
    @damage_pop = false
    @damage = nil
    @critical = false
    @animation_id = 0
    @animation_hit = false
    @white_flash = false
    @blink = false
    @current_action = Game_BattleAction.new
    @last_action = Game_BattleAction.new #玄:重复融合
     @skill_s = []
     for i in 0..9
      @skill_s = ""
      end
     @item_s = []
    for i in 0..9
     @item_s = ""
    end
  end


#--------------------------------------------------------------------------
  # ● 玄:获取上回合动作
  #--------------------------------------------------------------------------
  def last_action
   return @last_action
  end
  #--------------------------------------------------------------------------
  # ● 获取 MaxHP
  #--------------------------------------------------------------------------
  def maxhp
    n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min
    for i in @states
      if $data_states.hold_turn == 9999 #内功、身法、特技
        if self.is_a?(Game_Actor)
       y = self.skill.level
       n *= (y*($data_states.maxhp_rate - 100.0)/10)+1
        else # 敌人
        n *= $data_states.maxhp_rate / 100.0 #敌人
        end
      else
        n *= $data_states.maxhp_rate / 100.0
      end #内功、身法、特技
      case i
      when 905
       @str_ot = 999999
      end   
    end
    n = [[Integer(n), 1].max, 999999].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 获取 MaxSP
  #--------------------------------------------------------------------------
  def maxsp
    n = [[base_maxsp + @maxsp_plus, 1].max, 999999].min
    for i in @states
      if $data_states.hold_turn == 9999 #内功、身法、特技
        if self.is_a?(Game_Actor)
       y = self.skill.level
        n *= (y*($data_states.maxsp_rate - 100.0)/10)+1
        else # 敌人
       n *= $data_states.maxsp_rate / 100.0 #敌人
        end
      else
        n *= $data_states.maxsp_rate / 100.0
      end #内功、身法、特技
      case i
      when 905
       @str_ot = 999999
      end
    end
    n = [[Integer(n), 1].max, 999999].min
    return n
  end


回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2016-1-28
帖子
17
3
 楼主| 发表于 2016-1-28 14:52:36 | 只看该作者

请教,改了上限,但是战斗和学习新技能后就又便回去了


   小弟最近玩了一款武侠rpg游戏,没有升级一说,但是可以通过学习新技能(武学),新技能会永久增加属性。或者服用一些东西(天材地宝)也会永久增加,但是都有上限。

我尝试用rpgmaker xp修改,

可是不管我怎么改,生命上限和MP上限只有19999,就算暂时能够加到九十多万,可是一旦学习了新的技能或者战斗一场后,就有跌回了19999了

最后我瞎猫碰上死耗子,把min改成了max,这回到是成功了,但是刚新建出来的人物就是满属性!!!我希望能够一点一点的增加

求前辈门指点下,怎么改脚本呢?和升级的不同,是通过学习技能和服用一些物品增加六维上限的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2016-1-28
帖子
17
4
 楼主| 发表于 2016-1-28 14:53:54 | 只看该作者

■ Game_Battler (分割定义 1)
#------------------------------------------------------------------------------
#  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
# 超级类来使用。
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :battler_name             # 战斗者 文件名
  attr_reader   :battler_hue              # 战斗者 色相
  attr_reader   :hp                       # HP
  attr_reader   :sp                       # SP
  attr_reader   :states                   # 状态
  attr_accessor :hidden                   # 隐藏标志
  attr_accessor :immortal                 # 不死身标志
  attr_accessor :damage_pop               # 显示伤害标志
  attr_accessor :damage                   # 伤害值
  attr_accessor :critical                 # 会心一击标志
  attr_accessor :animation_id             # 动画 ID
  attr_accessor :animation_hit            # 动画 击中标志
  attr_accessor :white_flash              # 白色屏幕闪烁标志
  attr_accessor :blink                    # 闪烁标志
  attr_accessor :last_action              # 上回合动作
  attr_accessor :skill_s                  # 特技快捷键
  attr_accessor :item_s                   # 物品快捷键
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #--------------------------------------------------------------------------
  def initialize
    @battler_name = ""
    @battler_hue = 0
    @hp = 0
    @sp = 0
    @states = []
    @states_turn = {}
    @maxhp_plus =
    @maxsp_plus =
    @str_plus =
    @dex_plus =
    @agi_plus =
    @int_plus =
    #=======破限参数设定======
    @str_ot = 9999
    @dex_ot = 9999
    @agi_ot = 9999
    @int_ot = 9999
    #=========================
    @Hidden = false
    @immortal = false
    @damage_pop = false
    @damage = nil
    @critical = false
    @animation_id = 0
    @animation_hit = false
    @white_flash = false
    @blink = false
    @current_action = Game_BattleAction.new
    @last_action = Game_BattleAction.new #玄:重复融合
     @skill_s = []
     for i in 0..9
      @skill_s = ""
      end
     @item_s = []
    for i in 0..9
     @item_s = ""
    end
  end


#--------------------------------------------------------------------------
  # ● 玄:获取上回合动作
  #--------------------------------------------------------------------------
  def last_action
   return @last_action
  end
  #--------------------------------------------------------------------------
  # ● 获取 MaxHP
  #--------------------------------------------------------------------------
  def maxhp
    n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min
    for i in @states
      if $data_states.hold_turn == 9999 #内功、身法、特技
        if self.is_a?(Game_Actor)
       y = self.skill.level
       n *= (y*($data_states.maxhp_rate - 100.0)/10)+1
        else # 敌人
        n *= $data_states.maxhp_rate / 100.0 #敌人
        end
      else
        n *= $data_states.maxhp_rate / 100.0
      end #内功、身法、特技
      case i
      when 905
       @str_ot = 999999
      end   
    end
    n = [[Integer(n), 1].max, 999999].min
    return n
  end
  #--------------------------------------------------------------------------
  # ● 获取 MaxSP
  #--------------------------------------------------------------------------
  def maxsp
    n = [[base_maxsp + @maxsp_plus, 1].max, 999999].min
    for i in @states
      if $data_states.hold_turn == 9999 #内功、身法、特技
        if self.is_a?(Game_Actor)
       y = self.skill.level
        n *= (y*($data_states.maxsp_rate - 100.0)/10)+1
        else # 敌人
       n *= $data_states.maxsp_rate / 100.0 #敌人
        end
      else
        n *= $data_states.maxsp_rate / 100.0
      end #内功、身法、特技
      case i
      when 905
       @str_ot = 999999
      end
    end
    n = [[Integer(n), 1].max, 999999].min
    return n
  end

点评

Game_Battler1  发表于 2016-1-28 14:56
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2016-1-28
帖子
17
5
 楼主| 发表于 2016-1-28 14:54:57 | 只看该作者
=begin
#==============================================================================
# ■ Game_Actor
#------------------------------------------------------------------------------
#  处理角色的类。本类在 Game_Actors 类 ($game_actors)
# 的内部使用、Game_Party 类请参考 ($game_party) 。
#==============================================================================
玄色眷恋修改:2013.3.13 融合技能熟练度脚本,实现被动技能按LV等级增益

注意 被动技能的ID必须等于状态ID 否则会出错
=end
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :name                     # 名称
  attr_reader   :character_name           # 角色 文件名
  attr_reader   :character_hue            # 角色 色相
  attr_reader   :class_id                 # 职业 ID
  attr_reader   :weapon_id                # 武器 ID
  attr_reader   :armor1_id                # 盾 ID
  attr_reader   :armor2_id                # 头防具 ID
  attr_reader   :armor3_id                # 身体体防具 ID
  attr_reader   :armor4_id                # 装饰品 ID
  attr_reader   :level                    # 等级
  attr_reader   :exp                      # EXP
  attr_reader   :skills                   # 特技
  attr_accessor :skill_s                  # 特技快捷键
  attr_accessor :item_s                   # 物品快捷键
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     actor_id : 角色 ID
  #--------------------------------------------------------------------------
  def initialize(actor_id)
    super()
    setup(actor_id)
  end
  #--------------------------------------------------------------------------
  # ● 设置
  #     actor_id : 角色 ID
  #--------------------------------------------------------------------------
  def setup(actor_id)
    actor = $data_actors[actor_id]
    @actor_id = actor_id
    @name = actor.name
    @character_name = actor.character_name
    @character_hue = actor.character_hue
    @battler_name = actor.battler_name
    @battler_hue = actor.battler_hue
    @class_id = actor.class_id
    @weapon_id = actor.weapon_id
    @armor1_id = actor.armor1_id
    @armor2_id = actor.armor2_id
    @armor3_id = actor.armor3_id
    @armor4_id = actor.armor4_id
    @level = actor.initial_level
    @exp_list = Array.new(101)
    make_exp_list
    @exp = @exp_list[@level]
    @skills = []
    @hp = maxhp
    @sp = maxsp
    @states = []
    @states_turn = {}
    @maxhp_plus =
    @maxsp_plus =
    @str_plus = 999
    @dex_plus = 999
    @agi_plus = 999
    @int_plus = 999
     @skill_s = []
     #=======破限参数设定======
    @str_ot = 99999
    @dex_ot = 99999
    @agi_ot = 99999
    @int_ot = 99999   
    #=========================
     for i in 0..9
      @skill_s[i] = ""
      end
     @item_s = []
    for i in 0..9
     @item_s[i] = ""
    end
    # 学会特技
    for i in 1..@level
      for j in $data_classes[@class_id].learnings
        if j.level == i
          learn_skill(j.skill_id)
        end
      end
    end
    # 刷新自动状态
    update_auto_state(nil, $data_armors[@armor1_id])
    update_auto_state(nil, $data_armors[@armor2_id])
    update_auto_state(nil, $data_armors[@armor3_id])
    update_auto_state(nil, $data_armors[@armor4_id])
  end
#--------------------------------------------------------------------------
  # ● 获取 MaxHP
  #--------------------------------------------------------------------------
  def maxhp
    if self.id == 1
    n = [[base_maxhp+cx_plus(1)+ @maxhp_plus, 1].max, 999999].max
    else
     n = [[base_maxhp+@maxhp_plus, 1].max, 999999].min
    end
    for i in @states  #BUFF用 增加值=mdef_rate-100/技能LV
       if skill_learn?(i) and $data_states[i].hold_turn == 9999
       y = self.skill[i].level
       n *= (y*($data_states[i].maxhp_rate - 100.0)/1000.0)+1
       # y /= 10
       #n *= (y+100.0)/ 100.0
       else #debuff
       n *= $data_states[i].maxhp_rate/100.0
       end
    end
    n = [[Integer(n), 1].max, 999999].min
    return n
  end

  #--------------------------------------------------------------------------
  # ● 获取 MaxSP
  #--------------------------------------------------------------------------
  def maxsp
   if self.id == 1
    n = [[base_maxsp+cx_plus(2)+ @maxsp_plus, 1].max, 999999].max
   else
    n = [[base_maxsp + @maxsp_plus, 1].max, 999999].min
   end
     for i in @states  #BUFF用 增加值=mdef_rate-100/技能LV
       if skill_learn?(i) and $data_states[i].hold_turn == 9999
       y = self.skill[i].level
       n *= (y*($data_states[i].maxsp_rate - 100.0)/1000.0)+1
       # y /= 10
       #n *= (y+100.0)/ 100.0
       else #debuff
       n *= $data_states[i].maxsp_rate/100.0
       end
    end
    n = [[Integer(n), 1].max, 999999].min
    return n
  end

点评

Game_Actor  发表于 2016-1-28 14:57
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2016-1-28
帖子
17
6
 楼主| 发表于 2016-1-28 18:12:49 | 只看该作者
@myownroc
没人解答啊,管理员您帮忙看看?就该hp和mp上限就行了,不知道作者怎么设定的,就是突破不了19999,一旦学习新技能或者战斗后就又成19999了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2744
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

7
发表于 2016-1-28 19:11:03 | 只看该作者
chaorenzhiwang 发表于 2016-1-28 18:12
@myownroc
没人解答啊,管理员您帮忙看看?就该hp和mp上限就行了,不知道作者怎么设定的,就是突破不了199 ...

从代码上看,最大值应该为999999,。不过你没有给出完整的脚本,不敢确定是否因为其他脚本导致最大值变为19999
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2016-1-28
帖子
17
8
 楼主| 发表于 2016-1-29 12:47:10 | 只看该作者
myownroc 发表于 2016-1-28 19:11
从代码上看,最大值应该为999999,。不过你没有给出完整的脚本,不敢确定是否因为其他脚本导致最大值变为1 ...

还是没找到,不过俺实验出来了,弄个乘法就行了,19999乘以5就差不多是十万的生命了
不过解决得不是很完美,生命值提升的速度也是以前的五倍
不知道作者怎么搞的,难道他写在了不是设定脚色属性的脚本里?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2016-1-28
帖子
17
9
 楼主| 发表于 2016-1-29 12:54:01 | 只看该作者
myownroc 发表于 2016-1-28 19:11
从代码上看,最大值应该为999999,。不过你没有给出完整的脚本,不敢确定是否因为其他脚本导致最大值变为1 ...

或者把n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min
改成   n = [[base_maxhp + @maxhp_plus, 1].max, 999999].max
但是人物刚一新建就是999999的生命,都不是很完美
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-22 17:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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