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

Project1

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

[RMVA发布] RMVA - 物品提示系统 3.21更新

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2118
在线时间
740 小时
注册时间
2010-9-6
帖子
338
跳转到指定楼层
1
 楼主| 发表于 2013-3-8 22:16:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 804173948 于 2015-8-6 00:57 编辑

第二代传送门

有没有觉得那个“物品得失提示” 在一次获得很多道具时 要一个一个显示 有点繁琐 又会浪费很长时间……

但这个可以一次性显示获得(或失去)的道具

白字
以为这个脚本很容易写,But 现实很残酷,整整用了三天写(其实每天也就是两个小时……)。


只有获得物品的时候……“失去物品”会自动消失

只有失去物品的时候……“获得物品”会自动消失

如果既有获得物品 又有失去物品 如下图



脚本(使用方法):
  1. =begin
  2. ================================================
  3. 道具提示系统 版本 1.03 By 804173948 QQ:同上
  4. ================================================

  5. 修正BUG:

  6. 用户提出的BUG

  7. 使用方法:
  8. 在事件-脚本里输入

  9. 1、获得/失去物品

  10. 获得:

  11. get_item($data_items[物品id],数量)

  12. 失去:

  13. lost_item($data_items[物品id],数量)

  14. 例如:

  15. get_item($data_items[10],4) 获得10号物品 4个

  16. lost_item($data_items[1],3) 丢失1号物品 3个

  17. 2、获得/失去武器

  18. 获得:

  19. get_item($data_weapons[武器id],数量)

  20. 失去:

  21. lost_item($data_weapons[武器id],数量,是否包括装备)

  22. 是否包括装备:是则 True 否则 false 或不写 下同

  23. 3、获得/失去防具

  24. 获得:

  25. get_item($data_armors[防具id],数量)

  26. 失去:

  27. lost_item($data_armors[防具id],数量,是否包括装备)

  28. 4、小技巧

  29. 1. GetItem.clear => 清除模块内未被窗口显示的道具(简单来说就是清除缓存……)(被窗口显示的会自动清除)

  30. 2. for (变量名称) in (范围) => 在某范围内获得或失去某道具
  31.       道具操作
  32.     end
  33.     如:
  34.     for i in 0..10
  35.       get_item($data_weapons[i],1)
  36.     end
  37.     ╚═> 获得0~10号武器各一个(貌似没有0号武器。。。)

  38. 注意:最后要加一句 show_window 否则不显示提示窗口( "show_window" 可在事件、公共事件或脚本内任何位置加)


  39. 有疑问或BUG之类的 欢迎提出
  40. =end
  41. module GetItem
  42.   @get_item_var =[]
  43.   @get_amount =[]
  44.   def self.add_item(item,amount)
  45.     @get_item_var.push(item)
  46.     @get_amount.push(amount)
  47.   end
  48.   def self.get_item_id
  49.     return [@get_item_var,@get_amount]
  50.   end
  51.   def self.clear
  52.     @get_item_var =[]
  53.     @get_amount =[]
  54.   end
  55. end
  56. class Game_Interpreter
  57.   def show_window
  58.     Audio.se_play("Audio/SE/Shop",80,100)
  59.     get_item_var = GetItem.get_item_id[0]
  60.     get_amount = GetItem.get_item_id[1]
  61.     SceneManager.call(Scene_Get_Item)
  62.     SceneManager.scene.show_window(get_item_var,get_amount)
  63.     GetItem.clear
  64.   end
  65.   def get_item(item,amount)
  66.     amount = 99 if amount > 99
  67.     GetItem.add_item(item,amount)
  68.     $game_party.gain_item(item,amount)
  69.   end
  70.   def lost_item(item,amount,include_equip = false)
  71.     amount = 99 if amount > 99
  72.     GetItem.add_item(item,-amount)
  73.     $game_party.gain_item(item,-amount,include_equip)
  74.   end
  75. end
  76. class Scene_Get_Item < Scene_MenuBase
  77.   def start
  78.     super
  79.     @get_item_var = []
  80.     @get_amount = []
  81.   end
  82.   def show_window(get_item_var,get_amount)
  83.     @get_item_var = get_item_var
  84.     @get_amount = get_amount
  85.     create_show_get_window
  86.     create_category_window
  87.   end
  88.   def create_show_get_window
  89.     @show_get_window = Window_Show_GetItem.new(120,88,300,200,@get_item_var,@get_amount) #窗口位置
  90.     @show_get_window.set_handler(:ok,     method(:return_scene))
  91.     @show_get_window.set_handler(:cancel, method(:on_item_cancel))
  92.   end
  93.   def create_category_window
  94.     @show_getItem_category = Window_GetItem_Category.new(120,40,300,48)
  95.     @show_getItem_category.item_window = @show_get_window
  96.     @show_getItem_category.refresh
  97.     @show_getItem_category.set_handler(:ok,     method(:on_category_ok))
  98.     @show_getItem_category.set_handler(:cancel, method(:return_scene))
  99.   end
  100.   def on_category_ok
  101.     @show_get_window.activate
  102.   end
  103.   def on_item_cancel
  104.     @show_getItem_category.activate
  105.   end
  106. end
  107. class Window_GetItem_Category < Window_HorzCommand
  108.   #--------------------------------------------------------------------------
  109.   # ● 定义实例变量
  110.   #--------------------------------------------------------------------------
  111.   attr_reader   :item_window
  112.   #--------------------------------------------------------------------------
  113.   # ● 初始化对象
  114.   #--------------------------------------------------------------------------
  115.   def initialize(x,y,width,height)
  116.     super(x, y)
  117.     self.width = width
  118.     self.height = height
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 窗口宽度
  122.   #--------------------------------------------------------------------------
  123.   def window_width
  124.     return 300
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 获取列数
  128.   #--------------------------------------------------------------------------
  129.   def col_max
  130.     return 2
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 更新画面
  134.   #--------------------------------------------------------------------------
  135.   def update
  136.     super
  137.     @item_window.category = current_symbol if @item_window
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● 生成指令列表
  141.   #--------------------------------------------------------------------------
  142.   def make_command_list
  143.     if @item_window
  144.       s1 = @item_window.amount_save
  145.       add_command("获得物品",   :get)  if s1.min >= 0
  146.       add_command("失去物品",   :lost) if s1.max < 0
  147.       if s1.max >= 0 && s1.min < 0
  148.         add_command("获得物品",   :get)  
  149.         add_command("失去物品",   :lost)
  150.       end
  151.     end
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 设置物品窗口
  155.   #--------------------------------------------------------------------------
  156.   def item_window=(item_window)
  157.     @item_window = item_window
  158.     update
  159.   end
  160. end

  161. class Window_Show_GetItem < Window_ItemList
  162.   attr_reader :amount_save
  163.   def initialize(x, y, width, height,data,amount)
  164.     super(x, y, width, height)
  165.     @category = :get
  166.     @data_save = data
  167.     @amount_save = amount
  168.     refresh
  169.   end
  170.   def col_max
  171.     return 1
  172.   end
  173.   def spacing
  174.     return 32
  175.   end
  176.   def include?(index)
  177.     if index
  178.       case @category
  179.       when :get
  180.         if index >= 0
  181.           true
  182.         else
  183.           false
  184.         end
  185.       when :lost
  186.         if index < 0
  187.           true
  188.         else
  189.           false
  190.         end
  191.       else
  192.         false
  193.       end
  194.     end
  195.   end
  196.   def draw_item(index)
  197.     item = @data[index]
  198.     if item
  199.       rect = item_rect(index)
  200.       rect.width -= 4
  201.       draw_item_name(item, rect.x, rect.y)
  202.       draw_item_number(rect, index)
  203.     end
  204.   end
  205.   def draw_item_number(rect, item)
  206.     if @amount[item] < 0
  207.       s1 = -@amount[item]
  208.     else
  209.       s1 = @amount[item]
  210.     end
  211.     draw_text(rect, sprintf(":%2d", s1), 2)
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ● 查询此物品是否可用
  215.   #--------------------------------------------------------------------------
  216.   def enable?(item)
  217.     return true
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ● 生成物品列表
  221.   #--------------------------------------------------------------------------
  222.   def make_item_list
  223.     @data = Array.new(@data_save)
  224.     @amount = Array.new(@amount_save)
  225.     for i in 0 ... @data.size
  226.     @data[i] = nil if include?(@amount_save[i]) == false
  227.     @amount[i] = nil if include?(@amount_save[i]) == false
  228.     end
  229.     @data.delete(nil)
  230.     @amount.delete(nil)
  231.   end
  232. end
