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

Project1

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

[已经解决] 求修改魔法商店的学习条件(可以自己写X职业学习列表)~thx

[复制链接]

Lv3.寻梦者 (版主)

  /) /)<

梦石
0
星屑
4212
在线时间
4890 小时
注册时间
2009-2-16
帖子
8434

开拓者短篇七成年组季军

跳转到指定楼层
1
发表于 2012-5-16 19:24:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
限制型魔法商店脚本 默认的学习条件是“角色可以领悟的技能 可以学习”
也就是 如果希望该职业可以购买 则只能设置成LV99领悟   但是如果到了LV99 即使不买 技能也全都自动领悟了= =
所以 希望把学习条件改为 在脚本初自己设置
职业id = [技能ID, 技能ID, ……]
职业id = [技能ID, 技能ID, ……]      这样设置该职业可以购买的技能
非常感谢{:2_285:}
  1. #==============================================================================
  2. # ■ 本脚本源自www.66rpg.com,转载与使用请保留此信息
  3. #==============================================================================

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

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

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

  7. $mShop_use_variable = 2  #——这项是购买魔法特技时消耗的变量编号,如果=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.     Graphics.transition
  79.     # 主循环
  80.     loop do
  81.       # 刷新游戏画面
  82.       Graphics.update
  83.       # 刷新输入信息
  84.       Input.update
  85.       # 刷新画面
  86.       update
  87.       # 如果画面切换的话就中断循环
  88.       if $scene != self
  89.         break
  90.       end
  91.     end
  92.     # 准备过渡
  93.     Graphics.freeze
  94.     # 释放窗口
  95.     @help_window.dispose
  96.     #@mhelp_window.dispose
  97.     @gold_window.dispose
  98.     @buy_window.dispose
  99.     @status_window.dispose
  100.     screen.dispose
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 刷新画面
  104.   #--------------------------------------------------------------------------
  105.   def update
  106.     # 刷新窗口
  107.     @help_window.update
  108.     #@mhelp_window.update
  109.     @gold_window.update
  110.     @buy_window.update
  111.     @status_window.update
  112.     # 购买窗口激活的情况下: 调用 update_buy
  113.     if @buy_window.active
  114.       update_buy
  115.       return
  116.     end
  117.     if @status_window.active
  118.       update_status
  119.       return
  120.     end
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 刷新画面 (购买窗口激活的情况下)
  124.   #--------------------------------------------------------------------------
  125.   def update_buy
  126.     @status_window.skill = @buy_window.skill
  127.     if Input.trigger?(Input::B)
  128.       $game_system.se_play($data_system.cancel_se)
  129.       $scene = Scene_Map.new
  130.       return
  131.     end
  132.     if Input.trigger?(Input::C)
  133.       @skill = @buy_window.skill
  134.       if @skill == nil or @skill.price > $mShop_gold
  135.         $game_system.se_play($data_system.buzzer_se)
  136.         return
  137.       end
  138.       $game_system.se_play($data_system.decision_se)
  139.       @buy_window.active = false
  140.       @status_window.index = 0
  141.       @status_window.active = true
  142.     end
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 刷新画面 (状态窗口激活的情况下)
  146.   #--------------------------------------------------------------------------
  147.   def update_status
  148.     if Input.trigger?(Input::B)
  149.       $game_system.se_play($data_system.cancel_se)
  150.       @status_window.active = false
  151.       @status_window.index = -1
  152.       @buy_window.active = true
  153.     end
  154.     if Input.trigger?(Input::C)
  155.       can_learn=false
  156.       for j in $data_classes[$game_party.actors[@status_window.index].class_id].learnings
  157.         if j.skill_id == @skill.id
  158.           can_learn=true
  159.         end
  160.       end
  161.       if can_learn==false
  162.         $game_system.se_play($data_system.cancel_se)
  163.         return
  164.       end
  165.       if $game_party.actors[@status_window.index].skill_learn?(@skill.id)
  166.         $game_system.se_play($data_system.cancel_se)
  167.         return
  168.       else
  169.         $game_system.se_play($data_system.decision_se)
  170.         if $mShop_use_variable == 0
  171.           $game_party.gain_gold([email protected])
  172.           $mShop_gold -= @skill.price
  173.         else
  174.           $game_variables[$mShop_use_variable] -= @skill.price
  175.           $mShop_gold -= @skill.price
  176.         end
  177.         $game_party.actors[@status_window.index].learn_skill(@skill.id)
  178.         @gold_window.refresh
  179.         @buy_window.refresh
  180.         @status_window.refresh
  181.         @status_window.active = false
  182.         @status_window.index = -1
  183.         @buy_window.active = true
  184.       end      
  185.     end   
  186.   end
  187. end
  188. #==============================================================================
  189. # ■ Window_MShopStatus
  190. #------------------------------------------------------------------------------
  191. #  特技商店画面、显示物品所持数与角色装备的窗口。
  192. #==============================================================================
  193. class Window_MShopStatus < Window_Selectable
  194.   #--------------------------------------------------------------------------
  195.   # ● 初始化对像
  196.   #--------------------------------------------------------------------------
  197.   def initialize
  198.     super(368, 64, 272, 352)
  199.     self.contents = Bitmap.new(width - 32, height - 32)
  200.     self.contents.font.size = 18
  201.     @skill = nil
  202.     refresh
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 刷新
  206.   #--------------------------------------------------------------------------
  207.   def refresh
  208.     self.contents.clear
  209.     for i in 0...$game_party.actors.size
  210.       actor = $game_party.actors[i]
  211. #      draw_actor_graphic(actor,12,80*i+64)
  212.       self.contents.font.color = system_color
  213.       self.contents.draw_text(44, 80*i, 240, 32, actor.name)
  214.       self.contents.draw_text(0, 80*i , 240-20,32,"等级",2)
  215.       self.contents.font.color = normal_color
  216.       self.contents.draw_text(0, 80*i, 240, 32, actor.level.to_s , 2)
  217.       self.contents.font.color = system_color
  218.       self.contents.draw_text(44, 80*i+22, 45, 32, $data_system.words.hp)
  219.       self.contents.font.color = normal_color
  220.       self.contents.draw_text(44, 80*i+22, 90, 32, actor.maxhp.to_s,2)
  221.       self.contents.font.color = system_color
  222.       self.contents.draw_text(150, 80*i+22, 45, 32, $data_system.words.sp)
  223.       self.contents.font.color = normal_color
  224.       self.contents.draw_text(150, 80*i+22, 90, 32, actor.maxsp.to_s,2)   
  225.       can_learn=false
  226.       for j in $data_classes[actor.class_id].learnings
  227.         if j.skill_id == @skill.id
  228.           can_learn=true
  229.         end
  230.       end
  231.       if can_learn == true
  232.         if actor.skill_learn?(@skill.id)
  233.           self.contents.font.color = Color.new(255,255,255,128)
  234.           self.contents.draw_text(44, 80*i+44, 196, 32, "⊙技能已经习得⊙",2)        
  235.         else
  236.           self.contents.font.color = Color.new(255,255,0,255)
  237.           self.contents.draw_text(44, 80*i+44, 240, 32, "★可以修炼此项技能★")
  238.         end
  239.       else
  240.         self.contents.font.color = Color.new(255,255,255,128)
  241.         self.contents.draw_text(44, 80*i+44, 196, 32, "◇不适合修炼此技能◇",2)        
  242.       end
  243.     end
  244.     @item_max = $game_party.actors.size
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 设置物品
  248.   #     item : 新的物品
  249.   #--------------------------------------------------------------------------
  250.   def skill=(skill)
  251.     if @skill != skill
  252.       @skill = skill
  253.       refresh
  254.     end
  255.   end
  256.   #--------------------------------------------------------------------------
  257.   # ● 刷新光标矩形
  258.   #--------------------------------------------------------------------------
  259.   def update_cursor_rect
  260.     if @index < 0
  261.       self.cursor_rect.empty
  262.     else
  263.       self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
  264.     end
  265.   end
  266. end
  267. #==============================================================================
  268. # ■ Window_MShopBuy
  269. #------------------------------------------------------------------------------
  270. #  特技商店画面、浏览显示可以购买的商品的窗口。
  271. #==============================================================================
  272. class Window_MShopBuy < Window_Selectable
  273.   #--------------------------------------------------------------------------
  274.   # ● 初始化对像
  275.   #     shop_goods : 商品
  276.   #--------------------------------------------------------------------------
  277.   def initialize(id)
  278.     super(0, 64, 368, 416)
  279.     @id = id
  280.     refresh
  281.     self.index = 0
  282.   end
  283.   #--------------------------------------------------------------------------
  284.   # ● 获取物品
  285.   #--------------------------------------------------------------------------
  286.   def skill
  287.     return @data[self.index]
  288.   end
  289.   #--------------------------------------------------------------------------
  290.   # ● 刷新
  291.   #--------------------------------------------------------------------------
  292.   def refresh
  293.     if self.contents != nil
  294.       self.contents.dispose
  295.       self.contents = nil
  296.     end
  297.     @data = []
  298.     for skill_id in @id
  299.       skill = $data_skills[skill_id]
  300.       if skill != nil
  301.         @data.push(skill)
  302.       end
  303.     end
  304.     @item_max = @data.size
  305.     if @item_max > 0
  306.       self.contents = Bitmap.new(width - 32, row_max * 32)
  307.       for i in 0...@item_max
  308.         draw_item(i)
  309.       end
  310.     end
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ● 描绘羡慕
  314.   #     index : 项目编号
  315.   #--------------------------------------------------------------------------
  316.   def draw_item(index)
  317.     skill = @data[index]
  318.     # 除此之外的情况设置为无效文字色
  319.     if skill.price <= $mShop_gold
  320.       self.contents.font.color = normal_color
  321.     else
  322.       self.contents.font.color = disabled_color
  323.     end
  324.     x = 4
  325.     y = index * 32
  326.     rect = Rect.new(x, y, self.width - 32, 32)
  327.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  328.     bitmap = RPG::Cache.icon(skill.icon_name)
  329.     opacity = self.contents.font.color == normal_color ? 255 : 128
  330.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  331.     self.contents.draw_text(x + 28, y, 212, 32, skill.name, 0)
  332.     self.contents.draw_text(x + 240, y, 88, 32, skill.price.to_s, 2)
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # ● 刷新帮助文本
  336.   #--------------------------------------------------------------------------
  337.   def update_help
  338.     @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  339.   end
  340. end
  341. #==============================================================================
  342. # ■ RPG原装定义
  343. #==============================================================================
  344. module RPG
  345.   class Skill
  346.     def description
  347.       description = @description.split(/@/)[0]
  348.       return description != nil ? description : ''
  349.     end
  350.     def price
  351.       price = @description.split(/@/)[1]
  352.       return price != nil ? price.to_i : 0
  353.     end
  354.   end
  355. end
