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

Project1

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

[已经解决] 腳本BUG ,跟上次喵大腳本的那個狀況很像

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2111
在线时间
950 小时
注册时间
2015-7-16
帖子
767

开拓者

跳转到指定楼层
1
发表于 2016-3-11 13:10:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 duzine 于 2016-3-11 13:13 编辑

如題


一樣也是找不到觸發原因,今天才發現的
上次的文 https://rpg.blue/thread-390043-1-1.html
附上腳本

RUBY 代码复制
  1. #------------------------------------------------------------------------------#
  2. #  Galv's Region Effects
  3. #------------------------------------------------------------------------------#
  4. #  For: RPGMAKER VX ACE
  5. #  Version 1.9
  6. #  Credit to Yanfly and Quack for event spawning method
  7. #------------------------------------------------------------------------------#
  8. #  2014-01-07 - Version 1.9 - upgrade to not stop animations playing when a
  9. #                             region effect is drawn.
  10. #  2013-01-24 - Version 1.8 - minor tweaks
  11. #  2013-01-22 - Version 1.7 - Made effects work during forced move routes
  12. #  2012-11-15 - Version 1.6 - Fixed a major bug caused with last update.
  13. #  2012-11-04 - Version 1.5 - streamline updates and bug fix suggested by Quack
  14. #  2012-10-23 - Version 1.4 - updated alias naming convention for compatability
  15. #  2012-10-09 - Version 1.3 - re-wrote the code to be more efficient when
  16. #                           - using many different region effects.
  17. #  2012-10-09 - Version 1.2 - code tweak that may reduce lag on low-end pc's
  18. #  2012-09-16 - Version 1.1 - now compatible with Yanfly's spawn events
  19. #  2012-09-15 - Version 1.0 - release
  20. #------------------------------------------------------------------------------#
  21. #  Designed to activate effects when regions are stood on.
  22. #  An effect can include:
  23. #     - Sound Effect
  24. #     - An event that appears at the player's location
  25. #     - Activating a common event
  26. #
  27. #
  28. #  INSTRUCTIONS:
  29. #  1. Copy image from /Graphics/Characters/!Other-specials.png to your project
  30. #  2. Copy the map from this demo into your game.
  31. #        - this map has events set up for the pre-made effects
  32. #  3. Check the map ID of the map you copied in your game
  33. #  4. Change the SPAWN_MAP_ID number to this map ID
  34. #  5. Change REGION_EFFECT_SWITCH to a switch you are not using in your game.
  35. #  6. Add some regions to your map to test.
  36. #
  37. #
  38. #
  39. #  To disable region effects use
  40. #  $game_player.region_effects = false
  41. #
  42. #------------------------------------------------------------------------------#
  43.  
  44. $imported = {} if $imported.nil?
  45. $imported["Region_Effects"] = true
  46.  
  47. module Region_Effects
  48. #------------------------------------------------------------------------------#
  49. #  SCRIPT SETUP OPTIONS
  50. #------------------------------------------------------------------------------#
  51.    #因為與loading腳本衝突,移至上方觀察
  52.    REGION_EFFECT_SWITCH = 0   # Turn this switch ON to disable the effects.
  53.  
  54.    MAX_EFFECTS = 20           # Number of effects that can be on screen
  55.                               # before being removed. (To prevent lag)
  56.  
  57.    SPAWN_MAP_ID = 10           # Map ID of the map you store event effects in.
  58.    #儲存效果的地圖
  59.  
  60.  
  61. #------------------------------------------------------------------------------#
  62. #  ENVIRONMENT REGIONS SETUP
  63. #------------------------------------------------------------------------------#
  64. #------------------------------------------------------------------------------#
  65. #
  66. #  region => ["sound", vol, pitch, event_id, common_event_id]
  67. #
  68. #  region          -  the region ID the effect will activate on
  69. #  sound           -  the name of the SE file. "" for no sound
  70. #  vol             -  the volume of the SE (0 - 100)
  71. #  pitch           -  the pitch of the SE (50 - 150)
  72. #  event_id        -  event ID called from the spawn map. 0 for none.
  73. #  common_event_id -  common event ID to call. 0 for no common event.
  74. #
  75. #------------------------------------------------------------------------------#
  76.     EFFECT = { # ! don't touch this
  77. #------------------------------------------------------------------------------#
  78.  
  79.     0 => ["", 0, 0, 0, 0],              # No Effect (no region)
  80.  
  81.     # Pre-made effects (requires demo events)
  82.     #1 => ["", 0, 0, 5, 0],              # Dirt dust
  83.     #2 => ["Blow7", 60, 150, 0, 0],      # Wood surface noise only
  84.     5 => ["Water1", 60, 110, 1, 0],     # Shallow Water 水灘
  85.  
  86.     #18 => ["Earth2", 40, 130, 0, 0],     # Hard surface noise only
  87.     6 => ["Damage3", 40, 150, 2, 0],    # Footprints 雪地
  88.     12 => ["", 50, 130, 3, 0],       # Walking over thick grass 草叢
  89.     7 => ["", 0, 0, 0, 1],              # Calls common event 1 only 坑洞
  90.     8 => ["Fire3", 80, 120, 4, 2],      # Calls fire trap 火爐
  91.     37 => ["", 80, 120, 6, 0],          # Dust cloud 沙地
  92.  
  93.     # You can add more as required. eg:
  94.     # 42 => ["", 0, 0, 0, 0],
  95.     # 18 => ["", 0, 0, 0, 0],
  96.     # etc. etc.
  97.  
  98.     # Only one effect per region number will work
  99.  
  100. #------------------------------------------------------------------------------#
  101.     } # ! don't touch this
  102. #------------------------------------------------------------------------------#
  103. #  END SCRIPT SETUP
  104. #------------------------------------------------------------------------------#
  105.  
  106. end # Region_Effects
  107.  
  108. module DataManager
  109.  
  110. #--------------------------------------------------------------------------
  111. # alias method: load_normal_database
  112. #--------------------------------------------------------------------------
  113. class <<self; alias load_normal_database_spawn_alias load_normal_database; end
  114.   def self.load_normal_database
  115.     load_normal_database_spawn_alias
  116.     $data_spawn_map = load_data(sprintf("Data/Map%03d.rvdata2", Region_Effects::SPAWN_MAP_ID))
  117.   end
  118. end
  119.  
  120. class Game_Player < Game_Character
  121.   attr_accessor :region_effects
  122.  
  123.   alias galv_region_effects_update_update_nonmoving update_nonmoving
  124.   def update_nonmoving(last_moving)
  125.     if last_moving
  126.       galv_region_check unless $game_switches[Region_Effects::REGION_EFFECT_SWITCH] == true
  127.     end
  128.     galv_region_effects_update_update_nonmoving(last_moving)
  129.   end
  130.  
  131.   def galv_region_check
  132.     return if Input.trigger?(:C)
  133.     v = rand(10) - rand(10)
  134.     p = rand(40) - rand(40)
  135.  
  136.     r_id = $game_map.region_id($game_player.x, $game_player.y)
  137.     return if Region_Effects::EFFECT[r_id] == nil
  138.  
  139.     sound = Region_Effects::EFFECT[r_id][0]
  140.     vol = Region_Effects::EFFECT[r_id][1]
  141.       pit = Region_Effects::EFFECT[r_id][2]
  142.       eve = Region_Effects::EFFECT[r_id][3]
  143.       com_eve = Region_Effects::EFFECT[r_id][4]
  144.  
  145.       RPG::SE.new(sound, vol + v, pit + p).play
  146.       if eve > 0
  147.         $game_map.region_event($game_player.x, $game_player.y, eve, Region_Effects::SPAWN_MAP_ID)
  148.       end
  149.       $game_temp.reserve_common_event(com_eve) unless com_eve == nil
  150.   end
  151.  
  152.  
  153. end # Game_Player
  154.  
  155.  
  156.  
  157. class Game_Map
  158.   attr_accessor :effectlist
  159.   attr_accessor :r_events
  160.  
  161.   alias galv_region_effects_setup setup
  162.   def setup(map_id)
  163.     @effectlist = []
  164.     @r_events = {}
  165.     galv_region_effects_setup(map_id)
  166.  
  167.     @eid = 0
  168.   end
  169.  
  170.   def region_event(dx, dy, event_id, map_id)
  171.     map_id = @map_id if map_id == 0
  172.     map = $data_spawn_map
  173.     event = generated_region_event(map, event_id)
  174.  
  175.     @eid += 1
  176.     @effectlist.push(@eid)
  177.     @effectlist.shift if @effectlist.count > Region_Effects::MAX_EFFECTS
  178.  
  179.     @r_events[@eid] = Game_Event.new(@map_id, event)
  180.     @r_events[@eid].moveto(dx, dy)
  181.     SceneManager.scene.spriteset.refresh_region_effects
  182.  
  183.     @eid = 0 if @eid >= Region_Effects::MAX_EFFECTS
  184.   end
  185.  
  186.  
  187.   def generated_region_event(map, event_id)
  188.     for key in map.events
  189.       event = key[1]
  190.       next if event.nil?
  191.       return event if event.id == event_id
  192.     end
  193.     return nil
  194.   end
  195.  
  196.   alias galv_region_effects_gm_refresh refresh
  197.   def refresh
  198.     @r_events.each_value {|event| event.refresh }
  199.     galv_region_effects_gm_refresh
  200.   end
  201.  
  202.   alias galv_region_effects_gm_update_events update_events
  203.   def update_events
  204.     @r_events.each_value {|event| event.update }
  205.     galv_region_effects_gm_update_events
  206.   end
  207.  
  208. end # Game_Map
  209.  
  210.  
  211.  
  212. class Spriteset_Map
  213.   def refresh_region_effects
  214.     dispose_region_sprites
  215.     create_region_sprites
  216.   end
  217.  
  218.   alias galv_region_effect_sm_sb_create_characters create_characters
  219.   def create_characters
  220.     create_region_sprites
  221.     galv_region_effect_sm_sb_create_characters
  222.   end
  223.  
  224.   alias galv_region_effect_sm_sb_update_characters update_characters
  225.   def update_characters
  226.     galv_region_effect_sm_sb_update_characters
  227.     @region_sprites.each { |sprite| sprite.update }
  228.   end
  229.  
  230.   alias galv_region_effect_sm_sb_dispose_characters dispose_characters
  231.   def dispose_characters
  232.     dispose_region_sprites
  233.     galv_region_effect_sm_sb_dispose_characters
  234.   end
  235.  
  236.   def create_region_sprites
  237.     @region_sprites = []
  238.     $game_map.effectlist.each_with_index { |id,i|
  239.       @region_sprites[i] = Sprite_Character.new(@viewport1,$game_map.r_events[id])
  240.     }
  241.   end
  242.  
  243.   def dispose_region_sprites
  244.     @region_sprites.each { |sprite| sprite.dispose }
  245.   end
  246. end
  247.  
  248.  
  249.  
  250. class Scene_Map < Scene_Base
  251.   attr_accessor :spriteset
  252.  
  253.   alias galv_region_effects_start start
  254.   def start
  255.     galv_region_effects_start
  256.     SceneManager.scene.spriteset.refresh_region_effects
  257.   end
  258. end # Scene_Map