复制代码

点评

对 就是上颜色的脚本 要融合  发表于 2013-3-20 16:31
undefined

Lv1.梦旅人

梦石
0
星屑
200
在线时间
120 小时
注册时间
2007-8-17
帖子
147
2
发表于 2013-3-8 23:34:16 | 只看该作者
果断顶啊   

这绝对好东西
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
48 小时
注册时间
2010-8-10
帖子
46
3
发表于 2013-3-8 23:51:19 | 只看该作者
这东西果断逆天了,楼主你真是好人,让我们这些新手党羞愧

点评

汗。。夸奖形容词,我看脚本迷迷糊糊的,什么都不会  发表于 2013-3-9 00:13
。。。。怎么逆天法………………  发表于 2013-3-8 23:53
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2118
在线时间
740 小时
注册时间
2010-9-6
帖子
338
4
 楼主| 发表于 2013-3-10 16:19:02 | 只看该作者
本帖最后由 804173948 于 2013-3-10 16:26 编辑

修正了BUG(范例不更新了 好像也没什么人下载……)
更新……
undefined
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
164 小时
注册时间
2011-8-15
帖子
238
5
发表于 2013-3-16 10:31:34 | 只看该作者
的确,入lz所说,一次得到很多物品时,要很长时间,想要用下LZ的,但是...LZ的脚本会和其他脚本冲突吗?