复制代码

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
2
发表于 2012-5-16 19:37:26 | 只看该作者
这个可以购买的技能跟职业没什么关系吧,不管什么技能想购买直接在事件中写:
比如说 $scene = Scene_MShop.new([1,2,3,4,5,6,7])
根本不需要在职业中设置99级学会之类的
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复

使用道具 举报

Lv3.寻梦者 (版主)

  /) /)<

梦石
0
星屑
4212
在线时间
4890 小时
注册时间
2009-2-16
帖子
8434

开拓者短篇七成年组季军

3
 楼主| 发表于 2012-5-16 19:38:43 | 只看该作者
tommay 发表于 2012-5-16 19:37
这个可以购买的技能跟职业没什么关系吧,不管什么技能想购买直接在事件中写:
比如说 $scene = Scene_MShop ...

= =  法师不能买长矛攻击  骑士不能买火球术
我说的是职业购买限制  不是购买列表

点评

抱歉我理解错误了,稍等  发表于 2012-5-16 19:41
回复

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
4
发表于 2012-5-16 20:07:46 | 只看该作者
本帖最后由 tommay 于 2012-5-16 20:07 编辑
  1. #==============================================================================
  2. # ■ 本脚本源自www.66rpg.com,转载与使用请保留此信息
  3. #==============================================================================

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

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

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

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

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

  9. # 每个职业可以学的技能列表
  10. $class_canlearn_list = {  1 => [79,80],
  11.                           2 => [60,61],
  12.                           3 => []}

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

  170.       if can_learn==false
  171.         $game_system.se_play($data_system.cancel_se)
  172.         return
  173.       end
  174.       if $game_party.actors[@status_window.index].skill_learn?(@skill.id)
  175.         $game_system.se_play($data_system.cancel_se)
  176.         return
  177.       else
  178.         $game_system.se_play($data_system.decision_se)
  179.         if $mShop_use_variable == 0
  180.           $game_party.gain_gold([email protected])
  181.           $mShop_gold -= @skill.price
  182.         else
  183.           $game_variables[$mShop_use_variable] -= @skill.price
  184.           $mShop_gold -= @skill.price
  185.         end
  186.         $game_party.actors[@status_window.index].learn_skill(@skill.id)
  187.         @gold_window.refresh
  188.         @buy_window.refresh
  189.         @status_window.refresh
  190.         @status_window.active = false
  191.         @status_window.index = -1
  192.         @buy_window.active = true
  193.       end      
  194.     end   
  195.   end
  196. end
  197. #==============================================================================
  198. # ■ Window_MShopStatus
  199. #------------------------------------------------------------------------------
  200. #  特技商店画面、显示物品所持数与角色装备的窗口。
  201. #==============================================================================
  202. class Window_MShopStatus < Window_Selectable
  203.   #--------------------------------------------------------------------------
  204.   # ● 初始化对像
  205.   #--------------------------------------------------------------------------
  206.   def initialize
  207.     super(368, 64, 272, 352)
  208.     self.contents = Bitmap.new(width - 32, height - 32)
  209.     self.contents.font.size = 18
  210.     @skill = nil
  211.     refresh
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ● 刷新
  215.   #--------------------------------------------------------------------------
  216.   def refresh
  217.     self.contents.clear
  218.     for i in 0...$game_party.actors.size
  219.       actor = $game_party.actors[i]
  220. #      draw_actor_graphic(actor,12,80*i+64)
  221.       self.contents.font.color = system_color
  222.       self.contents.draw_text(44, 80*i, 240, 32, actor.name)
  223.       self.contents.draw_text(0, 80*i , 240-20,32,"等级",2)
  224.       self.contents.font.color = normal_color
  225.       self.contents.draw_text(0, 80*i, 240, 32, actor.level.to_s , 2)
  226.       self.contents.font.color = system_color
  227.       self.contents.draw_text(44, 80*i+22, 45, 32, $data_system.words.hp)
  228.       self.contents.font.color = normal_color
  229.       self.contents.draw_text(44, 80*i+22, 90, 32, actor.maxhp.to_s,2)
  230.       self.contents.font.color = system_color
  231.       self.contents.draw_text(150, 80*i+22, 45, 32, $data_system.words.sp)
  232.       self.contents.font.color = normal_color
  233.       self.contents.draw_text(150, 80*i+22, 90, 32, actor.maxsp.to_s,2)   
  234.       can_learn=false
  235.       for j in $data_classes[actor.class_id].learnings
  236.         if j.skill_id == @skill.id
  237.           can_learn=true
  238.         end
  239.       end
  240.       unless $class_canlearn_list[actor.class_id].nil?
  241.         can_learn = true if $class_canlearn_list[actor.class_id].include?(@skill.id)
  242.       end
  243.       
  244.       if can_learn == true
  245.         if actor.skill_learn?(@skill.id)
  246.           self.contents.font.color = Color.new(255,255,255,128)
  247.           self.contents.draw_text(44, 80*i+44, 196, 32, "⊙技能已经习得⊙",2)        
  248.         else
  249.           self.contents.font.color = Color.new(255,255,0,255)
  250.           self.contents.draw_text(44, 80*i+44, 240, 32, "★可以修炼此项技能★")
  251.         end
  252.       else
  253.         self.contents.font.color = Color.new(255,255,255,128)
  254.         self.contents.draw_text(44, 80*i+44, 196, 32, "◇不适合修炼此技能◇",2)        
  255.       end
  256.     end
  257.     @item_max = $game_party.actors.size
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # ● 设置物品
  261.   #     item : 新的物品
  262.   #--------------------------------------------------------------------------
  263.   def skill=(skill)
  264.     if @skill != skill
  265.       @skill = skill
  266.       refresh
  267.     end
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # ● 刷新光标矩形
  271.   #--------------------------------------------------------------------------
  272.   def update_cursor_rect
  273.     if @index < 0
  274.       self.cursor_rect.empty
  275.     else
  276.       self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
  277.     end
  278.   end
  279. end
  280. #==============================================================================
  281. # ■ Window_MShopBuy
  282. #------------------------------------------------------------------------------
  283. #  特技商店画面、浏览显示可以购买的商品的窗口。
  284. #==============================================================================
  285. class Window_MShopBuy < Window_Selectable
  286.   #--------------------------------------------------------------------------
  287.   # ● 初始化对像
  288.   #     shop_goods : 商品
  289.   #--------------------------------------------------------------------------
  290.   def initialize(id)
  291.     super(0, 64, 368, 416)
  292.     @id = id
  293.     refresh
  294.     self.index = 0
  295.   end
  296.   #--------------------------------------------------------------------------
  297.   # ● 获取物品
  298.   #--------------------------------------------------------------------------
  299.   def skill
  300.     return @data[self.index]
  301.   end
  302.   #--------------------------------------------------------------------------
  303.   # ● 刷新
  304.   #--------------------------------------------------------------------------
  305.   def refresh
  306.     if self.contents != nil
  307.       self.contents.dispose
  308.       self.contents = nil
  309.     end
  310.     @data = []
  311.     for skill_id in @id
  312.       skill = $data_skills[skill_id]
  313.       if skill != nil
  314.         @data.push(skill)
  315.       end
  316.     end
  317.     @item_max = @data.size
  318.     if @item_max > 0
  319.       self.contents = Bitmap.new(width - 32, row_max * 32)
  320.       for i in 0...@item_max
  321.         draw_item(i)
  322.       end
  323.     end
  324.   end
  325.   #--------------------------------------------------------------------------
  326.   # ● 描绘羡慕
  327.   #     index : 项目编号
  328.   #--------------------------------------------------------------------------
  329.   def draw_item(index)
  330.     skill = @data[index]
  331.     # 除此之外的情况设置为无效文字色
  332.     if skill.price <= $mShop_gold
  333.       self.contents.font.color = normal_color
  334.     else
  335.       self.contents.font.color = disabled_color
  336.     end
  337.     x = 4
  338.     y = index * 32
  339.     rect = Rect.new(x, y, self.width - 32, 32)
  340.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  341.     bitmap = RPG::Cache.icon(skill.icon_name)
  342.     opacity = self.contents.font.color == normal_color ? 255 : 128
  343.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  344.     self.contents.draw_text(x + 28, y, 212, 32, skill.name, 0)
  345.     self.contents.draw_text(x + 240, y, 88, 32, skill.price.to_s, 2)
  346.   end
  347.   #--------------------------------------------------------------------------
  348.   # ● 刷新帮助文本
  349.   #--------------------------------------------------------------------------
  350.   def update_help
  351.     @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  352.   end
  353. end
  354. #==============================================================================
  355. # ■ RPG原装定义
  356. #==============================================================================
  357. module RPG
  358.   class Skill
  359.     def description
  360.       description = @description.split(/@/)[0]
  361.       return description != nil ? description : ''
  362.     end
  363.     def price
  364.       price = @description.split(/@/)[1]
  365.       return price != nil ? price.to_i : 0
  366.     end
  367.   end
  368. end
