Project1

标题: 再请教紫苏。。关于那个显示图标的脚本 [打印本页]

作者: 乱摸阿弥陀佛    时间: 2009-5-15 17:43
标题: 再请教紫苏。。关于那个显示图标的脚本
原脚本的功能:打开一个开关,右上角显示图标,我希望平时右上角只显示角色的SP数值,当所有开关都关闭后,所有图标消失,依然还原为只显示角色的SP数值,可不可以?另外用那脚本通过地图事件直接得失物品的话,右上角的物品数量没有更新


原地址:
http://rpg.blue/viewthread.php?tid=124735&ntime=2009-5-15+9%3A24%3A32




  1. class Floating < Sprite
  2. SWITCH_TO_ITEM = {
  3.    10 => 50,
  4.    11 => 51
  5. }
  6. def initialize(viewport = nil)
  7.    super(viewport)
  8.    self.bitmap = Bitmap.new(96, 32)
  9.    self.x = 640 - 96
  10.    self.z = 1000
  11.    @item = 0
  12. end
  13. def dispose
  14.    self.bitmap.dispose
  15.    super
  16. end
  17. def update
  18.    super
  19.    SWITCH_TO_ITEM.each_key { |i|
  20.      if $game_switches[i] && @item != i
  21.        bitmap = RPG::Cache.icon($data_items[SWITCH_TO_ITEM[i]].icon_name)
  22.        self.bitmap.blt(4, 4, bitmap, Rect.new(0, 0, 24, 24))
  23.        self.bitmap.draw_text(32, 4, 64, 32,
  24.          sprintf("×%3d", $game_party.item_number(i)))
  25.        @item = i
  26.        return
  27.      end
  28.    }
  29. end
  30. end

  31. class Scene_Map
  32. alias main_old main if !method_defined? :main_old
  33. def main
  34.    @floating = Floating.new
  35.    main_old
  36.    @floating.dispose
  37. end
  38. alias update_old update if !method_defined? :update_old
  39. def update
  40.    @floating.update
  41.    update_old
  42. end
  43. end
复制代码
[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 紫苏    时间: 2009-5-15 18:22
描绘哪个角色的 sp ?
在 each_key 迭代结束之后(中途没有 return 说明制定的开关全部都是关闭着的)描绘 sp 即可,下面是显示队伍中第一个角色的 sp~
class Floating < Sprite
   SWITCH_TO_ITEM = {
     10 => 50,
     11 => 51
   }
   def initialize(viewport = nil)
     super(viewport)
     self.bitmap = Bitmap.new(96, 32)
     self.x = 640 - 96
     self.z = 1000
     update
   end
   def dispose
     self.bitmap.dispose
     super
   end
   def update
     super
     SWITCH_TO_ITEM.each_key { |i|
       if $game_switches
         id = SWITCH_TO_ITEM
         number = $game_party.item_number(id)
         if @item != id || @item_number != number
           self.bitmap.clear
           bitmap = RPG::Cache.icon($data_items[id].icon_name)
           self.bitmap.blt(4, 4, bitmap, Rect.new(0, 0, 24, 24))
           self.bitmap.draw_text(32, 4, 64, 32, sprintf("×%3d", number))
           @item = id
           @item_number = number
           @sp = -1
         end
         return
       end
     }
     sp = $game_party.actors[0].sp
     if @sp != sp
       self.bitmap.clear
       self.bitmap.draw_text(4, 0, 88, 32, sprintf("SP:%5d", sp))
       @sp = sp
       @item = 0
       @item_number = 0
     end

   end
end
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 乱摸阿弥陀佛    时间: 2009-5-15 18:34
对了,就是显示队伍中第一个角色的 sp。

我就改了开关和图标编号,为什么开关打开之后没反应了呢,什么都没显示,比如开476号开关显示28号物品图标,并关闭其它两个开关{/fd}
class Floating < Sprite
  SWITCH_TO_ITEM = {
    476 => 28,
    477 => 29,
    478 => 30
  }
作者: 紫苏    时间: 2009-5-15 18:37
这只是替换 class Floating ...end 那一段, Scene_Map 的那一段还是要保留的……

另外上面编辑了一下,回帖的时候没看到你说的数量改变不刷新的问题~
作者: 乱摸阿弥陀佛    时间: 2009-5-15 18:43
明白了!谢谢{/gg}




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