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

Project1

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

[已经解决] 求魔法技能商店的工程

[复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
182 小时
注册时间
2009-4-22
帖子
208
跳转到指定楼层
1
发表于 2013-12-14 21:38:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 gz29767562 于 2013-12-15 10:44 编辑

我试了很多次都没能成功实现魔法技能商店,不知道怎么用,希望大神能发个做好的工程给我研究下,谢谢


RUBY 代码复制
  1. #==============================================================================
  2. # RMVX魔法技能商店 Ver 2.0
  3. #==============================================================================
  4. # 作者: Nechigawara Sanzenin  翻译:一塌糊涂
  5. # 警告!! : 仅限RMVX使用!! 不支持RMXP!!
  6. #==============================================================================
  7. # RMVX版 魔法技能商店
  8. #==============================================================================
  9. #Version Log
  10. #==============================================================================
  11. #2.0 Add Level requirement - Change Hero Select Window
  12. #==============================================================================
  13. =begin
  14.  
  15. 使用方法:
  16.  
  17. 使用脚本  "$skill_shop =[Id of Skill]"  
  18. 用于设定可出售的技能.
  19. 使用脚本  "$scene = Scene_Skill_Shop.new"  
  20. 呼出魔法商店.
  21.  
  22. 举例:
  23. $skill_shop = [1,2,3,6,7]
  24. $scene = Scene_Skill_Shop.new
  25. 即,12367号技能出售,并且呼出该魔法商店
  26.  
  27. 可以在 "# Learn Text" 下面修改适合您游戏的文字.
  28. 可以在 "# Price Data" 下面修改技能价格.
  29. (Add Price Here处添加价格,未设定技能的默认出售价格为100)
  30. 可以在 "# Hero Data"  下面设定角色可习得的技能及学习必要等级.
  31.  
  32. 例如可以这样设定Hero Date
  33. [技能编号, 学习必要等级]
  34. =end
  35.  
  36. #==============================================================================
  37. #module SKILL_SHOP
  38. #==============================================================================
  39. module SKILL_SHOP
  40.   # Learn Text
  41.   How_Learn = "队伍信息"
  42.   Can_Learn = "可学习"
  43.   Can_Learn_Lv = "必要等级"
  44.   Cant_Learn = "不可学习"
  45.   Learnt = "已习得"
  46.   Teach = "学习技能"
  47.   Cancel = "离开"
  48.   # Price Data
  49.   PRICE = {
  50.   # for No Set Price
  51.   0 => 100,
  52.   # Add Price Here
  53.   1 => 150,
  54.   2 => 550,
  55.   3 => 450,
  56.   # End
  57.   }
  58.   # Hero Data
  59.   SKILL_BUY = {
  60.   # Add what skill can hero buy Here
  61.   # [ID of skill,Level]
  62.  
  63.   1 => [
  64.  
  65.   [1,4],[2,3],[3,1],
  66.  
  67.   ],
  68.  
  69.   2 => [
  70.  
  71.   [1,4],[2,3],[3,1],
  72.  
  73.   ],
  74.  
  75.   # End
  76.   }
  77.   # Add Price
  78.   def self.skill_price(id)
  79.     if PRICE.include?(id)
  80.       return PRICE[id]
  81.     else
  82.       return PRICE[0]
  83.     end
  84.   end
  85.   # Add Hero id
  86.   def self.skill_buy(id)
  87.     if SKILL_BUY.include?(id)
  88.       return SKILL_BUY[id]
  89.     else
  90.       return []
  91.     end
  92.   end
  93. end
  94. #==============================================================================
  95. #class Game_Actor
  96. #==============================================================================
  97. class Game_Actor < Game_Battler
  98.   def learn?(skill)
  99.     learn = skill_learn?(skill)
  100.     if learn == true
  101.       return false
  102.     else
  103.       return true
  104.     end
  105.   end
  106. end
  107. #==============================================================================
  108. #class Window_Skill_ShopBuy
  109. #==============================================================================
  110. class Window_Skill_ShopBuy < Window_Selectable
  111.   #--------------------------------------------------------------------------
  112.   def initialize(x, y)
  113.     super(x, y, 304, 304)
  114.     @skill_shop_goods = $skill_shop
  115.     refresh
  116.     self.index = 0
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   def skill
  120.     return @data[self.index]
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   def refresh
  124.     @data = []
  125.     for i in [email]0...@skill_shop_goods.size[/email]
  126.       skill = $data_skills[@skill_shop_goods[i]]
  127.       if skill != nil
  128.         @data.push(skill)
  129.       end
  130.     end
  131.     @item_max = @data.size
  132.     create_contents
  133.     for i in 0...@item_max
  134.       draw_item(i)
  135.     end
  136.   end
  137.   #--------------------------------------------------------------------------
  138.   def draw_item(index)
  139.     skill = @data[index]
  140.     price = SKILL_SHOP.skill_price(skill.id)
  141.     enabled = (price <= $game_party.gold)
  142.     rect = item_rect(index)
  143.     self.contents.clear_rect(rect)
  144.     draw_item_name(skill, rect.x, rect.y, enabled)
  145.     rect.width -= 4
  146.     self.contents.draw_text(rect, price, 2)
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   def update_help
  150.     @help_window.set_text(skill == nil ? "" : skill.description)
  151.   end
  152. end
  153. #==============================================================================
  154. #class Window_Skill_ShopStatus
  155. #==============================================================================
  156. class Window_Skill_ShopStatus < Window_Selectable
  157.   #--------------------------------------------------------------------------
  158.   def initialize(x, y)
  159.     super(x, y, 240, 304)
  160.     @item = nil
  161.     refresh
  162.     self.active = false
  163.     self.index = -1
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   def refresh
  167.     self.contents.clear
  168.     @item_max = $game_party.members.size
  169.     if @item != nil
  170.       self.contents.font.color = system_color
  171.       self.contents.draw_text(4, 0, 200, WLH, SKILL_SHOP::How_Learn)
  172.       for actor in $game_party.members
  173.         x = 4
  174.         y = WLH * (2 + actor.index * 2)
  175.         draw_actor_can_learn(actor, x, y)
  176.       end
  177.     end
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   def draw_actor_can_learn(actor, x, y)
  181.     can = false
  182.     lv = false
  183.     ac_lv = 0
  184.     can_learn = SKILL_SHOP.skill_buy(actor.id)
  185.     id = @item.id
  186.     for i in 0...can_learn.size
  187.       if can_learn[i][0] == id
  188.         can = true
  189.         if can_learn[i][1] <= actor.level
  190.           lv = true
  191.         else
  192.           lv = false
  193.           ac_lv = can_learn[i][1]
  194.         end
  195.         break
  196.       else
  197.         can = false
  198.       end
  199.     end
  200.     enabled = (can and lv and actor.learn?(@item))
  201.     self.contents.font.color = normal_color
  202.     self.contents.font.color.alpha = enabled ? 255 : 128
  203.     name = actor.character_name
  204.     index = actor.character_index
  205.     size = contents.text_size(actor.name).width
  206.     draw_character(name, index, x + 20 + size , y + 30)
  207.     self.contents.draw_text(x, y, 200, WLH, actor.name)
  208.     if can == false
  209.       text = SKILL_SHOP::Cant_Learn
  210.     elsif can == true and lv == false
  211.       ac = ac_lv.to_s
  212.       text = SKILL_SHOP::Can_Learn_Lv + " " + ac + "+"
  213.     elsif actor.learn?(@item) == false
  214.       text = SKILL_SHOP::Learnt
  215.     else
  216.       text = SKILL_SHOP::Can_Learn
  217.     end
  218.     self.contents.draw_text(x, y, 200, WLH, text, 2)
  219.   end
  220.   #--------------------------------------------------------------------------
  221.   def item=(item)
  222.     if @item != item
  223.       @item = item
  224.       refresh
  225.     end
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   def update_cursor
  229.     if [url=home.php?mod=space&uid=370741]@Index[/url] < 0
  230.       self.cursor_rect.empty
  231.     elsif [url=home.php?mod=space&uid=370741]@Index[/url] < @item_max
  232.       y = WLH * (2 + @index * 2)
  233.       self.cursor_rect.set(0, y - 4, contents.width,34)
  234.     end
  235.   end
  236. end
  237. #==============================================================================
  238. #class Scene_Skill_Shop
  239. #==============================================================================
  240. class Scene_Skill_Shop < Scene_Base
  241.   #--------------------------------------------------------------------------
  242.   def start
  243.     super
  244.     create_menu_background
  245.     create_command_window
  246.     @viewport = Viewport.new(0, 0, 544, 416)
  247.     @help_window = Window_Help.new
  248.     @gold_window = Window_Gold.new(384, 56)
  249.     @dummy_window = Window_Base.new(0, 112, 544, 304)
  250.     @buy_window = Window_Skill_ShopBuy.new(0, 112)
  251.     @buy_window.active = false
  252.     @buy_window.visible = false
  253.     @buy_window.help_window = @help_window
  254.     @status_window = Window_Skill_ShopStatus.new(304, 112)
  255.     @status_window.visible = false
  256.     @status_window.active = false
  257.   end
  258.   #--------------------------------------------------------------------------
  259.   def terminate
  260.     super
  261.     dispose_menu_background
  262.     dispose_command_window
  263.     @help_window.dispose
  264.     @gold_window.dispose
  265.     @dummy_window.dispose
  266.     @buy_window.dispose
  267.     @status_window.dispose
  268.   end  
  269.   #--------------------------------------------------------------------------
  270.   def update
  271.     super
  272.     update_menu_background
  273.     @help_window.update
  274.     @command_window.update
  275.     @gold_window.update
  276.     @dummy_window.update
  277.     @buy_window.update
  278.     @status_window.update
  279.     if @command_window.active
  280.       update_command_selection
  281.     elsif @buy_window.active
  282.       update_buy_selection
  283.     elsif @status_window.active
  284.       update_target_selection
  285.     end
  286.   end
  287.   #--------------------------------------------------------------------------
  288.   def create_command_window
  289.     s1 = SKILL_SHOP::Teach
  290.     s2 = SKILL_SHOP::Cancel
  291.     @command_window = Window_Command.new(384, [s1, s2], 2)
  292.     @command_window.y = 56
  293.   end
  294.   #--------------------------------------------------------------------------
  295.   def dispose_command_window
  296.     @command_window.dispose
  297.   end
  298.   #--------------------------------------------------------------------------
  299.   def update_command_selection
  300.     @help_window.set_text("")
  301.     if Input.trigger?(Input::B)
  302.       Sound.play_cancel
  303.       $scene = Scene_Map.new
  304.     elsif Input.trigger?(Input::C)
  305.       case @command_window.index
  306.       when 0
  307.         Sound.play_decision
  308.         @command_window.active = false
  309.         @dummy_window.visible = false
  310.         @buy_window.active = true
  311.         @buy_window.visible = true
  312.         @buy_window.refresh
  313.         @status_window.visible = true
  314.       when 1
  315.         Sound.play_decision
  316.         $scene = Scene_Map.new
  317.       end
  318.     end
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   def update_buy_selection
  322.     @status_window.item = @buy_window.skill
  323.     if Input.trigger?(Input::B)
  324.       Sound.play_cancel
  325.       @command_window.active = true
  326.       @dummy_window.visible = true
  327.       @buy_window.active = false
  328.       @buy_window.visible = false
  329.       @status_window.visible = false
  330.       @status_window.item = nil
  331.       return
  332.     end
  333.     if Input.trigger?(Input::C)
  334.       @item = @buy_window.skill
  335.       @price = SKILL_SHOP.skill_price(@item.id)
  336.       enabled = (@price <= $game_party.gold)
  337.       if not enabled
  338.         Sound.play_buzzer
  339.       else
  340.         Sound.play_decision
  341.         show_target_window
  342.       end
  343.     end
  344.   end
  345.   #--------------------------------------------------------------------------
  346.   def update_target_selection
  347.     if Input.trigger?(Input::B)
  348.       Sound.play_cancel
  349.       hide_target_window
  350.     elsif Input.trigger?(Input::C)
  351.       [url=home.php?mod=space&uid=95897]@actor[/url] = $game_party.members[@status_window.index]
  352.       can = false
  353.       lv = false
  354.       can_learn = SKILL_SHOP.skill_buy(@actor.id)
  355.       id = @item.id
  356.       for i in 0...can_learn.size
  357.         if can_learn[i][0] == id
  358.           can = true
  359.           if can_learn[i][1] <= @actor.level
  360.             lv = true
  361.           else
  362.             lv = false
  363.           end
  364.           break
  365.         else
  366.           can = false
  367.         end
  368.       end
  369.       enabled = (can and lv and @actor.learn?(@item))
  370.       if not enabled
  371.         Sound.play_buzzer
  372.       else
  373.         learn_target(@item.id)
  374.       end
  375.     end
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   def learn_target(skill_id)
  379.     Sound.play_shop
  380.     @actor.learn_skill(skill_id)
  381.     $game_party.lose_gold(@price)
  382.     @buy_window.refresh
  383.     @gold_window.refresh
  384.     @status_window.refresh
  385.     hide_target_window
  386.   end
  387.   #--------------------------------------------------------------------------
  388.   def show_target_window
  389.     @buy_window.active = false
  390.     @status_window.active = true
  391.     @status_window.index = 0
  392.   end
  393.   #--------------------------------------------------------------------------
  394.   def hide_target_window
  395.     @buy_window.active = true
  396.     @status_window.active = false
  397.     @status_window.index =- 1
  398.   end
  399. end



下面的是我做的,不知道哪里错了







  

评分

参与人数 1星屑 -20 收起 理由
铃仙·优昙华院·因幡 -20 请去置顶帖回复认可答案.

查看全部评分

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

2
发表于 2013-12-15 10:23:01 | 只看该作者
表示我不是使用这个脚本的
魔法店.zip (322.78 KB, 下载次数: 75)
看不懂请无视

评分

参与人数 1星屑 +100 收起 理由
铃仙·优昙华院·因幡 + 100 认可答案

查看全部评分

大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
182 小时
注册时间
2009-4-22
帖子
208
3
 楼主| 发表于 2013-12-15 10:43:40 | 只看该作者
美丽晨露 发表于 2013-12-15 10:23
表示我不是使用这个脚本的

看不懂请无视

谢谢,这样就会了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 10:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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