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

Project1

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

[已经解决] 请问新加进类似HP属性后为何“状态”界面会变成这样?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
128 小时
注册时间
2011-7-13
帖子
32
跳转到指定楼层
1
 楼主| 发表于 2013-2-26 20:44:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我照着这个教程http://rpg.blue/forum.php?mod=viewthread&tid=158339一步一步加了一个类似HP、MP的属性SP,也注意了将其中属于XP的脚本改成VX的,可是一测试发现状态界面变成了这样,如图所示:

MP的条变成了那样,SP的条也不对,不知道哪里出了问题,都改了很久了还是这样,但战斗一次后就恢复正常了,想请教各位前辈如何一开始就是正常的,谢谢了~

评分

参与人数 1星屑 +25 收起 理由
怪蜀黍 + 25 手动认可答案可以给予额外奖励.

查看全部评分

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4699
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

来自 2楼
发表于 2013-2-26 22:43:14 | 只看该作者
“全恢复”那里第7行
  1. @mp = maxsp  #SP
复制代码
你自己写错了。

点评

啊,原来是这个地方啊,找了半天终于改好了,太感谢啦!!!  发表于 2013-2-26 22:47

评分

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

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4699
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

3
发表于 2013-2-26 21:45:38 | 只看该作者
100/70,当然是这样。超过上限了。
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
128 小时
注册时间
2011-7-13
帖子
32
4
 楼主| 发表于 2013-2-26 21:48:34 | 只看该作者
protosssonny 发表于 2013-2-26 21:45
100/70,当然是这样。超过上限了。

可是为何会超过上限呢?没有新加SP这个属性的时候MP就是70/70正常的啊,可是一加新属性SP就变成这样了,我查了好几遍脚本都不知道哪儿出了问题。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
75
在线时间
435 小时
注册时间
2012-7-31
帖子
796
5
发表于 2013-2-26 21:49:47 | 只看该作者
脚本发上来看看啊~

点评

小原,抓了。可是在VX区是公款,不便评分。在其他区给P叔抓一下吧!  发表于 2013-2-26 22:38
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
128 小时
注册时间
2011-7-13
帖子
32
6
 楼主| 发表于 2013-2-26 22:01:49 | 只看该作者
这是我修改的Game_Battler脚本
  1.   #--------------------------------------------------------------------------
  2.   # ● 定义实例变量
  3.   #--------------------------------------------------------------------------
  4.   attr_reader   :battler_name             # 战斗图文件名称
  5.   attr_reader   :battler_hue              # 战斗图色调
  6.   attr_reader   :hp                       # 体力值
  7.   attr_reader   :mp                       # 魔力值
  8.   attr_reader   :sp                       # SP值
  9.   attr_reader   :action                   # 战斗行动
  10.   attr_accessor :hidden                   # 隐藏标志
  11.   attr_accessor :immortal                 # 不死身标志
  12.   attr_accessor :animation_id             # 动画 ID
  13.   attr_accessor :animation_mirror         # 动画纵向翻转标志
  14.   attr_accessor :white_flash              # 白色屏幕闪烁标志
  15.   attr_accessor :blink                    # 闪烁标志
  16.   attr_accessor :collapse                 # 倒下标志
  17.   attr_reader   :skipped                  # 行动结果:跳过标志
  18.   attr_reader   :missed                   # 行动结果:落空标志
  19.   attr_reader   :evaded                   # 行动结果:闪躲标志
  20.   attr_reader   :critical                 # 行动结果:会心一击标志
  21.   attr_reader   :absorbed                 # 行动结果:吸收标志
  22.   attr_reader   :hp_damage                # 行动结果:体力伤害标志
  23.   attr_reader   :mp_damage                # 行动结果:魔力伤害标志
  24.   #--------------------------------------------------------------------------
  25.   # ● 初始化对像
  26.   #--------------------------------------------------------------------------
  27.   def initialize
  28.     @battler_name = ""
  29.     @battler_hue = 0
  30.     @hp = 0
  31.     @mp = 0
  32.     @sp = 0  # SP
  33.     @action = Game_BattleAction.new(self)
  34.     @states = []                    # 状态(ID数组)
  35.     @state_turns = {}               # 状态剩馀回合(哈希表)
  36.     [url=home.php?mod=space&uid=292300]@Hidden[/url] = false   
  37.     @immortal = false
  38.     clear_extra_values
  39.     clear_sprite_effects
  40.     clear_action_results
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● 清除能力值变量
  44.   #--------------------------------------------------------------------------
  45.   def clear_extra_values
  46.     @maxhp_plus = 0
  47.     @maxmp_plus = 0
  48.     @maxsp_plus = 0  # SP
  49.     @atk_plus = 0
  50.     @def_plus = 0
  51.     @spi_plus = 0
  52.     @agi_plus = 0
  53.   end
