Project1

标题: 怎么样用一个变量就可以作出“上次访问时间差”? [打印本页]

作者: 大米稀饭    时间: 2008-1-3 01:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: 大米稀饭    时间: 2008-1-3 01:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-1-3 01:38
time.now……
或者,使用公共的并行事件来做计时器……
作者: 心情de对白    时间: 2008-1-3 01:50
用公共并行事情那岂不是有多少时间都并行多少个了?
那样的话工作量会很大!~~
作者: 精灵使者    时间: 2008-1-3 01:52
以下引用心情de对白于2008-1-2 17:50:44的发言:

用公共并行事情那岂不是有多少时间都并行多少个了?
那样的话工作量会很大!~~

不是。并行一个就够。
剩下的事情就交给计算系统去做吧。
并行一个就让某个变量去专门当计时变量。
然后其它的时间差等就由这个变量计算得出。
作者: 大米稀饭    时间: 2008-1-3 16:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-1-3 21:09
一个普通公共事件 计时开始
计时变量 = 0
开关x:启动开关 = on

一个并行公共事件,启动开关控制
循环
变量x:计时变量 += 1
等待20帧
以上反复

关闭计时的时候只要关闭启动开关即可。
开启计时的时候直接使用开启的公共事件
时间差变量= 计时变量-上次记录的变量
处理完毕以后再将上次记录的变量=计时变量即可。
作者: 大米稀饭    时间: 2008-1-4 00:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-1-4 00:50
每个独立事件使用自己的变量,然后用那个计时器变量作为参考对象。而那个计时器变量一直都不停下来。还可以把那个变量超过某值以后自动清零,然后做个循环。
可以把那个计时循环改为这样:
循环
条件分歧:当计时变量>99时
等待20帧
变量操作:计时变量 = 0
除此以外的场合
等待20帧
变量操作:计时变量 += 1
分歧结束
以上反复

事件里面写:
条件分歧:事件变量 <计时变量
变量操作:事件变量 += 100
变量操作:事件变量 -= 计时变量
除此以外的场合
变量操作:事件变量 -= 计时变量
分歧结束
条件分歧 事件变量 > 规定时间(你自己的值)
.....(时间到)
变量操作:事件变量= 计时变量
除此以外的场合
(时间未到)
分歧结束
作者: 大米稀饭    时间: 2008-1-4 00:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-1-4 00:59
这样的话你怎么记录上次访问的时间差呢?
如果有多个计时器同时计时的话……
你是不是只需要上次访问过事件的时间,还是每个事件都要独立计时?
作者: 大米稀饭    时间: 2008-1-4 01:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-1-4 01:37
我想问一下。
访问其它的事情其它的事情那里会不会重新计时。
例如100个事件,每个事件都要计时10分钟么?
作者: 大米稀饭    时间: 2008-1-4 01:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-1-4 01:41
怎么记录这些时间呢?而且开始的时间都不一样……
作者: 大米稀饭    时间: 2008-1-4 01:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 精灵使者    时间: 2008-1-5 06:27
独立开关似乎不行吧……我感觉还是用变量组比较好一些……
作者: 风之塞尔达    时间: 2008-1-5 06:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: 雪流星    时间: 2008-1-5 14:31
试试用数组吧

在第一个公共事件设置
$game_variables[x] = []

在各个事件内记录的变量为
$game_variables[x][@event_id]

具体的我现在也弄不出来……
先提拱个思路
作者: 大米稀饭    时间: 2008-1-5 19:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: IamI    时间: 2008-1-5 20:52
阁下说的到底是什么?是上次访问这个事件的时间,还是上次访问事件的时间?
后者:
初始化:$game_variables[11]=Time.now()
之后,每次执行事件执行:
$game_variables[12]=Time.now()
$game_variables[12]-=$game_variables[11]
$game_variables[11]=Time.now()
12号变量得到上次访问的时间差。
如果说的是前者,并且找阁下所说,使用独立开关,那么就需要去修改脚本,然后独立出来一个特别的“独立开关”,类型是数值型,然后再……这不知道要改多少……
或者说,把独立开关[逻辑型]转换成变量[数值型]?!
作者: 大米稀饭    时间: 2008-1-5 21:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: IamI    时间: 2008-1-5 21:44
测试完毕。多给点赏钱吧~很烦的《=请狠狠PIA这个人
注意:这种方法修改了game_self_switches类,除了危险还是危险
game_self_switches类当中加入如下2个方法:
  #####################################
  def got(key)
    return @data[key]
  end
  #####################################
  #####################################
  def set(key, value)
    @data[key] = value
  end
  #####################################
然后,初始化:
$game_self_switches.set([1,2,"E"],Time.now)
1是地图编号,2是事件编号,“E”是莫名其妙加上去的一个独立开关,不用修改。下同。
每次执行:
$GotLast = Time.now
$GotLast-=$game_self_switches.got([1,2,"E"])
$game_self_switches.set([1,2,"E"],Time.now)

执行后,$GotLast得到时间差[类型:单精度,单位:秒]
当然,这不是一个变量,是每个事件一个变量。
弱点:修改系统时间可快速跳过。
顺便提一句,各位帮我看看有没有什么Error,还有……初始化用自动事件For一圈……
作者: 大米稀饭    时间: 2008-1-5 22:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: IamI    时间: 2008-1-5 22:16
(先修改game_self_switches)
初始化(也算是重置吧……,平常应该用不到这个,因为事件中执行的第3句已经重置了):
for i in 9..100 #这里9和100是事件的ID编号,也就是说这些事件编号最好是连续的。
$game_self_switches.set([1,i,"E"],Time.now) #1是地图编号,下同
end
(事件中优先执行,这个不要写成公共事件,自己Copy吧)
$GotLast = Time.now
k = @event_id
$GotLast-=$game_self_switches.got([1,k,"E"])
$game_self_switches.set([1,k,"E"],Time.now)
条件分歧:$GotLast >= 600   
(600是秒数)
 刷新语句,和其他邪恶的事情
分歧结束

和我写的其他脚本一样,不知道有什么潜在的Bug……有Bug就请其他脚本达人解决吧
作者: 大米稀饭    时间: 2008-1-5 22:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: IamI    时间: 2008-1-5 22:37
单个初始化:$game_self_switches.set([1,5,"E"],Time.now),1是地图编号,5是事件编号,阁下若是有耐心就一个个去初始化吧。
所谓初始化,就是从此时开始计时。
作者: 大米稀饭    时间: 2008-1-5 22:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: IamI    时间: 2008-1-5 22:49
k = @event_id
p = @map_id
$game_self_switches.set([p,k,"E"],Time.now)
上面刚刚好到脚本长度极限。
话说回来,LZ还真是懒…… [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 大米稀饭    时间: 2008-1-5 22:55
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1