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

Project1

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

我们的小幽的脚本又有问题了……

 关闭 [复制链接]

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3437
在线时间
3629 小时
注册时间
2006-9-6
帖子
37402

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

跳转到指定楼层
1
发表于 2008-5-18 02:44:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. =begin
  2. 使用方法:
  3. 1.搜索
  4.    @chaojie = true if $game_variables[6] <= @itemnumber
  5. 将那个“1”换成控制总数的变量号
  6. 注意:一共有三处……
  7. 2.将图片放到Graphics/Pictures/bag.png
  8. 规格180*360
  9. 3.搜索
  10.    self.contents.draw_text(4, 0, self.width - 40, WLH, "我可爱的背包")
  11. 把“我可爱的背包”换成你想要的文字
  12. =end

  13. class Window_ItemBag < Window_Base
  14.   def initialize
  15.     super(0,0,544-180,56)
  16.     self.contents = Bitmap.new(width - 32, height - 32)
  17.     self.contents.draw_text(4, 0, self.width - 40, WLH, "小背包")
  18.   end
  19. end
  20. #==============================================================================
  21. # ■ Window_Item
  22. #------------------------------------------------------------------------------
  23. #  物品画面、战斗画面、显示浏览物品的窗口。
  24. #==============================================================================

  25. class Window_Item < Window_Selectable
  26.   #--------------------------------------------------------------------------
  27.   # ● 初始化对象
  28.   #     x      : 窗口的 X 坐标
  29.   #     y      : 窗口的 Y 坐标
  30.   #     width  : 窗口的宽
  31.   #     height : 窗口的高
  32.   #--------------------------------------------------------------------------
  33.   def initialize(x, y, width, height)
  34.     super(x, y, width, height)
  35.     @column_max = 2
  36.     self.index = 0
  37.     refresh
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 取得物品
  41.   #--------------------------------------------------------------------------
  42.   def item
  43.     return @data[self.index]
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 列表中包含的物品
  47.   #     item : 物品
  48.   #--------------------------------------------------------------------------
  49.   def include?(item)
  50.     return false if item == nil
  51.     if $game_temp.in_battle
  52.       return false unless item.is_a?(RPG::Item)
  53.     end
  54.     return true
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 显示是否可以使用物品
  58.   #     item : 物品
  59.   #--------------------------------------------------------------------------
  60.   def enable?(item)
  61.     return $game_party.item_can_use?(item)
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 刷新
  65.   #--------------------------------------------------------------------------
  66.   def refresh
  67.     @data = []
  68.     for item in $game_party.items
  69.       next unless include?(item)
  70.       @data.push(item)
  71.       if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
  72.         self.index = @data.size - 1
  73.       end
  74.     end
  75.     @data.push(nil) if include?(nil)
  76.     @item_max = @data.size
  77.     create_contents
  78.     for i in 0...@item_max
  79.       draw_item(i)
  80.     end
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 描绘项目
  84.   #     index : 项目编号
  85.   #--------------------------------------------------------------------------
  86.   def draw_item(index)
  87.     rect = item_rect(index)
  88.     self.contents.clear_rect(rect)
  89.     item = @data[index]
  90.     if item != nil
  91.       number = $game_party.item_number(item)
  92.       enabled = enable?(item)
  93.       rect.width -= 4
  94.       draw_item_name(item, rect.x, rect.y, enabled)
  95.       self.contents.font.size = 12
  96.       self.contents.draw_text(rect.x + 5  , rect.y - 23, WLH , 80, number.to_s, 2)
  97.       self.contents.font.size = 20
  98.     end
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 更新帮助文本
  102.   #--------------------------------------------------------------------------
  103.   def update_help
  104.     @help_window.set_text(item == nil ? "" : item.description)
  105.   end

  106.   def draw_item_name(item, x, y, enabled = true)
  107.     if item != nil
  108.       draw_icon(item.icon_index, x, y, enabled)
  109.       self.contents.font.color = normal_color
  110.       self.contents.font.color.alpha = enabled ? 255 : 128
  111.       self.contents.draw_text(x + 48, y, 172, WLH, item.name)
  112.     end
  113.   end  
  114. end

  115. #==============================================================================
  116. # ■ Scene_Item
  117. #------------------------------------------------------------------------------
  118. #  处理物品画面的类。
  119. #==============================================================================

  120. class Scene_Item < Scene_Base
  121.   #--------------------------------------------------------------------------
  122.   # ● 开始处理
  123.   #--------------------------------------------------------------------------
  124.   def start
  125.     super
  126.     create_menu_background
  127.     @viewport = Viewport.new(0, 0, 544, 416)
  128.     @help_window = Window_Help.new
  129.     @help_window.viewport = @viewport
  130.     @item_window = Window_Item.new(0, 56, 544-180, 416-56*2)
  131.     @item_window.viewport = @viewport
  132.     @item_window.help_window = @help_window
  133.     @help_window.y = 416-56
  134.     @item_window.active = false
  135.     @sprite = Sprite.new
  136.     @sprite.x = 544-180
  137.     @sprite.bitmap = Bitmap.new("Graphics/Pictures/bag")
  138.     @sprite.opacity = 160
  139.     @target_window = Window_MenuStatus.new(0, 0)
  140.     @bag_window = Window_ItemBag.new
  141.     hide_target_window
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● 结束处理
  145.   #--------------------------------------------------------------------------
  146.   def terminate
  147.     super
  148.     dispose_menu_background
  149.     @viewport.dispose
  150.     @sprite.dispose
  151.     @help_window.dispose
  152.     @item_window.dispose
  153.     @target_window.dispose
  154.     @bag_window.dispose
  155.   end
  156.   #--------------------------------------------------------------------------
  157.   # ● 返回至原来的画面
  158.   #--------------------------------------------------------------------------
  159.   def return_scene
  160.     $scene = Scene_Menu.new(0)
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● 更新画面
  164.   #--------------------------------------------------------------------------
  165.   def update
  166.     super
  167.     update_menu_background
  168.     @help_window.update
  169.     @item_window.update
  170.     @target_window.update
  171.     if @item_window.active
  172.       update_item_selection
  173.     elsif @target_window.active
  174.       update_target_selection
  175.     end
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 更新物品选择
  179.   #--------------------------------------------------------------------------
  180.   def update_item_selection
  181.     if Input.trigger?(Input::B)
  182.       Sound.play_cancel
  183.       return_scene
  184.     elsif Input.trigger?(Input::C)
  185.       @item = @item_window.item
  186.       if @item != nil
  187.         $game_party.last_item_id = @item.id
  188.       end
  189.       if $game_party.item_can_use?(@item)
  190.         Sound.play_decision
  191.         determine_item
  192.       else
  193.         Sound.play_buzzer
  194.       end
  195.     end
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 确定物品
  199.   #--------------------------------------------------------------------------
  200.   def determine_item
  201.     if @item.for_friend?
  202.       show_target_window(@item_window.index % 2 == 0)
  203.       if @item.for_all?
  204.         @target_window.index = 99
  205.       else
  206.         if $game_party.last_target_index < @target_window.item_max
  207.           @target_window.index = $game_party.last_target_index
  208.         else
  209.           @target_window.index = 0
  210.         end
  211.       end
  212.     else
  213.       use_item_nontarget
  214.     end
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ● 更新选择目标
  218.   #--------------------------------------------------------------------------
  219.   def update_target_selection
  220.     if Input.trigger?(Input::B)
  221.       Sound.play_cancel
  222.       if $game_party.item_number(@item) == 0    # 物品使用完了的情况下
  223.         @item_window.refresh                    # 重新生成窗口内容
  224.       end
  225.       hide_target_window
  226.     elsif Input.trigger?(Input::C)
  227.       if not $game_party.item_can_use?(@item)
  228.         Sound.play_buzzer
  229.       else
  230.         determine_target
  231.       end
  232.     end
  233.   end
  234.   #--------------------------------------------------------------------------
  235.   # ● 确定目标
  236.   #    无效的情况下 (在不能战斗的情况下使用恢复剂) 播放 buzzer 的 SE。
  237.   #--------------------------------------------------------------------------
  238.   def determine_target
  239.     used = false
  240.     if @item.for_all?
  241.       for target in $game_party.members
  242.         target.item_effect(target, @item)
  243.         used = true unless target.skipped
  244.       end
  245.     else
  246.       $game_party.last_target_index = @target_window.index
  247.       target = $game_party.members[@target_window.index]
  248.       target.item_effect(target, @item)
  249.       used = true unless target.skipped
  250.     end
  251.     if used
  252.       use_item_nontarget
  253.     else
  254.       Sound.play_buzzer
  255.     end
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # ● 显示目标窗口
  259.   #     right : 靠右标志 (false 为靠左)
  260.   #--------------------------------------------------------------------------
  261.   def show_target_window(right)
  262.     @item_window.active = false
  263.     width_remain = 544 - @target_window.width
  264.     @target_window.x = right ? width_remain : 0
  265.     @target_window.visible = true
  266.     @target_window.active = true
  267.     if right
  268.       @viewport.rect.set(0, 0, width_remain, 416)
  269.       @viewport.ox = 0
  270.     else
  271.       @viewport.rect.set(@target_window.width, 0, width_remain, 416)
  272.       @viewport.ox = @target_window.width
  273.     end
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   # ● 不显示目标窗口
  277.   #--------------------------------------------------------------------------
  278.   def hide_target_window
  279.     @item_window.active = true
  280.     @target_window.visible = false
  281.     @target_window.active = false
  282.     @viewport.rect.set(0, 0, 544, 416)
  283.     @viewport.ox = 0
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 使用物品 (也适用于我方对象以外的效果)
  287.   #--------------------------------------------------------------------------
  288.   def use_item_nontarget
  289.     Sound.play_use_item
  290.     $game_party.consume_item(@item)
  291.     @item_window.draw_item(@item_window.index)
  292.     @target_window.refresh
  293.     if $game_party.all_dead?
  294.       $scene = Scene_Gameover.new
  295.     elsif @item.common_event_id > 0
  296.       $game_temp.common_event_id = @item.common_event_id
  297.       $scene = Scene_Map.new
  298.     end
  299.   end
  300. end

  301. class Game_Party < Game_Unit
  302. alias old_gain_item gain_item
  303. def gain_item(item, n, include_equip = false)
  304.   @itemnumber = 0
  305.   @chaojie = false
  306.   for i in 0...$data_items.size
  307.     new_item = $data_items[i]
  308.     @itemnumber += 1 if has_item?(new_item)
  309.     @chaojie = true if $game_variables[6] <= @itemnumber
  310.   end
  311.   for i in 0...$data_weapons.size
  312.     new_item = $data_weapons[i]
  313.     @itemnumber += 1 if has_item?(new_item)
  314.     @chaojie = true if $game_variables[6] <= @itemnumber
  315.   end
  316.   for i in 0...$data_armors.size
  317.     new_item = $data_armors[i]
  318.     @itemnumber += 1 if has_item?(new_item)
  319.     @chaojie = true if $game_variables[6] <= @itemnumber
  320.   end
  321.   @chaojie = true if has_item?(item)
  322.   @chaojie = false if n < 0
  323.   return if @chaojie
  324.   old_gain_item(item,n,include_equip)
  325. end
  326. end

  327. #==============================================================================
  328. # ■ Scene_Shop
  329. #------------------------------------------------------------------------------
  330. #  处理商店画面的类。
  331. #==============================================================================

  332. class Scene_Shop < Scene_Base
  333.   #--------------------------------------------------------------------------
  334.   # ● 更新选择购买物品
  335.   #--------------------------------------------------------------------------
  336.   def update_buy_selection
  337.     @status_window.item = @buy_window.item
  338.     if Input.trigger?(Input::B)
  339.       Sound.play_cancel
  340.       @command_window.active = true
  341.       @dummy_window.visible = true
  342.       @buy_window.active = false
  343.       @buy_window.visible = false
  344.       @status_window.visible = false
  345.       @status_window.item = nil
  346.       @help_window.set_text("")
  347.       return
  348.     end
  349.     if Input.trigger?(Input::C)
  350.       @item = @buy_window.item
  351.       number = $game_party.item_number(@item)
  352.         @itemnumber = 0
  353.         @chaojie = false
  354.         for i in 0...$data_items.size
  355.           new_item = $data_items[i]
  356.           @itemnumber += 1 if $game_party.has_item?(new_item)
  357.           @chaojie = true if $game_variables[6] <= @itemnumber
  358.         end
  359.         for i in 0...$data_weapons.size
  360.           new_item = $data_weapons[i]
  361.           @itemnumber += 1 if $game_party.has_item?(new_item)
  362.           @chaojie = true if $game_variables[6] <= @itemnumber
  363.         end
  364.         for i in 0...$data_armors.size
  365.           new_item = $data_armors[i]
  366.           @itemnumber += 1 if $game_party.has_item?(new_item)
  367.           @chaojie = true if $game_variables[6] <= @itemnumber
  368.         end
  369.       if @item == nil or @item.price > $game_party.gold or number == 99 or @chaojie
  370.         Sound.play_buzzer
  371.       else
  372.         Sound.play_decision
  373.         max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  374.         max = [max, 99 - number].min
  375.         @buy_window.active = false
  376.         @buy_window.visible = false
  377.         @number_window.set(@item, max, @item.price)
  378.         @number_window.active = true
  379.         @number_window.visible = true
  380.       end
  381.     end
  382.   end
  383. end

  384. #==============================================================================
  385. # ■ Window_ShopBuy
  386. #------------------------------------------------------------------------------
  387. #  商店画面、浏览显示可以购买的商品的窗口。
  388. #==============================================================================

  389. class Window_ShopBuy < Window_Selectable

  390.   def draw_item(index)
  391.     item = @data[index]
  392.     number = $game_party.item_number(item)
  393.     enabled = (item.price <= $game_party.gold and number < 99)
  394.     @itemnumber = 0
  395.     @chaojie = false
  396.     for i in 0...$data_items.size
  397.       new_item = $data_items[i]
  398.       @itemnumber += 1 if $game_party.has_item?(new_item)
  399.       @chaojie = true if $game_variables[6] <= @itemnumber
  400.     end
  401.     for i in 0...$data_weapons.size
  402.       new_item = $data_weapons[i]
  403.       @itemnumber += 1 if $game_party.has_item?(new_item)
  404.       @chaojie = true if $game_variables[6] <= @itemnumber
  405.     end
  406.     for i in 0...$data_armors.size
  407.       new_item = $data_armors[i]
  408.       @itemnumber += 1 if $game_party.has_item?(new_item)
  409.       @chaojie = true if $game_variables[6] <= @itemnumber
  410.     end
  411.     if enabled == true and @chaojie == false
  412.       enabled = true
  413.     else
  414.       enabled = false
  415.     end
  416.     rect = item_rect(index)
  417.     self.contents.clear_rect(rect)
  418.     draw_item_name(item, rect.x, rect.y, enabled)
  419.     rect.width -= 4
  420.     self.contents.draw_text(rect, item.price, 2)
  421.   end
  422. end

  423. #==============================================================================
  424. # ■ Scene_Equip
  425. #------------------------------------------------------------------------------
  426. #  处理装备画面
  427. #==============================================================================

  428. class Scene_Equip < Scene_Base
  429.   #--------------------------------------------------------------------------
  430.   # ● 更新选择物品
  431.   #--------------------------------------------------------------------------
  432.   def update_item_selection
  433.     if Input.trigger?(Input::B)
  434.       Sound.play_cancel
  435.       @equip_window.active = true
  436.       @item_window.active = false
  437.       @item_window.index = -1
  438.     elsif Input.trigger?(Input::C)
  439.     @itemnumber = 0
  440.     @chaojie = false
  441.     for i in 0...$data_items.size
  442.       new_item = $data_items[i]
  443.       @itemnumber += 1 if $game_party.has_item?(new_item)
  444.       @chaojie = true if $game_variables[6] <= @itemnumber
  445.     end
  446.     for i in 0...$data_weapons.size
  447.       new_item = $data_weapons[i]
  448.       @itemnumber += 1 if $game_party.has_item?(new_item)
  449.       @chaojie = true if $game_variables[6] <= @itemnumber
  450.     end
  451.     for i in 0...$data_armors.size
  452.       new_item = $data_armors[i]
  453.       @itemnumber += 1 if $game_party.has_item?(new_item)
  454.       @chaojie = true if $game_variables[6] <= @itemnumber
  455.     end
  456.     case @equip_window.index
  457.       when 0
  458.        temp = $game_actors[@actor_index+1].weapon_id
  459.       when 1
  460.        temp = $game_actors[@actor_index+1].armor1_id
  461.       when 2
  462.        temp = $game_actors[@actor_index+1].armor2_id
  463.       when 3
  464.        temp = $game_actors[@actor_index+1].armor3_id
  465.       when 4
  466.        temp = $game_actors[@actor_index+1].armor4_id
  467.      end
  468.     if @chaojie and temp != 0
  469.       Sound.play_buzzer
  470.     else
  471.       Sound.play_equip
  472.       @actor.change_equip(@equip_window.index, @item_window.item)
  473.       @equip_window.active = true
  474.       @item_window.active = false
  475.       @item_window.index = -1
  476.       @equip_window.refresh
  477.       for item_window in @item_windows
  478.         item_window.refresh
  479.       end
  480.     end
  481.     end
  482.   end
  483. end
