Project1

标题: 还是凌冰的打坐系统问题:对非打坐特技升级的影响 [打印本页]

作者: 幻耶    时间: 2008-7-14 21:13
标题: 还是凌冰的打坐系统问题:对非打坐特技升级的影响
比如在脚本里设置:$打坐最高等级 = 3,然后通过 $LEVEL_LIMIT 来用变量指定62号特技的最高等级(62号特技不是通过打坐升级的特技)。结果在战斗升级中发现62号特技会超出自己的最高等级






打坐脚本地址:
http://rpg.blue/viewthread.php?tid=81337&ntime=2008%2D7%2D14+13%3A19%3A11 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 凌冰    时间: 2008-7-14 21:29
不是打坐技能的话
就不能那样设置了
就按照默认的升级方式那样设置{/gg}
作者: 幻耶    时间: 2008-7-14 21:37
以下引用凌冰于2008-7-14 13:29:10的发言:

不是打坐技能的话
就不能那样设置了
就按照默认的升级方式那样设置




那样的话,非打坐特技的最高等级只能都设置成一样的了?

因为即使在熟练度脚本里把非打坐特技最高等级的界限水平设成不同的话,都会被下面的打坐系统脚本覆盖成一样的了??
作者: 凌冰    时间: 2008-7-14 22:13
= =
我居然把这个忽略了
把if skill.kind != 1下面那句limit = LEVEL_LIMIT 覆盖成
s_limit = S_LEVEL[skill.id]
    limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)

作者: 幻耶    时间: 2008-7-14 22:34
没有用啊,比如30号非打坐特技最高等级的界限水平设成12级,而 $打坐最高等级 = 3 的话,结果游戏中30号特技的最高等级还是3级啊
  
特技熟练度升级脚本中:
S_LEVEL[30] = {1=>12, 2=>18, 3=>15, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}

打坐系统v1.03脚本中:
$打坐最高等级 = 3
作者: 凌冰    时间: 2008-7-14 22:46
我脑残了
刚刚要改的只是显示部分

而升级部分似乎没有问题
作者: 幻耶    时间: 2008-7-14 22:55
显示上还有一个问题:就是特技窗口和选择打坐窗口中的等级上限显示不一样!





作者: 幻耶    时间: 2008-7-14 23:04
以下引用凌冰于2008-7-14 14:13:55的发言:

= =
我居然把这个忽略了
把if skill.kind != 1下面那句limit = LEVEL_LIMIT 覆盖成
s_limit = S_LEVEL[skill.id]
   limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)





改成这样显示上还是会超出最大界限啊

作者: 凌冰    时间: 2008-7-14 23:39
  1. class Window_Skill < Window_Selectable
  2.   include Skill_updata
  3.   #----------------------------------------------------------------
  4.   # ● 項目の描画
  5.   #     index : 項目番号
  6.   #-----------------------------------------------------------------
  7.   def draw_item(index)
  8.     skill = @data[index]
  9.     if @actor.skill_can_use?(skill.id)
  10.       self.contents.font.color = normal_color
  11.     else
  12.       self.contents.font.color = disabled_color
  13.     end
  14.     x = 4 + index % 2 * (288 + 32)
  15.     y = index / 2 * 32
  16.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  17.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  18.     bitmap = RPG::Cache.icon(skill.icon_name)
  19.     opacity = self.contents.font.color == normal_color ? 255 : 128
  20.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  21. #-修正-----
  22.     @actor.skill_level[skill.id] = 0 if @actor.skill_level[skill.id] == nil
  23.     limit = $打坐最高等级
  24.     level_limit = $LEVEL_LIMIT[skill.id]
  25.     if level_limit != nil
  26.       for i in 0...level_limit.size
  27.         lv_limit = level_limit[i]
  28.         if @actor.id == lv_limit[0]
  29.           limit = $game_variables[lv_limit[1]]
  30.           limit = $打坐最高等级 if limit > $打坐最高等级
  31.         end
  32.       end
  33.     end
  34.     if skill.kind != 1
  35.       s_limit = S_LEVEL[skill.id]
  36.    limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)

  37.     end
  38.     name_level = skill.name + "(Lv" + @actor.skill_level[skill.id].to_s+"/" +limit.to_s+ ")"
  39.     self.contents.draw_text(x + 28, y, 204, 32, name_level, 0)
  40.     @actor.skill_sp_cost[skill.id] = skill.sp_cost if @actor.skill_sp_cost[skill.id] == nil
  41.     self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_sp_cost[skill.id].to_s, 2)
  42. #----------
  43.   end
  44. end