[神性领域扩张:扩张神性领域]
说了等于没说.

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

2
发表于 2016-3-11 13:53:02 | 只看该作者
这是加了新脚本后读旧档造成的吧………………
试试看在出错的那行后面加上
  1. if @r_events.is_a?(Hash)
复制代码
(虽然不读旧档就没必要这样……

评分

参与人数 2星屑 +10 梦石 +1 收起 理由
丿梁丶小柒 + 1 认可答案
duzine + 10 希望不會再報錯OWQ

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2111
在线时间
950 小时
注册时间
2015-7-16
帖子
767

开拓者

3
 楼主| 发表于 2016-3-11 14:22:27 | 只看该作者
真的沒有讀取舊檔
這是測試遊戲鍵一按下去就會跳出,然後再按一次就能成功進入遊戲

讀取舊檔之類的蠢事早在很久以前就被改正了,根本不會做啊
[神性领域扩张:扩张神性领域]
说了等于没说.
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2111
在线时间
950 小时
注册时间
2015-7-16
帖子
767

开拓者

4
 楼主| 发表于 2016-3-11 14:24:29 | 只看该作者


還是不行,反而直接報錯了

点评

就是试试看全局搜索一下【class Game_Map】看看,在主楼这个脚本下面知不是还有别的脚本  发表于 2016-3-11 23:14
我試試看,不過覆蓋掉setup方法的部分我不是很懂  发表于 2016-3-11 23:03
或者在什么地方使用了$game_map.refresh  发表于 2016-3-11 15:38
不过问题不在这,应该是之后有Game_Map类的脚本覆盖掉了setup方法,不然单独这个脚本的话无论如何,进入新地图setup之后都不会弹主楼那个窗……  发表于 2016-3-11 15:36
是加在句子后面……不是换行啦……  发表于 2016-3-11 15:31
[神性领域扩张:扩张神性领域]
说了等于没说.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 08:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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