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

Project1

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

战斗菜单的物品分类脚本

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
142 小时
注册时间
2008-7-25
帖子
259
跳转到指定楼层
1
发表于 2009-1-3 19:06:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
不知有没有战斗菜单的物品分类脚本?{/hx}
谢谢!
版务信息:本贴由楼主自主结贴~

Lv1.梦旅人

kissye的宠物<

梦石
0
星屑
61
在线时间
1563 小时
注册时间
2008-8-11
帖子
6174

贵宾

2
发表于 2009-1-3 19:41:38 | 只看该作者
楼主好久不见·······
据我所知是有的,你的在战斗系统是?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
142 小时
注册时间
2008-7-25
帖子
259
3
 楼主| 发表于 2009-1-3 20:34:13 | 只看该作者
以下引用木葬枫于2009-1-3 11:41:38的发言:

楼主好久不见·······
据我所知是有的,你的在战斗系统是?


[本贴由作者于 2009-1-3 11:42:12 最后编辑]

默认的战斗系统。谢谢!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

kissye的宠物<

梦石
0
星屑
61
在线时间
1563 小时
注册时间
2008-8-11
帖子
6174

贵宾

4
发表于 2009-1-3 20:39:06 | 只看该作者
编辑
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
142 小时
注册时间
2008-7-25
帖子
259
5
 楼主| 发表于 2009-1-3 20:52:29 | 只看该作者
请不要引用整段脚本{/hx}

谢谢,不过,这个好像不是物品的分类,而是技能的分类。
我想的是战斗时菜单的物品分类。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

kissye的宠物<

梦石
0
星屑
61
在线时间
1563 小时
注册时间
2008-8-11
帖子
6174

贵宾

