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

Project1

 找回密码
 注册会员
搜索
查看: 1162|回复: 1
打印 上一主题 下一主题

学习点数来学习技能,那个购买技能的商店怎么出来?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
2 小时
注册时间
2008-3-10
帖子
74
跳转到指定楼层
1
发表于 2008-10-25 08:20:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

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

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

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

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

  5. $mShop_Window_Opacity = 160  #——这项是窗口透明度

  6. #==============================================================================
  7. # ■ Scene_MShop
  8. #------------------------------------------------------------------------------
  9. #  处理特技商店画面的类。
  10. #==============================================================================
  11. class Scene_MShop
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化
  14.   #--------------------------------------------------------------------------
  15.   def initialize(actor_id = 1)
  16.     @actor = $game_party.actors[actor_id - 1]
  17.     @id = []
  18.     if $mShop_use_variable[actor_id - 1] == 0
  19.       $mShop_gold = $game_party.gold
  20.     else
  21.       $mShop_gold = $game_variables[$mShop_use_variable[@actor.id - 1]]
  22.     end
  23.     for i in 0... $data_classes[@actor.class_id].learnings.size
  24.       @id.push($data_classes[@actor.class_id].learnings[i].skill_id)
  25.     end
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 主处理
  29.   #--------------------------------------------------------------------------
  30.   def main
  31.     screen = Spriteset_Map.new
  32.     title_win = Window_Base.new(480,0,160,64)
  33.     title_win.windowskin = RPG::Cache.windowskin("wskin_m")
  34.     title_win.contents = Bitmap.new(title_win.width - 32, title_win.height - 32)
  35.     title_win.contents.draw_text(0,0,240,32,"学习技能")
  36.     # 生成帮助窗口
  37.     @help_window = Window_Help.new
  38.     @help_window.opacity = $mShop_Window_Opacity
  39.     # 生成金钱窗口
  40.     @gold_window = Window_MGold.new
  41.     @gold_window.x = 0
  42.     @gold_window.y = 416
  43.     @gold_window.opacity = $mShop_Window_Opacity
  44.     # 生成购买窗口
  45.     @buy_window = Window_MShopBuy.new(@id)
  46.     @buy_window.active = false
  47.     @buy_window.visible = false
  48.     @buy_window.help_window = @help_window
  49.     @buy_window.opacity = $mShop_Window_Opacity
  50.     # 生成状态窗口
  51.     @status_window = Window_MShopStatus.new
  52.     @status_window.visible = true
  53.     @status_window.active = true
  54.     @status_window.opacity = $mShop_Window_Opacity
  55.     @dummy_window = Window_Base.new(272, 64, 368, 416)
  56.     @dummy_window.opacity = 160
  57.     # 执行过渡
  58.     Graphics.transition
  59.     # 主循环
  60.     loop do
  61.       # 刷新游戏画面
  62.       Graphics.update
  63.       # 刷新输入信息
  64.       Input.update
  65.       # 刷新画面
  66.       update
  67.       # 如果画面切换的话就中断循环
  68.       if $scene != self
  69.         break
  70.       end
  71.     end
  72.     # 准备过渡
  73.     Graphics.freeze
  74.     # 释放窗口
  75.     @help_window.dispose
  76.     @gold_window.dispose
  77.     @buy_window.dispose
  78.     @status_window.dispose
  79.     @dummy_window.dispose
  80.     title_win.dispose
  81.     screen.dispose
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 刷新画面
  85.   #--------------------------------------------------------------------------
  86.   def update
  87.     # 刷新窗口
  88.     @help_window.update
  89.     @gold_window.update
  90.     @buy_window.update
  91.     @status_window.update
  92.     # 购买窗口激活的情况下: 调用 update_buy
  93.     if @buy_window.active
  94.       update_buy
  95.       return
  96.     end
  97.     if @status_window.active
  98.       update_status
  99.       return
  100.     end
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 刷新画面 (右侧窗口激活的情况下)
  104.   #--------------------------------------------------------------------------
  105.   def update_buy
  106.     @status_window.skill = @buy_window.skill
  107.     if Input.trigger?(Input::B)
  108.       $game_system.se_play($data_system.cancel_se)
  109.         @buy_window.active = false
  110.         @buy_window.index = -1
  111.         @buy_window.visible = false
  112.         @dummy_window.visible = true
  113.         @status_window.active = true
  114.        return
  115.     end
  116.     if Input.trigger?(Input::C)
  117.       @skill = @buy_window.skill
  118.       if @skill == nil or @skill.price > $mShop_gold
  119.         $game_system.se_play($data_system.buzzer_se)
  120.         return
  121.       end
  122.       can_learn=false
  123.       for j in $data_classes[$game_party.actors[@status_window.index].class_id].learnings
  124.         if j.skill_id == @skill.id
  125.           can_learn=true
  126.         end
  127.       end
  128.       if can_learn==false
  129.         $game_system.se_play($data_system.cancel_se)
  130.         return
  131.       end
  132.       if $game_party.actors[@status_window.index].skill_learn?(@skill.id)
  133.         $game_system.se_play($data_system.cancel_se)
  134.         return
  135.       else
  136.         $game_system.se_play($data_system.decision_se)
  137.         if $mShop_use_variable[@actor.id - 1] == 0
  138.           $game_party.gain_gold([email protected])
  139.           $mShop_gold -= @skill.price
  140.         else
  141.           $game_variables[$mShop_use_variable[@actor.id - 1]] -= @skill.price
  142.           $mShop_gold -= @skill.price
  143.         end
  144.         $game_party.actors[@status_window.index].learn_skill(@skill.id)
  145.         $game_system.se_play($data_system.decision_se)
  146.     #    @buy_window.active = false
  147.     #    @buy_window.index = -1
  148.     #    @status_window.active = true
  149.         @gold_window.refresh
  150.         @buy_window.refresh
  151.         @status_window.refresh
  152.       end
  153.     end
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 刷新画面 (状态窗口激活的情况下)
  157.   #--------------------------------------------------------------------------
  158.   def update_status
  159.     if Input.trigger?(Input::B)
  160.       $game_system.se_play($data_system.cancel_se)
  161.       $scene = Scene_Menu.new(4) #---改成menu
  162.     end
  163.     if Input.trigger?(Input::C)
  164.       @actor = $game_party.actors[@status_window.index]
  165.       @id = []
  166.       for i in 0... $data_classes[@actor.class_id].learnings.size
  167.         @id[i] = $data_classes[@actor.class_id].learnings[i].skill_id
  168.       end
  169.       @buy_window.dispose
  170.       @buy_window = Window_MShopBuy.new(@id)
  171.       @buy_window.help_window = @help_window
  172.       if $mShop_use_variable[@actor.id - 1] == 0
  173.         $mShop_gold = $game_party.gold
  174.       else
  175.         $mShop_gold = $game_variables[$mShop_use_variable[@actor.id - 1]]
  176.       end
  177.       @buy_window.opacity = $mShop_Window_Opacity
  178.       @status_window.refresh
  179.       @status_window.active = false
  180.       @buy_window.active = true
  181.       @buy_window.visible = true
  182.       @dummy_window.visible = false
  183.       @buy_window.index = 0
  184.       @gold_window.refresh
  185.     end
  186.   end
  187. end
