#encoding:utf-8
#==============================================================================
# 货币金银铜模式
#本脚本有永月极圣(Salvareless)编写,转载使用请保留
#本脚本包含游戏内置游戏币的金银铜化,以及两种自定义特殊货币的显示
#本脚本包含商店界面的货币金银铜化。
#!!!!!!!!!!
#请务必认真阅读脚本下方的脚本说明,根据自己需要选择脚本功能,谢谢。
#!!!!!!!!!!
#==============================================================================
=begin
注意事项:
1·本脚本仅适用于横向指令菜单,若非横向菜单,请解除“定义状态窗口高度”部分的屏蔽。
2·凡是只用过数据库破限脚本需要将破限脚本第631行,即:
#--------------------------------------------------------------------------
# draw_currency_value
#--------------------------------------------------------------------------
部分中的text = value.group替换为:text = value
PS.此条只是用于下一条的使用者。
3·凡是使用了“Yanfly Engine Ace - Event Window v1.01”的物品得失提示脚本
请用脚本尾部屏蔽区内容替换其脚本的“ def event_window_make_gold_text(value)”部分
4·如果不需要扩充特殊货币可以屏蔽特殊货币区段。
5·如果使用特殊货币区段,为求完美效果,还需要物品分类脚本。添加“货币”物品分类,
并将其设置为不显示的分类,另外再将用作货币的物品设置为“货币”分类。即达到完美效果。
6·虽然对不起大学编程老师,但是真的很久没碰编程了,技术有限,
如果你是程序员,请顺手帮忙优化冗余部分。
7·由于上一条所说的,使用脚本时,需自行替换每一处“draw_icon(142, ××, ××,)”
图标绘制语句中的第一个数值,即图标ID。
8·如果只需要商店货物价格金银铜化,请屏蔽或删除商店部分以外的区域。
=end
=begin
#--------------------------------------------------------------------------
# ● 菜单界面定义状态窗口高度
#--------------------------------------------------------------------------
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# ● 获取窗口的高度
#--------------------------------------------------------------------------
def window_height
Graphics.height - line_height * 2
end
end
=end
#--------------------------------------------------------------------------
# ● 菜单界面定义金币显示窗口
#--------------------------------------------------------------------------
class Window_Gold < Window_Base
#--------------------------------------------------------------------------
# ● 重新定义金币窗口的宽度
#--------------------------------------------------------------------------
def window_width
return Graphics.width
end
#--------------------------------------------------------------------------
# ● 刷新,菜单界面金银铜模式主体
#--------------------------------------------------------------------------
def refresh
contents.clear
#开始金银铜模式
if value > 9999 #持有钱币是否达到金币级
values = value/100 #计算中间变量
draw_currency_value(value % 100, "" , 4, 0, contents.width - 18) #绘制铜币数量
draw_currency_value(values % 100, "" , 4, 0, contents.width - 58) #绘制银币数量
draw_currency_value(values/100, "" , 4, 0, contents.width - 98) #绘制金币数量
draw_icon(142, contents.width - 20, 0,) #绘制铜币图标(142为铜币图标ID)
draw_icon(141, contents.width - 60, 0,) #绘制银币图标(141为银币图标ID)
draw_icon(140, contents.width - 100, 0,) #绘制金币图标(140为金币图标ID)
elsif value > 99 #持有钱币是否达到银币级
draw_currency_value(value % 100, "", 4, 0, contents.width - 18) #绘制铜币数量
draw_currency_value(value/100, "", 4, 0, contents.width - 58) #绘制银币数量
draw_icon(142, contents.width - 20, 0,) #绘制铜币图标
draw_icon(141, contents.width - 60, 0,) #绘制银币图标
else
draw_currency_value(value, "", 4, 0, contents.width - 18) #绘制铜币数量
draw_icon(142, contents.width - 20, 0,) #绘制铜币图标
end
#结束金银铜模式
#开始物品货币区
#格式如下
#draw_currency_value(自定义变量名, "" , 4, 0, contents.width - 423)
#draw_icon(图标ID, contents.width - 425, 0,)
#第一种
draw_currency_value(value1, "" , 4, 0, contents.width - 423) #绘制特殊货币一的数量
draw_icon(138, contents.width - 425, 0,) #绘制特殊货币一的图标
#第二种
draw_currency_value(value2, "" , 4, 0, contents.width - 323) #绘制特殊货币二的数量
draw_icon(139, contents.width - 325, 0,) #绘制特殊货币二的图标
#结束物品货币区
end
#--------------------------------------------------------------------------
# ● 定义特殊货币(物品货币)
# 格式如下
# def 自定义变量名
# $game_party.item_number($data_items[物品ID])
# end
#--------------------------------------------------------------------------
#第一种
def value1
$game_party.item_number($data_items[83])
end
#第二种
def value2
$game_party.item_number($data_items[84])
end
end
#--------------------------------------------------------------------------
# ● 商店窗口部分开始
#--------------------------------------------------------------------------
class Window_ShopCommand < Window_HorzCommand
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
return Graphics.width
end
end
# ● 持有数窗口调整
class Window_ShopStatus < Window_Base
def draw_possession(x, y)
rect = Rect.new(x, y, contents.width - 4 - x, line_height)
change_color(system_color)
draw_text(rect, Vocab::Possession)
rect = Rect.new(x + 10, y + line_height, contents.width - 4 - x, line_height)
change_color(normal_color)
draw_text(rect, $game_party.item_number(@item))
end
end
#--------------------------------------------------------------------------
# ● 商店金银铜化
#--------------------------------------------------------------------------
#----出售列表部分----
class Window_ShopBuy < Window_Selectable
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
return 430
end
#--------------------------------------------------------------------------
# ● 绘制项目
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
rect = item_rect(index)
draw_item_name(item, rect.x, rect.y, enable?(item))
rect.width -= 4
#开始金银铜模式
value = price(item)
if value > 9999
valuex = value / 100 #金币级运算中间变量
valueg = valuex / 100 #金币数量
values = valuex % 100 #银币数量
valuec = value % 100 #铜币数量
draw_currency_value(valuec, "" , 4, rect.y, contents.width - 18) #绘制铜币数量
draw_currency_value(values, "" , 4, rect.y, contents.width - 58) #绘制银币数量
draw_currency_value(valueg, "" , 4, rect.y, contents.width - 98) #绘制金币数量
draw_icon(142, contents.width - 20, rect.y,) #绘制铜币图标
draw_icon(141, contents.width - 60, rect.y,) #绘制银币图标
draw_icon(140, contents.width - 100, rect.y,) #绘制金币图标
elsif value > 99
values = value / 100 #银币数量
valuec = value % 100 #铜币数量
draw_currency_value(values, "" , 4, rect.y, contents.width - 58) #绘制铜币数量
draw_currency_value(valuec, "" , 4, rect.y, contents.width - 18) #绘制银币数量
draw_icon(142, contents.width - 20, rect.y,) #绘制铜币图标
draw_icon(141, contents.width - 60, rect.y,) #绘制银币图标
else
draw_currency_value(value, "" , 4, rect.y, contents.width - 18) #绘制铜币数量
draw_icon(142, contents.width - 20, rect.y,) #绘制铜币图标
end
#结束金银铜模式
end
end
#----显示总价部分----
class Window_ShopNumber < Window_Selectable
#--------------------------------------------------------------------------
# ● 获取窗口的宽度
#--------------------------------------------------------------------------
def window_width
return 430
end
#--------------------------------------------------------------------------
# ● 绘制总价
#--------------------------------------------------------------------------
def draw_total_price
width = contents_width
value = @price * @number
if value > 9999
valuex = value / 100 #金币级运算中间变量
valueg = valuex / 100 #金币数量
values = valuex % 100 #银币数量
valuec = value % 100 #铜币数量
draw_currency_value(valueg, "", 4, price_y, width - 98) #绘制金币数量
draw_currency_value(values, "", 4, price_y, width - 58) #绘制银币数量
draw_currency_value(valuec, "", 4, price_y, width - 18) #绘制铜币数量
draw_icon(142, contents.width - 20, price_y,) #绘制铜币图标
draw_icon(141, contents.width - 60, price_y,) #绘制银币图标
draw_icon(140, contents.width - 100, price_y,) #绘制金币图标
elsif value > 99
values = value / 100 #银币数量
valuec = value % 100 #铜币数量
draw_currency_value(values, "", 4, price_y, width - 58) #绘制银币数量
draw_currency_value(valuec, "", 4, price_y, width - 18) #绘制铜币数量
draw_icon(142, contents.width - 20, price_y,) #绘制铜币图标
draw_icon(141, contents.width - 60, price_y,) #绘制银币图标
else
draw_currency_value(value, "", 4, price_y, width - 18) #绘制铜币数量
draw_icon(142, contents.width - 20, price_y,) #绘制铜币图标
end
end
end
#--------------------------------------------------------------------------
#商店部分结束
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# ● 金币窗口修正
#--------------------------------------------------------------------------
class Scene_Shop < Scene_MenuBase
#--------------------------------------------------------------------------
# ● 生成金钱窗口
#--------------------------------------------------------------------------
def create_gold_window
@gold_window = Window_Gold.new
@gold_window.viewport = @viewport
@gold_window.x = Graphics.width - @gold_window.width
@gold_window.y = Graphics.height - @gold_window.height
end
end
=begin
#--------------------------------------------------------------------------
# ● 屏蔽部分(请根据脚本头部提示使用此屏蔽区)得失金币提示金银铜模式
#--------------------------------------------------------------------------
def event_window_make_gold_text(value)
return unless SceneManager.scene_is?(Scene_Map)
return if Switch.hide_event_window
if value > 0
text = YEA::EVENT_WINDOW::FOUND_TEXT
elsif value < 0
text = YEA::EVENT_WINDOW::LOST_TEXT
value = 0 - value #失去金币转化为正值
else; return
end
#开始金银铜模式
if value > 9999
valuex = value / 100 #金币级运算中间变量
valueg = valuex / 100 #金币数量
values = valuex % 100 #银币数量
valuec = value % 100 #铜币数量
valuep = valueg.abs.group + "金" + values.abs.group + "银" + valuec.abs.group
text += sprintf("%s%s", valuep, "铜")
elsif value > 99
values = value / 100 #银币数量
valuec = value % 100 #铜币数量
valuep = values.abs.group + "银" + valuec.abs.group
text += sprintf("%s%s", valuep, "铜")
else
#原始代码区开始
text += sprintf("%s%s", value.abs.group, "铜")
#原始代码区结束
end
#结束金银铜模式
event_window_add_text(text)
end
#--------------------------------------------------------------------------
# ● 屏蔽部分(请根据脚本头部提示使用此屏蔽区)得失金币提示金银铜模式
#--------------------------------------------------------------------------
=end