复制代码

一切OK,只不过呢……同一个物品只能有一个……|||||
麻烦谁修正一下……

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3437
在线时间
3629 小时
注册时间
2006-9-6
帖子
37402

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

2
 楼主| 发表于 2008-5-19 02:42:18 | 只看该作者
我来自顶了……
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

超级白痴

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-5-2
帖子
140
3
发表于 2008-5-19 02:44:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3437
在线时间
3629 小时
注册时间
2006-9-6
帖子
37402

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

4
 楼主| 发表于 2008-5-24 03:03:11 | 只看该作者
以下引用Fight。于2008-5-18 18:44:05的发言:

是牧场背包的脚本窘……

我还能说什么呢……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
5
发表于 2008-5-24 04:18:03 | 只看该作者
是一个占用一格不能重叠还是....
不能重叠在一格?
...
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3437
在线时间
3629 小时
注册时间
2006-9-6
帖子
37402

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

6
 楼主| 发表于 2008-5-24 04:35:21 | 只看该作者
以下引用火鸡三毛老大于2008-5-23 20:18:03的发言:

是一个占用一格不能重叠还是....
不能重叠在一格?
...

一种物品只能有一个,

你把这个放到游戏里测试一下比较好。
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

7
发表于 2008-5-24 04:58:56 | 只看该作者
以下引用越前リョーマ于2008-5-17 18:44:01的发言:


