设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2175|回复: 1
打印 上一主题 下一主题

[已经解决] 又是这东西,NoMethodError

[复制链接]

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6543
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

跳转到指定楼层
1
发表于 2013-8-31 15:55:14 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 余烬之中 于 2013-8-31 16:14 编辑

{:2_254:}可能有些人知道 本人准备写一个模拟真实时间流逝的脚本 于是在各位大仙的帮助之下,解决了第一个难题……
现在,是第二个……
首先,工程奉上: 时间流逝.rar (301.06 KB, 下载次数: 60)
已经把system下的RGSS300.dll删除了 麻烦自己复制粘贴一下
当然,也可以不下工程……因为其中的插件脚本只有一个,就是这个……
伸手党:这不是脚本发布,重复一遍,这不是脚本发布,使用它造成的一切后果……本人没能力负责,也不会负责……
脚本……等最后再帖……
现在是问题……
……………………………………
……………………………………
这是什么鬼东西!

出错这一块,166行
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 切换昼夜时段
  3.   #--------------------------------------------------------------------------
  4.   def self.cdaynight(tint = 60)
  5.     if SceneManager::scene_is?(Scene_Map) == false
  6.       return end
  7.     end
  8.     for i in MoChro::InDoors
  9.       if $game_map.map_id == i
  10.         $game_map.screen.start_tone_change(Tone.new(0,0,0,0),0)
  11.         return
  12.       end
  13.     end
  14.     case $vtime
  15.       when MoChro::Dawn .. MoChro::Morn
  16.         $game_map.screen.start_tone_change(MoChro::DawnT, tint)
  17.       when MoChro::Morn .. MoChro::Noon
  18.         $game_map.screen.start_tone_change(MoChro::MornT, tint)
  19.       when MoChro::Noon .. MoChro::Aft
  20.         $game_map.screen.start_tone_change(MoChro::NoonT, tint)
  21.       when MoChro::Aft .. MoChro::SunSet
  22.         $game_map.screen.start_tone_change(MoChro::AftT, tint)
  23.       when MoChro::SunSet .. MoChro::Night
  24.         $game_map.screen.start_tone_change(MoChro::SunSetT, tint)
  25.       when MoChro::Night .. 1440
  26.         $game_map.screen.start_tone_change(MoChro::NightT, tint)
  27.       when 0 .. MoChro::Dark
  28.         $game_map.screen.start_tone_change(MoChro::NightT, tint)
  29.       when MoChro::Dark .. MoChro::Dawn
  30.         $game_map.screen.start_tone_change(MoChro::DarkT, tint)
  31.     end
  32.   end

