查看: 4839|回复: 17

[原创发布] 【道具栏New提示】使新获得的道具在在物品栏里绘制个New

[复制链接]

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2018-12-27 00:32:35 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 VIPArcher 于 2019-1-14 00:22 编辑

效果如图
NewItem.png
光标移过后消除 new 图标
脚本中使用到的图标素材(素材放到\Graphics\System文件夹下):

NewIcon.png

NewIcon.png

[fold=脚本内容]
[pre lang="ruby"]#===============================================================================
# ■ 新获得道具提示
# by :VIPArcher [email: VIPArcher@sina.com]
#  -- Project1 论坛:https://rpg.blue/ 使用或转载请保留以上信息。
#==============================================================================
# ■ 使用说明:
#   使新获得的道具在物品栏列表中添加一个 New 的小图标
#   可以使用自定素材或者 Icon 里的图标
#==============================================================================
$VIPArcherScript ||= {};$VIPArcherScript[:new_item] = 20181226
#==============================================================================
# ★ 设定部分 ★
#==============================================================================
module VIPArcher end
module VIPArcher::NEW_ITEM
  # 配置部分
  Icon = "NewIcon" # 125
  # 注:Icon 填文件名使用对应文件,填数字则使用 IconSet 对应位置的图标
  Switch = 0 # 该开关开启时获得新道具不做记录
  Icon_X = 0 # New图标相对位置的 X 坐标偏移
  Icon_Y = 0 # New图标相对位置的 Y 坐标偏移
  # 配置结束
end
class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ● 初始化新获得道具列表
  #--------------------------------------------------------------------------
  alias new_icon_init_all_items init_all_items
  def init_all_items
    new_icon_init_all_items
    @new_icon_list = { RPG::Item => [],RPG::Armor => [],RPG::Weapon => [] }
  end
  #--------------------------------------------------------------------------
  # ● 设置新获得道具
  #--------------------------------------------------------------------------
  def set_new_icon(item)
    return unless item
    return if item_is_new?(item)
    @new_icon_list[item.class].push(item.id)
  end
  #--------------------------------------------------------------------------
  # ● 移除新道具
  #--------------------------------------------------------------------------
  def remove_new_icon(item)
    return unless item
    @new_icon_list[item.class].delete(item.id)
  end
  #--------------------------------------------------------------------------
  # ● 是否新道具
  #--------------------------------------------------------------------------
  def item_is_new?(item)
    return unless item
    @new_icon_list[item.class].include?(item.id)
  end
  #--------------------------------------------------------------------------
  # ● 获取道具时设置 Icon 标志
  #--------------------------------------------------------------------------
  alias new_icon_gain_item gain_item
  def gain_item(item, amount, include_equip = false)
    new_icon_gain_item(item, amount, include_equip)
    return if $game_switches[VIPArcher::NEW_ITEM::Switch]
    set_new_icon(item) if amount > 0
  end
end
class Window_ItemList < Window_Selectable
  include VIPArcher::NEW_ITEM
  #--------------------------------------------------------------------------
  # ● 绘制新获得道具 Icon
  #--------------------------------------------------------------------------
  def draw_item_new_flag(rect, item)
    if (Icon.is_a?(Integer))
      draw_icon(Icon, rect.x + Icon_X, rect.y + Icon_Y, enable?(item))
    else
      bitmap = Cache.system(Icon)
      contents.blt(rect.x + Icon_X, rect.y + Icon_Y, bitmap, bitmap.rect,
        enable?(item) ? 255 : translucent_alpha)
    end
  end
  #--------------------------------------------------------------------------
  # ● 绘制项目
  #--------------------------------------------------------------------------
  alias new_icon_draw_item draw_item
  def draw_item(index)
    new_icon_draw_item(index)
    item = @data[index]
    return unless item && $game_party.item_is_new?(item)
    rect = item_rect(index)
    rect.width -= 4
    draw_item_new_flag(rect, item)
  end
  #--------------------------------------------------------------------------
  # ● 移除新道具 Icon
  #--------------------------------------------------------------------------
  def remove_new_icon(item)
    return unless $game_party.item_is_new?(item)
    $game_party.remove_new_icon(item)
    redraw_item(@index)
  end
  #--------------------------------------------------------------------------
  # ● 光标滑过移除 New Icon 标志
  #--------------------------------------------------------------------------
  def index=(index)
    remove_new_icon(@data[@index]) unless @index < 0
    super
  end
  #--------------------------------------------------------------------------
  # ● 确定时消除 New Icon 标志
  #--------------------------------------------------------------------------
  def call_ok_handler
    super
    remove_new_icon(@data[@index])
  end
end
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 交换物品(修正替换装备也提示 New)
  #--------------------------------------------------------------------------
  alias new_icon_trade_item_with_party trade_item_with_party
  def trade_item_with_party(new_item, old_item)
    result = new_icon_trade_item_with_party(new_item, old_item)
    $game_party.remove_new_icon(old_item)
    return result
  end
end[/pre][/fold]

评分

参与人数 4赞 +4 收起 理由
3231152940 + 1 塞糖
世界第一中二 + 1 精品文章
Kim_Shyuen + 1 精品文章
张咚咚 + 1 精品文章

查看全部评分

梦石
10
星屑
39550
在线时间
1919 小时
注册时间
2010-11-14
回帖
3214

R考场第七期纪念奖

发表于 2018-12-27 08:06:52 | 显示全部楼层
很不错的功能0 0 收藏了
用头画头像,用脚写脚本
回复

使用道具 举报

梦石
0
星屑
738
在线时间
75 小时
注册时间
2018-1-19
回帖
16
发表于 2018-12-29 21:45:02 | 显示全部楼层
很棒啊,收藏了
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
5706
在线时间
922 小时
注册时间
2013-8-29
回帖
1401
发表于 2020-1-7 23:53:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
5706
在线时间
922 小时
注册时间
2013-8-29
回帖
1401
发表于 2020-1-9 01:43:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
5706
在线时间
922 小时
注册时间
2013-8-29
回帖
1401
发表于 2020-1-10 09:12:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
62
在线时间
25 小时
注册时间
2020-2-19
回帖
3
发表于 2020-2-21 20:28:59 | 显示全部楼层
chanszeman1018 发表于 2020-1-9 01:43
4楼的问题已解决,
[fold=谢谢巴哈的魂大(play123)][/fold]

用这段代码替换原位置代码后无法成功运行啊。。。

点评

??  发表于 2020-2-21 21:09
回复

使用道具 举报

梦石
0
星屑
62
在线时间
25 小时
注册时间
2020-2-19
回帖
3
发表于 2020-2-21 21:57:35 | 显示全部楼层
chanszeman1018 发表于 2020-1-9 01:43
4楼的问题已解决,
[fold=谢谢巴哈的魂大(play123)][/fold]

报错是这样的:
脚本new第80行:发生 NameError
undefined method 'draw_item' for class'Game_Party'
回复

使用道具 举报

头像被屏蔽
梦石
0
星屑
5706
在线时间
922 小时
注册时间
2013-8-29
回帖
1401
发表于 2020-2-22 01:01:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

梦石
0
星屑
62
在线时间
25 小时
注册时间
2020-2-19
回帖
3
发表于 2020-2-22 12:24:00 | 显示全部楼层
chanszeman1018 发表于 2020-2-22 01:01
draw_item那里我沒改动喔,
應該是原脚本和其他外部脚本衝突了吧?

好吧,谢谢你啦!
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部