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

Project1

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

[已经过期] 怎么样做在使用物品时有确定与取消选项

[复制链接]

Lv1.梦旅人

梦石
0
星屑
350
在线时间
11 小时
注册时间
2012-10-13
帖子
2
跳转到指定楼层
1
发表于 2012-11-19 19:35:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
怎么样做在使用物品时有确定与取消选项

Lv1.梦旅人

梦石
0
星屑
50
在线时间
251 小时
注册时间
2009-11-13
帖子
453
2
发表于 2012-11-19 20:44:19 | 只看该作者
我帮你做了一个,不过很粗超,自己在慢慢改吧,具体的我就不跟你说了,自己拿这个和原本的脚本对比一下,就能大致上了解了,就算不懂脚本也是一样的
  1. #==============================================================================
  2. # ■ Scene_Item
  3. #------------------------------------------------------------------------------
  4. #  处理物品画面的类。
  5. #==============================================================================

  6. class Scene_Item
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     s1 = "dd"
  12.     s2 = "ss"
  13.     @xx = Window_Command.new(160, [s1, s2])
  14.     @xx.visible = false
  15.     @xx.active = false
  16.     # 生成帮助窗口、物品窗口
  17.     @help_window = Window_Help.new
  18.     @item_window = Window_Item.new
  19.     # 关联帮助窗口
  20.     @item_window.help_window = @help_window
  21.     # 生成目标窗口 (设置为不可见・不活动)
  22.     @target_window = Window_Target.new
  23.     @target_window.visible = false
  24.     @target_window.active = false
  25.     # 执行过度
  26.     Graphics.transition
  27.     # 主循环
  28.     loop do
  29.       # 刷新游戏画面
  30.       Graphics.update
  31.       # 刷新输入信息
  32.       Input.update
  33.       # 刷新画面
  34.       update
  35.       # 如果画面切换就中断循环
  36.       if $scene != self
  37.         break
  38.       end
  39.     end
  40.     # 装备过渡
  41.     Graphics.freeze
  42.     # 释放窗口
  43.     @help_window.dispose
  44.     @item_window.dispose
  45.     @target_window.dispose
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # ● 刷新画面
  49.   #--------------------------------------------------------------------------
  50.   def update
  51.     # 刷新窗口
  52.     @xx.update
  53.     @help_window.update
  54.     @item_window.update
  55.     @target_window.update
  56.     # 物品窗口被激活的情况下: 调用 update_item
  57.     if @item_window.active
  58.       update_item
  59.       return
  60.     end
  61.     # 物品窗口被激活的情况下: 调用 update_item
  62.     if @xx.active
  63.       update_xx
  64.       return
  65.     end
  66.     # 目标窗口被激活的情况下: 调用 update_target
  67.     if @target_window.active
  68.       update_target
  69.       return
  70.     end
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 刷新画面 (物品窗口被激活的情况下)
  74.   #--------------------------------------------------------------------------
  75.   def update_item
  76.     # 按下 B 键的情况下
  77.     if Input.trigger?(Input::B)
  78.       # 演奏取消 SE
  79.       $game_system.se_play($data_system.cancel_se)
  80.       # 切换到菜单画面
  81.       $scene = Scene_Menu.new(0)
  82.       return
  83.     end
  84.     # 按下 C 键的情况下
  85.     if Input.trigger?(Input::C)
  86.       # 获取物品窗口当前选中的物品数据
  87.       @item = @item_window.item
  88.       # 不使用物品的情况下
  89.       unless @item.is_a?(RPG::Item)
  90.         # 演奏冻结 SE
  91.         $game_system.se_play($data_system.buzzer_se)
  92.         return
  93.       end
  94.       # 不能使用的情况下
  95.       unless $game_party.item_can_use?(@item.id)
  96.         # 演奏冻结 SE
  97.         $game_system.se_play($data_system.buzzer_se)
  98.         return
  99.       end
  100.       # 演奏确定 SE
  101.       $game_system.se_play($data_system.decision_se)
  102.       # 效果范围是我方的情况下
  103.       #if @item.scope >= 3
  104.         # 激活目标窗口
  105.         @item_window.active = false
  106.         @xx.x = (@item_window.index + 1) % 2 * 304
  107.         @xx.visible = true
  108.         @xx.active = true
  109.         #@target_window.x = (@item_window.index + 1) % 2 * 304
  110.         #@target_window.visible = true
  111.         #@target_window.active = true
  112.         # 设置效果范围 (单体/全体) 的对应光标位置
  113.         #if @item.scope == 4 || @item.scope == 6
  114.         #  @target_window.index = -1
  115.         #else
  116.         #  @target_window.index = 0
  117.         #end
  118.       # 效果在我方以外的情况下
  119.       #else
  120.       ##  # 公共事件 ID 有效的情况下
  121.       #  if @item.common_event_id > 0
  122.       #    # 预约调用公共事件
  123.       #    $game_temp.common_event_id = @item.common_event_id
  124.       #    # 演奏物品使用时的 SE
  125.       #    $game_system.se_play(@item.menu_se)
  126.       #    # 消耗品的情况下
  127.       #    if @item.consumable
  128.       #      # 使用的物品数减 1
  129.       #      $game_party.lose_item(@item.id, 1)
  130.       #      # 再描绘物品窗口的项目
  131.       #      @item_window.draw_item(@item_window.index)
  132.       #    end
  133.       #    # 切换到地图画面
  134.       #    $scene = Scene_Map.new
  135.       #    return
  136.       #  end
  137.       #end
  138.       return
  139.     end
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 刷新画面 (目标窗口被激活的情况下)
  143.   #--------------------------------------------------------------------------
  144. def update_xx
  145.     # 按下 B 键的情况下
  146.     if Input.trigger?(Input::B)
  147.       # 演奏取消 SE
  148.       $game_system.se_play($data_system.cancel_se)
  149.       # 由于物品用完而不能使用的场合
  150.       unless $game_party.item_can_use?(@item.id)
  151.         # 再次生成物品窗口的内容
  152.         @item_window.refresh
  153.       end
  154.       # 删除目标窗口
  155.       @item_window.active = true
  156.       @xx.visible = false
  157.       @xx.active = false
  158.       return
  159.     end
  160.     # 按下 C 键的情况下
  161.     if Input.trigger?(Input::C)
  162.       # 命令窗口的光标位置分支
  163.       case @xx.index
  164.       when 0  
  165.       # 效果范围是我方的情况下
  166.       if @item.scope >= 3
  167.         @xx.visible = false
  168.         @xx.active = false
  169.         @target_window.x = (@item_window.index + 1) % 2 * 304
  170.         @target_window.visible = true
  171.         @target_window.active = true
  172.         # 设置效果范围 (单体/全体) 的对应光标位置
  173.         if @item.scope == 4 || @item.scope == 6
  174.           @target_window.index = -1
  175.         else
  176.           @target_window.index = 0
  177.         end
  178.       # 效果在我方以外的情况下
  179.       else
  180.         # 公共事件 ID 有效的情况下
  181.         if @item.common_event_id > 0
  182.           # 预约调用公共事件
  183.           $game_temp.common_event_id = @item.common_event_id
  184.           # 演奏物品使用时的 SE
  185.           $game_system.se_play(@item.menu_se)
  186.           # 消耗品的情况下
  187.           if @item.consumable
  188.             # 使用的物品数减 1
  189.             $game_party.lose_item(@item.id, 1)
  190.             # 再描绘物品窗口的项目
  191.             @item_window.draw_item(@item_window.index)
  192.           end
  193.           # 切换到地图画面
  194.           $scene = Scene_Map.new
  195.           return
  196.         end
  197.       end
  198.       when 1  
  199.          # 演奏取消 SE
  200.          $game_system.se_play($data_system.cancel_se)
  201.          # 由于物品用完而不能使用的场合
  202.          unless $game_party.item_can_use?(@item.id)
  203.          # 再次生成物品窗口的内容
  204.            @item_window.refresh
  205.          end
  206.          # 删除目标窗口
  207.          @item_window.active = true
  208.          @xx.visible = false
  209.          @xx.active = false
  210.         return
  211.       end
  212.     end
  213.    end
  214.   #--------------------------------------------------------------------------
  215.   # ● 刷新画面 (目标窗口被激活的情况下)
  216.   #--------------------------------------------------------------------------
  217.   def update_target
  218.     # 按下 B 键的情况下
  219.     if Input.trigger?(Input::B)
  220.       # 演奏取消 SE
  221.       $game_system.se_play($data_system.cancel_se)
  222.       # 由于物品用完而不能使用的场合
  223.       unless $game_party.item_can_use?(@item.id)
  224.         # 再次生成物品窗口的内容
  225.         @item_window.refresh
  226.       end
  227.       # 删除目标窗口
  228.       @item_window.active = true
  229.       @target_window.visible = false
  230.       @target_window.active = false
  231.       return
  232.     end
  233.     # 按下 C 键的情况下
  234.     if Input.trigger?(Input::C)
  235.       # 如果物品用完的情况下
  236.       if $game_party.item_number(@item.id) == 0
  237.         # 演奏冻结 SE
  238.         $game_system.se_play($data_system.buzzer_se)
  239.         return
  240.       end
  241.       # 目标是全体的情况下
  242.       if @target_window.index == -1
  243.         # 对同伴全体应用物品使用效果
  244.         used = false
  245.         for i in $game_party.actors
  246.           used |= i.item_effect(@item)
  247.         end
  248.       end
  249.       # 目标是单体的情况下
  250.       if @target_window.index >= 0
  251.         # 对目标角色应用物品的使用效果
  252.         target = $game_party.actors[@target_window.index]
  253.         used = target.item_effect(@item)
  254.       end
  255.       # 使用物品的情况下
  256.       if used
  257.         # 演奏物品使用时的 SE
  258.         $game_system.se_play(@item.menu_se)
  259.         # 消耗品的情况下
  260.         if @item.consumable
  261.           # 使用的物品数减 1
  262.           $game_party.lose_item(@item.id, 1)
  263.           # 再描绘物品窗口的项目
  264.           @item_window.draw_item(@item_window.index)
  265.         end
  266.         # 再生成目标窗口的内容
  267.         @target_window.refresh
  268.         # 全灭的情况下
  269.         if $game_party.all_dead?
  270.           # 切换到游戏结束画面
  271.           $scene = Scene_Gameover.new
  272.           return
  273.         end
  274.         # 公共事件 ID 有效的情况下
  275.         if @item.common_event_id > 0
  276.           # 预约调用公共事件
  277.           $game_temp.common_event_id = @item.common_event_id
  278.           # 切换到地图画面
  279.           $scene = Scene_Map.new
  280.           return
  281.         end
  282.       end
  283.       # 无法使用物品的情况下
  284.       unless used
  285.         # 演奏冻结 SE
  286.         $game_system.se_play($data_system.buzzer_se)
  287.       end
  288.       return
  289.     end
  290.   end
  291. end
复制代码

评分

参与人数 1星屑 +66 收起 理由
hys111111 + 66 感谢回答

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
48
在线时间
59 小时
注册时间
2010-7-24
帖子
187
3
发表于 2012-11-20 22:24:22 | 只看该作者
用公用事件作 做个选项

物品会触发选项

是的话就做你想要的效果(+血+状态等等)

否的话就是结束事件
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2012-10-25
帖子
17
4
发表于 2012-11-21 13:45:15 | 只看该作者
cdcdcdkkk1 发表于 2012-11-20 22:24
用公用事件作 做个选项

物品会触发选项

别忘了用成功之后物品数-1{:2_275:}

点评

哈哈,小弟迷糊了  发表于 2012-11-21 13:57
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 11:59

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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