复制代码

点评

无妨,我已经测试过了,暂时没发现问题。如果有问题请及时告诉我。  发表于 2012-5-16 20:19
感谢 不过明天中午才有时间测试 麻烦等一下哈 不好意思咯0w0  发表于 2012-5-16 20:16
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复

使用道具 举报

Lv3.寻梦者 (版主)

  /) /)<

梦石
0
星屑
4212
在线时间
4890 小时
注册时间
2009-2-16
帖子
8434

开拓者短篇七成年组季军

5
 楼主| 发表于 2012-5-17 13:01:23 | 只看该作者
tommay 发表于 2012-5-16 20:07

不能学习任何技能就留空是吧0 0
1 => [],
可以这样吗  2 => 1..20      #可学习1~20号技能
如何合起来呢?
3 => [2, 4, 6..10, 12] 这样能吗= =
回复

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
6
发表于 2012-5-17 13:14:56 | 只看该作者
本帖最后由 tommay 于 2012-5-17 13:25 编辑
天使喝可乐 发表于 2012-5-17 13:01
不能学习任何技能就留空是吧0 0
1 => [],
可以这样吗  2 => 1..20      #可学习1~20号技能


空的是可以的,但不是学习任何技能
经测试 2=>1..20 是可以的
3=>[2,4,6..10,12]不行
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 05:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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