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

Project1

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

[已经解决] 我刚学几天脚本,想做个背包脚本请问怎么创建一个窗口?

[复制链接]

Lv2.观梦者

梦石
0
星屑
260
在线时间
312 小时
注册时间
2010-8-2
帖子
355
跳转到指定楼层
1
发表于 2013-7-25 15:47:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1星屑
本人刚学几天脚本,在做一款末日生存探索类游戏,想弄当按下A时候创建一个窗口,这个窗口可以选择物品使用,但是我用了如下脚本无法创建:
RUBY 代码复制
  1. $beibao=[0,0,0,0,0] #创建一个数组储存背包物品
  2. if Input.trigger?(Input::X) #当按下A键时
  3. Window.new #创建一个新窗口
  4. end
我按下了却没有反应

最佳答案

查看完整内容

直接在main前按insert插入脚本即可 说明: 1. 脚本大部分是借用的XP自带脚本,不是很完美,楼主可以站内联系我再更改 2. 按下A键进入背包画面 3. 第一行定义的全局变量$beibao是显示的4个物品,即背包内只能装这4样物品(请输入数据库中的编号),没有则不显示 4. 可以修改窗口坐标 5. 有什么问题再说吧 ...
之前发的那些帖子里的言语特别幼稚,当时自己还小,什么都不懂,希望大家不要介意...现在看之前自己的帖子都特别生气觉得特别傻
                                                      ---2017.09.02留

Lv1.梦旅人