我只想知道,难道$game_map.map_id不能获得地图id吗?
MoChro::InDoors是个成功定义的数组(我有自信这个没有错误)
从八点到现在,我已经彻底凌乱了...我也不知道该怎么组织语言了……
说实话,一直弹框弹框,这是我碰到的第一个NoMethodError……其他没见过的错误一大堆……
好吧,贴脚本:
RUBY 代码复制
  1. #==============================================================================
  2. # ■ 游戏日历 - By 影 2013.8
  3. #                  V 1.0(未完成)
  4. # 在设定区进行设定便可以操作这个脚本的功能。
  5. # 战斗中、菜单中都不会进行计时,只有玩家在地图活动时才会计算
  6. #==============================================================================
  7. module MoVTime
  8.   #============================================================================
  9.   # ■ 设定区A - 基础设定
  10.   #============================================================================
  11.     MoVTimeWinOn = true
  12.       #MoVTimeOn - 是否在菜单内显示日历
  13.     MoVTimeCalOn = true
  14.       #MoVTimeCalOn - 是否在地图上显示日历
  15.     VTIcon = 234
  16.       #VTIcon - 时间前的图标 设为0则不显示
  17.     Chro = "公元"
  18.       #Chro - 设定纪元法的名称
  19.     Sta_Year = 2013
  20.     Sta_Month = 8
  21.     Sta_Day = 30
  22.     Sta_Hour = 10
  23.     Sta_Min = 0
  24.       #以上设置游戏起始日期时间
  25.     Sta_WDay = 6
  26.       #Sta_WDay - 游戏起什么时候 0代表周期的第一天
  27.     VTYV = 81
  28.     VTMV = 82
  29.     VTDV = 83
  30.     VTHV = 84
  31.     VTIV = 85
  32.       #设定占用变量,脚本需要此变量,但是无法通过改变此变量来改变时间
  33.   #============================================================================
  34.   # ■ 设定区A结束
  35.   #============================================================================
  36. end
  37.  
  38. module MoChro
  39.   #============================================================================
  40.   # ■ 设定区B - 高级设定
  41.   #============================================================================
  42.     DayNight = true
  43.       #是否有白昼和黑夜等各时段的区分
  44.     Seasons = false
  45.       #是否有季节变换
  46.     VTSpe = 6
  47.       #VTSpe - 游戏时间进行速度,代表经过多少帧后游戏内部经过一分钟,现实中1秒60帧
  48.     VTYearM = 12
  49.       #VTYearM - 游戏中一年多少月
  50.     VTMonthD = 30
  51.       #VTMonth - 游戏中一月多少天
  52.     VTDayH = 24
  53.       #VTDayH - 游戏中一天几小时
  54.     VTHourM = 60
  55.       #VTHourM - 游戏中一小时几分钟
  56.     VTWeeks = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]
  57.       #VTWeeks - 设定周期日子的名称,有意向的话也可以把所谓“星期”改为其他的周期
  58.       #比如八天为一个周期
  59.     Dawn   = 240
  60.     Morn   = 360
  61.     Noon   = 660
  62.     Aft    = 900
  63.     SunSet = 1080
  64.     Night  = 1260
  65.     Dark   = 60
  66.       #设置一天各时段的开始时间,1440为一天的长度,240是早上四点(240/1440*24)
  67.       #从上到下:黎明 上午 中午 下午 黄昏 晚上 深夜
  68.     DawnT   = Tone.new(-75,-75,0,50)
  69.     MornT   = Tone.new(0,0,0,0)
  70.     NoonT   = Tone.new(45,45,0,-25)
  71.     AftT    = Tone.new(0,0,0,0)
  72.     SunSetT = Tone.new(-50,-50,0,25)
  73.     NightT  = Tone.new(-75,-100,0,75)
  74.     DarkT   = Tone.new(-125,-125,0,125)
  75.       #设置各时段的色调
  76.     InDoors = [2,3,84,86]
  77.       #InDoors - 填写室内地图ID 室内地图不会受昼夜影响
  78.     SeasonSta = 3
  79.       #SeasonSta - 春天开始的月份
  80.   #============================================================================
  81.   # ■ 设定区B结束
  82.   #============================================================================
  83. end
  84.   #============================================================================
  85.   #============================================================================
  86.   # ■ 以下关键部分,因修改此部分造成的一切后果本人概不负责
  87.   #============================================================================
  88.   #============================================================================
  89. module VTData
  90.   #--------------------------------------------------------------------------
  91.   # ● 初始化对象
  92.   #--------------------------------------------------------------------------
  93.   def self.initialize
  94.     isettime(MoVTime::Sta_Hour,MoVTime::Sta_Min,MoChro::VTDayH,MoChro::VTHourM)
  95.     isetdate(MoVTime::Sta_Year,MoVTime::Sta_Month,MoVTime::Sta_Day,
  96.     MoChro::VTYearM,MoChro::VTMonthD)
  97.     isetwday(MoVTime::Sta_WDay)
  98.     $vtpause = false
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 更新画面
  102.   #--------------------------------------------------------------------------
  103.   def self.updata
  104.     if SceneManager::scene_is?(Scene_Map) == true
  105.       if $vtpause == false then
  106.         $vtime += 1 if Graphics.frame_count % MoChro::VTSpe == 0
  107.       end
  108.     end
  109.     if $vtime == 1440
  110.       $vtime = 0
  111.       $vday += 1
  112.     end
  113.     VTData::vtshows(MoVTime::VTIV,MoVTime::VTHV,MoVTime::VTDV,MoVTime::VTMV,
  114.     MoVTime::VTYV,MoChro::VTHourM,MoChro::VTMonthD,MoChro::VTYearM)
  115.     if MoChro::DayNight == true
  116.       cdaynight
  117.     end
  118.     if MoChro::Seasons == true
  119.       cseasons
  120.     end
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 初始化设置时间
  124.   #--------------------------------------------------------------------------
  125.   def self.isettime(hour,min,dayh,hourm)
  126.     $vtime = (hour / dayh + min / hourm / dayh) * 1440
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 初始化设置日期
  130.   #--------------------------------------------------------------------------
  131.   def self.isetdate(y,m,d,ym,md)
  132.     $vday =  (y - 1) * ym * md + (m - 1) * md + d - 1
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 初始化设置周期
  136.   #--------------------------------------------------------------------------
  137.   def self.isetwday(wd)
  138.     $vwday = wd
  139.   end
  140.   #--------------------------------------------------------------------------
  141.   # ● 处理日期时间
  142.   #--------------------------------------------------------------------------
  143.   def self.vtshows(i,h,d,m,y,hm,md,ym)
  144.     $game_variables[i] = format("%02d",$vtime % hm)
  145.     $game_variables[h] = $vtime / hm
  146.     if ($vday % md + 1) == 0
  147.       $game_variables[d]
  148.     else
  149.       $game_variables[d] = $vday % md + 1
  150.     end
  151.     if ($vday / md % ym + 1) == 0
  152.       $game_variables[m] = 1
  153.     else
  154.       $game_variables[m] = $vday / md % ym + 1
  155.     end
  156.     $game_variables[y] = $vday / md / ym + 1
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 切换昼夜时段
  160.   #--------------------------------------------------------------------------
  161.   def self.cdaynight(tint = 60)
  162.     if SceneManager::scene_is?(Scene_Map) == false
  163.       return end
  164.     end
  165.     for i in MoChro::InDoors
  166.       if $game_map.map_id == i
  167.         $game_map.screen.start_tone_change(Tone.new(0,0,0,0),0)
  168.         return
  169.       end
  170.     end
  171.     case $vtime
  172.       when MoChro::Dawn .. MoChro::Morn
  173.         $game_map.screen.start_tone_change(MoChro::DawnT, tint)
  174.       when MoChro::Morn .. MoChro::Noon
  175.         $game_map.screen.start_tone_change(MoChro::MornT, tint)
  176.       when MoChro::Noon .. MoChro::Aft
  177.         $game_map.screen.start_tone_change(MoChro::NoonT, tint)
  178.       when MoChro::Aft .. MoChro::SunSet
  179.         $game_map.screen.start_tone_change(MoChro::AftT, tint)
  180.       when MoChro::SunSet .. MoChro::Night
  181.         $game_map.screen.start_tone_change(MoChro::SunSetT, tint)
  182.       when MoChro::Night .. 1440
  183.         $game_map.screen.start_tone_change(MoChro::NightT, tint)
  184.       when 0 .. MoChro::Dark
  185.         $game_map.screen.start_tone_change(MoChro::NightT, tint)
  186.       when MoChro::Dark .. MoChro::Dawn
  187.         $game_map.screen.start_tone_change(MoChro::DarkT, tint)
  188.     end
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 切换季节
  192.   #--------------------------------------------------------------------------
  193.   def self.cseasons
  194.  
  195.   end
  196. #==============================================================================
  197. # ■ Window_MoVTime
  198. #------------------------------------------------------------------------------
  199. #  菜单画面中,显示当前游戏内部虚拟时间的窗口
  200. #==============================================================================
  201.  
  202. class Window_MoVTime < Window_Base
  203.   #--------------------------------------------------------------------------
  204.   # ● 初始化对象
  205.   #--------------------------------------------------------------------------
  206.   def initialize
  207.     super(0,0,160,110)
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 更新画面
  211.   #--------------------------------------------------------------------------
  212.   def update
  213.     contents.clear
  214.     date = $game_variables[MoVTime::VTYV].to_s + "年" +
  215.       $game_variables[MoVTime::VTMV].to_s + "月" +
  216.       $game_variables[MoVTime::VTDV].to_s + "日"
  217.     time = $game_variables[MoVTime::VTHV].to_s + ":" +
  218.       $game_variables[MoVTime::VTIV].to_s
  219.     if MoVTime::VTIcon != 0
  220.       draw_icon(MoVTime::VTIcon,0,0,enabled = true)
  221.       draw_text(0,0,130,25,MoVTime::Chro + date,2)
  222.       draw_text(0,30,130,25,MoChro::VTWeeks[$vwday] + time,1)
  223.     else
  224.       draw_text(0,0,130,25,MoVTime::Chro + date,2)
  225.       draw_text(0,30,130,25,MoChro::VTWeeks[$vwday] + time,1)
  226.     end
  227.   end
  228. end
  229. #==============================================================================
  230. # ■ Window_MoVCh
  231. #------------------------------------------------------------------------------
  232. #  地图画面中,显示当前游戏内部虚拟时间的窗口
  233. #==============================================================================
  234. class Window_MoVCh < Window_Base
  235.   #--------------------------------------------------------------------------
  236.   # ● 初始化对象
  237.   #--------------------------------------------------------------------------
  238.   def initialize
  239.     super(0,0,544,48)
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● 更新画面
  243.   #--------------------------------------------------------------------------
  244.   def update
  245.     contents.clear
  246.     date = $game_variables[MoVTime::VTYV].to_s + "年" +
  247.       $game_variables[MoVTime::VTMV].to_s + "月" +
  248.       $game_variables[MoVTime::VTDV].to_s + "日"
  249.     time = $game_variables[MoVTime::VTHV].to_s + ":" +
  250.       $game_variables[MoVTime::VTIV].to_s
  251.     if MoVTime::VTIcon != 0
  252.       draw_icon(MoVTime::VTIcon,0,0,enabled = true)
  253.       draw_text(30,0,400,25,MoVTime::Chro + date + " " +
  254.         MoChro::VTWeeks[$vwday])
  255.       draw_text(450,0,160,25,time)
  256.     else
  257.       draw_text(0,0,400,25,MoVTime::Chro + date + " " +
  258.         MoChro::VTWeeks[$vwday])
  259.       draw_text(450,0,160,25,time)
  260.     end
  261.   end
  262. end
  263. #==============================================================================
  264. # ■ DataManager
  265. #------------------------------------------------------------------------------
  266. #  数据库和游戏实例的管理器。所有在游戏中使用的全局变量都在这里初始化。
  267. #==============================================================================
  268. module DataManager
  269.   class << self
  270.     alias mo_make_save_contents make_save_contents
  271.     alias mo_extract_save_contents extract_save_contents
  272.   end
  273.   def self.make_save_contents
  274.     contents = mo_make_save_contents
  275.     contents[:vtime] = $vtime
  276.     contents
  277.   end
  278.   def self.extract_save_contents(contents)
  279.     mo_extract_save_contents(contents)
  280.     $vtime = contents[:vtime]
  281.   end
  282. end
  283. #==============================================================================
  284. # ■ Scene_Map
  285. #------------------------------------------------------------------------------
  286. #  地图画面
  287. #==============================================================================
  288. class Scene_Map < Scene_Base
  289.   alias mo_post_transfer post_transfer
  290.   alias mo_create_all_windows create_all_windows
  291.   alias mo_update_m update
  292.   def post_transfer
  293.     VTData::cdaynight(0)
  294.     mo_post_transfer
  295.   end
  296.   def create_all_windows
  297.     mo_create_all_windows
  298.     if MoVTime::MoVTimeCalOn == true
  299.       @vtchr = Window_MoVCh.new
  300.     end
  301.   end
  302.   def update
  303.     mo_update_m
  304.     if @vtchr.nil? == false
  305.       @vtchr.update
  306.     end
  307.   end
  308. end
  309. #==============================================================================
  310. # ■ Scene_Menu
  311. #------------------------------------------------------------------------------
  312. #  菜单画面
  313. #==============================================================================
  314.  
  315. class Scene_Menu < Scene_MenuBase
  316.   alias mostart start
  317.   def start
  318.     mostart
  319.     if MoVTime::MoVTimeWinOn == true
  320.       creat_movtime_window
  321.     end
  322.   end
  323.   def creat_movtime_window
  324.     @movtime = Window_MoVTime.new
  325.     @movtime.x = 0
  326.     @movtime.y = @gold_window.y - 110
  327.     @movtime.width = @gold_window.width
  328.     @movtime.height = 110
  329.   end
  330. end
  331. #==============================================================================
  332. # ■ Scene_Base
  333. #------------------------------------------------------------------------------
  334. #  游戏中所有 Scene 类(场景类)的父类
  335. #==============================================================================
  336. class Scene_Base
  337.   alias mo_update update
  338.   def update
  339.     mo_update
  340.     VTData::updata
  341.   end
  342. end
  343.  
  344. VTData::initialize






助攻啊!!!!
另外……
游戏中总是不能改变色调,我把那段错误(?)的判定取消了,但是地图上并没有达到预期的效果——染色为黄昏黑夜什么的……

萌新瑟瑟发抖
看到我请叫我去干活

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
2
发表于 2013-8-31 16:07:12 | 只看该作者
你在$game_map还没有被赋值的时候就调用了map_id方法,所以很遗憾23333
可以在update方法最上面加一个return if !$game_map

点评

实在是太感谢了!两个问题一并解决了!(每次都要麻烦你……)  发表于 2013-8-31 16:14
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-10-1 19:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表