赞 | 13 |
VIP | 0 |
好人卡 | 0 |
积分 | 21 |
经验 | 70950 |
最后登录 | 2023-8-23 |
在线时间 | 740 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 2123
- 在线时间
- 740 小时
- 注册时间
- 2010-9-6
- 帖子
- 338
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 804173948 于 2015-8-6 00:57 编辑
第二代传送门
有没有觉得那个“物品得失提示” 在一次获得很多道具时 要一个一个显示 有点繁琐 又会浪费很长时间……
但这个可以一次性显示获得(或失去)的道具
白字
我以为这个脚本很容易写,But 现实很残酷,整整用了三天写(其实每天也就是两个小时……)。
图
只有获得物品的时候……“失去物品”会自动消失
只有失去物品的时候……“获得物品”会自动消失
如果既有获得物品 又有失去物品 如下图
脚本(使用方法):- =begin
- ================================================
- 道具提示系统 版本 1.03 By 804173948 QQ:同上
- ================================================
- 修正BUG:
- 用户提出的BUG
- 使用方法:
- 在事件-脚本里输入
- 1、获得/失去物品
- 获得:
-
- get_item($data_items[物品id],数量)
-
- 失去:
-
- lost_item($data_items[物品id],数量)
-
- 例如:
-
- get_item($data_items[10],4) 获得10号物品 4个
-
- lost_item($data_items[1],3) 丢失1号物品 3个
-
- 2、获得/失去武器
- 获得:
-
- get_item($data_weapons[武器id],数量)
-
- 失去:
-
- lost_item($data_weapons[武器id],数量,是否包括装备)
-
- 是否包括装备:是则 True 否则 false 或不写 下同
-
- 3、获得/失去防具
- 获得:
-
- get_item($data_armors[防具id],数量)
-
- 失去:
-
- lost_item($data_armors[防具id],数量,是否包括装备)
- 4、小技巧
-
- 1. GetItem.clear => 清除模块内未被窗口显示的道具(简单来说就是清除缓存……)(被窗口显示的会自动清除)
-
- 2. for (变量名称) in (范围) => 在某范围内获得或失去某道具
- 道具操作
- end
- 如:
- for i in 0..10
- get_item($data_weapons[i],1)
- end
- ╚═> 获得0~10号武器各一个(貌似没有0号武器。。。)
-
- 注意:最后要加一句 show_window 否则不显示提示窗口( "show_window" 可在事件、公共事件或脚本内任何位置加)
- 有疑问或BUG之类的 欢迎提出
- =end
- module GetItem
- @get_item_var =[]
- @get_amount =[]
- def self.add_item(item,amount)
- @get_item_var.push(item)
- @get_amount.push(amount)
- end
- def self.get_item_id
- return [@get_item_var,@get_amount]
- end
- def self.clear
- @get_item_var =[]
- @get_amount =[]
- end
- end
- class Game_Interpreter
- def show_window
- Audio.se_play("Audio/SE/Shop",80,100)
- get_item_var = GetItem.get_item_id[0]
- get_amount = GetItem.get_item_id[1]
- SceneManager.call(Scene_Get_Item)
- SceneManager.scene.show_window(get_item_var,get_amount)
- GetItem.clear
- end
- def get_item(item,amount)
- amount = 99 if amount > 99
- GetItem.add_item(item,amount)
- $game_party.gain_item(item,amount)
- end
- def lost_item(item,amount,include_equip = false)
- amount = 99 if amount > 99
- GetItem.add_item(item,-amount)
- $game_party.gain_item(item,-amount,include_equip)
- end
- end
- class Scene_Get_Item < Scene_MenuBase
- def start
- super
- @get_item_var = []
- @get_amount = []
- end
- def show_window(get_item_var,get_amount)
- @get_item_var = get_item_var
- @get_amount = get_amount
- create_show_get_window
- create_category_window
- end
- def create_show_get_window
- @show_get_window = Window_Show_GetItem.new(120,88,300,200,@get_item_var,@get_amount) #窗口位置
- @show_get_window.set_handler(:ok, method(:return_scene))
- @show_get_window.set_handler(:cancel, method(:on_item_cancel))
- end
- def create_category_window
- @show_getItem_category = Window_GetItem_Category.new(120,40,300,48)
- @show_getItem_category.item_window = @show_get_window
- @show_getItem_category.refresh
- @show_getItem_category.set_handler(:ok, method(:on_category_ok))
- @show_getItem_category.set_handler(:cancel, method(:return_scene))
- end
- def on_category_ok
- @show_get_window.activate
- end
- def on_item_cancel
- @show_getItem_category.activate
- end
- end
- class Window_GetItem_Category < Window_HorzCommand
- #--------------------------------------------------------------------------
- # ● 定义实例变量
- #--------------------------------------------------------------------------
- attr_reader :item_window
- #--------------------------------------------------------------------------
- # ● 初始化对象
- #--------------------------------------------------------------------------
- def initialize(x,y,width,height)
- super(x, y)
- self.width = width
- self.height = height
- end
- #--------------------------------------------------------------------------
- # ● 窗口宽度
- #--------------------------------------------------------------------------
- def window_width
- return 300
- end
- #--------------------------------------------------------------------------
- # ● 获取列数
- #--------------------------------------------------------------------------
- def col_max
- return 2
- end
- #--------------------------------------------------------------------------
- # ● 更新画面
- #--------------------------------------------------------------------------
- def update
- super
- @item_window.category = current_symbol if @item_window
- end
- #--------------------------------------------------------------------------
- # ● 生成指令列表
- #--------------------------------------------------------------------------
- def make_command_list
- if @item_window
- s1 = @item_window.amount_save
- add_command("获得物品", :get) if s1.min >= 0
- add_command("失去物品", :lost) if s1.max < 0
- if s1.max >= 0 && s1.min < 0
- add_command("获得物品", :get)
- add_command("失去物品", :lost)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 设置物品窗口
- #--------------------------------------------------------------------------
- def item_window=(item_window)
- @item_window = item_window
- update
- end
- end
- class Window_Show_GetItem < Window_ItemList
- attr_reader :amount_save
- def initialize(x, y, width, height,data,amount)
- super(x, y, width, height)
- @category = :get
- @data_save = data
- @amount_save = amount
- refresh
- end
- def col_max
- return 1
- end
- def spacing
- return 32
- end
- def include?(index)
- if index
- case @category
- when :get
- if index >= 0
- true
- else
- false
- end
- when :lost
- if index < 0
- true
- else
- false
- end
- else
- false
- end
- end
- end
- def draw_item(index)
- item = @data[index]
- if item
- rect = item_rect(index)
- rect.width -= 4
- draw_item_name(item, rect.x, rect.y)
- draw_item_number(rect, index)
- end
- end
- def draw_item_number(rect, item)
- if @amount[item] < 0
- s1 = -@amount[item]
- else
- s1 = @amount[item]
- end
- draw_text(rect, sprintf(":%2d", s1), 2)
- end
- #--------------------------------------------------------------------------
- # ● 查询此物品是否可用
- #--------------------------------------------------------------------------
- def enable?(item)
- return true
- end
- #--------------------------------------------------------------------------
- # ● 生成物品列表
- #--------------------------------------------------------------------------
- def make_item_list
- @data = Array.new(@data_save)
- @amount = Array.new(@amount_save)
- for i in 0 ... @data.size
- @data[i] = nil if include?(@amount_save[i]) == false
- @amount[i] = nil if include?(@amount_save[i]) == false
- end
- @data.delete(nil)
- @amount.delete(nil)
- end
- end
复制代码 |
|