Project1

标题: RM电子钟的屏蔽问题 [打印本页]

作者: zero2    时间: 2007-7-11 16:38
标题: RM电子钟的屏蔽问题
我发现七夕小雨的电子钟,只要玩家修改系统事件,就可以无视游戏所设定的作息事件了,有没有什么办法来解决啊? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~ [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: zero2    时间: 2007-7-11 16:38
标题: RM电子钟的屏蔽问题
我发现七夕小雨的电子钟,只要玩家修改系统事件,就可以无视游戏所设定的作息事件了,有没有什么办法来解决啊? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~ [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: kaze    时间: 2007-7-11 16:41
游戏加密
作者: 精灵使者    时间: 2007-7-11 16:46
很简单的方法可以不让别人修改工程。提示关键字:隐藏
作者: zero2    时间: 2007-7-11 16:51
不是,我打错俩字,是玩家修改系统时间,就是电脑右下方的电脑时间,这样玩家要去12点开门的地方,直接调到12点就行了,那还有什么意义?!{/pz}
作者: zero2    时间: 2007-7-12 05:42
{/kuk}果然……这个问题会太难了!!
作者: 轩辕久久    时间: 2007-7-12 05:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: 雪流星    时间: 2007-7-12 06:28
唯一的解决方法
不要用电脑的时间
在游戏内计算时间

@@LZ怎麽一直问电子中的问题
再去看看我的那个时间系统吧。。。{/cy}
懒的贴连结了{/tp}

作者: 精灵使者    时间: 2007-7-12 07:08
呵呵……用变量计算……hoho~而且存档的那种。
作者: 七夕小雨    时间: 2007-7-12 07:10
以下引用snstar2006于2007-7-11 22:28:50的发言:

唯一的解决方法
不要用电脑的时间
在游戏内计算时间

@@LZ怎麽一直问电子中的问题
再去看看我的那个时间系统吧。。。
懒的贴连结了


貌似除了这个——〉我也没有办法了~

你就将就着用好了…………

所以那个脚本上我的标题是——〉无用脚本囧……

作者: 幻の飞鱼    时间: 2007-7-12 07:16
不知道API里面有没有监视系统时间修改的

API达人来看看也许可以

另外不知道附加一个高精度记时器来检测过去的时间,判断下是否合理来决定是否正常运行,不知道是否可行
作者: 精灵使者    时间: 2007-7-12 07:26
你还记得美兽殿的测试程序事件么?
p1=time.now
程序
p2=time.now
p p2 - p1
这样就可以输出程序运行时间……如果赋值给变量的话……就……
作者: zero2    时间: 2007-7-12 11:21
{/fd}没听明白,请说全一点,谢谢!!
作者: 雪流星    时间: 2007-7-12 11:36
精灵的意思是说,作一个参照变量,当发现玩家改变系统时间时,就做出适当处理
比如说,用後备的另一个变量来显示时间,或是弹出警告等
参考:http://rpg.blue/web/htm/news769.htm

。。。还是乾脆用变量作一个时间系统比较方便

忽然有个邪恶的想法{/cy},如果发现玩家改变系统时间,就把菜单和存档禁止,让他一路无存档通关{/dy}{/tx}{/qiao}{/kl} [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: zero2    时间: 2007-7-12 15:23
呵呵呵!懂了!!{/cy}
作者: zero2    时间: 2007-7-12 17:07
我又有想法拉:
那个snstar2006说的参考:http://rpg.blue/web/htm/news769.htm
这个东西我不会用,能说明一下吗?

作者: 雪流星    时间: 2007-7-13 16:50
叁考的那个只是因为与你所说的类似
那个脚本是来测试玩家是否有开类似金山游侠之类的加速器

其实就像前面所说的那种算法
只是我们要要记录的是时间,而那个脚本记录的是游戏速度
作者: zero2    时间: 2007-7-13 17:06
怎么改,我是脚本盲{/pz}
作者: 雪流星    时间: 2007-7-14 14:56
晕~~
说起来容易,作出来难 (竟然给我频频跳出『不要修改系统时间』)

只好用另一种方法了,把系统时间带入变数, 然後变数以与系统时间同等速度增加
说起来乾脆直接用变数好了~~{/pz}

直接替换之前我给出的真实时间脚本
  1. #================================================================================#
  2. #****Window_Time                                                                 #
  3. #--------------------------------------------------------------------------------#
  4. #    显示时间的窗口类                                                            #
  5. #================================================================================#
  6. class Window_Time < Window_Base
  7.   #----------------------#
  8.   #*初始化对象           #
  9.   #----------------------#
  10.   def initialize
  11.    
  12.     $time_date_running = 7                   #真实时间视窗显示/不显示
  13.     $real_time_format = 8                    #真实时间的模式开关编号
  14.     $hour = 2                                #小时的变量ID
  15.     $time_range = 3                          #纪录时段的变量ID
  16.     $check_system_time = false

  17.     #设定窗口
  18.     super(0, 425, 320, 55)
  19.     self.contents = Bitmap.new(width - 32, height - 32)
  20.     self.opacity = 255
  21.    
  22.     $game_switches[$real_time_format] = true  #真实时间12小时制
  23.     $game_switches[$time_date_running] = true
  24.    
  25.     #刷新窗口
  26.     refresh
  27.   end # end def initialize
  28.   #----------------------#
  29.   #*刷新                 #
  30.   #----------------------#
  31.   def refresh
  32.     self.contents.clear
  33.     self.contents.font.size = 18
  34.    
  35.     if $check_system_time == false
  36.       @time = Time.now
  37.       @time_sec = @time.sec
  38.       @time_min = @time.min
  39.       @time_hour = @time.hour
  40.       @time_day = @time.day
  41.       @time_month = @time.month
  42.       @time_year = @time.year
  43.       $check_system_time = true
  44.     end
  45.    
  46.     #让检查时间的变数与系统时间同步计算
  47.     @total_sec = Graphics.frame_count
  48.     if @total_sec % 2400 == 0
  49.       @time_min += 1
  50.     end
  51.     if @time_min >= 61
  52.       @time_hour += 1
  53.       @time_min = 1
  54.     end
  55.     if @time_hour >= 24
  56.       @time_day += 1
  57.       @time_hour = 1
  58.     end
  59.     @time_year % 4 == 0 ? feb_max = 29 : feb_max = 28
  60.     month_max = [nil,31, feb_max, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][@time_month]
  61.     if @time_day >= month_max + 1
  62.       @time_month += 1
  63.       @time_day = 1
  64.     end
  65.     if @time_month >= 13
  66.       @time_year += 1
  67.       @time_month = 1
  68.     end
  69.         
  70.     self.contents.clear
  71.     self.contents.font.size = 22
  72.    
  73.     if $game_switches[$real_time_format] == true
  74.       if @time_hour >= 12
  75.         @time_hour -= 12
  76.         text = "PM"
  77.       else
  78.         text = "AM"
  79.       end # end if
  80.     else
  81.       text = ""
  82.     end # end if
  83.    
  84.     self.contents.draw_text(224, -5, 128, 32, text)
  85.     self.contents.draw_text(4, -5, 128, 32, @time_year.to_s + "年")
  86.     self.contents.draw_text(78, -5, 128, 32, @time_month.to_s + "月")
  87.     self.contents.draw_text(116, -5, 128, 32, @time_day.to_s + "日")
  88.     self.contents.draw_text(160, -5, 128, 32, @time_hour.to_s + " :" + @time_min.to_s)
  89.       
  90.     weektxt = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"][@time.wday]
  91.     self.contents.draw_text(480, -5, 128, 32, weektxt)
  92.    
  93.    
  94.     #时段控制
  95.     $game_variables[$hour] = @time.hour #注意是"."
  96.     case $game_variables[$hour]
  97.     when 8
  98.       $game_variables[$time_range] = 1 #上午
  99.     when 12
  100.       $game_variables[$time_range] = 2 #中午
  101.     when 13
  102.       $game_variables[$time_range] = 3 #下午
  103.     when 17
  104.       $game_variables[$time_range] = 4 #傍晚
  105.     when 19
  106.       $game_variables[$time_range] = 5 #晚上
  107.     end

  108.   end # end def refresh

  109.   #----------------------#
  110.   #*刷新画面             #
  111.   #----------------------#
  112.   def update
  113.     super
  114.     refresh
  115.   end # end def update

  116. end# end class Window_time

  117. #================================================================================#
  118. #****Scene_Map                                                                   #
  119. #--------------------------------------------------------------------------------#
  120. #    处理地图画面的类别。                                                        #
  121. #================================================================================#
  122. class Scene_Map
  123.   #--------------------------------------------------------------------------
  124.   # ● 主处理
  125.   #--------------------------------------------------------------------------
  126.   alias timedate_main main
  127.   def main
  128.     # 产生活动区块
  129.     @spriteset = Spriteset_Map.new
  130.     # 产生讯息视窗
  131.     @message_window = Window_Message.new
  132.     # 产生时间视窗
  133.     @time_window = Window_Time.new
  134.     if $game_switches[$time_date_running] == false
  135.       @time_window.visible = false
  136.     end # end if
  137.     # 执行过渡
  138.     Graphics.transition
  139.     # 主循环
  140.     loop do
  141.       # 更新游戏画面
  142.       Graphics.update
  143.       # 更新输入讯息
  144.       Input.update
  145.       # 更新画面
  146.       update
  147.       # 如果画面切换的话就中断循环
  148.       if $scene != self
  149.         break
  150.       end # end if
  151.     end # end loop
  152.     # 准备过渡
  153.     Graphics.freeze
  154.     # 释放活动区块
  155.     @spriteset.dispose
  156.     # 释放讯息视窗
  157.     @message_window.dispose
  158.     # 释放时间视窗
  159.     @time_window.dispose
  160.     # 标题画面切换中的情况下
  161.     if $scene.is_a?(Scene_Title)
  162.       # 淡入淡出画面
  163.       Graphics.transition
  164.       Graphics.freeze
  165.     end # end if
  166.   end # end def main
  167.   
  168.   alias timedate_update update
  169.   def update
  170.    
  171.     #如果时间日期功能开关为OFF则不显示时间视窗
  172.     if $game_switches[$time_date_running] == false
  173.       @time_window.visible = false
  174.     else
  175.       @time_window.visible = true
  176.     end # end if

  177.     @time_window.refresh
  178.     timedate_update
  179.   end # end def update
  180. end #end class Scene_Map
复制代码


由於带入系统时间只在 initialize发生
所以当玩家更改系统时间时不会被更新
作息的开关也就不会被影响
不过还是有个破绽,就是如果玩家关闭游戏重新进入的话
时间就会被update
不过这也是没办法的事~~ [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~




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