Project1
标题:
请问怎么制作养成的日历系统?
[打印本页]
作者:
jflove
时间:
2011-3-8 18:15
标题:
请问怎么制作养成的日历系统?
本帖最后由 jflove 于 2011-3-12 22:41 编辑
虽然有看过一些新手教学但还是懵懵懂懂orz... 只知道些基本的, 写一个新的东西完全超乎我的能力范围T口T 请求帮助~~
我想要的是像:
1."30X年X月X日"显示在金钱数上方, 然后人物状态里增加"年龄"一栏.
2. 年的数值增1时年龄也增1(废话= =a), 年月日如果能不要单纯的30进位和12进位, 加上大小月和闰年的判读就好了 (不过如果太复杂就前者也可以啦...)
3. 年月日前进到特定数值时会发生事件
4. 每个任务都有的特定的需求天数, 完成后就会增加那些天数(用这方法让时间前进).
EX. 砍柴任务要花上10天, 去森林打完怪后回来交任务, 日增加10. (理想的当然是靠任务进行的百分比来增加日子, 像是做了一半就过了5天, 但那听起来就太难了orz 还是直接获得日子就好了...)
底下是选用方案, 就是我很想要加入, 但好像太难了的东西:
5. 玩家可以决定自己的生日和主角的生日, 然后游戏就从主角生日开始. 两人的生日都会发生特殊事件. (这部分和3很像, 只是特定数值改为输入的变数?)
6. 星座判定... 玩家和主角的星座会影响主角能力值和好感度.
抱歉写了一堆orz 其实最重要的只是前三项而已! 希望大家帮帮忙, 这是游戏最关键的部分啊>"<...
作者:
蕾米莉亚·斯卡雷特
时间:
2011-3-8 18:40
http://rpg.blue/forum.php?mod=vi ... B%E6%97%B6%E9%97%B4
稍微修改下可以使用了~~~
作者:
jflove
时间:
2011-3-8 20:26
谢谢回答, 我研究看看... 这个是照真实时间流逝... 老实说我没啥修改头绪@@
应该就是删... 掉一些东西...吧...
没错, 就是一切都是变量orz 啊啊... 好难T口T
我很喜欢美少女梦工厂的一些设定, 是养成游戏中的经典嘛~ 但游戏内容完全不同... 基本上还是RPG啦, 只是加入主角的培养选择和剧情分支. 我比较喜欢写文案设定orz 语法很烂...
作者:
蕾米莉亚·斯卡雷特
时间:
2011-3-8 22:10
1. 我说的流逝速度可以调节, 包含时间停止.
2. 货币的话, 搜索 "货币" 就可以.
3. 显示的话, 记得有啥帖子里有一个显示变量还是什么的~~~
作者:
jflove
时间:
2011-3-9 00:58
本帖最后由 jflove 于 2011-3-9 01:02 编辑
我改好了!! orz 把两脚本拼在一起... 只修改了算法>"<
这样应该可以了...吧...
有空的大大可以帮我看看有没有错, 我真的很弱orz
-----------------------------------
module Time_byz
WINDOW_X = 0
WINDOW_Y = 0
end
#==============================================================================
#==============================================================================
class Window_Byz_Time < Window_Base
#------------------------------------------------------------------------------
# 调试画面、个别显示开关及变量的窗口。
#==============================================================================
#--------------------------------------------------------------------------
# ● 初始化对像
# x : 窗口 X 座标
# y : 窗口 Y 座标
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 160, 57);
refresh;
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def time(n)
year = n/365
month = (n%365)/30
day = (n%365)%30
return year, month, day
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
main_time = time($game_variables[3])
text = main_time[2].to_s + "日"
text = main_time[1].to_s + "月" + text if main_time[1] > 0 and main_time[0] > 0
text = main_time[0].to_s + "年" + text if main_time[0] > 0
self.contents.draw_text(0, 0, 105, WLH, text, 2);
$game_variables[1] = main_time[0]
$game_variables[2] = main_time[1]
end
end
#這兩行是我自己加的, 用來指定年月為變數1和變數2, 這樣我之後比較好做事件... 這樣寫可以嗎?
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
# 处理地图画面的类。
#==============================================================================
class Scene_Map < Scene_Base
alias old_start start
#--------------------------------------------------------------------------
# ● 开始处理
#--------------------------------------------------------------------------
def start
old_start;
@time_window = Window_Byz_Time.new(Time_byz::WINDOW_X, Time_byz::WINDOW_Y);
end
alias old_terminate terminate
#--------------------------------------------------------------------------
# ● 结束处理
#--------------------------------------------------------------------------
def terminate
old_terminate;
@time_window.dispose;
end
alias old_update update
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
old_update;
@time_window.refresh;
end
end
作者:
蕾米莉亚·斯卡雷特
时间:
2011-3-9 16:22
本帖最后由 蕾米莉亚·斯卡雷特 于 2011-3-9 16:23 编辑
基本是一样的, 只是小小的修改了一下脚本.
工程:
Project1.rar
(239.77 KB, 下载次数: 235)
2011-3-9 16:21 上传
点击文件名下载附件
脚本如下:
#===============================================================================
# ■ 简易养成时间系统
#-------------------------------------------------------------------------------
# 脚本说明及使用方法
#
#-------------------------------------------------------------------------------
# 更新作者: 蕾米莉亚·斯卡雷特
# 许可协议: NCP NAM STS
# 项目版本: 1.0.20110309
# 引用网址: 脚本发布帖网址等(用于获取最新的脚本)
#-------------------------------------------------------------------------------
# - 1.0.20110309 By 蕾米莉亚·斯卡雷特
# * 基本脚本组建
#
#===============================================================================
$fscript = {} if $fscript == nil
$fscript["Remilia Time"] = "1.0.20110309"
#-------------------------------------------------------------------------------
# ▼ 通用配置模块
#-------------------------------------------------------------------------------
module FSL
module Remilia_Time
# 事件定义
# 说明:
# 1. 事件使用的是 公共事件
# 2. 如果某个点填写的是 0 的话, 就是忽略其设定.
# 比如 [28,02,0] 在将年设定成 0, 就是忽略年这个定义, 只要是 2月28日 就会触发公共事件.
TIME_EVENT = {
# [日,月, 年] => [公共事件ID]
[7, 1, 0] => 1,
}
end
end
class Game_System
include FSL::Remilia_Time
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_accessor :time_now
attr_accessor :byz_timer
attr_accessor :run_bool
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
alias :remilia_initialize :initialize
def initialize
@time_now = Time.local(2012, 1, 6, 10, 10, 10);
@byz_timer = []
@run_bool = false # 当天时间启动标志
remilia_initialize
end
#--------------------------------------------------------------------------
# ● 增加时间
#--------------------------------------------------------------------------
def add_time(day)
@time_now += day * 24 * 60 * 60
end
#--------------------------------------------------------------------------
# ● 设定时间计时器
#--------------------------------------------------------------------------
def set_byz_timer(id)
@byz_timer[id] = @time_now
end
#--------------------------------------------------------------------------
# ● 计算时间(秒数)
#--------------------------------------------------------------------------
def after_time(id)
return 0 if @byz_timer[id] == nil
return @time_now - @byz_timer[id]
end
#--------------------------------------------------------------------------
# ● 格式化时间
#--------------------------------------------------------------------------
def sprintf_time
time = [@time_now.mday, @time_now.mon, @time_now.year]
return_time = []
return_time << time
[[0], [1], [2], [0, 1], [0, 2], [1, 2]].each do |a1|
a1.each do |n|
@time_l = time.clone
@time_l[n] = 0
end
return_time << @time_l
end
return_time
end
#--------------------------------------------------------------------------
# ● 启动事件
#--------------------------------------------------------------------------
def event_run
return if @run_bool
array = TIME_EVENT.keys & sprintf_time
if !array.empty?
unless !$scene.is_a?(Scene_Map) or $game_message.visible or $game_temp.in_battle
$game_temp.common_event_id = TIME_EVENT[array[0]]
@run_bool = true
end
end
end
end
#==============================================================================
# ■ Game_Party
#------------------------------------------------------------------------------
# 处理同伴的类。包含金钱以及物品的信息。本类的实例请参考 $game_party。
#==============================================================================
class Game_Party < Game_Unit
alias :remilia_initialize :initialize
def initialize
@birthday = Time.local(1992, 1, 7, 5, 4, 3)
remilia_initialize
end
def age
@age = $game_system.time_now.year - @birthday.year
if $game_system.time_now.mon >= @birthday.mon and $game_system.time_now.mday >= @birthday.mday
@age += 1
end
@age
end
end
#==============================================================================
# ■ Window_Time
#------------------------------------------------------------------------------
# 处理地图显示时间窗口的类。
#==============================================================================
class Window_Time < Window_Base
def initialize
super(0, 0, 170, 87)
@old_time = $game_system.time_now - 1
refresh
end
def refresh
$game_system.event_run
if @old_time == $game_system.time_now
return;
end
@old_time = $game_system.time_now
self.contents.clear
text = "年龄:" + $game_party.age.to_s
self.contents.draw_text(0, 32, 105, WLH, text, 2)
text = $game_system.time_now.strftime("%Y年%m月%d日")
self.contents.draw_text(0, 0, 170, WLH, text)
$game_system.run_bool = false
end
end
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
# 处理地图画面的类。
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ● 开始处理
#--------------------------------------------------------------------------
alias :remilia_start :start
alias :remilia_terminate :terminate
alias :remilia_update :update
def start
@remilia_time_window = Window_Time.new
remilia_start
end
def terminate
@remilia_time_window.dispose
remilia_start
end
def update
@remilia_time_window.refresh
remilia_update
end
end
复制代码
截图什么的, 一样的:
QQ截图未命名.jpg
(54.68 KB, 下载次数: 24)
下载附件
保存到相册
2011-3-9 16:23 上传
作者:
冰舞蝶恋
时间:
2011-3-9 21:01
记得云姐发过时间脚本啊
作者:
jflove
时间:
2011-3-12 22:38
本帖最后由 jflove 于 2011-3-12 22:41 编辑
谢谢! 真是修改的简单漂亮!!! 我还是只会剪剪贴贴而已orz...
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1