复制代码


  1. #==============================================================================
  2. # ■ Window_MShopStatus
  3. #------------------------------------------------------------------------------
  4. #  特技商店画面、显示物品所持数与角色装备的窗口。
  5. #==============================================================================
  6. class Window_MShopStatus < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 64, 272, 352)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     self.contents.font.size = 18
  14.     @skill = nil
  15.     self.index = 0
  16.     refresh
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 刷新
  20.   #--------------------------------------------------------------------------
  21.   def refresh
  22.     self.contents.clear
  23.     for i in 0...$game_party.actors.size
  24.       actor = $game_party.actors[i]
  25.       draw_actor_graphic(actor,12,80*i+64)
  26.       self.contents.font.color = system_color
  27.       self.contents.draw_text(44, 80*i, 240, 32, actor.name)
  28.       self.contents.draw_text(0, 80*i , 240-20,32,"等级",2)
  29.       self.contents.font.color = normal_color
  30.       self.contents.draw_text(0, 80*i, 240, 32, actor.level.to_s , 2)
  31.       self.contents.font.color = system_color
  32.       self.contents.draw_text(44, 80*i+22, 45, 32, $data_system.words.hp)
  33.       self.contents.font.color = normal_color
  34.       self.contents.draw_text(44, 80*i+22, 90, 32, actor.maxhp.to_s,2)
  35.       self.contents.font.color = system_color
  36.       self.contents.draw_text(150, 80*i+22, 45, 32, $data_system.words.sp)
  37.       self.contents.font.color = normal_color
  38.       self.contents.draw_text(150, 80*i+22, 90, 32, actor.maxsp.to_s,2)   
  39.       can_learn=false
  40.       for j in $data_classes[actor.class_id].learnings
  41.         if j.skill_id == @skill.id
  42.           can_learn=true
  43.         end
  44.       end
  45.       if can_learn == true
  46.         if actor.skill_learn?(@skill.id)
  47.           self.contents.font.color = Color.new(255,255,255,128)
  48.           self.contents.draw_text(44, 80*i+44, 196, 32, "此项特技已经学习",2)      
  49.         else
  50.           self.contents.font.color = Color.new(255,255,0,255)
  51.           self.contents.draw_text(44, 80*i+44, 240, 32, "此项特技尚未学习")
  52.         end
  53.       else
  54.         self.contents.font.color = Color.new(255,255,255,128)
  55.         self.contents.draw_text(44, 80*i+44, 196, 32, "此项特技无法学习",2)      
  56.       end
  57.     end
  58.     @item_max = $game_party.actors.size
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 设置物品
  62.   #     item : 新的物品
  63.   #--------------------------------------------------------------------------
  64.   def skill=(skill)
  65.     if @skill != skill
  66.       @skill = skill
  67.       refresh
  68.     end
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 刷新光标矩形
  72.   #--------------------------------------------------------------------------
  73.   def update_cursor_rect
  74.     if @index < 0
  75.       self.cursor_rect.empty
  76.     else
  77.       self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
  78.     end
  79.   end
  80. end

  81. #==============================================================================
  82. # ■ Window_MShopBuy
  83. #------------------------------------------------------------------------------
  84. #  特技商店画面、浏览显示可以购买的商品的窗口。
  85. #==============================================================================
  86. class Window_MShopBuy < Window_Selectable
  87.   #--------------------------------------------------------------------------
  88.   # ● 初始化对像
  89.   #     shop_goods : 商品
  90.   #--------------------------------------------------------------------------
  91.   def initialize(id)
  92.     super(272, 64, 368, 416)
  93.     @id = id
  94.     refresh
  95. #    self.index = 0
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 获取物品
  99.   #--------------------------------------------------------------------------
  100.   def skill
  101.     return @data[self.index]
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 刷新
  105.   #--------------------------------------------------------------------------
  106.   def refresh
  107.     if self.contents != nil
  108.       self.contents.dispose
  109.       self.contents = nil
  110.     end
  111.     @data = []
  112.     for skill_id in @id
  113.       skill = $data_skills[skill_id]
  114.       if skill != nil
  115.         @data.push(skill)
  116.       end
  117.     end
  118.     @item_max = @data.size
  119.     if @item_max > 0
  120.       self.contents = Bitmap.new(width - 32, row_max * 32)
  121.       for i in 0...@item_max
  122.         draw_item(i)
  123.       end
  124.     end
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 描绘羡慕
  128.   #     index : 项目编号
  129.   #--------------------------------------------------------------------------
  130.   def draw_item(index)
  131.     skill = @data[index]
  132.     # 除此之外的情况设置为无效文字色
  133.     if skill.price <= $mShop_gold
  134.       self.contents.font.color = normal_color
  135.     else
  136.       self.contents.font.color = disabled_color
  137.     end
  138.     x = 4
  139.     y = index * 32
  140.     rect = Rect.new(x, y, self.width - 32, 32)
  141.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  142.     bitmap = RPG::Cache.icon(skill.icon_name)
  143.     opacity = self.contents.font.color == normal_color ? 255 : 128
  144.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  145.     self.contents.draw_text(x + 28, y, 212, 32, skill.name, 0)
  146.     self.contents.draw_text(x + 240, y, 88, 32, skill.price.to_s, 2)
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ● 刷新帮助文本
  150.   #--------------------------------------------------------------------------
  151.   def update_help
  152.     @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  153.   end
  154. end

  155. #==============================================================================
  156. # ■ Window_MGold
  157. #------------------------------------------------------------------------------
  158. #  显示金钱的窗口。
  159. #==============================================================================
  160. class Window_MGold < Window_Base
  161.   #--------------------------------------------------------------------------
  162.   # ● 初始化窗口
  163.   #--------------------------------------------------------------------------
  164.   def initialize
  165.     super(0, 0, 272, 64)
  166.     self.contents = Bitmap.new(width - 32, height - 32)
  167.     refresh
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● 刷新
  171.   #--------------------------------------------------------------------------
  172.   def refresh
  173.     self.contents.clear
  174.     self.contents.font.color = system_color
  175.     self.contents.draw_text(0, 0 , 240,32 ,$mShop_use_1)
  176.     self.contents.font.color = normal_color
  177.     self.contents.draw_text(0, 0, 240-contents.text_size($mShop_use_2).width-6, 32, $mShop_gold.to_s, 2)
  178.     self.contents.font.color = system_color
  179.     self.contents.draw_text(0, 0, 240, 32, $mShop_use_2, 2)
  180.   end
  181. end
复制代码





我用了这两个脚本但我不会怎么用技能的商店...不知道怎么呼叫出来..

   谁可以把脚本帖给我就可以了...

   我听别人说是在技能的后面
加上
,
,的后面是数字.也就是学习技能要求的点数...但是要怎么呼叫出商店..
谁告诉我..谢谢了.

此贴于 2008-10-26 12:47:45 被版主darkten提醒,请楼主看到后对本贴做出回应。
版务信息:版主帮忙结贴~

Lv1.梦旅人

綾川司の姫様<

梦石
0
星屑
50
在线时间
796 小时
注册时间
2007-12-20
帖子
4520

贵宾第3届短篇游戏大赛R剧及RMTV组亚军

2
发表于 2008-10-25 08:26:56 | 只看该作者
$scene = Scene_MShop.new
系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~

生命即是责任。自己即是世界。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-22 17:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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