复制代码

作者: 幻耶    时间: 2008-7-14 23:53
是覆盖 #绘制选择技能窗口 下面那一段么?
第一句好像是 class Window_Skill_Eci < Window_Selectable 吧?

覆盖之后在进入选择打坐的技能窗口时出错了





611行是:@skill_window = Window_Skill_Eci.new(@actor)
作者: 凌冰    时间: 2008-7-15 01:32
不是那个
是特技升级脚本里的Window_Skill
作者: 幻耶    时间: 2008-7-15 18:36
以下引用凌冰于2008-7-14 15:39:47的发言:

  1. class Window_Skill < Window_Selectable
  2.   include Skill_updata
  3.   #----------------------------------------------------------------
  4.   # ● 項目の描画
  5.   #     index : 項目番号
  6.   #-----------------------------------------------------------------
  7.   def draw_item(index)
  8.     skill = @data[index]
  9.     if @actor.skill_can_use?(skill.id)
  10.       self.contents.font.color = normal_color
  11.     else
  12.       self.contents.font.color = disabled_color
  13.     end
  14.     x = 4 + index % 2 * (288 + 32)
  15.     y = index / 2 * 32
  16.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  17.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  18.     bitmap = RPG::Cache.icon(skill.icon_name)
  19.     opacity = self.contents.font.color == normal_color ? 255 : 128
  20.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  21. #-修正-----
  22.     @actor.skill_level[skill.id] = 0 if @actor.skill_level[skill.id] == nil
  23.     limit = $打坐最高等级
  24.     level_limit = $LEVEL_LIMIT[skill.id]
  25.     if level_limit != nil
  26.       for i in 0...level_limit.size
  27.         lv_limit = level_limit[i]
  28.         if @actor.id == lv_limit[0]
  29.           limit = $game_variables[lv_limit[1]]
  30.           limit = $打坐最高等级 if limit > $打坐最高等级
  31.         end
  32.       end
  33.     end
  34.     if skill.kind != 1
  35.       s_limit = S_LEVEL[skill.id]
  36.    limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)

  37.     end
  38.     name_level = skill.name + "(Lv" + @actor.skill_level[skill.id].to_s+"/" +limit.to_s+ ")"
  39.     self.contents.draw_text(x + 28, y, 204, 32, name_level, 0)
  40.     @actor.skill_sp_cost[skill.id] = skill.sp_cost if @actor.skill_sp_cost[skill.id] == nil
  41.     self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_sp_cost[skill.id].to_s, 2)
  42. #----------
  43.   end
  44. end
复制代码






只改特技升级脚本么?改了以后在查看特技的时候就出错了


作者: 凌冰    时间: 2008-7-15 19:28
啊~~~~~~~~~~~~~不好意思
这一行
limit = ( (limit != nil and limit[actor.id] != nil) ? limit[actor.id] : LEVEL_LIMIT)

把两个actor都改成@actor
作者: 幻耶    时间: 2008-7-15 20:01
只是在这个地方改成 @actor 么??打坐系统里的 limit = LEVEL_LIMIT 是不是也要改成下面彩色的部分?


    limit = $打坐最高等级
    level_limit = $LEVEL_LIMIT[skill.id]
    if level_limit != nil
      for i in 0...level_limit.size
        lv_limit = level_limit
        if @actor.id == lv_limit[0]
          limit = $game_variables[lv_limit[1]]
          limit = $打坐最高等级 if limit > $打坐最高等级
        end
      end
    end
    if skill.kind != 1
     s_limit = S_LEVEL[skill.id]
      limit = ( (limit != nil and limit[@actor.id] != nil) ? limit[@actor.id] : LEVEL_LIMIT)

    end
    name_level = skill.name + "(Lv" + @actor.skill_level[skill.id].to_s+"/" +limit.to_s+ ")"
    self.contents.draw_text(x + 28, y, 204, 32, name_level, 0)
    @actor.skill_sp_cost[skill.id] = skill.sp_cost if @actor.skill_sp_cost[skill.id] == nil
    self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_sp_cost[skill.id].to_s, 2)