复制代码
  1. #--------------------------------------------------------------------------
  2.   # ● 获取 MaxSP
  3.   #--------------------------------------------------------------------------
  4.   def maxsp
  5.     return [[base_maxsp + @maxsp_plus, 1].max, 9999].min
  6.   end
复制代码
  1. #--------------------------------------------------------------------------
  2.   # ● 设置 MaxSP
  3.   #     new_maxsp : 新的 MaxSP
  4.   #--------------------------------------------------------------------------
  5.   def maxsp=(new_maxsp)
  6.     @maxsp_plus += new_maxsp - self.maxsp
  7.     @maxsp_plus = [[@maxsp_plus, -9999].max, 9999].min
  8.     @sp = [@sp, self.maxsp].min
  9.   end
复制代码
  1. #--------------------------------------------------------------------------
  2.   # ● 更改 SP
  3.   #     mp : 新的 SP
  4.   #--------------------------------------------------------------------------
  5.   def sp=(sp)
  6.     @sp = [[sp, maxsp].min, 0].max
  7.     if @sp <= 10 and not state?(1) and not @immortal
  8.       add_state(1)                # 附加「无法战斗」状态(1号状态)
  9.       @added_states.push(1)
  10.     elsif @sp > 10 and state?(1)
  11.       remove_state(1)             # 移除「无法战斗」状态(1号状态)
  12.       @removed_states.push(1)
  13.     end
  14.   end
复制代码
  1. #--------------------------------------------------------------------------
  2.   # ● 全回复
  3.   #--------------------------------------------------------------------------
  4.   def recover_all
  5.     @hp = maxhp
  6.     @mp = maxmp
  7.     @mp = maxsp  #SP
  8.     for i in @states.clone do remove_state(i) end
  9.   end
复制代码
然后是Game_Actor
  1. #--------------------------------------------------------------------------
  2.   # ● 获取基本SP最大值
  3.   #--------------------------------------------------------------------------
  4.   def base_maxsp
  5.     return [url=home.php?mod=space&uid=22147]@level[/url] * 5 + 95
  6.   end
复制代码
  1. #--------------------------------------------------------------------------
  2.   # ● 变更经验
  3.   #     exp  : 新经验
  4.   #     show : 显示等级提示标志
  5.   #--------------------------------------------------------------------------
  6.   def change_exp(exp, show)
  7.     last_level = @level
  8.     last_skills = skills
  9.     [url=home.php?mod=space&uid=13302]@exp[/url] = [[exp, 9999999].min, 0].max
  10.     while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
  11.       level_up
  12.     end
  13.     while @exp < @exp_list[@level]
  14.       level_down
  15.     end
  16.     @hp = [@hp, maxhp].min
  17.     @mp = [@mp, maxmp].min
  18.     @sp = [@sp, maxsp].min  #SP
  19.     if show and @level > last_level
  20.       display_level_up(skills - last_skills)
  21.     end
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 升级
  25.   #--------------------------------------------------------------------------
  26.   def level_up
  27.     @level += 1
  28.     self.hp += maxhp
  29.     self.mp += maxmp
  30.     self.sp += maxsp  #SP
  31.     for learning in self.class.learnings
  32.       learn_skill(learning.skill_id) if learning.level == @level
  33.     end
  34.   end
