Project1

标题: 魔法商店 [打印本页]

作者: cZooCz    时间: 2008-1-8 21:38
标题: 魔法商店
  1. #==============================================================================
  2. # ■ 本脚本源自www.66rpg.com,转载与使用请保留此信息
  3. #==============================================================================

  4. #——以下是一些自定义的内容

  5. $mShop_use_1 = "灵魄"    #——这项是购买魔法特技的货币的名称,如“灵魄”、“金钱”

  6. $mShop_use_2 = "特斯拉"  #——这项是购买魔法特技的货币单位,如“点”、“¥”

  7. $mShop_use_variable = 1  #——这项是购买魔法特技时消耗的变量编号,如果=0 则是消耗金钱

  8. $mShop_Window_Opacity = 200  #——这项是窗口透明度

  9. #==============================================================================
  10. # ■ Window_MGold
  11. #------------------------------------------------------------------------------
  12. #  显示金钱的窗口。
  13. #==============================================================================
  14. class Window_MGold < Window_Base
  15.   #--------------------------------------------------------------------------
  16.   # ● 初始化窗口
  17.   #--------------------------------------------------------------------------
  18.   def initialize
  19.     super(0, 0, 272, 64)
  20.     self.contents = Bitmap.new(width - 32, height - 32)
  21.     refresh
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 刷新
  25.   #--------------------------------------------------------------------------
  26.   def refresh
  27.     self.contents.clear
  28.     self.contents.font.color = system_color
  29.     self.contents.draw_text(0, 0 , 240,32 ,$mShop_use_1)
  30.     self.contents.font.color = normal_color
  31.     self.contents.draw_text(0, 0, 240-contents.text_size($mShop_use_2).width-6, 32, $mShop_gold.to_s, 2)
  32.     self.contents.font.color = system_color
  33.     self.contents.draw_text(0, 0, 240, 32, $mShop_use_2, 2)
  34.   end
  35. end
  36. #==============================================================================
  37. # ■ Scene_MShop
  38. #------------------------------------------------------------------------------
  39. #  处理特技商店画面的类。
  40. #==============================================================================
  41. class Scene_MShop
  42.   #--------------------------------------------------------------------------
  43.   # ● 初始化
  44.   #--------------------------------------------------------------------------
  45.   def initialize(id)
  46.     @id = id
  47.   end  
  48.   #--------------------------------------------------------------------------
  49.   # ● 主处理
  50.   #--------------------------------------------------------------------------
  51.   def main
  52.     screen = Spriteset_Map.new
  53.     if $mShop_use_variable == 0
  54.       $mShop_gold = $game_party.gold
  55.     else
  56.       $mShop_gold = $game_variables[$mShop_use_variable]
  57.     end
  58.     # 生成帮助窗口
  59.     @help_window = Window_Help.new
  60.     @help_window.opacity = $mShop_Window_Opacity

  61.     # 生成金钱窗口
  62.     @gold_window = Window_MGold.new
  63.     @gold_window.x = 368
  64.     @gold_window.y = 416
  65.     @gold_window.opacity = $mShop_Window_Opacity
  66.     # 生成购买窗口
  67.     @buy_window = Window_MShopBuy.new(@id)
  68.     @buy_window.active = true
  69.     @buy_window.visible = true
  70.     @buy_window.help_window = @help_window
  71.     @buy_window.opacity = $mShop_Window_Opacity
  72.     # 生成状态窗口
  73.     @status_window = Window_MShopStatus.new
  74.     @status_window.visible = true
  75.     @status_window.active = false
  76.     @status_window.opacity = $mShop_Window_Opacity
  77.         
  78.     #生成指令窗口
  79.     @command_window = Window_Command.new(160,["学会","遗忘"])
  80.     @command_window.x = 320
  81.     @command_window.y = 240
  82.     @command_window.z = 500
  83.     @command_window.visible = false
  84.     @command_window.active = false
  85.     @command_window.opacity = $mShop_Window_Opacity
  86.    
  87.     # 执行过渡
  88.     Graphics.transition
  89.     # 主循环
  90.     loop do
  91.       # 刷新游戏画面
  92.       Graphics.update
  93.       # 刷新输入信息
  94.       Input.update
  95.       # 刷新画面
  96.       update
  97.       # 如果画面切换的话就中断循环
  98.       if $scene != self
  99.         break
  100.       end
  101.     end
  102.     # 准备过渡
  103.     Graphics.freeze
  104.     # 释放窗口
  105.     @help_window.dispose
  106.     #@mhelp_window.dispose
  107.     @gold_window.dispose
  108.     @buy_window.dispose
  109.     @status_window.dispose
  110.     @command_window.dispose
  111.     screen.dispose
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 刷新画面
  115.   #--------------------------------------------------------------------------
  116.   def update
  117.     # 刷新窗口
  118.     @help_window.update
  119.     #@mhelp_window.update
  120.     @gold_window.update
  121.     @buy_window.update
  122.     @status_window.update
  123.     @command_window.update
  124.     # 购买窗口激活的情况下: 调用 update_buy
  125.     if @buy_window.active
  126.       update_buy
  127.       return
  128.     end
  129.     if @status_window.active
  130.       update_status
  131.       return
  132.     end
  133.     if @command_window.active
  134.       update_command
  135.       return
  136.     end
  137.    
  138.   end
  139.   
  140.   #--------------------------------------------------------------------------
  141.   # ● 刷新画面 (指令窗口激活的情况下)
  142.   #--------------------------------------------------------------------------
  143.   def update_command
  144.     if Input.trigger?(Input::B)
  145.       $game_system.se_play($data_system.cancel_se)
  146.       @status_window.index = -1
  147.       @command_window.active = false
  148.       @command_window.visible = false
  149.       @buy_window.active = true
  150.       return
  151.     end
  152.     if Input.trigger?(Input::C)
  153.       if @command_window.index == 0      
  154.         if $game_party.actors[@status_window.index].skill_learn?(@skill.id)
  155.           $game_system.se_play($data_system.cancel_se)
  156.           return
  157.         else
  158.           $game_system.se_play($data_system.decision_se)
  159.           if $mShop_use_variable == 0
  160.             $game_party.gain_gold([email protected])
  161.             $mShop_gold -= @skill.price
  162.           else
  163.             $game_variables[$mShop_use_variable] -= @skill.price
  164.             $mShop_gold -= @skill.price
  165.           end
  166.           $game_party.actors[@status_window.index].learn_skill(@skill.id)
  167.           @gold_window.refresh
  168.           @buy_window.refresh
  169.           @status_window.refresh
  170.           @status_window.index = -1
  171.           @buy_window.active = true
  172.           @command_window.active = false
  173.           @command_window.visible = false   
  174.         end
  175.       elsif  @command_window.index == 1
  176.         if $game_party.actors[@status_window.index].skill_learn?(@skill.id) == false
  177.           $game_system.se_play($data_system.cancel_se)
  178.           return
  179.         else
  180.           $game_system.se_play($data_system.decision_se)
  181.           if $mShop_use_variable == 0
  182.             $game_party.gain_gold(@skill.price/2)  #<-遗忘价格为学习的一半,/2的地方相同
  183.             $mShop_gold += @skill.price/2
  184.           else
  185.             $game_variables[$mShop_use_variable] += @skill.price/2
  186.             $mShop_gold += @skill.price/2
  187.           end
  188.           $game_party.actors[@status_window.index].forget_skill(@skill.id)
  189.           @gold_window.refresh
  190.           @buy_window.refresh
  191.           @status_window.refresh
  192.           @status_window.index = -1
  193.           @buy_window.active = true
  194.           @command_window.active = false
  195.           @command_window.visible = false
  196.         end
  197.       end
  198.       return
  199.     end
  200.   end
  201.   
  202.   #--------------------------------------------------------------------------
  203.   # ● 刷新画面 (购买窗口激活的情况下)
  204.   #--------------------------------------------------------------------------
  205.   def update_buy
  206.     @status_window.skill = @buy_window.skill
  207.     if Input.trigger?(Input::B)
  208.       $game_system.se_play($data_system.cancel_se)
  209.       $scene = Scene_Map.new
  210.       return
  211.     end
  212.     if Input.trigger?(Input::C)
  213.       @skill = @buy_window.skill
  214.       if @skill == nil #or @skill.price > $mShop_gold  
  215.         $game_system.se_play($data_system.buzzer_se)
  216.         return
  217.       end
  218.       $game_system.se_play($data_system.decision_se)
  219.       @buy_window.active = false
  220.       @status_window.index = 0
  221.       @status_window.active = true
  222.     end
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ● 刷新画面 (状态窗口激活的情况下)
  226.   #--------------------------------------------------------------------------
  227.   def update_status
  228.     if Input.trigger?(Input::B)
  229.       $game_system.se_play($data_system.cancel_se)
  230.       @status_window.active = false
  231.       @status_window.index = -1
  232.       @buy_window.active = true
  233.     end
  234.     if Input.trigger?(Input::C)
  235.        @status_window.active = false
  236.        @command_window.visible = true
  237.        @command_window.active = true
  238.     end   
  239.   end
  240. end
  241. #==============================================================================
  242. # ■ Window_MShopStatus
  243. #------------------------------------------------------------------------------
  244. #  特技商店画面、显示物品所持数与角色装备的窗口。
  245. #==============================================================================
  246. class Window_MShopStatus < Window_Selectable
  247.   #--------------------------------------------------------------------------
  248.   # ● 初始化对像
  249.   #--------------------------------------------------------------------------
  250.   def initialize
  251.     super(368, 64, 272, 352)
  252.     self.contents = Bitmap.new(width - 32, height - 32)
  253.     self.contents.font.size = 18
  254.     @skill = nil
  255.     refresh
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 刷新
  259.   #--------------------------------------------------------------------------
  260.   def refresh
  261.     self.contents.clear
  262.     for i in 0...$game_party.actors.size
  263.       actor = $game_party.actors[i]
  264.       draw_actor_graphic(actor,12,80*i+64)
  265.       self.contents.font.color = system_color
  266.       self.contents.draw_text(44, 80*i, 240, 32, actor.name)
  267.       self.contents.draw_text(0, 80*i , 240-20,32,"等级",2)
  268.       self.contents.font.color = normal_color
  269.       self.contents.draw_text(0, 80*i, 240, 32, actor.level.to_s , 2)
  270.       self.contents.font.color = system_color
  271.       self.contents.draw_text(44, 80*i+22, 45, 32, $data_system.words.hp)
  272.       self.contents.font.color = normal_color
  273.       self.contents.draw_text(44, 80*i+22, 90, 32, actor.maxhp.to_s,2)
  274.       self.contents.font.color = system_color
  275.       self.contents.draw_text(150, 80*i+22, 45, 32, $data_system.words.sp)
  276.       self.contents.font.color = normal_color
  277.       self.contents.draw_text(150, 80*i+22, 90, 32, actor.maxsp.to_s,2)      
  278.       if actor.skill_learn?(@skill.id)
  279.         self.contents.font.color = Color.new(255,255,255,128)
  280.         self.contents.draw_text(44, 80*i+44, 196, 32, "⊙此项特技已经学习⊙",2)        
  281.       else
  282.         self.contents.font.color = Color.new(255,255,0,255)
  283.         self.contents.draw_text(44, 80*i+44, 240, 32, "★此项特技尚未学习★")
  284.       end
  285.     end
  286.     @item_max = $game_party.actors.size
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ● 设置物品
  290.   #     item : 新的物品
  291.   #--------------------------------------------------------------------------
  292.   def skill=(skill)
  293.     if @skill != skill
  294.       @skill = skill
  295.       refresh
  296.     end
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ● 刷新光标矩形
  300.   #--------------------------------------------------------------------------
  301.   def update_cursor_rect
  302.     if @index < 0
  303.       self.cursor_rect.empty
  304.     else
  305.       self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
  306.     end
  307.   end
  308. end
  309. #==============================================================================
  310. # ■ Window_MShopBuy
  311. #------------------------------------------------------------------------------
  312. #  特技商店画面、浏览显示可以购买的商品的窗口。
  313. #==============================================================================
  314. class Window_MShopBuy < Window_Selectable
  315.   #--------------------------------------------------------------------------
  316.   # ● 初始化对像
  317.   #     shop_goods : 商品
  318.   #--------------------------------------------------------------------------
  319.   def initialize(id)
  320.     super(0, 64, 368, 416)
  321.     @id = id
  322.     refresh
  323.     self.index = 0
  324.   end
  325.   #--------------------------------------------------------------------------
  326.   # ● 获取物品
  327.   #--------------------------------------------------------------------------
  328.   def skill
  329.     return @data[self.index]
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● 刷新
  333.   #--------------------------------------------------------------------------
  334.   def refresh
  335.     if self.contents != nil
  336.       self.contents.dispose
  337.       self.contents = nil
  338.     end
  339.     @data = []
  340.     for skill_id in @id
  341.       skill = $data_skills[skill_id]
  342.       if skill != nil
  343.         @data.push(skill)
  344.       end
  345.     end
  346.     @item_max = @data.size
  347.     if @item_max > 0
  348.       self.contents = Bitmap.new(width - 32, row_max * 32)
  349.       for i in 0...@item_max
  350.         draw_item(i)
  351.       end
  352.     end
  353.   end
  354.   #--------------------------------------------------------------------------
  355.   # ● 描绘羡慕
  356.   #     index : 项目编号
  357.   #--------------------------------------------------------------------------
  358.   def draw_item(index)
  359.     skill = @data[index]
  360.     # 除此之外的情况设置为无效文字色
  361.     if skill.price <= $mShop_gold
  362.       self.contents.font.color = normal_color
  363.     else
  364.       self.contents.font.color = disabled_color
  365.     end
  366.     x = 4
  367.     y = index * 32
  368.     rect = Rect.new(x, y, self.width - 32, 32)
  369.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  370.     bitmap = RPG::Cache.icon(skill.icon_name)
  371.     opacity = self.contents.font.color == normal_color ? 255 : 128
  372.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  373.     self.contents.draw_text(x + 28, y, 212, 32, skill.name, 0)
  374.     self.contents.draw_text(x + 240, y, 88, 32, skill.price.to_s, 2)
  375.   end
  376.   #--------------------------------------------------------------------------
  377.   # ● 刷新帮助文本
  378.   #--------------------------------------------------------------------------
  379.   def update_help
  380.     @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  381.   end
  382. end
  383. #==============================================================================
  384. # ■ RPG原装定义
  385. #==============================================================================
  386. module RPG
  387.   class Skill
  388.     def description
  389.       description = @description.split(/@/)[0]
  390.       return description != nil ? description : ''
  391.     end
  392.     def price
  393.       price = @description.split(/@/)[1]
  394.       return price != nil ? price.to_i : 0
  395.     end
  396.   end
  397. end
