我不是很清楚每个脚本自带的那一串数字的功能。我已经用自己写的脚本管理模块多次导出导入,那一串谜之数字全部变成了nil,而游戏并未出现任何功能问题。所以我觉得可以发出来分享一下。
为避免可能的风险,建议每次执行脚本导入之前备份 "Data/Scripts.rvdata2" 。
此外,进行脚本导入期间,如果你的 RMVA 是开着的, "Data/Scripts.rvdata2" 的变化不会立刻反映到 RMVA 里,需要关掉 RMVA 再重新打开工程才能看到脚本的变化。否则的话,导入过的脚本可能会被 RMVA 的缓存覆盖。
[Ruby on Rails] 纯文本查看 复制代码 ##
# 跑步时长限制 by Calendar99
#
module CLD99
module DASH_TIME_LIMIT
# 跑步最长持续时间(单位:帧)
MAX_DASH_TIME = 90
# 显示体力
DISPLAY_TIME_LIMIT = true
# 体力较多时的颜色
COLOR1 = Color.new(0, 0, 255)
# 体力较少时的颜色
COLOR2 = Color.new(255, 0, 0)
end
end
class Game_Player
attr_reader :dash_time
alias initialize_for_dash_with_time_limit initialize
def initialize
initialize_for_dash_with_time_limit
@dash_time = CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME
end
alias dash_without_time_limit dash?
def dash?
dash_without_time_limit && @dash_time > 0
end
alias update_for_dash_with_time_limit update
def update
update_for_dash_with_time_limit
if moving? && dash_without_time_limit
@dash_time = [@dash_time - 1, 0].max
else
@dash_time = [@dash_time + 1, CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME].min
end
end
end
class Sprite_Character
alias update_for_dash_time update
def update
update_for_dash_time
return unless character.is_a?(Game_Player)
return unless CLD99::DASH_TIME_LIMIT::DISPLAY_TIME_LIMIT
if character.dash_time < CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME
display_dash_time
else
hide_dash_time
end
end
def display_dash_time
if !@sprite_dash_time
@sprite_dash_time = Sprite.new
@sprite_dash_time.ox = 16
@sprite_dash_time.oy = 4
end
if !@sprite_dash_time.bitmap
@bmp_dash_time1 = Bitmap.new(32, 8)
@bmp_dash_time1.fill_rect(0, 0, 32, 8, CLD99::DASH_TIME_LIMIT::COLOR1)
@bmp_dash_time2 = Bitmap.new(32, 8)
@bmp_dash_time2.fill_rect(0, 0, 32, 8, CLD99::DASH_TIME_LIMIT::COLOR2)
end
@sprite_dash_time.x = self.x
@sprite_dash_time.y = self.y + 4
rate = character.dash_time / CLD99::DASH_TIME_LIMIT::MAX_DASH_TIME.to_f
@sprite_dash_time.bitmap = rate < 0.3 ? @bmp_dash_time2 : @bmp_dash_time1
@sprite_dash_time.src_rect.width = 32 * rate
@sprite_dash_time.visible = true
end
def hide_dash_time
return unless @sprite_dash_time
@sprite_dash_time.visible = false
end
alias dispose_for_dash_time dispose
def dispose
dispose_for_dash_time
@sprite_dash_time.dispose if @sprite_dash_time
@bmp_dash_time1.dispose if @bmp_dash_time1
@bmp_dash_time2.dispose if @bmp_dash_time2
end
end
---------- 2019/6/6 ----------
• 增加了 watch 指令。会自动检查脚本的最后修改时间,如果有任何脚本文件的最后修改时间晚于 "Data/Scripts.rvdata2" 则自动 blink;否则,如果有任何脚本文件的最后修改时间早于 "Data/Scripts.rvdata2" 则自动导出。每次导出文件,都会将脚本文件和 "Data/Scripts.rvdata2" 的最后修改时间设为完全相同,且只在所有文件的最后修改时间都完全相同的情况下,watch 模式的脚本管理模块才会不进行任何动作。
本帖来自P1论坛作者Aephiex,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg. blue/forum.php?mod=viewthread&tid=477466 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
|