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

Project1

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

[已经过期] 关于放置事件的发射器事件的错误

[复制链接]

Lv4.逐梦者

梦石
3
星屑
3605
在线时间
2492 小时
注册时间
2014-10-5
帖子
1768

开拓者剧作品鉴家

跳转到指定楼层
1
发表于 2016-8-20 16:58:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RUBY 代码复制
  1. module EventHelper
  2.   def self.get_rpg_event(event_id, map_id=$game_map.map_id)
  3.     map = $game_map.instance_variable_get(:@map)
  4.     if map_id != $game_map.map_id
  5.       map = load_data(sprintf("Data/Map%03d.rvdata2", map_id))
  6.     end
  7.     return map.events[event_id]
  8.   end
  9.  
  10.   ICE_REGION = 9 # 溜冰区域
  11. end
  12.  
  13. # 溜冰
  14. class Game_Player
  15.   alias ice_move_straight move_straight
  16.   def move_straight(d, turn_ok = true)
  17.     old_real_x, old_real_y = @real_x, @real_y
  18.     n = ($game_player.region_id == EventHelper::ICE_REGION ? 1+rand(3) : 1)
  19.     n.times { ice_move_straight(d, turn_ok) }
  20.     @real_x, @real_y = old_real_x, old_real_y
  21.   end
  22.  
  23.   alias ice_update_anime_pattern update_anime_pattern
  24.   def update_anime_pattern
  25.     ice_update_anime_pattern
  26.     @pattern = @original_pattern if $game_player.region_id == EventHelper::ICE_REGION
  27.   end
  28. end
  29.  
  30.  
  31. # 下一条字幕转脚本 by 晴兰
  32. class Game_Interpreter
  33.   def 字幕脚本
  34.     x,y = @index+1, @list
  35.     if y[x].code==105
  36.       y[x].code = 355
  37.       y[x].parameters = ['']
  38.       y[x].code = 655 while y[x+=1].code == 405
  39.     end
  40.   end
  41.  
  42.   def hit_test_player
  43.     evt = $game_map.events[@event_id]
  44.     return (evt.x==$game_player.x and evt.y==$game_player.y)
  45.   end
  46.  
  47.   def hit_test_event(ss="D")
  48.     evt = $game_map.events[@event_id]
  49.     list = $game_map.events.values.select{|e|
  50.       e.x==evt.x and e.y==evt.y and !(e.erased)}
  51.  
  52.     if list.size > 1
  53.       list.each {|e|
  54.         $game_self_switches[[$game_map.map_id, e.id, ss]] = true }
  55.     end
  56.   end
  57.  
  58.   # 点灯游戏和引爆器的4向触发器(十字型触发)
  59.   def trigger_4way(kwargs={})
  60.     range = kwargs[:range] || (1..1)
  61.     ss = kwargs[:self_switch] || "D"
  62.     flip = kwargs[:flip] || false
  63.  
  64.     evt = $game_map.events[@event_id]
  65.     list=[evt]
  66.     range.each{|r|
  67.       list += $game_map.events_xy(evt.x+r, evt.y) +
  68.               $game_map.events_xy(evt.x-r, evt.y) +
  69.               $game_map.events_xy(evt.x, evt.y+r) +
  70.               $game_map.events_xy(evt.x, evt.y-r)
  71.     }
  72.     list.uniq!
  73.     ntrue = list.select{|e|$game_self_switches[[$game_map.map_id, e.id, ss]]}.size
  74.     list.each {|e|
  75.       $game_self_switches[[$game_map.map_id, e.id, ss]] =
  76.       flip ? (!$game_self_switches[[$game_map.map_id, e.id, ss]]) : true
  77.     }
  78.     ntrue_new = list.select{|e|$game_self_switches[[$game_map.map_id, e.id, ss]]}.size
  79.     return ntrue_new - ntrue #返回:触发区域内增加的打开的独立开关的个数
  80.   end
  81.  
  82.   # 两个事件之间的坐标距离
  83.   def event_dist(a, b)
  84.     ($game_map.events[a].x - $game_map.events[b].x).abs +
  85.     ($game_map.events[a].y - $game_map.events[b].y).abs
  86.   end
  87.  
  88. end
  89.  
  90. class Game_Event
  91.   attr_accessor :id
  92.   attr_accessor :erased
  93. end
  94.  
  95. class Game_Map
  96.   # rpg_evt:需要刷新的事件RPG::Event, 用上面的get_rpg_event获得
  97.   # xy:坐标
  98.   # dir:朝向
  99.   # ss:需要打开的独立开关列表("ABCD")
  100.   def spawn_event(rpg_evt, x, y, dir=2, ss="")
  101.     new_id = 1 + @map.events.keys.max
  102.     new_evt = RPG::Event.new(x, y)
  103.     new_evt.id = new_id
  104.     new_evt.pages = rpg_evt.pages
  105.     @map.events[new_id] = new_evt
  106.  
  107.     @events[new_id] = Game_Event.new(@map_id, new_evt)
  108.     @events[new_id].set_direction(dir)
  109.     ss.each_char{|c| $game_self_switches[[@map_id, new_id, c]] = true }
  110.  
  111.     # 刷新图块
  112.     refresh_tile_events
  113.     SceneManager.scene.instance_eval { @spriteset.refresh_characters }
  114.   end
  115. end




用于放置事件的发射器事件



这东西出现一个错误:就是在放置事件的时候,在切换完场景后再回到有发射器的场景那里。
再次发射的时候发射器里的子弹只前进一步就没了,过了较长时间此错误才自动消失。望能修复此bug。
由于重置的工会筹划奇遇记要用很多次发射器,切来切去子弹只跑一步...
这长篇将近一个g...
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-4-19 23:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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