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

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

小谈装备窗口的美化

2006-4-7 00:00| 发布者: 柳柳| 查看: 10024| 评论: 0|原作者: 66RPG

摘要:   作者 面粉 版本与更新  2006年2月 相关网址 点此进入发布贴 范例工程   教程内容 最近面粉一直在研究改进Scaur of The Dragons的一些系统。这里就班门弄斧一下,分享一
 

作者

面粉

版本与更新

 2006年2月

相关网址

点此进入发布贴

范例工程

 



教程内容

最近面粉一直在研究改进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,使其显示更多属性。这里就不赘述了。


 

教程的通用说明

本站发布的教程,大多经过一些测试,应该都能够实现相应功能。但不保证所有的教程都是最优化的制作方法。

相关问题,点击发布贴进行讨论。谢谢您的鼓励与支持。


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

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

GMT+8, 2024-4-23 14:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部