梦石
0
星屑
55
在线时间
465 小时
注册时间
2011-4-13
帖子
174
2
发表于 2013-7-25 15:47:28 | 只看该作者
本帖最后由 heiwang1997 于 2013-7-25 20:23 编辑
  1. $beibao = [1,2,3,4]                              # 《============这里修改物品
  2. class Scene_Map
  3.   alias beibao_update update
  4.   def update
  5.     beibao_update
  6.     if Input.trigger?(Input::X)
  7.       $scene = Scene_Bag.new
  8.     end
  9.   end
  10. end
  11. class Scene_Bag
  12.   def main
  13.     @bag_window = Window_Bag.new(0,0)                               # 《============这里修改坐标可以换成主角的坐标……(参考旋转菜单)
  14.     # 生成活动块
  15.     @spriteset = Spriteset_Map.new
  16.     # 执行过渡
  17.     Graphics.transition
  18.     # 主循环
  19.     loop do
  20.       # 刷新游戏画面
  21.       Graphics.update
  22.       # 刷新输入信息
  23.       Input.update
  24.       # 刷新画面
  25.       update
  26.       # 如果画面切换的话就中断循环
  27.       if $scene != self
  28.         break
  29.       end
  30.     end
  31.     # 准备过渡
  32.     Graphics.freeze
  33.     # 释放活动块
  34.     @spriteset.dispose
  35.     @bag_window.dispose
  36.   end
  37.   def update
  38.     @bag_window.update
  39.     # 按下 B 键的情况下
  40.     if Input.trigger?(Input::B)
  41.       # 演奏取消 SE
  42.       $game_system.se_play($data_system.cancel_se)
  43.       # 切换的地图画面
  44.       $scene = Scene_Map.new
  45.       return
  46.     end
  47.   end
  48. end
  49. class Window_Bag < Window_Selectable
  50.   def initialize(x,y)
  51.     super(x, y, 320, 160)
  52.     @column_max = 1
  53.     refresh
  54.     self.index = 0
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 获取物品
  58.   #--------------------------------------------------------------------------
  59.   def item
  60.     return @data[self.index]
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 刷新
  64.   #--------------------------------------------------------------------------
  65.   def refresh
  66.     if self.contents != nil
  67.       self.contents.dispose
  68.       self.contents = nil
  69.     end
  70.     @data = []
  71.     # 添加报务
  72.     for i in $beibao
  73.       if $game_party.item_number(i) > 0
  74.         @data.push($data_items[i])
  75.       end
  76.     end
  77.     # 如果项目数不是 0 就生成位图、重新描绘全部项目
  78.     @item_max = @data.size
  79.     if @item_max > 0
  80.       self.contents = Bitmap.new(width - 32, row_max * 32)
  81.       for i in 0...@item_max
  82.         draw_item(i)
  83.       end
  84.     end
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 描绘项目
  88.   #     index : 项目编号
  89.   #--------------------------------------------------------------------------
  90.   def draw_item(index)
  91.     item = @data[index]
  92.     case item
  93.     when RPG::Item
  94.       number = $game_party.item_number(item.id)
  95.     when RPG::Weapon
  96.       number = $game_party.weapon_number(item.id)
  97.     when RPG::Armor
  98.       number = $game_party.armor_number(item.id)
  99.     end
  100.     if item.is_a?(RPG::Item) and
  101.        $game_party.item_can_use?(item.id)
  102.       self.contents.font.color = normal_color
  103.     else
  104.       self.contents.font.color = disabled_color
  105.     end
  106.     x = 4
  107.     y = index * 32
  108.     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
  109.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  110.     bitmap = RPG::Cache.icon(item.icon_name)
  111.     opacity = self.contents.font.color == normal_color ? 255 : 128
  112.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  113.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  114.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  115.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  116.   end
  117.   def update
  118.     super
  119.     # 按下 C 键的情况下
  120.     if Input.trigger?(Input::C)
  121.       # 获取物品窗口当前选中的物品数据
  122.       @item = @data[@index]
  123.       # 不能使用的情况下
  124.       unless $game_party.item_can_use?(@item.id)
  125.         # 演奏冻结 SE
  126.         $game_system.se_play($data_system.buzzer_se)
  127.         return
  128.       end
  129.       # 演奏确定 SE
  130.       $game_system.se_play($data_system.decision_se)
  131.       
  132.       
  133.       
  134.       
  135.       
  136.       # 效果范围是我方的情况下
  137.       if @item.scope >= 3
  138.         # 如果物品用完的情况下
  139.       if $game_party.item_number(@item.id) == 0
  140.         # 演奏冻结 SE
  141.         $game_system.se_play($data_system.buzzer_se)
  142.         return
  143.       end
  144.       target = $game_party.actors[0]
  145.       used = target.item_effect(@item)
  146.       # 使用物品的情况下
  147.       if used
  148.         # 演奏物品使用时的 SE
  149.         $game_system.se_play(@item.menu_se)
  150.         # 消耗品的情况下
  151.         if @item.consumable
  152.           # 使用的物品数减 1
  153.           $game_party.lose_item(@item.id, 1)
  154.           # 再描绘物品窗口的项目
  155.           refresh
  156.         end
  157.         # 全灭的情况下
  158.         if $game_party.all_dead?
  159.           # 切换到游戏结束画面
  160.           $scene = Scene_Gameover.new
  161.           return
  162.         end
  163.         # 公共事件 ID 有效的情况下
  164.         if @item.common_event_id > 0
  165.           # 预约调用公共事件
  166.           $game_temp.common_event_id = @item.common_event_id
  167.           # 切换到地图画面
  168.           $scene = Scene_Map.new
  169.           return
  170.         end
  171.       end
  172.       # 无法使用物品的情况下
  173.       unless used
  174.         # 演奏冻结 SE
  175.         $game_system.se_play($data_system.buzzer_se)
  176.       end
  177.       
  178.       
  179.       
  180.       
  181.       
  182.       
  183.       
  184.       
  185.       # 效果在我方以外的情况下
  186.       else
  187.         # 公共事件 ID 有效的情况下
  188.         if @item.common_event_id > 0
  189.           # 预约调用公共事件
  190.           $game_temp.common_event_id = @item.common_event_id
  191.           # 演奏物品使用时的 SE
  192.           $game_system.se_play(@item.menu_se)
  193.           # 消耗品的情况下
  194.           if @item.consumable
  195.             # 使用的物品数减 1
  196.             $game_party.lose_item(@item.id, 1)
  197.             # 再描绘物品窗口的项目
  198.             refresh
  199.           end
  200.           return
  201.         end
  202.       end
  203.       return
  204.     end
  205.   end
  206. end
复制代码
直接在main前按insert插入脚本即可
说明:
1. 脚本大部分是借用的XP自带脚本,不是很完美,楼主可以站内联系我再更改
2. 按下A键进入背包画面
3. 第一行定义的全局变量$beibao是显示的4个物品,即背包内只能装这4样物品(请输入数据库中的编号),没有则不显示
4. 可以修改窗口坐标
5. 有什么问题再说吧

评分

参与人数 1星屑 +100 收起 理由
︶ㄣ牛排ぶ + 100 认可答案

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
3
发表于 2013-7-25 16:07:35 | 只看该作者
你试试这个,然后照猫画虎
$beibao=[0,0,0,0,0] #创建一个数组储存背包物品
if Input.trigger?(Input::X) #当按下A键时
$scene = Scene_Item.new #创建一个新窗口
end

点评

没用  发表于 2013-7-25 18:08
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
4
发表于 2013-7-25 18:31:04 | 只看该作者
、、、、、话说你脚本放在哪的、、、、

点评

表示能力不够,加不进你QQ、、、、、  发表于 2013-7-25 18:37
能加下qq吗?759782518.  发表于 2013-7-25 18:33
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-25 22:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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