赞 | 1 |
VIP | 1 |
好人卡 | 2 |
积分 | 1 |
经验 | 36245 |
最后登录 | 2020-7-2 |
在线时间 | 465 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 55
- 在线时间
- 465 小时
- 注册时间
- 2011-4-13
- 帖子
- 174
|
本帖最后由 heiwang1997 于 2013-7-25 20:23 编辑
- $beibao = [1,2,3,4] # 《============这里修改物品
- class Scene_Map
- alias beibao_update update
- def update
- beibao_update
- if Input.trigger?(Input::X)
- $scene = Scene_Bag.new
- end
- end
- end
- class Scene_Bag
- def main
- @bag_window = Window_Bag.new(0,0) # 《============这里修改坐标可以换成主角的坐标……(参考旋转菜单)
- # 生成活动块
- @spriteset = Spriteset_Map.new
- # 执行过渡
- Graphics.transition
- # 主循环
- loop do
- # 刷新游戏画面
- Graphics.update
- # 刷新输入信息
- Input.update
- # 刷新画面
- update
- # 如果画面切换的话就中断循环
- if $scene != self
- break
- end
- end
- # 准备过渡
- Graphics.freeze
- # 释放活动块
- @spriteset.dispose
- @bag_window.dispose
- end
- def update
- @bag_window.update
- # 按下 B 键的情况下
- if Input.trigger?(Input::B)
- # 演奏取消 SE
- $game_system.se_play($data_system.cancel_se)
- # 切换的地图画面
- $scene = Scene_Map.new
- return
- end
- end
- end
- class Window_Bag < Window_Selectable
- def initialize(x,y)
- super(x, y, 320, 160)
- @column_max = 1
- refresh
- self.index = 0
- end
- #--------------------------------------------------------------------------
- # ● 获取物品
- #--------------------------------------------------------------------------
- def item
- return @data[self.index]
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- if self.contents != nil
- self.contents.dispose
- self.contents = nil
- end
- @data = []
- # 添加报务
- for i in $beibao
- if $game_party.item_number(i) > 0
- @data.push($data_items[i])
- end
- end
- # 如果项目数不是 0 就生成位图、重新描绘全部项目
- @item_max = @data.size
- if @item_max > 0
- self.contents = Bitmap.new(width - 32, row_max * 32)
- for i in 0...@item_max
- draw_item(i)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 描绘项目
- # index : 项目编号
- #--------------------------------------------------------------------------
- def draw_item(index)
- item = @data[index]
- case item
- when RPG::Item
- number = $game_party.item_number(item.id)
- when RPG::Weapon
- number = $game_party.weapon_number(item.id)
- when RPG::Armor
- number = $game_party.armor_number(item.id)
- end
- if item.is_a?(RPG::Item) and
- $game_party.item_can_use?(item.id)
- self.contents.font.color = normal_color
- else
- self.contents.font.color = disabled_color
- end
- x = 4
- y = index * 32
- rect = Rect.new(x, y, self.width / @column_max - 32, 32)
- self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
- bitmap = RPG::Cache.icon(item.icon_name)
- opacity = self.contents.font.color == normal_color ? 255 : 128
- self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
- self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
- self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
- self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
- end
- def update
- super
- # 按下 C 键的情况下
- if Input.trigger?(Input::C)
- # 获取物品窗口当前选中的物品数据
- @item = @data[@index]
- # 不能使用的情况下
- unless $game_party.item_can_use?(@item.id)
- # 演奏冻结 SE
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- # 演奏确定 SE
- $game_system.se_play($data_system.decision_se)
-
-
-
-
-
- # 效果范围是我方的情况下
- if @item.scope >= 3
- # 如果物品用完的情况下
- if $game_party.item_number(@item.id) == 0
- # 演奏冻结 SE
- $game_system.se_play($data_system.buzzer_se)
- return
- end
- target = $game_party.actors[0]
- used = target.item_effect(@item)
- # 使用物品的情况下
- if used
- # 演奏物品使用时的 SE
- $game_system.se_play(@item.menu_se)
- # 消耗品的情况下
- if @item.consumable
- # 使用的物品数减 1
- $game_party.lose_item(@item.id, 1)
- # 再描绘物品窗口的项目
- refresh
- end
- # 全灭的情况下
- if $game_party.all_dead?
- # 切换到游戏结束画面
- $scene = Scene_Gameover.new
- return
- end
- # 公共事件 ID 有效的情况下
- if @item.common_event_id > 0
- # 预约调用公共事件
- $game_temp.common_event_id = @item.common_event_id
- # 切换到地图画面
- $scene = Scene_Map.new
- return
- end
- end
- # 无法使用物品的情况下
- unless used
- # 演奏冻结 SE
- $game_system.se_play($data_system.buzzer_se)
- end
-
-
-
-
-
-
-
-
- # 效果在我方以外的情况下
- else
- # 公共事件 ID 有效的情况下
- if @item.common_event_id > 0
- # 预约调用公共事件
- $game_temp.common_event_id = @item.common_event_id
- # 演奏物品使用时的 SE
- $game_system.se_play(@item.menu_se)
- # 消耗品的情况下
- if @item.consumable
- # 使用的物品数减 1
- $game_party.lose_item(@item.id, 1)
- # 再描绘物品窗口的项目
- refresh
- end
- return
- end
- end
- return
- end
- end
- end
复制代码 直接在main前按insert插入脚本即可
说明:
1. 脚本大部分是借用的XP自带脚本,不是很完美,楼主可以站内联系我再更改
2. 按下A键进入背包画面
3. 第一行定义的全局变量$beibao是显示的4个物品,即背包内只能装这4样物品(请输入数据库中的编号),没有则不显示
4. 可以修改窗口坐标
5. 有什么问题再说吧 |
评分
-
查看全部评分
|