最近面粉一直在研究改进Scaur of The Dragons的一些系统。 这里就班门弄斧一下,分享一下最近的一些心得,如果有知道的就请无视了。。。
可能很多人对原先默认的装备画面不是很满意,面粉觉得不满意主要有: 1、只能显示三项属性的变化:ATK,DEF,MDEF 2、显示的数字颜色都一样,让人打眼一看较难看出有什么变化。
好吧,不满意的地方我们知道了。下面就着手解决 只能显示三种属性的根本原因就在于 Window_EquipLeft、Scene_Equip(或者自动装备脚本)这两个脚本他……只定义了三个变量…… 那么,解决的方法就是……为他们添加我们需要的变量 找到Scene_Equip的110行,然后加入以下内容 new_str = @actor.str new_dex = @actor.dex new_agi = @actor.agi new_int = @actor.int 如果有自动装备脚本,请在134行之后加入上面内容。 再找到Window_EquipLeft,将其全部替换成如下内容
class Window_EquipLeft < Window_Base #-------------------------------------------------------------------------- # ● 初始化对像 # actor : 角色 #-------------------------------------------------------------------------- def initialize(actor) super(0, 64, 272, 320) self.contents = Bitmap.new(width - 32, height - 32) @actor = actor refresh end #-------------------------------------------------------------------------- # ● 刷新 #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_name(@actor, 4, 0) draw_actor_level(@actor, 4, 32) draw_actor_parameter(@actor, 4, 64, 0) draw_actor_parameter(@actor, 4, 96, 1) draw_actor_parameter(@actor, 4, 128, 2) draw_actor_parameter(@actor, 4, 160, 3) draw_actor_parameter(@actor, 4, 192, 4) draw_actor_parameter(@actor, 4, 224, 5) draw_actor_parameter(@actor, 4, 256, 6) if @new_atk != nil self.contents.font.color = system_color self.contents.draw_text(160, 64, 40, 32, "→", 1) # 为文字颜色加入条件判断,这里偶默认的是增加为绿色text_color(3),减少为红色text_color(2) if @new_atk > @actor.atk self.contents.font.color = text_color(3) else if @new_atk < @actor.atk self.contents.font.color = text_color(2) else self.contents.font.color = normal_color end end self.contents.draw_text(200, 64, 36, 32, @new_atk.to_s, 2) end if @new_pdef != nil self.contents.font.color = system_color self.contents.draw_text(160, 96, 40, 32, "→", 1) if @new_pdef > @actor.pdef self.contents.font.color = text_color(3) else if @new_pdef < @actor.pdef self.contents.font.color = text_color(2) else self.contents.font.color = normal_color end end self.contents.draw_text(200, 96, 36, 32, @new_pdef.to_s, 2) end if @new_mdef != nil self.contents.font.color = system_color self.contents.draw_text(160, 128, 40, 32, "→", 1) if @new_mdef > @actor.mdef self.contents.font.color = text_color(3) else if @new_mdef < @actor.mdef self.contents.font.color = text_color(2) else self.contents.font.color = normal_color end end self.contents.draw_text(200, 128, 36, 32, @new_mdef.to_s, 2) end if @new_str != nil self.contents.font.color = system_color self.contents.draw_text(160, 160, 40, 32, "→", 1) if @new_str > @actor.str self.contents.font.color = text_color(3) else if @new_str < @actor.str self.contents.font.color = text_color(2) else self.contents.font.color = normal_color end end self.contents.draw_text(200, 160, 36, 32, @new_str.to_s, 2) end if @new_dex!= nil self.contents.font.color = system_color self.contents.draw_text(160, 192, 40, 32, "→", 1) if @new_dex > @actor.dex self.contents.font.color = text_color(3) else if @new_dex < @actor.dex self.contents.font.color = text_color(2) else self.contents.font.color = normal_color end end self.contents.draw_text(200, 192, 36, 32, @new_dex.to_s, 2) end if @new_agi != nil self.contents.font.color = system_color self.contents.draw_text(160, 224, 40, 32, "→", 1) if @new_agi > @actor.agi self.contents.font.color = text_color(3) else if @new_agi < @actor.agi self.contents.font.color = text_color(2) else self.contents.font.color = normal_color end end self.contents.draw_text(200, 224, 36, 32, @new_agi.to_s, 2) end if @new_int != nil self.contents.font.color = system_color self.contents.draw_text(160, 256, 40, 32, "→", 1) if @new_int > @actor.int self.contents.font.color = text_color(3) else if @new_int < @actor.int self.contents.font.color = text_color(2) else self.contents.font.color = normal_color end end self.contents.draw_text(200, 256, 36, 32, @new_int.to_s, 2) end end #-------------------------------------------------------------------------- # ● 变更装备后的能力值设置 # new_atk : 变更装备后的攻击力 # new_pdef : 变更装备后的物理防御 # new_mdef : 变更装备后的魔法防御 #-------------------------------------------------------------------------- def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, new_agi, new_int) if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef or @new_str != new_str or @new_dex != new_dex or @new_agi != new_agi or @new_int != new_int @new_atk = new_atk @new_pdef = new_pdef @new_mdef = new_mdef # 为其他属性追加参数传回 @new_str = new_str @new_dex = new_dex @new_agi = new_agi @new_int = new_int refresh end end end
经过以上修改、保存之后,进入装备画面可以发现, 1、可以显示装备者的Str,Dex,Agi,Int以及相应变化,变化数字有了颜色。 2、发现窗口有重叠
下面我们就要着手解决新发现的问题。 稍微研究一下,就不难发现出现窗口重叠的原因。 在Window_EquipLeft中,我们重新定义了窗口的大小,但是装备物品栏的窗口大小以及相应的一些参数并没有修改。 Scene_Equip会调用三个窗口:Window_EquipLeft、Window_EquipRight、Window_EquipItem。看一下名称就应该会发现,其分别定义的是装备画面的左边窗口,右边窗口,以及可装备物品窗口。 下面我们就要着手修改Window_EquipItem,以使其符合我们的要求。 首先找到Window_EquipItem的第14行,将其替换为 super(272, 256, 368, 224) 这就重新定义了窗口大小,但是该窗口所能显示的列数以及图标显示位置还没有修改。 所以,找到第17行,将其改为 @column_max = 1 然后是72、73行,将其替换为 x = 4 y = index * 32
到此,此次修改就算基本结束。 可能大家会觉得修改后的装备画面左下角的一片空白有些浪费……, 面粉偶认为大家可以自己发挥创造力,为这里添加上价格、时间之类的新窗口,也可以修改Window_EquipLeft,使其显示更多属性。这里就不赘述了。 |