6
发表于 2009-1-3 21:01:56 | 只看该作者
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. module RPG
  5.   class Weapon
  6.     def description
  7.       description = @description.split(/@/)[0]
  8.       return description != nil ? description : ''
  9.     end
  10.     def desc
  11.       desc = @description.split(/@/)[1]
  12.       return desc != nil ? desc : "普通物品"
  13.     end
  14.   end
  15.   class Item
  16.     def description
  17.       description = @description.split(/@/)[0]
  18.       return description != nil ? description : ''
  19.     end
  20.     def desc
  21.       desc = @description.split(/@/)[1]
  22.       return desc != nil ? desc : "普通物品"
  23.     end
  24.   end
  25.   class Armor
  26.     def description
  27.       description = @description.split(/@/)[0]
  28.       return description != nil ? description : ''
  29.     end
  30.     def desc
  31.       desc = @description.split(/@/)[1]
  32.       return desc != nil ? desc : "普通物品"
  33.     end
  34.   end
  35. end

  36. class Harts_Window_ItemTitle < Window_Base
  37.   def initialize
  38.     super(0, 0, 160, 64)
  39.     self.contents = Bitmap.new(width - 32, height - 32)
  40.     self.contents.clear
  41.     self.contents.font.color = normal_color
  42.     self.contents.draw_text(4, 0, 120, 32, Vocab::item, 1)
  43.   end
  44. end

  45. class Harts_Window_ItemCommand < Window_Selectable
  46.   attr_accessor :commands
  47.   def initialize
  48.     super(0, 64, 160, 296)
  49.     self.index = 0
  50.     refresh
  51.   end
  52.   
  53. def addcommand
  54.    @commands = []
  55.    for i in 1...$data_items.size
  56.      if $game_party.item_number($data_items[i]) > 0
  57.        push = true
  58.        for com in @commands
  59.          if com == $data_items[i].desc
  60.            push = false
  61.          end
  62.        end
  63.        if push == true
  64.          @commands.push($data_items[i].desc)
  65.        end
  66.      end
  67.    end
  68.    for i in 1...$data_weapons.size
  69.      if $game_party.item_number($data_weapons[i]) > 0
  70.        push = true
  71.        for com in @commands
  72.          if com == $data_weapons[i].desc
  73.            push = false
  74.            end
  75.          end
  76.          if push == true
  77.            @commands.push($data_weapons[i].desc)
  78.          end
  79.        end
  80.      end
  81.      for i in 1...$data_armors.size
  82.        if $game_party.item_number($data_armors[i]) > 0
  83.          push = true
  84.          for com in @commands
  85.            if com == $data_armors[i].desc
  86.              push = false
  87.            end
  88.          end
  89.          if push == true
  90.            @commands.push($data_armors[i].desc)
  91.          end
  92.        end
  93.      end
  94.      if @commands == []
  95.        @commands.push("普通物品")
  96.      end      
  97.      @item_max = @commands.size
  98.   end
  99.   
  100. def refresh
  101.     addcommand
  102.     create_contents
  103.     for i in 0...@item_max
  104.       draw_item(i, normal_color)
  105.     end
  106.   end
  107.   
  108.   def draw_item(index, color)
  109.     y = index * WLH
  110.     self.contents.font.color = color
  111.     if @commands[index] != nil
  112.       self.contents.draw_text(4,y, 172, WLH, @commands[index])
  113.     end
  114.   end

  115.   def update_help
  116.     @help_window.set_text(@commands[self.index])
  117.   end
  118. end

  119. class Harts_Window_ItemList < Window_Selectable
  120.   
  121.   def initialize
  122.     super(160, 0, 384, 360)
  123.     self.index = 0
  124.     refresh
  125.   end
  126.   
  127.   def item
  128.     return @data[self.index]
  129.   end
  130.   
  131.   def refresh
  132.     @data = []
  133.   end
  134.   
  135.   def set_item(command)
  136.     refresh
  137.     for i in 1...$data_items.size
  138.       if $game_party.item_number($data_items[i]) > 0  and $data_items[i].desc == command
  139.         @data.push($data_items[i])
  140.       end
  141.     end
  142.     for i in 1...$data_weapons.size
  143.       if $game_party.item_number($data_weapons[i]) > 0  and $data_weapons[i].desc == command
  144.         @data.push($data_weapons[i])
  145.       end
  146.     end
  147.     for i in 1...$data_armors.size
  148.       if $game_party.item_number($data_armors[i]) > 0  and $data_armors[i].desc == command
  149.         @data.push($data_armors[i])
  150.       end
  151.     end
  152.     @item_max = @data.size
  153.     if @item_max > 0
  154.       self.contents = Bitmap.new(width - 32, row_max * 32)
  155.       self.contents.clear
  156.       for i in 0...@item_max
  157.         draw_item(i)
  158.       end
  159.     end
  160.   end
  161.   
  162.   def item_number
  163.     return @item_max
  164.   end
  165.   
  166.   def draw_item(index)
  167.     rect = item_rect(index)
  168.     self.contents.clear_rect(rect)
  169.     item = @data[index]
  170.     if item != nil
  171.       number = $game_party.item_number(item)
  172.       enabled = $game_party.item_can_use?(item)
  173.       rect.width -= 4
  174.       if item.is_a?(RPG::Weapon)|item.is_a?(RPG::Armor)
  175.         draw_item_name(item, rect.x, rect.y, enabled, true)
  176.         draw_level_icon(rect, item.level, enabled)
  177.       else
  178.         draw_item_name(item, rect.x, rect.y, enabled)
  179.         self.contents.draw_text(rect, sprintf(":%2d", number), 2)
  180.       end
  181.     end
  182.   end
  183.   
  184.   def update_help
  185.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  186.   end
  187. end
  188. class Harts_Window_Help < Window_Base
  189.   
  190.   def initialize
  191.     super(0, 360, 544, WLH + 32)
  192.   end

  193.   def set_text(text, align = 0)
  194.     if text != @text or align != @align
  195.       self.contents.clear
  196.       self.contents.font.color = normal_color
  197.       self.contents.draw_text(4, 0, self.width - 40, WLH , text, align)
  198.       @text = text
  199.       @align = align
  200.     end
  201.   end
  202. end

  203. class Harts_Window_MenuStatus < Window_Selectable

  204.   def initialize(x, y)
  205.     super(x, y, 288, 416)
  206.     refresh
  207.     self.active = false
  208.     self.index = -1
  209.   end

  210.   def refresh
  211.     self.contents.clear
  212.     @item_max = $game_party.members.size
  213.     for actor in $game_party.members
  214.       x = 8
  215.       y = actor.index * 96 + WLH / 2
  216.       draw_actor_name(actor, x, y)
  217.       draw_actor_class(actor, x + 120, y)
  218.       draw_actor_level(actor, x, y + WLH * 1)
  219.       draw_actor_state(actor, x, y + WLH * 2)
  220.       draw_actor_hp(actor, x + 120, y + WLH * 1)
  221.       draw_actor_mp(actor, x + 120, y + WLH * 2)
  222.     end
  223.   end

  224.   def update_cursor
  225.     if @index < 0               
  226.       self.cursor_rect.empty
  227.     elsif @index < @item_max  
  228.       self.cursor_rect.set(0, @index * 96, contents.width, 96)
  229.     elsif @index >= 100        
  230.       self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
  231.     else                       
  232.       self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
  233.     end
  234.   end
  235. end

  236. class Scene_Item < Scene_Base
  237.   def start
  238.     super
  239.     create_menu_background
  240.     @viewport = Viewport.new(0, 0, 544, 416)
  241.     @itemtitle_window = Harts_Window_ItemTitle.new
  242.     @itemcommand_window = Harts_Window_ItemCommand.new
  243.     @command_index = @itemcommand_window.index
  244.     @itemcommand_window.refresh
  245.     @itemlist_window = Harts_Window_ItemList.new
  246.     @itemlist_window.active = false
  247.     @help_window = Harts_Window_Help.new
  248.     @help_window.viewport = @viewport
  249.     @target_window = Harts_Window_MenuStatus.new(96, 0)
  250.     @itemcommand_window.help_window = @help_window
  251.     @itemlist_window.help_window = @help_window
  252.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  253.     hide_target_window
  254.   end

  255.   def terminate
  256.     super
  257.     dispose_menu_background
  258.     @viewport.dispose
  259.     @itemtitle_window.dispose
  260.     @itemcommand_window.dispose
  261.     @itemlist_window.dispose
  262.     @help_window.dispose
  263.     @target_window.dispose
  264.   end

  265.   def return_scene
  266.     $scene = Scene_Menu.new(0)
  267.   end

  268.   def update
  269.     super
  270.     update_menu_background
  271.     @help_window.update
  272.     @itemlist_window.update
  273.     @itemcommand_window.update
  274.     @target_window.update
  275.     @itemcommand_window.refresh
  276.     if @command_index != @itemcommand_window.index
  277.       @itemlist_window.index = 0
  278.       @command_index = @itemcommand_window.index
  279.       @itemcommand_window.update_help
  280.       @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  281.     end
  282.     if @itemcommand_window.active
  283.       @itemcommand_window.update_help
  284.       update_itemcommand
  285.     elsif @itemlist_window.active
  286.       update_itemlist
  287.     elsif @target_window.active
  288.       update_target_selection
  289.     end
  290.   end

  291.   def update_itemcommand
  292.     if Input.trigger?(Input::B)
  293.       Sound.play_cancel
  294.       return_scene
  295.       return
  296.     end
  297.     if Input.trigger?(Input::C)
  298.       if @itemlist_window.item_number == 0
  299.         Sound.play_buzzer
  300.         return
  301.       end
  302.       Sound.play_decision
  303.       @itemcommand_window.active = false
  304.       @itemlist_window.index = 0
  305.       @itemlist_window.active = true
  306.       return
  307.     end
  308.   end

  309.   def update_itemlist
  310.     if Input.trigger?(Input::B)
  311.       Sound.play_cancel
  312.       @itemcommand_window.active = true
  313.       @itemlist_window.active = false
  314.       @itemcommand_window.index = @command_index
  315.     elsif Input.trigger?(Input::C)
  316.       @item = @itemlist_window.item
  317.       if @item != nil
  318.         $game_party.last_item_id = @item.id
  319.       end
  320.       if $game_party.item_can_use?(@item)
  321.         Sound.play_decision
  322.         determine_item
  323.       else
  324.         Sound.play_buzzer
  325.       end
  326.     end
  327.   end

  328.   def determine_item
  329.     if @item.for_friend?
  330.       show_target_window(@itemlist_window.index % 2 == 0)
  331.       if @item.for_all?
  332.         @target_window.index = 99
  333.       else
  334.         if $game_party.last_target_index < @target_window.item_max
  335.           @target_window.index = $game_party.last_target_index
  336.         else
  337.           @target_window.index = 0
  338.         end
  339.       end
  340.     else
  341.       use_item_nontarget
  342.     end
  343.   end

  344.   def update_target_selection
  345.     if Input.trigger?(Input::B)
  346.       Sound.play_cancel
  347.       if $game_party.item_number(@item) == 0
  348.         @itemlist_window.refresh                 
  349.       end
  350.       @itemlist_window.active = true
  351.       @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  352.       hide_target_window
  353.       @itemlist_window.active = true
  354.     elsif Input.trigger?(Input::C)
  355.       if not $game_party.item_can_use?(@item)
  356.         Sound.play_buzzer
  357.       else
  358.         determine_target
  359.       end
  360.     end
  361.   end

  362.   def determine_target
  363.     used = false
  364.     if @item.for_all?
  365.       for target in $game_party.members
  366.         target.item_effect(target, @item)
  367.         used = true unless target.skipped
  368.       end
  369.     else
  370.       $game_party.last_target_index = @target_window.index
  371.       target = $game_party.members[@target_window.index]
  372.       target.item_effect(target, @item)
  373.       used = true unless target.skipped
  374.     end
  375.     if used
  376.       use_item_nontarget
  377.     else
  378.       Sound.play_buzzer
  379.     end
  380.   end

  381.   def show_target_window(right)
  382.     @itemlist_window.active = false
  383.     width_remain = 544 - @target_window.width
  384.     @target_window.x = right ? width_remain : 0
  385.     @target_window.visible = true
  386.     @target_window.active = true
  387.     if right
  388.       @viewport.rect.set(0, 0, width_remain, 416)
  389.       @viewport.ox = 0
  390.     else
  391.       @viewport.rect.set(@target_window.width, 0, width_remain, 416)
  392.       @viewport.ox = @target_window.width
  393.     end
  394.   end

  395.   def hide_target_window
  396.     @target_window.visible = false
  397.     @target_window.active = false
  398.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  399.     @viewport.rect.set(0, 0, 544, 416)
  400.     @viewport.ox = 0
  401.   end

  402.   def use_item_nontarget
  403.     Sound.play_use_item
  404.     $game_party.consume_item(@item)
  405.     @itemlist_window.draw_item(@itemlist_window.index)
  406.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  407.     @target_window.refresh
  408.     if $game_party.all_dead?
  409.       $scene = Scene_Gameover.new
  410.     elsif @item.common_event_id > 0
  411.       $game_temp.common_event_id = @item.common_event_id
  412.       $scene = Scene_Map.new
  413.     end
  414.   end
  415. end

  416. #==============================================================================
  417. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  418. #==============================================================================

复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
142 小时
注册时间
2008-7-25
帖子
259
7
 楼主| 发表于 2009-1-3 21:08:08 | 只看该作者
版主,我……
这个脚本是在地图上的物品分类,不控制战斗时的物品分类。
谢谢,您幸苦了。{/hx}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

kissye的宠物<

梦石
0
星屑
61
在线时间
1563 小时
注册时间
2008-8-11
帖子
6174

贵宾

8
发表于 2009-1-3 21:34:19 | 只看该作者
你不会稍微定义一下么==
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
9
发表于 2009-1-3 23:39:40 | 只看该作者
~o~ 弄了个xp的。
http://rpg.blue/viewthread.php?tid=114237&ntime=2009%2D1%2D3+15%3A38%3A16
喜欢的拿去移植 - _, -+
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-9 15:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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