#----------
  end
end
作者: 凌冰    时间: 2008-7-15 20:15
理论上要的
作者: 幻耶    时间: 2008-7-15 20:15
可是这样的话,所有非打坐特技的上限显示都变成0了


作者: 凌冰    时间: 2008-7-15 20:20
打坐脚本对应部分,有一段
if skill.kind == 1什么的
把那一段复制过来
作者: 幻耶    时间: 2008-7-15 20:27
是下面这一段添加到特技熟练度升级里?


    if skill.kind == 1
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    @actor.skill_level[skill.id] = 0 if @actor.skill_level[skill.id] == nil
作者: 幻耶    时间: 2008-7-15 20:41
添加成下面这样,结果特技的文字都没了



  def draw_item(index)
    skill = @data[index]
    if @actor.skill_can_use?(skill.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
#-修正-----
    @actor.skill_level[skill.id] = 0 if @actor.skill_level[skill.id] == nil
   
   
#######################################################  
    if skill.kind == 1
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4
    y = index * 32
    rect = Rect.new(x, y, self.width - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    @actor.skill_level[skill.id] = 0 if @actor.skill_level[skill.id] == nil

########################################################


    limit = $打坐最高等级
    level_limit = $LEVEL_LIMIT[skill.id]
    if level_limit != nil
      for i in 0...level_limit.size
        lv_limit = level_limit
        if @actor.id == lv_limit[0]
          limit = $game_variables[lv_limit[1]]
          limit = $打坐最高等级 if limit > $打坐最高等级
        end
      end
    end
    if skill.kind != 1      
     s_limit = S_LEVEL[skill.id]
     limit = ( (limit != nil and limit[@actor.id] != nil) ? limit[@actor.id] : LEVEL_LIMIT)
    end
    name_level = skill.name + "(Lv" + @actor.skill_level[skill.id].to_s+"/" +limit.to_s+ ")"
    self.contents.draw_text(x + 28, y, 204, 32, name_level, 0)
    @actor.skill_sp_cost[skill.id] = skill.sp_cost if @actor.skill_sp_cost[skill.id] == nil
    self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_sp_cost[skill.id].to_s, 2)
#----------
  end
end





作者: 幻耶    时间: 2008-7-15 22:05
以下引用凌冰于2008-7-15 12:20:45的发言:

打坐脚本对应部分,有一段
if skill.kind == 1什么的
把那一段复制过来


[本贴由作者于 2008-7-15 12:20:57 最后编辑]



晕啊!究竟该怎么复制啊?{/dk}{/dk}{/ll}怎么越改越乱了
作者: 凌冰    时间: 2008-7-15 22:05
囧啊
我又脑残了

把紫色那一段去掉吧

然后描绘方面就应该没错了
作者: 幻耶    时间: 2008-7-15 22:12
去掉的话,非打坐升级的特技等级上限就全都显示为0了,又回到了这样:设置的上限是3,但显示上是0。升级到了顶就显示Lv3/0,能不能显示为Lv3/3?



作者: 凌冰    时间: 2008-7-16 00:30
把这段
if skill.kind != 1      
    s_limit = S_LEVEL[skill.id]
    limit = ( (limit != nil and limit[@actor.id] != nil) ? limit[@actor.id] : LEVEL_LIMIT)
   end
改成
if skill.kind != 1      
    s_limit = S_LEVEL[skill.id]
    limit = ( (s_limit != nil and s_limit[@actor.id] != nil) ? s_limit[@actor.id] : LEVEL_LIMIT)
   end [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1