复制代码
这个是魔法商店脚本~~~~~我想要它在菜单中显示现在有多少“魔灵”和金钱一样在菜单中显示出来比如: @gold_window = Window_Gold.new
    @gold_window.x = 470
    @gold_window.y = 10(本人脚本盲大家帮下{/hx})
作者: cZooCz    时间: 2008-1-8 21:38
标题: 魔法商店
  1. #==============================================================================
  2. # ■ 本脚本源自www.66rpg.com,转载与使用请保留此信息
  3. #==============================================================================

  4. #——以下是一些自定义的内容

  5. $mShop_use_1 = "灵魄"    #——这项是购买魔法特技的货币的名称,如“灵魄”、“金钱”

  6. $mShop_use_2 = "特斯拉"  #——这项是购买魔法特技的货币单位,如“点”、“¥”

  7. $mShop_use_variable = 1  #——这项是购买魔法特技时消耗的变量编号,如果=0 则是消耗金钱

  8. $mShop_Window_Opacity = 200  #——这项是窗口透明度

  9. #==============================================================================
  10. # ■ Window_MGold
  11. #------------------------------------------------------------------------------
  12. #  显示金钱的窗口。
  13. #==============================================================================
  14. class Window_MGold < Window_Base
  15.   #--------------------------------------------------------------------------
  16.   # ● 初始化窗口
  17.   #--------------------------------------------------------------------------
  18.   def initialize
  19.     super(0, 0, 272, 64)
  20.     self.contents = Bitmap.new(width - 32, height - 32)
  21.     refresh
  22.   end
  23.   #--------------------------------------------------------------------------
  24.   # ● 刷新
  25.   #--------------------------------------------------------------------------
  26.   def refresh
  27.     self.contents.clear
  28.     self.contents.font.color = system_color
  29.     self.contents.draw_text(0, 0 , 240,32 ,$mShop_use_1)
  30.     self.contents.font.color = normal_color
  31.     self.contents.draw_text(0, 0, 240-contents.text_size($mShop_use_2).width-6, 32, $mShop_gold.to_s, 2)
  32.     self.contents.font.color = system_color
  33.     self.contents.draw_text(0, 0, 240, 32, $mShop_use_2, 2)
  34.   end
  35. end
  36. #==============================================================================
  37. # ■ Scene_MShop
  38. #------------------------------------------------------------------------------
  39. #  处理特技商店画面的类。
  40. #==============================================================================
  41. class Scene_MShop
  42.   #--------------------------------------------------------------------------
  43.   # ● 初始化
  44.   #--------------------------------------------------------------------------
  45.   def initialize(id)
  46.     @id = id
  47.   end  
  48.   #--------------------------------------------------------------------------
  49.   # ● 主处理
  50.   #--------------------------------------------------------------------------
  51.   def main
  52.     screen = Spriteset_Map.new
  53.     if $mShop_use_variable == 0
  54.       $mShop_gold = $game_party.gold
  55.     else
  56.       $mShop_gold = $game_variables[$mShop_use_variable]
  57.     end
  58.     # 生成帮助窗口
  59.     @help_window = Window_Help.new
  60.     @help_window.opacity = $mShop_Window_Opacity

  61.     # 生成金钱窗口
  62.     @gold_window = Window_MGold.new
  63.     @gold_window.x = 368
  64.     @gold_window.y = 416
  65.     @gold_window.opacity = $mShop_Window_Opacity
  66.     # 生成购买窗口
  67.     @buy_window = Window_MShopBuy.new(@id)
  68.     @buy_window.active = true
  69.     @buy_window.visible = true
  70.     @buy_window.help_window = @help_window
  71.     @buy_window.opacity = $mShop_Window_Opacity
  72.     # 生成状态窗口
  73.     @status_window = Window_MShopStatus.new
  74.     @status_window.visible = true
  75.     @status_window.active = false
  76.     @status_window.opacity = $mShop_Window_Opacity
  77.         
  78.     #生成指令窗口
  79.     @command_window = Window_Command.new(160,["学会","遗忘"])
  80.     @command_window.x = 320
  81.     @command_window.y = 240
  82.     @command_window.z = 500
  83.     @command_window.visible = false
  84.     @command_window.active = false
  85.     @command_window.opacity = $mShop_Window_Opacity
  86.    
  87.     # 执行过渡
  88.     Graphics.transition
  89.     # 主循环
  90.     loop do
  91.       # 刷新游戏画面
  92.       Graphics.update
  93.       # 刷新输入信息
  94.       Input.update
  95.       # 刷新画面
  96.       update
  97.       # 如果画面切换的话就中断循环
  98.       if $scene != self
  99.         break
  100.       end
  101.     end
  102.     # 准备过渡
  103.     Graphics.freeze
  104.     # 释放窗口
  105.     @help_window.dispose
  106.     #@mhelp_window.dispose
  107.     @gold_window.dispose
  108.     @buy_window.dispose
  109.     @status_window.dispose
  110.     @command_window.dispose
  111.     screen.dispose
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 刷新画面
  115.   #--------------------------------------------------------------------------
  116.   def update
  117.     # 刷新窗口
  118.     @help_window.update
  119.     #@mhelp_window.update
  120.     @gold_window.update
  121.     @buy_window.update
  122.     @status_window.update
  123.     @command_window.update
  124.     # 购买窗口激活的情况下: 调用 update_buy
  125.     if @buy_window.active
  126.       update_buy
  127.       return
  128.     end
  129.     if @status_window.active
  130.       update_status
  131.       return
  132.     end
  133.     if @command_window.active
  134.       update_command
  135.       return
  136.     end
  137.    
  138.   end
  139.   
  140.   #--------------------------------------------------------------------------
  141.   # ● 刷新画面 (指令窗口激活的情况下)
  142.   #--------------------------------------------------------------------------
  143.   def update_command
  144.     if Input.trigger?(Input::B)
  145.       $game_system.se_play($data_system.cancel_se)
  146.       @status_window.index = -1
  147.       @command_window.active = false
  148.       @command_window.visible = false
  149.       @buy_window.active = true
  150.       return
  151.     end
  152.     if Input.trigger?(Input::C)
  153.       if @command_window.index == 0      
  154.         if $game_party.actors[@status_window.index].skill_learn?(@skill.id)
  155.           $game_system.se_play($data_system.cancel_se)
  156.           return
  157.         else
  158.           $game_system.se_play($data_system.decision_se)
  159.           if $mShop_use_variable == 0
  160.             $game_party.gain_gold([email protected])
  161.             $mShop_gold -= @skill.price
  162.           else
  163.             $game_variables[$mShop_use_variable] -= @skill.price
  164.             $mShop_gold -= @skill.price
  165.           end
  166.           $game_party.actors[@status_window.index].learn_skill(@skill.id)
  167.           @gold_window.refresh
  168.           @buy_window.refresh
  169.           @status_window.refresh
  170.           @status_window.index = -1
  171.           @buy_window.active = true
  172.           @command_window.active = false
  173.           @command_window.visible = false   
  174.         end
  175.       elsif  @command_window.index == 1
  176.         if $game_party.actors[@status_window.index].skill_learn?(@skill.id) == false
  177.           $game_system.se_play($data_system.cancel_se)
  178.           return
  179.         else
  180.           $game_system.se_play($data_system.decision_se)
  181.           if $mShop_use_variable == 0
  182.             $game_party.gain_gold(@skill.price/2)  #<-遗忘价格为学习的一半,/2的地方相同
  183.             $mShop_gold += @skill.price/2
  184.           else
  185.             $game_variables[$mShop_use_variable] += @skill.price/2
  186.             $mShop_gold += @skill.price/2
  187.           end
  188.           $game_party.actors[@status_window.index].forget_skill(@skill.id)
  189.           @gold_window.refresh
  190.           @buy_window.refresh
  191.           @status_window.refresh
  192.           @status_window.index = -1
  193.           @buy_window.active = true
  194.           @command_window.active = false
  195.           @command_window.visible = false
  196.         end
  197.       end
  198.       return
  199.     end
  200.   end
  201.   
  202.   #--------------------------------------------------------------------------
  203.   # ● 刷新画面 (购买窗口激活的情况下)
  204.   #--------------------------------------------------------------------------
  205.   def update_buy
  206.     @status_window.skill = @buy_window.skill
  207.     if Input.trigger?(Input::B)
  208.       $game_system.se_play($data_system.cancel_se)
  209.       $scene = Scene_Map.new
  210.       return
  211.     end
  212.     if Input.trigger?(Input::C)
  213.       @skill = @buy_window.skill
  214.       if @skill == nil #or @skill.price > $mShop_gold  
  215.         $game_system.se_play($data_system.buzzer_se)
  216.         return
  217.       end
  218.       $game_system.se_play($data_system.decision_se)
  219.       @buy_window.active = false
  220.       @status_window.index = 0
  221.       @status_window.active = true
  222.     end
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ● 刷新画面 (状态窗口激活的情况下)
  226.   #--------------------------------------------------------------------------
  227.   def update_status
  228.     if Input.trigger?(Input::B)
  229.       $game_system.se_play($data_system.cancel_se)
  230.       @status_window.active = false
  231.       @status_window.index = -1
  232.       @buy_window.active = true
  233.     end
  234.     if Input.trigger?(Input::C)
  235.        @status_window.active = false
  236.        @command_window.visible = true
  237.        @command_window.active = true
  238.     end   
  239.   end
  240. end
  241. #==============================================================================
  242. # ■ Window_MShopStatus
  243. #------------------------------------------------------------------------------
  244. #  特技商店画面、显示物品所持数与角色装备的窗口。
  245. #==============================================================================
  246. class Window_MShopStatus < Window_Selectable
  247.   #--------------------------------------------------------------------------
  248.   # ● 初始化对像
  249.   #--------------------------------------------------------------------------
  250.   def initialize
  251.     super(368, 64, 272, 352)
  252.     self.contents = Bitmap.new(width - 32, height - 32)
  253.     self.contents.font.size = 18
  254.     @skill = nil
  255.     refresh
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 刷新
  259.   #--------------------------------------------------------------------------
  260.   def refresh
  261.     self.contents.clear
  262.     for i in 0...$game_party.actors.size
  263.       actor = $game_party.actors[i]
  264.       draw_actor_graphic(actor,12,80*i+64)
  265.       self.contents.font.color = system_color
  266.       self.contents.draw_text(44, 80*i, 240, 32, actor.name)
  267.       self.contents.draw_text(0, 80*i , 240-20,32,"等级",2)
  268.       self.contents.font.color = normal_color
  269.       self.contents.draw_text(0, 80*i, 240, 32, actor.level.to_s , 2)
  270.       self.contents.font.color = system_color
  271.       self.contents.draw_text(44, 80*i+22, 45, 32, $data_system.words.hp)
  272.       self.contents.font.color = normal_color
  273.       self.contents.draw_text(44, 80*i+22, 90, 32, actor.maxhp.to_s,2)
  274.       self.contents.font.color = system_color
  275.       self.contents.draw_text(150, 80*i+22, 45, 32, $data_system.words.sp)
  276.       self.contents.font.color = normal_color
  277.       self.contents.draw_text(150, 80*i+22, 90, 32, actor.maxsp.to_s,2)      
  278.       if actor.skill_learn?(@skill.id)
  279.         self.contents.font.color = Color.new(255,255,255,128)
  280.         self.contents.draw_text(44, 80*i+44, 196, 32, "⊙此项特技已经学习⊙",2)        
  281.       else
  282.         self.contents.font.color = Color.new(255,255,0,255)
  283.         self.contents.draw_text(44, 80*i+44, 240, 32, "★此项特技尚未学习★")
  284.       end
  285.     end
  286.     @item_max = $game_party.actors.size
  287.   end
  288.   #--------------------------------------------------------------------------
  289.   # ● 设置物品
  290.   #     item : 新的物品
  291.   #--------------------------------------------------------------------------
  292.   def skill=(skill)
  293.     if @skill != skill
  294.       @skill = skill
  295.       refresh
  296.     end
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   # ● 刷新光标矩形
  300.   #--------------------------------------------------------------------------
  301.   def update_cursor_rect
  302.     if @index < 0
  303.       self.cursor_rect.empty
  304.     else
  305.       self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
  306.     end
  307.   end
  308. end
  309. #==============================================================================
  310. # ■ Window_MShopBuy
  311. #------------------------------------------------------------------------------
  312. #  特技商店画面、浏览显示可以购买的商品的窗口。
  313. #==============================================================================
  314. class Window_MShopBuy < Window_Selectable
  315.   #--------------------------------------------------------------------------
  316.   # ● 初始化对像
  317.   #     shop_goods : 商品
  318.   #--------------------------------------------------------------------------
  319.   def initialize(id)
  320.     super(0, 64, 368, 416)
  321.     @id = id
  322.     refresh
  323.     self.index = 0
  324.   end
  325.   #--------------------------------------------------------------------------
  326.   # ● 获取物品
  327.   #--------------------------------------------------------------------------
  328.   def skill
  329.     return @data[self.index]
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● 刷新
  333.   #--------------------------------------------------------------------------
  334.   def refresh
  335.     if self.contents != nil
  336.       self.contents.dispose
  337.       self.contents = nil
  338.     end
  339.     @data = []
  340.     for skill_id in @id
  341.       skill = $data_skills[skill_id]
  342.       if skill != nil
  343.         @data.push(skill)
  344.       end
  345.     end
  346.     @item_max = @data.size
  347.     if @item_max > 0
  348.       self.contents = Bitmap.new(width - 32, row_max * 32)
  349.       for i in 0...@item_max
  350.         draw_item(i)
  351.       end
  352.     end
  353.   end
  354.   #--------------------------------------------------------------------------
  355.   # ● 描绘羡慕
  356.   #     index : 项目编号
  357.   #--------------------------------------------------------------------------
  358.   def draw_item(index)
  359.     skill = @data[index]
  360.     # 除此之外的情况设置为无效文字色
  361.     if skill.price <= $mShop_gold
  362.       self.contents.font.color = normal_color
  363.     else
  364.       self.contents.font.color = disabled_color
  365.     end
  366.     x = 4
  367.     y = index * 32
  368.     rect = Rect.new(x, y, self.width - 32, 32)
  369.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  370.     bitmap = RPG::Cache.icon(skill.icon_name)
  371.     opacity = self.contents.font.color == normal_color ? 255 : 128
  372.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  373.     self.contents.draw_text(x + 28, y, 212, 32, skill.name, 0)
  374.     self.contents.draw_text(x + 240, y, 88, 32, skill.price.to_s, 2)
  375.   end
  376.   #--------------------------------------------------------------------------
  377.   # ● 刷新帮助文本
  378.   #--------------------------------------------------------------------------
  379.   def update_help
  380.     @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  381.   end
  382. end
  383. #==============================================================================
  384. # ■ RPG原装定义
  385. #==============================================================================
  386. module RPG
  387.   class Skill
  388.     def description
  389.       description = @description.split(/@/)[0]
  390.       return description != nil ? description : ''
  391.     end
  392.     def price
  393.       price = @description.split(/@/)[1]
  394.       return price != nil ? price.to_i : 0
  395.     end
  396.   end
  397. end