点评

应该不会,请放心 如果发现了就把脚本发过来我改进一下  发表于 2013-3-16 11:03
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
6
发表于 2013-3-16 12:06:40 | 只看该作者
这个脚本好像不能通过 公共事件里获得物品  会出错的

点评

修改了  发表于 2013-3-16 12:42
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
41 小时
注册时间
2005-10-15
帖子
95
7
发表于 2013-3-16 14:42:21 手机端发表。 | 只看该作者
又是va的,废柴感动得泪奔
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
8
发表于 2013-3-16 16:06:20 | 只看该作者
本帖最后由 j433463 于 2013-3-16 16:35 编辑

这一款脚本未附有升级提示,要另外再去找一个升级提示脚本来搭配吗?

还有那个获得物品与失去物品的文字可不可以一个有光标时,另一个则用暗色来代替以表示未生效,不要都是同一个白色,这样区分较明确,例图:




我是指只有获得物品或只有失去物品时,脚本能预判让其中一项的字变暗色,甚至不可移动光标,

同时获得又失去物品机会比较少,而只有同时获得物品又有失去物品才两个都白色字,

这样一目瞭然,小细节能增加不少效果。

点评

好吧……我有时间再更新一次吧  发表于 2013-3-16 16:21
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
9
发表于 2013-3-19 09:04:12 | 只看该作者
获得物品提示 能不能 和 品质脚本融合  这样就能知道 是什么品质了 不然还要看包里

点评

“品质脚本”是给物品字体上色的那个吗?  发表于 2013-3-20 13:10
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
575
在线时间
1752 小时
注册时间
2008-11-7
帖子
1431
10
发表于 2013-3-19 09:05:42 | 只看该作者
还有 这个提示 能不能在 事件 结束后提示

点评

“show_window” 在什么地方添加就在什么时候显示  发表于 2013-3-20 13:09
RPG魔塔:http://rpg.blue/thread-254429-1-1.html
魔塔2:http://rpg.blue/thread-303601-1-1.html
魔塔3: 制作中...MV
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-8 04:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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