本贴悬赏额度如下:VIP:0   积分:100   
=begin
使用方法:
1.搜索
   @chaojie = true if $game_variables[6] <= @itemnumber
将那个“1”换成控制总数的变量号
注意:一共有三处……
2.将图片放到Graphics/Pictures/bag.png
规格180*360
3.搜索
   self.contents.draw_text(4, 0, self.width - 40, WLH, "我可爱的背包")
把“我可爱的背包”换成你想要的文字
=end

一切OK,只不过呢……同一个物品只能有一个……|||||
麻烦谁修正一下……

怎么有点像以前的礼物系统?
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3437
在线时间
3629 小时
注册时间
2006-9-6
帖子
37402

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

8
 楼主| 发表于 2008-5-24 05:06:45 | 只看该作者
以下引用yangff于2008-5-23 20:58:56的发言:


以下引用越前リョーマ于2008-5-17 18:44:01的发言:


本贴悬赏额度如下:VIP:0   积分:100   
=begin
使用方法:
1.搜索
  @chaojie = true if $game_variables[6] <= @itemnumber
将那个“1”换成控制总数的变量号
注意:一共有三处……
2.将图片放到Graphics/Pictures/bag.png
规格180*360
3.搜索
  self.contents.draw_text(4, 0, self.width - 40, WLH, "我可爱的背包")