复制代码
最后是Window_Base
  1. #--------------------------------------------------------------------------
  2.   # ● 获取SP值槽颜色1
  3.   #--------------------------------------------------------------------------
  4.   def sp_gauge_color1
  5.     return text_color(20)
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 获取SP值槽颜色2
  9.   #--------------------------------------------------------------------------
  10.   def sp_gauge_color2
  11.     return text_color(26)
  12.   end
复制代码
  1. #--------------------------------------------------------------------------
  2.   # ● 获取SP文字颜色
  3.   #     actor : 角色
  4.   #--------------------------------------------------------------------------
  5.   def sp_color(actor)
  6.     return knockout_color if actor.sp == 0
  7.     return crisis_color if actor.sp < actor.maxsp / 4
  8.     return normal_color
  9.   end
复制代码
  1. #--------------------------------------------------------------------------
  2.   # ● 绘制角色SP
  3.   #     actor : 角色
  4.   #     x     : 描画目标 X 坐标
  5.   #     y     : 描画目标 Y 坐标
  6.   #     width : 描画目标宽度
  7.   #--------------------------------------------------------------------------
  8.   def draw_actor_sp(actor, x, y, width = 160)
  9.     draw_actor_sp_gauge(actor, x, y, width)
  10.     self.contents.font.color = system_color
  11.     self.contents.draw_text(x, y, 30, WLH, "SP")
  12.     self.contents.font.color = hp_color(actor)
  13.     last_font_size = self.contents.font.size
  14.     xr = x + width
  15.     if width < 120
  16.       self.contents.draw_text(xr - 44, y, 44, WLH, actor.sp, 2)
  17.     else
  18.       self.contents.draw_text(xr - 99, y, 44, WLH, actor.sp, 2)
  19.       self.contents.font.color = normal_color
  20.       self.contents.draw_text(xr - 55, y, 11, WLH, "/", 2)
  21.       self.contents.draw_text(xr - 44, y, 44, WLH, actor.maxsp, 2)
  22.     end
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 绘制角色SP值槽
  26.   #     actor : 角色
  27.   #     x     : 描画目标 X 坐标
  28.   #     y     : 描画目标 Y 坐标
  29.   #     width : 描画目标宽度
  30.   #--------------------------------------------------------------------------
  31.   def draw_actor_sp_gauge(actor, x, y, width = 160)
  32.     gw = width * actor.sp / actor.maxsp
  33.     gc1 = sp_gauge_color1
  34.     gc2 = sp_gauge_color2
  35.     n1 = Color.new(0,56,37,255)
  36.     n2 = Color.new(0,159,37,255)
  37.     n3 = Color.new(226,214,180,255)
  38.     n4 = Color.new(0,0,0,255)
  39.     n5 = Color.new(107,85,78,255)
  40.     self.contents.fill_rect(x - 2, y + WLH - 10, width + 4, 10, n4)
  41.     self.contents.fill_rect(x - 1, y + WLH - 9, width + 2, 8, n3)
  42.     self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
  43.     self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, n1, n2)
  44.   end
复制代码
还有Window_Statue
  1. #--------------------------------------------------------------------------
  2.   # ● 绘制基础资料
  3.   #     x : 绘制点 X 座标
  4.   #     y : 绘制点 Y 座标
  5.   #--------------------------------------------------------------------------
  6.   def draw_basic_info(x, y)
  7.     draw_actor_level(@actor, x, y + WLH * 0 + 6)
  8.     draw_actor_state(@actor, x + 100 , y + WLH * 0 + 6)
  9.     draw_actor_hp(@actor, x, y + WLH * 1 + 12)
  10.     draw_actor_mp(@actor, x, y + WLH * 2 + 18)
  11.     draw_actor_exp(@actor,x, y + WLH * 3 + 24)
  12.     draw_actor_sp(@actor,x, y + WLH * 4 + 30)
  13.   end
复制代码
大概就修改添加了这些地方
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-23 03:08

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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