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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
打印 上一主题 下一主题

【3VIP悬赏】我又来要某东西了……

 关闭 [复制链接]

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3309
在线时间
3620 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

11
 楼主| 发表于 2008-5-18 19:54:51 | 只看该作者
我本来是希望透明的……

不过既然支持背景图片,那我拿张空的图片好了……{/hx}
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3309
在线时间
3620 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

12
 楼主| 发表于 2009-6-12 08:00:00 | 只看该作者
点装备会出现错误……||||

特技也会一进去就出错……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2006-5-21
帖子
773
13
发表于 2008-5-18 20:46:16 | 只看该作者
错误截图...我这边完全没问题
MadniMStudio|Beside
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3309
在线时间
3620 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

14
 楼主| 发表于 2008-5-18 20:49:34 | 只看该作者



第一个是装备的错误图,第二个是技能。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2006-5-21
帖子
773
15
发表于 2008-5-18 21:02:15 | 只看该作者
  1. #==============================================================================
  2. # ■ Scene_Menu
  3. #------------------------------------------------------------------------------
  4. #  处理菜单画面的类。
  5. #==============================================================================

  6. class Scene_Menu < Scene_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对象
  9.   #     menu_index : 指令光标初期位置
  10.   #--------------------------------------------------------------------------
  11.   def initialize(menu_index = 0)
  12.     @menu_index = menu_index
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 开始处理
  16.   #--------------------------------------------------------------------------
  17.   def start
  18.     super
  19.     create_menu_background
  20.     @sprite = Sprite.new
  21.     @sprite.bitmap = Cache.system("title")
  22.     create_command_window
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 结束处理
  26.   #--------------------------------------------------------------------------
  27.   def terminate
  28.     super
  29.     dispose_menu_background
  30.     @sprite.dispose
  31.     @command_window.dispose
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 更新画面
  35.   #--------------------------------------------------------------------------
  36.   def update
  37.     super
  38.     update_menu_background
  39.     @sprite.update
  40.     @command_window.update
  41.     update_command_selection
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 生成指令窗口
  45.   #--------------------------------------------------------------------------
  46.   def create_command_window
  47.     s1 = Vocab::status
  48.     s2 = Vocab::item
  49.     s3 = Vocab::equip
  50.     s4 = Vocab::skill
  51.     s5 = "读日记"
  52.     s6 = Vocab::save
  53.     s7 = Vocab::game_end
  54.     @command_window = Window_Command.new(460, [s1, s2, s3, s4, s5, s6, s7],7,1,7)
  55.     @command_window.x = 42
  56.     @command_window.y = 176
  57.     @command_window.index = @menu_index
  58.     if $game_party.members.size == 0          # 同伴人数为 0 的情况下
  59.       @command_window.draw_item(0, false)     # 物品无效化
  60.       @command_window.draw_item(1, false)     # 特技无效化
  61.       @command_window.draw_item(2, false)     # 装备无效化
  62.       @command_window.draw_item(3, false)     # 状态无效化
  63.     end
  64.     if $game_system.save_disabled             # 禁止存档的情况下
  65.       @command_window.draw_item(5, false)     # 存档无效化
  66.     end
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # ● 更新指令选择
  70.   #--------------------------------------------------------------------------
  71.   def update_command_selection
  72.     if Input.trigger?(Input::B)
  73.       Sound.play_cancel
  74.       $scene = Scene_Map.new
  75.     elsif Input.trigger?(Input::C)
  76.       if $game_party.members.size == 0 and @command_window.index < 4
  77.         Sound.play_buzzer
  78.         return
  79.       elsif $game_system.save_disabled and @command_window.index == 4
  80.         Sound.play_buzzer
  81.         return
  82.       end
  83.       Sound.play_decision
  84.       case @command_window.index
  85.       when 0      
  86.         $scene = Scene_Status.new(0)
  87.       when 1
  88.         $scene = Scene_Item.new
  89.       when 2
  90.         $scene = Scene_Equip.new(0)
  91.       when 3
  92.         $scene = Scene_Skill.new(0)
  93.       when 4      
  94.         $scene = Scene_File.new(false, false, false)
  95.       when 5      
  96.         $scene = Scene_File.new(true, false, false)
  97.       when 6      
  98.         $scene = Scene_End.new
  99.       end
  100.     end
  101.   end
  102. end
  103. class Window_Base
  104. def draw_actor_hp(actor, x, y, width = 120)
  105.     draw_actor_hp_gauge(actor, x, y, width)
  106.     self.contents.font.color = system_color
  107.     self.contents.draw_text(x, y, 64, WLH, Vocab::hp_a)
  108.     self.contents.font.color = hp_color(actor)
  109.     xr = x + width
  110.     if width < 120
  111.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.hp, 2)
  112.     else
  113.       self.contents.draw_text(xr - 90, y, 40, WLH, actor.hp, 2)
  114.       self.contents.font.color = normal_color
  115.       self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
  116.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxhp, 2)
  117.     end
  118. end
  119. def draw_actor_mp(actor, x, y, width = 120)
  120.     draw_actor_mp_gauge(actor, x, y, width)
  121.     self.contents.font.color = system_color
  122.     self.contents.draw_text(x, y, 64, WLH, Vocab::mp_a)
  123.     self.contents.font.color = mp_color(actor)
  124.     xr = x + width
  125.     if width < 120
  126.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.mp, 2)
  127.     else
  128.       self.contents.draw_text(xr - 90, y, 40, WLH, actor.mp, 2)
  129.       self.contents.font.color = normal_color
  130.       self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
  131.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxmp, 2)
  132.     end
  133. end  
  134. def draw_actor_level(actor, x, y)
  135.     self.contents.font.color = system_color
  136.     self.contents.draw_text(x, y, 64, WLH, Vocab::level_a)
  137.     self.contents.font.color = normal_color
  138.     self.contents.draw_text(x + 64, y, 24, WLH, actor.level, 2)
  139. end
  140. def draw_item_name_noicon(item, x, y, enabled = true)
  141.     if item != nil
  142.       self.contents.font.color = normal_color
  143.       self.contents.font.color.alpha = enabled ? 255 : 128
  144.       self.contents.draw_text(x, y, 172, WLH, item.name)
  145.     end
  146. end
  147. end

  148. #==============================================================================
  149. # ■ Window_Status
  150. #------------------------------------------------------------------------------
  151. #  显示状态画面、完全规格的状态窗口。
  152. #==============================================================================

  153. class Window_Status < Window_Base
  154.   #--------------------------------------------------------------------------
  155.   # ● 初始化对象
  156.   #     actor : 角色
  157.   #--------------------------------------------------------------------------
  158.   def initialize(actor)
  159.     super(0, 0, 544, 416)
  160.     @actor = actor
  161.     refresh
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 刷新
  165.   #--------------------------------------------------------------------------
  166.   def refresh
  167.     self.contents.clear
  168.     draw_actor_name(@actor, 128, 32)
  169.     draw_actor_face(@actor, 8, 8)
  170.     draw_basic_info(128, 64)
  171.     draw_parameters(128, 160)
  172.     draw_equipments(8, 260)
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 描绘基本信息
  176.   #     x : 描绘目标 X 坐标
  177.   #     y : 描绘目标 Y 坐标
  178.   #--------------------------------------------------------------------------
  179.   def draw_basic_info(x, y)
  180.     draw_actor_level(@actor, x, y + WLH * 0)
  181.     draw_actor_hp(@actor, x, y + WLH * 2, 160)
  182.     draw_actor_mp(@actor, x, y + WLH * 3, 160)
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● 描绘能力值
  186.   #     x : 描绘目标 X 坐标
  187.   #     y : 描绘目标 Y 坐标
  188.   #--------------------------------------------------------------------------
  189.   def draw_parameters(x, y)
  190.     draw_actor_parameter(@actor, x, y + WLH * 0, 0)
  191.     draw_actor_parameter(@actor, x, y + WLH * 1, 1)
  192.     draw_actor_parameter(@actor, x, y + WLH * 2, 2)
  193.     draw_actor_parameter(@actor, x, y + WLH * 3, 3)
  194.   end
  195.   #--------------------------------------------------------------------------
  196.   # ● 描绘装备品
  197.   #     x : 描绘目标 X 坐标
  198.   #     y : 描绘目标 Y 坐标
  199.   #--------------------------------------------------------------------------
  200.   def draw_equipments(x, y)
  201.     self.contents.font.color = system_color
  202.     self.contents.draw_text(x, y, 120, WLH, Vocab::armor2)
  203.     self.contents.draw_text(x + 160, y, 120, WLH, Vocab::armor3)
  204.     self.contents.draw_text(x + 160*2, y, 120, WLH, Vocab::armor4)
  205.     for i in 2..4
  206.       draw_item_name(@actor.equips[i], x + 16 + (i-2)*160, y + WLH)
  207.     end
  208.     self.contents.font.color = system_color
  209.     self.contents.draw_text(x, y + WLH * 2, 120, WLH, Vocab::weapon)
  210.     self.contents.draw_text(x + 160, y + WLH * 2, 120, WLH, Vocab::armor1)
  211.     for i in 0..1
  212.       draw_item_name(@actor.equips[i], x + 16 + i*160, y + WLH * 3)
  213.     end
  214.   end
  215. end
  216. #==============================================================================
  217. # ■ Scene_Equip
  218. #------------------------------------------------------------------------------
  219. #  处理装备画面
  220. #==============================================================================

  221. class Scene_Equip < Scene_Base
  222.   #--------------------------------------------------------------------------
  223.   # ● 常量
  224.   #--------------------------------------------------------------------------
  225.   EQUIP_TYPE_MAX = 5                      # 装备部位数
  226.   #--------------------------------------------------------------------------
  227.   # ● 初始化对象
  228.   #     actor_index : 角色索引
  229.   #     equip_index : 装备索引
  230.   #--------------------------------------------------------------------------
  231.   def initialize(actor_index = 0, equip_index = 0)
  232.     @actor_index = actor_index
  233.     @equip_index = equip_index
  234.   end
  235.   #--------------------------------------------------------------------------
  236.   # ● 开始处理
  237.   #--------------------------------------------------------------------------
  238.   def start
  239.     super
  240.     create_menu_background
  241.     @actor = $game_party.members[@actor_index]
  242.     @help_window = Window_Help.new(0,360)
  243.     create_item_windows
  244.     @equipicon_window = Window_Base.new(0,0,132,152)
  245.     @equipicon_window.contents = Bitmap.new(@equipicon_window.width - 32,
  246.     @equipicon_window.height - 32)
  247.     @equip_window = Window_Equip.new(312, 0, @actor)
  248.     @equip_window.help_window = @help_window
  249.     @equip_window.index = @equip_index
  250.     @status_window = Window_EquipStatus.new(132, 0, @actor)
  251.   end
  252.   #--------------------------------------------------------------------------
  253.   # ● 结束处理
  254.   #--------------------------------------------------------------------------
  255.   def terminate
  256.     super
  257.     dispose_menu_background
  258.     @equipicon_window.dispose
  259.     @help_window.dispose
  260.     @equip_window.dispose
  261.     @status_window.dispose
  262.     dispose_item_windows
  263.   end
  264.   #--------------------------------------------------------------------------
  265.   # ● 返回原来的画面
  266.   #--------------------------------------------------------------------------
  267.   def return_scene
  268.     $scene = Scene_Menu.new(2)
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # ● 切换至下一名角色的画面
  272.   #--------------------------------------------------------------------------
  273.   def next_actor
  274.     @actor_index += 1
  275.     @actor_index %= $game_party.members.size
  276.     $scene = Scene_Equip.new(@actor_index, @equip_window.index)
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # ● 切换至上一名角色的画面
  280.   #--------------------------------------------------------------------------
  281.   def prev_actor
  282.     @actor_index += $game_party.members.size - 1
  283.     @actor_index %= $game_party.members.size
  284.     $scene = Scene_Equip.new(@actor_index, @equip_window.index)
  285.   end
  286.   #--------------------------------------------------------------------------
  287.   # ● 更新画面
  288.   #--------------------------------------------------------------------------
  289.   def update
  290.     super
  291.       
  292.     def item
  293.         return @data[@equip_window.index]
  294.     end
  295.     @data = []
  296.     for item in @actor.equips do @data.push(item) end
  297.       
  298.     update_menu_background
  299.     @help_window.update
  300.     update_equip_window
  301.     update_status_window
  302.     update_item_windows
  303.     if @equip_window.active
  304.       case @equip_window.index
  305.       when 0
  306.       @equipicon_window.contents.clear
  307.       if @data[0] != nil
  308.       @equipicon_window.draw_icon(@data[0].icon_index,
  309.       (@equipicon_window.width-56)/2, (@equipicon_window.height-56)/2)
  310.       end
  311.       when 1
  312.       @equipicon_window.contents.clear
  313.       if @data[1] != nil
  314.       @equipicon_window.draw_icon(@data[1].icon_index,
  315.       (@equipicon_window.width-56)/2, (@equipicon_window.height-56)/2)
  316.       end
  317.       when 2
  318.       @equipicon_window.contents.clear
  319.       if @data[2] != nil
  320.       @equipicon_window.draw_icon(@data[2].icon_index,
  321.       (@equipicon_window.width-56)/2, (@equipicon_window.height-56)/2)
  322.       end
  323.       when 3
  324.       @equipicon_window.contents.clear
  325.       if @data[3] != nil
  326.       @equipicon_window.draw_icon(@data[3].icon_index,
  327.       (@equipicon_window.width-56)/2, (@equipicon_window.height-56)/2)
  328.       end
  329.       when 4
  330.       @equipicon_window.contents.clear
  331.       if @data[4] != nil
  332.       @equipicon_window.draw_icon(@data[4].icon_index,
  333.       (@equipicon_window.width-56)/2, (@equipicon_window.height-56)/2)
  334.       end
  335.       end
  336.       update_equip_selection
  337.     elsif @item_window.active
  338.       @equipicon_window.contents.clear
  339.       if @item_window.item != nil
  340.       @equipicon_window.draw_icon(@item_window.item.icon_index,
  341.       (@equipicon_window.width-56)/2, (@equipicon_window.height-56)/2)
  342.       end
  343.       update_item_selection
  344.     end
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ● 生成物品窗口
  348.   #--------------------------------------------------------------------------
  349.   def create_item_windows
  350.     @item_windows = []
  351.     for i in 0...EQUIP_TYPE_MAX
  352.       @item_windows[i] = Window_EquipItem.new(0, 152, 544, 208, @actor, i)
  353.       @item_windows[i].help_window = @help_window
  354.       @item_windows[i].visible = (@equip_index == i)
  355.       @item_windows[i].height = 208
  356.       @item_windows[i].active = false
  357.       @item_windows[i].index = -1
  358.     end
  359.   end
  360.   #--------------------------------------------------------------------------
  361.   # ● 释放物品窗口
  362.   #--------------------------------------------------------------------------
  363.   def dispose_item_windows
  364.     for window in @item_windows
  365.       window.dispose
  366.     end
  367.   end
  368.   #--------------------------------------------------------------------------
  369.   # ● 更新物品窗口
  370.   #--------------------------------------------------------------------------
  371.   def update_item_windows
  372.     for i in 0...EQUIP_TYPE_MAX
  373.       @item_windows[i].visible = (@equip_window.index == i)
  374.       @item_windows[i].update
  375.     end
  376.     @item_window = @item_windows[@equip_window.index]
  377.   end
  378.   #--------------------------------------------------------------------------
  379.   # ● 更新装备窗口
  380.   #--------------------------------------------------------------------------
  381.   def update_equip_window
  382.     @equip_window.update
  383.   end
  384.   #--------------------------------------------------------------------------
  385.   # ● 更新状态窗口
  386.   #--------------------------------------------------------------------------
  387.   def update_status_window
  388.     if @equip_window.active
  389.       @status_window.set_new_parameters(nil, nil, nil, nil)
  390.     elsif @item_window.active
  391.       temp_actor = @actor.clone
  392.       temp_actor.change_equip(@equip_window.index, @item_window.item, true)
  393.       new_atk = temp_actor.atk
  394.       new_def = temp_actor.def
  395.       new_spi = temp_actor.spi
  396.       new_agi = temp_actor.agi
  397.       @status_window.set_new_parameters(new_atk, new_def, new_spi, new_agi)
  398.     end
  399.     @status_window.update
  400.   end
  401.   #--------------------------------------------------------------------------
  402.   # ● 更新选择装备部位
  403.   #--------------------------------------------------------------------------
  404.   def update_equip_selection
  405.     if Input.trigger?(Input::B)
  406.       Sound.play_cancel
  407.       return_scene
  408.     elsif Input.trigger?(Input::R)
  409.       Sound.play_cursor
  410.       next_actor
  411.     elsif Input.trigger?(Input::L)
  412.       Sound.play_cursor
  413.       prev_actor
  414.     elsif Input.trigger?(Input::C)
  415.       if @actor.fix_equipment
  416.         Sound.play_buzzer
  417.       else
  418.         Sound.play_decision
  419.         @equip_window.active = false
  420.         @item_window.active = true
  421.         @item_window.index = 0
  422.       end
  423.     end
  424.   end
  425.   #--------------------------------------------------------------------------
  426.   # ● 更新选择物品
  427.   #--------------------------------------------------------------------------
  428.   def update_item_selection
  429.     if Input.trigger?(Input::B)
  430.       Sound.play_cancel
  431.       @equip_window.active = true
  432.       @item_window.active = false
  433.       @item_window.index = -1
  434.     elsif Input.trigger?(Input::C)
  435.       Sound.play_equip
  436.       @actor.change_equip(@equip_window.index, @item_window.item)
  437.       @equip_window.active = true
  438.       @item_window.active = false
  439.       @item_window.index = -1
  440.       @equip_window.refresh
  441.       for item_window in @item_windows
  442.         item_window.refresh
  443.       end
  444.     end
  445.   end
  446. end
  447. #==============================================================================
  448. # ■ Window_Equip
  449. #------------------------------------------------------------------------------
  450. #  装备画面、显示角色现在装备的物品的窗口。
  451. #==============================================================================

  452. class Window_Equip < Window_Selectable
  453.   #--------------------------------------------------------------------------
  454.   # ● 初始化对象
  455.   #     x     : 窗口的 X 坐标
  456.   #     y     : 窗口的 Y 坐标
  457.   #     actor : 角色
  458.   #--------------------------------------------------------------------------
  459.   def initialize(x, y, actor)
  460.     super(x, y, 232, WLH * 5 + 32)
  461.     @actor = actor
  462.     refresh
  463.     self.index = 0
  464.   end
  465.   #--------------------------------------------------------------------------
  466.   # ● 获取物品
  467.   #--------------------------------------------------------------------------
  468.   def item
  469.     return @data[self.index]
  470.   end
  471.   #--------------------------------------------------------------------------
  472.   # ● 刷新
  473.   #--------------------------------------------------------------------------
  474.   def refresh
  475.     self.contents.clear
  476.     @data = []
  477.     for item in @actor.equips do @data.push(item) end
  478.     @item_max = @data.size
  479.     self.contents.font.color = system_color
  480.     if @actor.two_swords_style
  481.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon1)
  482.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::weapon2)
  483.     else
  484.       self.contents.draw_text(4, WLH * 0, 92, WLH, Vocab::weapon)
  485.       self.contents.draw_text(4, WLH * 1, 92, WLH, Vocab::armor1)
  486.     end
  487.     self.contents.draw_text(4, WLH * 2, 92, WLH, Vocab::armor2)
  488.     self.contents.draw_text(4, WLH * 3, 92, WLH, Vocab::armor3)
  489.     self.contents.draw_text(4, WLH * 4, 92, WLH, Vocab::armor4)
  490.     draw_item_name_noicon(@data[0], 72, WLH * 0)
  491.     draw_item_name_noicon(@data[1], 72, WLH * 1)
  492.     draw_item_name_noicon(@data[2], 72, WLH * 2)
  493.     draw_item_name_noicon(@data[3], 72, WLH * 3)
  494.     draw_item_name_noicon(@data[4], 72, WLH * 4)
  495.   end
  496.   #--------------------------------------------------------------------------
  497.   # ● 更新帮助文本
  498.   #--------------------------------------------------------------------------
  499.   def update_help
  500.     @help_window.set_text(item == nil ? "" : item.description)
  501.   end
  502. end
  503. #==============================================================================
  504. # ■ Window_EquipStatus
  505. #------------------------------------------------------------------------------
  506. #  装备画面、显示角色能力值变化的窗口。
  507. #==============================================================================

  508. class Window_EquipStatus < Window_Base
  509.   #--------------------------------------------------------------------------
  510.   # ● 初始化对象
  511.   #     x     : 窗口的 X 坐标
  512.   #     y     : 窗口的 Y 坐标
  513.   #     actor : 角色
  514.   #--------------------------------------------------------------------------
  515.   def initialize(x, y, actor)
  516.     super(x, y, 180, WLH * 5 + 32)
  517.     @actor = actor
  518.     refresh
  519.   end
  520.   #--------------------------------------------------------------------------
  521.   # ● 刷新
  522.   #--------------------------------------------------------------------------
  523.   def refresh
  524.     self.contents.clear
  525.     draw_actor_name(@actor, 4, 0)
  526.     draw_parameter(0, WLH * 1, 0)
  527.     draw_parameter(0, WLH * 2, 1)
  528.     draw_parameter(0, WLH * 3, 2)
  529.     draw_parameter(0, WLH * 4, 3)
  530.   end
  531.   #--------------------------------------------------------------------------
  532.   # ● 设置装备变更后的能力值
  533.   #     new_atk : 装备变更后的攻击力
  534.   #     new_def : 装备变更后的防御力
  535.   #     new_spi : 装备变更后的精神力
  536.   #     new_agi : 装备变更后的敏捷性
  537.   #--------------------------------------------------------------------------
  538.   def set_new_parameters(new_atk, new_def, new_spi, new_agi)
  539.     if @new_atk != new_atk or @new_def != new_def or
  540.        @new_spi != new_spi or @new_agi != new_agi
  541.       @new_atk = new_atk
  542.       @new_def = new_def
  543.       @new_spi = new_spi
  544.       @new_agi = new_agi
  545.       refresh
  546.     end
  547.   end
  548.   #--------------------------------------------------------------------------
  549.   # ● 获取装备变更后的能力值描绘色
  550.   #     old_value : 装備変更前の能力値
  551.   #     new_value : 装備変更後の能力値
  552.   #--------------------------------------------------------------------------
  553.   def new_parameter_color(old_value, new_value)
  554.     if new_value > old_value      # 变强
  555.       return power_up_color
  556.     elsif new_value == old_value  # 没有变化
  557.       return normal_color
  558.     else                          # 变弱
  559.       return power_down_color
  560.     end
  561.   end
  562.   #--------------------------------------------------------------------------
  563.   # ● 描绘能力值
  564.   #     x    : 描绘目标 X 坐标
  565.   #     y    : 描绘目标 Y 坐标
  566.   #     type : 能力值种类 (0~3)
  567.   #--------------------------------------------------------------------------
  568.   def draw_parameter(x, y, type)
  569.     case type
  570.     when 0
  571.       name = Vocab::atk
  572.       value = @actor.atk
  573.       new_value = @new_atk
  574.     when 1
  575.       name = Vocab::def
  576.       value = @actor.def
  577.       new_value = @new_def
  578.     when 2
  579.       name = Vocab::spi
  580.       value = @actor.spi
  581.       new_value = @new_spi
  582.     when 3
  583.       name = Vocab::agi
  584.       value = @actor.agi
  585.       new_value = @new_agi
  586.     end
  587.     self.contents.font.color = system_color
  588.     self.contents.draw_text(x + 4, y, 80, WLH, name)
  589.     self.contents.font.color = normal_color
  590.     self.contents.draw_text(x + 56, y, 30, WLH, value, 2)
  591.     self.contents.font.color = system_color
  592.     self.contents.draw_text(x + 88, y, 20, WLH, "→", 1)
  593.     if new_value != nil
  594.       self.contents.font.color = new_parameter_color(value, new_value)
  595.       self.contents.draw_text(x + 112, y, 30, WLH, new_value, 2)
  596.     end
  597.   end
  598. end
  599. #==============================================================================
  600. # ■ Window_Help
  601. #------------------------------------------------------------------------------
  602. #  特技及物品的说明、角色的状态显示的窗口。
  603. #==============================================================================

  604. class Window_Help < Window_Base
  605.   #--------------------------------------------------------------------------
  606.   # ● 初始化对象
  607.   #--------------------------------------------------------------------------
  608.   def initialize(x=0,y=0)
  609.     super(x, y, 544, WLH + 32)
  610.   end
  611.   #--------------------------------------------------------------------------
  612.   # ● テキスト設定
  613.   #     text  : 窗口显示的字符串
  614.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  615.   #--------------------------------------------------------------------------
  616.   def set_text(text, align = 0)
  617.     if text != @text or align != @align
  618.       self.contents.clear
  619.       self.contents.font.color = normal_color
  620.       self.contents.draw_text(4, 0, self.width - 40, WLH, text, align)
  621.       @text = text
  622.       @align = align
  623.     end
  624.   end
  625. end
  626. class Scene_Item < Scene_Base
  627.   def return_scene
  628.     $scene = Scene_Menu.new(1)
  629.   end
  630. end

  631. class Scene_Status < Scene_Base
  632.   def return_scene
  633.     $scene = Scene_Menu.new(0)
  634.   end
  635. end
  636. #==============================================================================
  637. # ■ Scene_Skill
  638. #------------------------------------------------------------------------------
  639. #  处理特技画面的类。
  640. #==============================================================================

  641. class Scene_Skill < Scene_Base
  642.   #--------------------------------------------------------------------------
  643.   # ● 初始化对象
  644.   #     actor_index : 角色索引
  645.   #--------------------------------------------------------------------------
  646.   def initialize(actor_index = 0, equip_index = 0)
  647.     @actor_index = actor_index
  648.   end
  649.   #--------------------------------------------------------------------------
  650.   # ● 开始处理
  651.   #--------------------------------------------------------------------------
  652.   def start
  653.     super
  654.     create_menu_background
  655.     @actor = $game_party.members[@actor_index]
  656.     @viewport = Viewport.new(0, 0, 544, 416)
  657.     @skillicon_window = Window_Base.new(0,0,132,152)
  658.     @skillicon_window.contents = Bitmap.new(@skillicon_window.width - 32,
  659.     @skillicon_window.height - 32)
  660.     @help_window = Window_Help.new(132,0)
  661.     @help_window.width = 412
  662.     @skill_window = Window_Skill.new(0, 152, 544, 264, @actor)
  663.     @skill_window.viewport = @viewport
  664.     @skill_window.help_window = @help_window
  665.     @target_window = Window_MenuStatus.new(0, 0)
  666.     hide_target_window
  667.   end
  668.   #--------------------------------------------------------------------------
  669.   # ● 结束处理
  670.   #--------------------------------------------------------------------------
  671.   def terminate
  672.     super
  673.     dispose_menu_background
  674.     @skillicon_window.dispose
  675.     @help_window.dispose
  676.     @skill_window.dispose
  677.     @target_window.dispose
  678.   end
  679.   #--------------------------------------------------------------------------
  680.   # ● 还原至原来的画面
  681.   #--------------------------------------------------------------------------
  682.   def return_scene
  683.     $scene = Scene_Menu.new(3)
  684.   end
  685.   #--------------------------------------------------------------------------
  686.   # ● 切换至下一名角色的画面
  687.   #--------------------------------------------------------------------------
  688.   def next_actor
  689.     @actor_index += 1
  690.     @actor_index %= $game_party.members.size
  691.     $scene = Scene_Skill.new(@actor_index)
  692.   end
  693.   #--------------------------------------------------------------------------
  694.   # ● 切换至上一名角色的画面
  695.   #--------------------------------------------------------------------------
  696.   def prev_actor
  697.     @actor_index += $game_party.members.size - 1
  698.     @actor_index %= $game_party.members.size
  699.     $scene = Scene_Skill.new(@actor_index)
  700.   end
  701.   #--------------------------------------------------------------------------
  702.   # ● 更新画面
  703.   #--------------------------------------------------------------------------
  704.   def update
  705.     super
  706.     update_menu_background
  707.     @skillicon_window.update
  708.     @help_window.update
  709.     @skill_window.update
  710.     @target_window.update
  711.     if @skill_window.active
  712.       @skillicon_window.contents.clear
  713.       if @skill_window.skill != nil
  714.       @skillicon_window.draw_icon(@skill_window.skill.icon_index,
  715.       (@skillicon_window.width-56)/2, (@skillicon_window.height-56)/2)
  716.       end
  717.       update_skill_selection
  718.     elsif @target_window.active
  719.       update_target_selection
  720.     end
  721.   end
  722.   #--------------------------------------------------------------------------
  723.   # ● 更新选择特技
  724.   #--------------------------------------------------------------------------
  725.   def update_skill_selection
  726.     if Input.trigger?(Input::B)
  727.       Sound.play_cancel
  728.       return_scene
  729.     elsif Input.trigger?(Input::R)
  730.       Sound.play_cursor
  731.       next_actor
  732.     elsif Input.trigger?(Input::L)
  733.       Sound.play_cursor
  734.       prev_actor
  735.     elsif Input.trigger?(Input::C)
  736.       @skill = @skill_window.skill
  737.       if @skill != nil
  738.         @actor.last_skill_id = @skill.id
  739.       end
  740.       if @actor.skill_can_use?(@skill)
  741.         Sound.play_decision
  742.         determine_skill
  743.       else
  744.         Sound.play_buzzer
  745.       end
  746.     end
  747.   end
  748.   #--------------------------------------------------------------------------
  749.   # ● 确定特技
  750.   #--------------------------------------------------------------------------
  751.   def determine_skill
  752.     if @skill.for_friend?
  753.       show_target_window(@skill_window.index % 2 == 0)
  754.       if @skill.for_all?
  755.         @target_window.index = 99
  756.       elsif @skill.for_user?
  757.         @target_window.index = @actor_index + 100
  758.       else
  759.         if $game_party.last_target_index < @target_window.item_max
  760.           @target_window.index = $game_party.last_target_index
  761.         else
  762.           @target_window.index = 0
  763.         end
  764.       end
  765.     else
  766.       use_skill_nontarget
  767.     end
  768.   end
  769.   #--------------------------------------------------------------------------
  770.   # ● 更新选择目标
  771.   #--------------------------------------------------------------------------
  772.   def update_target_selection
  773.     if Input.trigger?(Input::B)
  774.       Sound.play_cancel
  775.       hide_target_window
  776.     elsif Input.trigger?(Input::C)
  777.       if not @actor.skill_can_use?(@skill)
  778.         Sound.play_buzzer
  779.       else
  780.         determine_target
  781.       end
  782.     end
  783.   end
  784.   #--------------------------------------------------------------------------
  785.   # ● 确定目标
  786.   #    无效的情况下 (在不能战斗的情况下使用恢复剂) 播放 buzzer 的 SE。
  787.   #--------------------------------------------------------------------------
  788.   def determine_target
  789.     used = false
  790.     if @skill.for_all?
  791.       for target in $game_party.members
  792.         target.skill_effect(@actor, @skill)
  793.         used = true unless target.skipped
  794.       end
  795.     elsif @skill.for_user?
  796.       target = $game_party.members[@target_window.index - 100]
  797.       target.skill_effect(@actor, @skill)
  798.       used = true unless target.skipped
  799.     else
  800.       $game_party.last_target_index = @target_window.index
  801.       target = $game_party.members[@target_window.index]
  802.       target.skill_effect(@actor, @skill)
  803.       used = true unless target.skipped
  804.     end
  805.     if used
  806.       use_skill_nontarget
  807.     else
  808.       Sound.play_buzzer
  809.     end
  810.   end
  811.   #--------------------------------------------------------------------------
  812.   # ● 显示目标窗口
  813.   #     right : 靠右标志 (false 为靠左)
  814.   #--------------------------------------------------------------------------
  815.   def show_target_window(right)
  816.     @skill_window.active = false
  817.     width_remain = 544 - @target_window.width
  818.     @target_window.x = right ? width_remain : 0
  819.     @target_window.visible = true
  820.     @target_window.active = true
  821.     if right
  822.       @viewport.rect.set(0, 0, width_remain, 416)
  823.       @viewport.ox = 0
  824.     else
  825.       @viewport.rect.set(@target_window.width, 0, width_remain, 416)
  826.       @viewport.ox = @target_window.width
  827.     end
  828.   end
  829.   #--------------------------------------------------------------------------
  830.   # ● 不显示目标窗口
  831.   #--------------------------------------------------------------------------
  832.   def hide_target_window
  833.     @skill_window.active = true
  834.     @target_window.visible = false
  835.     @target_window.active = false
  836.     @viewport.rect.set(0, 0, 544, 416)
  837.     @viewport.ox = 0
  838.   end
  839.   #--------------------------------------------------------------------------
  840.   # ● 使用特技 (也适用于我方对象以外的效果)
  841.   #--------------------------------------------------------------------------
  842.   def use_skill_nontarget
  843.     Sound.play_use_skill
  844.     @actor.mp -= @actor.calc_mp_cost(@skill)
  845.     @skill_window.refresh
  846.     @target_window.refresh
  847.     if $game_party.all_dead?
  848.       $scene = Scene_Gameover.new
  849.     elsif @skill.common_event_id > 0
  850.       $game_temp.common_event_id = @skill.common_event_id
  851.       $scene = Scene_Map.new
  852.     end
  853.   end
  854. end

复制代码


直接覆盖
MadniMStudio|Beside
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3309
在线时间
3620 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

16
 楼主| 发表于 2008-5-18 21:55:51 | 只看该作者
关门大吉……

系统全部悬赏完毕,
还差一个跑步的行走图,
方在图像技术区也没人管……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-27 05:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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