复制代码
这个是魔法商店脚本~~~~~我想要它在菜单中显示现在有多少“魔灵”和金钱一样在菜单中显示出来比如: @gold_window = Window_Gold.new
    @gold_window.x = 470
    @gold_window.y = 10(本人脚本盲大家帮下{/hx})
作者: 雪风    时间: 2008-1-8 21:49
在Scene_Menu菜单画面类里找@gold_window = Window_Gold.new

自己效仿下金钱窗口就行了

# 生成金钱窗口
    @gold_window = Window_Gold.new
    @gold_window.x = 470
    @gold_window.y = 10
下面自己加段
# 生成魔灵窗口
    @mgold_window = Window_MGold.new
    @mgold_window.x = xxx
    @mgold_window.y = xxx

X和Y自己调节  


# 释放窗口
@gold_window.dispose
下面自己跟着加
@mgold_window.dispose


# 刷新窗口
@gold_window.update

下面加
@mgold_window.update


基本就可以了

脚本偶也才学   不过跟着已有的脚本  举一反三  还是不难





作者: cZooCz    时间: 2008-1-8 22:06
呵呵~~~~~只显示没用啊~~~我或得魔灵它不显示数值~~~{/gg}{/pz}
作者: cZooCz    时间: 2008-1-9 22:11
没人吗~~~请教高手@@!!
作者: 精灵使者    时间: 2008-1-9 23:05
不显示数值的原因是不是你根本没有获得那个魔灵呢?
作者: cZooCz    时间: 2008-1-10 03:43
获得了~~~~~我去魔法商店显示999999魔灵但在菜单中就有个窗口上面写着单单魔灵2字其他数值都没显示




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