把“我可爱的背包”换成你想要的文字
=end

一切OK,只不过呢……同一个物品只能有一个……|||||
麻烦谁修正一下……


怎么有点像以前的礼物系统?

像么……

想不起来了……
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

9
发表于 2008-5-24 05:08:19 | 只看该作者
这样?
说没图片调试不能!
  1. =begin
  2. 使用方法:
  3. 1.搜索
  4.    @chaojie = true if $game_variables[6] <= @itemnumber
  5. 将那个“1”换成控制总数的变量号
  6. 注意:一共有三处……
  7. 2.将图片放到Graphics/Pictures/bag.png
  8. 规格180*360
  9. 3.搜索
  10.    self.contents.draw_text(4, 0, self.width - 40, WLH, "我可爱的背包")
  11. 把“我可爱的背包”换成你想要的文字
  12. =end

  13. class Window_ItemBag < Window_Base
  14.   def initialize
  15.     super(0,0,544-180,56)
  16.     self.contents = Bitmap.new(width - 32, height - 32)
  17.     self.contents.draw_text(4, 0, self.width - 40, WLH, "小背包")
  18.   end
  19. end
  20. #==============================================================================
  21. # ■ Window_Item
  22. #------------------------------------------------------------------------------
  23. #  物品画面、战斗画面、显示浏览物品的窗口。
  24. #==============================================================================

  25. class Window_Item < Window_Selectable
  26.   #--------------------------------------------------------------------------
  27.   # ● 初始化对象
  28.   #     x      : 窗口的 X 坐标
  29.   #     y      : 窗口的 Y 坐标
  30.   #     width  : 窗口的宽
  31.   #     height : 窗口的高
  32.   #--------------------------------------------------------------------------
  33.   def initialize(x, y, width, height)
  34.     super(x, y, width, height)
  35.     @column_max = 2
  36.     self.index = 0
  37.     refresh
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 取得物品
  41.   #--------------------------------------------------------------------------
  42.   def item
  43.     return @data[self.index]
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 列表中包含的物品
  47.   #     item : 物品
  48.   #--------------------------------------------------------------------------
  49.   def include?(item)
  50.     return false if item == nil
  51.     if $game_temp.in_battle
  52.       return false unless item.is_a?(RPG::Item)
  53.     end
  54.     return true
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 显示是否可以使用物品
  58.   #     item : 物品
  59.   #--------------------------------------------------------------------------
  60.   def enable?(item)
  61.     return $game_party.item_can_use?(item)
  62.   end
  63.   #--------------------------------------------------------------------------
  64.   # ● 刷新
  65.   #--------------------------------------------------------------------------
  66.   def refresh
  67.     @data = []
  68.     @tmp = []
  69.     for item in $game_party.items
  70.       next unless include?(item)
  71.       @data.push(item)
  72.       if item.is_a?(RPG::Item) and item.id == $game_party.last_item_id
  73.         self.index = @data.size - 1
  74.       end
  75.     end
  76.     @data.push(nil) if include?(nil)
  77.     @item_max = @data.size
  78.     create_contents
  79.     for i in 0...@item_max
  80.       nodraw = false
  81.       for n in [email protected]
  82.         if @tmp[n] == @data[i]
  83.           nodraw = true
  84.         end
  85.       end
  86.       if nodraw == false
  87.         draw_item(i)
  88.         @tmp.push(@data[i])
  89.       end
  90.     end
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● 描绘项目
  94.   #     index : 项目编号
  95.   #--------------------------------------------------------------------------
  96.   def draw_item(index)
  97.     rect = item_rect(index)
  98.     self.contents.clear_rect(rect)
  99.     item = @data[index]
  100.     if item != nil
  101.       number = $game_party.item_number(item)
  102.       enabled = enable?(item)
  103.       rect.width -= 4
  104.       draw_item_name(item, rect.x, rect.y, enabled)
  105.       self.contents.font.size = 12
  106.       self.contents.draw_text(rect.x + 5  , rect.y - 23, WLH , 80, number.to_s, 2)
  107.       self.contents.font.size = 20
  108.     end
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 更新帮助文本
  112.   #--------------------------------------------------------------------------
  113.   def update_help
  114.     @help_window.set_text(item == nil ? "" : item.description)
  115.   end

  116.   def draw_item_name(item, x, y, enabled = true)
  117.     if item != nil
  118.       draw_icon(item.icon_index, x, y, enabled)
  119.       self.contents.font.color = normal_color
  120.       self.contents.font.color.alpha = enabled ? 255 : 128
  121.       self.contents.draw_text(x + 48, y, 172, WLH, item.name)
  122.     end
  123.   end  
  124. end

  125. #==============================================================================
  126. # ■ Scene_Item
  127. #------------------------------------------------------------------------------
  128. #  处理物品画面的类。
  129. #==============================================================================

  130. class Scene_Item < Scene_Base
  131.   #--------------------------------------------------------------------------
  132.   # ● 开始处理
  133.   #--------------------------------------------------------------------------
  134.   def start
  135.     super
  136.     create_menu_background
  137.     @viewport = Viewport.new(0, 0, 544, 416)
  138.     @help_window = Window_Help.new
  139.     @help_window.viewport = @viewport
  140.     @item_window = Window_Item.new(0, 56, 544-180, 416-56*2)
  141.     @item_window.viewport = @viewport
  142.     @item_window.help_window = @help_window
  143.     @help_window.y = 416-56
  144.     @item_window.active = false
  145.     @sprite = Sprite.new
  146.     @sprite.x = 544-180
  147.     @sprite.bitmap = Bitmap.new("Graphics/Pictures/bag")
  148.     @sprite.opacity = 160
  149.     @target_window = Window_MenuStatus.new(0, 0)
  150.     @bag_window = Window_ItemBag.new
  151.     hide_target_window
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 结束处理
  155.   #--------------------------------------------------------------------------
  156.   def terminate
  157.     super
  158.     dispose_menu_background
  159.     @viewport.dispose
  160.     @sprite.dispose
  161.     @help_window.dispose
  162.     @item_window.dispose
  163.     @target_window.dispose
  164.     @bag_window.dispose
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● 返回至原来的画面
  168.   #--------------------------------------------------------------------------
  169.   def return_scene
  170.     $scene = Scene_Menu.new(0)
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 更新画面
  174.   #--------------------------------------------------------------------------
  175.   def update
  176.     super
  177.     update_menu_background
  178.     @help_window.update
  179.     @item_window.update
  180.     @target_window.update
  181.     if @item_window.active
  182.       update_item_selection
  183.     elsif @target_window.active
  184.       update_target_selection
  185.     end
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ● 更新物品选择
  189.   #--------------------------------------------------------------------------
  190.   def update_item_selection
  191.     if Input.trigger?(Input::B)
  192.       Sound.play_cancel
  193.       return_scene
  194.     elsif Input.trigger?(Input::C)
  195.       @item = @item_window.item
  196.       if @item != nil
  197.         $game_party.last_item_id = @item.id
  198.       end
  199.       if $game_party.item_can_use?(@item)
  200.         Sound.play_decision
  201.         determine_item
  202.       else
  203.         Sound.play_buzzer
  204.       end
  205.     end
  206.   end
  207.   #--------------------------------------------------------------------------
  208.   # ● 确定物品
  209.   #--------------------------------------------------------------------------
  210.   def determine_item
  211.     if @item.for_friend?
  212.       show_target_window(@item_window.index % 2 == 0)
  213.       if @item.for_all?
  214.         @target_window.index = 99
  215.       else
  216.         if $game_party.last_target_index < @target_window.item_max
  217.           @target_window.index = $game_party.last_target_index
  218.         else
  219.           @target_window.index = 0
  220.         end
  221.       end
  222.     else
  223.       use_item_nontarget
  224.     end
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● 更新选择目标
  228.   #--------------------------------------------------------------------------
  229.   def update_target_selection
  230.     if Input.trigger?(Input::B)
  231.       Sound.play_cancel
  232.       if $game_party.item_number(@item) == 0    # 物品使用完了的情况下
  233.         @item_window.refresh                    # 重新生成窗口内容
  234.       end
  235.       hide_target_window
  236.     elsif Input.trigger?(Input::C)
  237.       if not $game_party.item_can_use?(@item)
  238.         Sound.play_buzzer
  239.       else
  240.         determine_target
  241.       end
  242.     end
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 确定目标
  246.   #    无效的情况下 (在不能战斗的情况下使用恢复剂) 播放 buzzer 的 SE。
  247.   #--------------------------------------------------------------------------
  248.   def determine_target
  249.     used = false
  250.     if @item.for_all?
  251.       for target in $game_party.members
  252.         target.item_effect(target, @item)
  253.         used = true unless target.skipped
  254.       end
  255.     else
  256.       $game_party.last_target_index = @target_window.index
  257.       target = $game_party.members[@target_window.index]
  258.       target.item_effect(target, @item)
  259.       used = true unless target.skipped
  260.     end
  261.     if used
  262.       use_item_nontarget
  263.     else
  264.       Sound.play_buzzer
  265.     end
  266.   end
  267.   #--------------------------------------------------------------------------
  268.   # ● 显示目标窗口
  269.   #     right : 靠右标志 (false 为靠左)
  270.   #--------------------------------------------------------------------------
  271.   def show_target_window(right)
  272.     @item_window.active = false
  273.     width_remain = 544 - @target_window.width
  274.     @target_window.x = right ? width_remain : 0
  275.     @target_window.visible = true
  276.     @target_window.active = true
  277.     if right
  278.       @viewport.rect.set(0, 0, width_remain, 416)
  279.       @viewport.ox = 0
  280.     else
  281.       @viewport.rect.set(@target_window.width, 0, width_remain, 416)
  282.       @viewport.ox = @target_window.width
  283.     end
  284.   end
  285.   #--------------------------------------------------------------------------
  286.   # ● 不显示目标窗口
  287.   #--------------------------------------------------------------------------
  288.   def hide_target_window
  289.     @item_window.active = true
  290.     @target_window.visible = false
  291.     @target_window.active = false
  292.     @viewport.rect.set(0, 0, 544, 416)
  293.     @viewport.ox = 0
  294.   end
  295.   #--------------------------------------------------------------------------
  296.   # ● 使用物品 (也适用于我方对象以外的效果)
  297.   #--------------------------------------------------------------------------
  298.   def use_item_nontarget
  299.     Sound.play_use_item
  300.     $game_party.consume_item(@item)
  301.     @item_window.draw_item(@item_window.index)
  302.     @target_window.refresh
  303.     if $game_party.all_dead?
  304.       $scene = Scene_Gameover.new
  305.     elsif @item.common_event_id > 0
  306.       $game_temp.common_event_id = @item.common_event_id
  307.       $scene = Scene_Map.new
  308.     end
  309.   end
  310. end

  311. class Game_Party < Game_Unit
  312. alias old_gain_item gain_item
  313. def gain_item(item, n, include_equip = false)
  314.   @itemnumber = 0
  315.   @chaojie = false
  316.   for i in 0...$data_items.size
  317.     new_item = $data_items[i]
  318.     @itemnumber += 1 if has_item?(new_item)
  319.     @chaojie = true if $game_variables[6] <= @itemnumber
  320.   end
  321.   for i in 0...$data_weapons.size
  322.     new_item = $data_weapons[i]
  323.     @itemnumber += 1 if has_item?(new_item)
  324.     @chaojie = true if $game_variables[6] <= @itemnumber
  325.   end
  326.   for i in 0...$data_armors.size
  327.     new_item = $data_armors[i]
  328.     @itemnumber += 1 if has_item?(new_item)
  329.     @chaojie = true if $game_variables[6] <= @itemnumber
  330.   end
  331.   @chaojie = true if has_item?(item)
  332.   @chaojie = false if n < 0
  333.   return if @chaojie
  334.   old_gain_item(item,n,include_equip)
  335. end
  336. end

  337. #==============================================================================
  338. # ■ Scene_Shop
  339. #------------------------------------------------------------------------------
  340. #  处理商店画面的类。
  341. #==============================================================================

  342. class Scene_Shop < Scene_Base
  343.   #--------------------------------------------------------------------------
  344.   # ● 更新选择购买物品
  345.   #--------------------------------------------------------------------------
  346.   def update_buy_selection
  347.     @status_window.item = @buy_window.item
  348.     if Input.trigger?(Input::B)
  349.       Sound.play_cancel
  350.       @command_window.active = true
  351.       @dummy_window.visible = true
  352.       @buy_window.active = false
  353.       @buy_window.visible = false
  354.       @status_window.visible = false
  355.       @status_window.item = nil
  356.       @help_window.set_text("")
  357.       return
  358.     end
  359.     if Input.trigger?(Input::C)
  360.       @item = @buy_window.item
  361.       number = $game_party.item_number(@item)
  362.         @itemnumber = 0
  363.         @chaojie = false
  364.         for i in 0...$data_items.size
  365.           new_item = $data_items[i]
  366.           @itemnumber += 1 if $game_party.has_item?(new_item)
  367.           @chaojie = true if $game_variables[6] <= @itemnumber
  368.         end
  369.         for i in 0...$data_weapons.size
  370.           new_item = $data_weapons[i]
  371.           @itemnumber += 1 if $game_party.has_item?(new_item)
  372.           @chaojie = true if $game_variables[6] <= @itemnumber
  373.         end
  374.         for i in 0...$data_armors.size
  375.           new_item = $data_armors[i]
  376.           @itemnumber += 1 if $game_party.has_item?(new_item)
  377.           @chaojie = true if $game_variables[6] <= @itemnumber
  378.         end
  379.       if @item == nil or @item.price > $game_party.gold or number == 99 or @chaojie
  380.         Sound.play_buzzer
  381.       else
  382.         Sound.play_decision
  383.         max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  384.         max = [max, 99 - number].min
  385.         @buy_window.active = false
  386.         @buy_window.visible = false
  387.         @number_window.set(@item, max, @item.price)
  388.         @number_window.active = true
  389.         @number_window.visible = true
  390.       end
  391.     end
  392.   end
  393. end

  394. #==============================================================================
  395. # ■ Window_ShopBuy
  396. #------------------------------------------------------------------------------
  397. #  商店画面、浏览显示可以购买的商品的窗口。
  398. #==============================================================================

  399. class Window_ShopBuy < Window_Selectable

  400.   def draw_item(index)
  401.     item = @data[index]
  402.     number = $game_party.item_number(item)
  403.     enabled = (item.price <= $game_party.gold and number < 99)
  404.     @itemnumber = 0
  405.     @chaojie = false
  406.     for i in 0...$data_items.size
  407.       new_item = $data_items[i]
  408.       @itemnumber += 1 if $game_party.has_item?(new_item)
  409.       @chaojie = true if $game_variables[6] <= @itemnumber
  410.     end
  411.     for i in 0...$data_weapons.size
  412.       new_item = $data_weapons[i]
  413.       @itemnumber += 1 if $game_party.has_item?(new_item)
  414.       @chaojie = true if $game_variables[6] <= @itemnumber
  415.     end
  416.     for i in 0...$data_armors.size
  417.       new_item = $data_armors[i]
  418.       @itemnumber += 1 if $game_party.has_item?(new_item)
  419.       @chaojie = true if $game_variables[6] <= @itemnumber
  420.     end
  421.     if enabled == true and @chaojie == false
  422.       enabled = true
  423.     else
  424.       enabled = false
  425.     end
  426.     rect = item_rect(index)
  427.     self.contents.clear_rect(rect)
  428.     draw_item_name(item, rect.x, rect.y, enabled)
  429.     rect.width -= 4
  430.     self.contents.draw_text(rect, item.price, 2)
  431.   end
  432. end

  433. #==============================================================================
  434. # ■ Scene_Equip
  435. #------------------------------------------------------------------------------
  436. #  处理装备画面
  437. #==============================================================================

  438. class Scene_Equip < Scene_Base
  439.   #--------------------------------------------------------------------------
  440.   # ● 更新选择物品
  441.   #--------------------------------------------------------------------------
  442.   def update_item_selection
  443.     if Input.trigger?(Input::B)
  444.       Sound.play_cancel
  445.       @equip_window.active = true
  446.       @item_window.active = false
  447.       @item_window.index = -1
  448.     elsif Input.trigger?(Input::C)
  449.     @itemnumber = 0
  450.     @chaojie = false
  451.     for i in 0...$data_items.size
  452.       new_item = $data_items[i]
  453.       @itemnumber += 1 if $game_party.has_item?(new_item)
  454.       @chaojie = true if $game_variables[6] <= @itemnumber
  455.     end
  456.     for i in 0...$data_weapons.size
  457.       new_item = $data_weapons[i]
  458.       @itemnumber += 1 if $game_party.has_item?(new_item)
  459.       @chaojie = true if $game_variables[6] <= @itemnumber
  460.     end
  461.     for i in 0...$data_armors.size
  462.       new_item = $data_armors[i]
  463.       @itemnumber += 1 if $game_party.has_item?(new_item)
  464.       @chaojie = true if $game_variables[6] <= @itemnumber
  465.     end
  466.     case @equip_window.index
  467.       when 0
  468.        temp = $game_actors[@actor_index+1].weapon_id
  469.       when 1
  470.        temp = $game_actors[@actor_index+1].armor1_id
  471.       when 2
  472.        temp = $game_actors[@actor_index+1].armor2_id
  473.       when 3
  474.        temp = $game_actors[@actor_index+1].armor3_id
  475.       when 4
  476.        temp = $game_actors[@actor_index+1].armor4_id
  477.      end
  478.     if @chaojie and temp != 0
  479.       Sound.play_buzzer
  480.     else
  481.       Sound.play_equip
  482.       @actor.change_equip(@equip_window.index, @item_window.item)
  483.       @equip_window.active = true
  484.       @item_window.active = false
  485.       @item_window.index = -1
  486.       @equip_window.refresh
  487.       for item_window in @item_windows
  488.         item_window.refresh
  489.       end
  490.     end
  491.     end
  492.   end
  493. end
复制代码
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

10
发表于 2008-5-24 05:09:26 | 只看该作者
以下引用越前リョーマ于2008-5-23 21:06:45的发言:


以下引用yangff于2008-5-23 20:58:56的发言:


以下引用越前リョーマ于2008-5-17 18:44:01的发言:


本贴悬赏额度如下:VIP:0   积分:100   
=begin
使用方法:
1.搜索
@chaojie = true if $game_variables[6] <= @itemnumber
将那个“1”换成控制总数的变量号
注意:一共有三处……
2.将图片放到Graphics/Pictures/bag.png
规格180*360
3.搜索
self.contents.draw_text(4, 0, self.width - 40, WLH, "我可爱的背包")
把“我可爱的背包”换成你想要的文字
=end

一切OK,只不过呢……同一个物品只能有一个……|||||
麻烦谁修正一下……


怎么有点像以前的礼物系统?


像么……

想不起来了……

像~~
你还说有n个地要标小序号 {/hx}
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-24 10:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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