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

Project1

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

[已经过期] 战斗时发生错误

[复制链接]

Lv1.梦旅人

梦石
0
星屑
450
在线时间
16 小时
注册时间
2012-12-8
帖子
4
跳转到指定楼层
1
发表于 2012-12-16 13:50:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
长按C键盘,就会出现 脚本的'XAS- Battler‘ 的166行发生了NoMethodError.
undefined method 'pages' for nil:NilClass
此外攻击时的动画都没有了。
我是直接使用范本,将他的地图删除,在他的范本基础下建立地图的。
  1. #===============================================================================
  2. #===============================================================================
  3. # BATTLER
  4. #===============================================================================
  5. #===============================================================================



  6. #===============================================================================
  7. # SENSOR  
  8. #===============================================================================
  9. module XRXS_EnemySensor
  10.   
  11. #--------------------------------------------------------------------------
  12. # Update Sensor
  13. #--------------------------------------------------------------------------
  14.    def update_sensor
  15.     if self.battler != nil and self.battler.is_a?(Game_Enemy)
  16.        enemy_sensor =  XAS_BA_ENEMY::ENEMY_SENSOR[self.battler.id]
  17.     end
  18.     if enemy_sensor != nil  
  19.       @sensor_range = enemy_sensor  
  20.     else  
  21.       @sensor_range = $game_variables[XAS_BA_ENEMY::DEFAULT_ENEMY_SENSOR_VARIABLE_ID]
  22.     end     
  23.     if self.battler != nil and (self.knockbacking? or
  24.        self.battler.xas_states_stop == true or
  25.        self.battler.xas_states_sleep == true or
  26.        self.battler.hp == 0 or
  27.        self.throw_on == true)
  28.        @sensor_range = -1
  29.     end
  30.     distance = ($game_player.x - self.x).abs + ($game_player.y - self.y).abs
  31.     enable   = (distance <= @sensor_range)
  32.     key = [$game_map.map_id, self.id, XAS_BA::SENSOR_SELF_SWITCH]
  33.     last_enable = $game_self_switches[key]
  34.     last_enable = false if last_enable == nil
  35.     if enable != last_enable
  36.       $game_self_switches[key] = enable
  37.       $game_map.need_refresh = true
  38.     end
  39.   end
  40. end

  41. #===============================================================================
  42. # Game_Event
  43. #===============================================================================
  44. class Game_Event < Game_Character
  45.   include XRXS_EnemySensor
  46. end

  47. #===============================================================================
  48. # Game_Player
  49. #===============================================================================
  50. class Game_Player < Game_Character
  51.   include XRXS_BattlerAttachment
  52.   
  53. #--------------------------------------------------------------------------
  54. # Battler
  55. #--------------------------------------------------------------------------
  56.   def battler
  57.     return $game_party.actors[0]
  58.   end
  59.   
  60. #--------------------------------------------------------------------------
  61. # Defeat Process
  62. #--------------------------------------------------------------------------
  63.   def defeat_process
  64.     super  
  65.     if XAS_BA::AUTOGAMEOVER == true
  66.       $scene = Scene_Gameover.new rescue nil if self.collapse_done   
  67.     else   
  68.     $game_switches[XAS_BA::GAMEOVER_SWITCH_ID] = true
  69.     $game_map.refresh
  70.     end
  71.   end
  72.   
  73. #--------------------------------------------------------------------------
  74. # Update
  75. #--------------------------------------------------------------------------
  76.   alias xrxs64c_update update
  77.   def update
  78.     xrxs64c_update
  79.     self.battler.remove_states_auto if self.battler != nil
  80.     if self.collapse_done
  81.       self.collapse_done        = false
  82.       @xrxs64c_defeat_done      = false
  83.     end
  84.   end
  85. end

  86. #===============================================================================
  87. # Game Event
  88. #===============================================================================
  89. class Game_Event < Game_Character
  90.   include XRXS_BattlerAttachment

  91. #--------------------------------------------------------------------------
  92. # Battler
  93. #--------------------------------------------------------------------------
  94.   def battler
  95.     return @battler
  96.   end
  97.   
  98. #--------------------------------------------------------------------------
  99. # Refresh
  100. #--------------------------------------------------------------------------
  101.   alias xrxs64c_refresh refresh
  102.   def refresh
  103.     xrxs64c_refresh
  104.     self.battler_recheck
  105.   end
  106.   
  107. #--------------------------------------------------------------------------
  108. # Battler Recheck
  109. #--------------------------------------------------------------------------
  110.   def battler_recheck
  111.     return if [url=home.php?mod=space&uid=133701]@battler[/url] != nil
  112.     if @page == nil
  113.       return
  114.     end
  115.     @enemy_id = 0
  116.     for page in @event.pages.reverse
  117.       condition = page.condition
  118.       if condition.variable_valid and
  119.          condition.variable_id == XAS_BA::ENEMY_ID_VARIABLE_ID and
  120.        (!condition.switch1_valid or $game_switches[condition.switch1_id]) and
  121.        (!condition.switch2_valid or $game_switches[condition.switch2_id])
  122.         @enemy_id = condition.variable_value
  123.         break
  124.       end
  125.     end
  126.     if @enemy_id == 0
  127.       return
  128.     end
  129.     troop_id     = -1
  130.     member_index = -1
  131.     for troop in $data_troops
  132.       next if troop == nil
  133.       for enemy in troop.members
  134.         if enemy.enemy_id == @enemy_id
  135.           troop_id     = $data_troops.index(troop)
  136.           member_index = troop.members.index(enemy)
  137.           break
  138.         end
  139.       end
  140.     end
  141.     if troop_id != -1 and member_index != -1
  142.        @battler = Game_Enemy.new(troop_id, member_index)
  143.     end
  144.   end
  145.   
  146. #--------------------------------------------------------------------------
  147. # Enemy Id
  148. #--------------------------------------------------------------------------
  149.   def enemy_id
  150.     self.battler
  151.     return @enemy_id
  152.   end
  153.   
  154. #--------------------------------------------------------------------------
  155. # Treasure Dispose
  156. #--------------------------------------------------------------------------
  157. def treasure_dispose
  158.   if self.battler == nil and self.is_a?(Game_Event)
  159.    for pg in @event.pages
  160.      if pg.condition.variable_id == 10000 and
  161.         pg.condition.variable_value > 0
  162.         pg.condition.variable_value -= 1
  163.         if pg.condition.variable_value < 100
  164.            self.zoom_x -= 0.01 if self.zoom_x > 0.01
  165.         end
  166.      elsif pg.condition.variable_id == 10000 and
  167.            pg.condition.variable_value == 0
  168.            $game_map.remove_token(self)
  169.      end            
  170.     end
  171.   end
  172. end  
  173.   

  174. #--------------------------------------------------------------------------
  175. # Update
  176. #--------------------------------------------------------------------------
  177.   alias xrxs64c_update update
  178.   def update
  179.     if @collapse_wait_count.to_i > 0
  180.       @collapse_wait_count -= 1
  181.       if @collapse_wait_count == 0
  182.         @collapse_wait_count = nil
  183.         $game_map.remove_token(self)   
  184.       end
  185.       return
  186.     end   
  187.     treasure_dispose
  188.     update_sensor
  189.     xrxs64c_update   
  190.     if self.battler != nil
  191.       self.battler.remove_states_auto
  192.     end   
  193.     if self.collapse_duration.to_i > 0
  194.       @through = true
  195.     end   
  196.     if self.collapse_done
  197.       [url=home.php?mod=space&uid=316553]@opacity[/url] = 0
  198.       @collapse_wait_count = 32
  199.       return
  200.     end   
  201. end  

  202. #--------------------------------------------------------------------------
  203. # Hit Reaction ON
  204. #--------------------------------------------------------------------------
  205.   def hit_reaction_on
  206.       self.hit_reaction = true
  207.   end  
  208.    
  209. #--------------------------------------------------------------------------
  210. # Hit Reaction Off
  211. #--------------------------------------------------------------------------
  212.   def hit_reaction_off
  213.       self.hit_reaction = false
  214.   end  
  215.    
  216. #--------------------------------------------------------------------------
  217. # Hp Hit Reaction
  218. #--------------------------------------------------------------------------
  219.   def hp_hit_reaction(on)
  220.       lowhp = self.battler.maxhp * XAS_BA_ENEMY::LOWHP / 100
  221.       if self.battler.hp > lowhp   
  222.       self.hit_reaction = on
  223.       else
  224.       if on == true
  225.       self.hit_reaction = false
  226.       else
  227.       self.hit_reaction = true
  228.       end
  229.       end  
  230.   end        
  231.   
  232. #--------------------------------------------------------------------------
  233. # Hero Level Hit Reaction
  234. #--------------------------------------------------------------------------
  235.   def hero_level_hit_reaction(level,on)
  236.       actor = $game_party.actors[0]
  237.       if  actor.level >= level   
  238.       self.hit_reaction = on
  239.       else
  240.       if on == true
  241.       self.hit_reaction = false
  242.       else
  243.       self.hit_reaction = true
  244.       end
  245.       end  
  246.   end            
  247.   
  248. #--------------------------------------------------------------------------
  249. # Shield Enable!
  250. #--------------------------------------------------------------------------
  251.   def shield_enable!
  252.     @shield_disable = nil
  253.   end
  254.   
  255. #--------------------------------------------------------------------------
  256. # Shield Disable!
  257. #--------------------------------------------------------------------------
  258.   def shield_disable!
  259.     @shield_disable = true
  260.   end  
  261.   
  262. #--------------------------------------------------------------------------
  263. # LowHP Shield
  264. #--------------------------------------------------------------------------
  265.   def lowhp_shield(on)
  266.     lowhp = self.battler.maxhp * XAS_BA_ENEMY::LOWHP / 100
  267.       if on == true
  268.       @shield_disable = true
  269.       elsif on == false
  270.       @shield_disable = nil
  271.       end
  272.   end      
  273.   
  274. #--------------------------------------------------------------------------
  275. # Hero HP Shield
  276. #--------------------------------------------------------------------------
  277.   def hp_shield(on)
  278.     lowhp = self.battler.maxhp * XAS_BA_ENEMY::LOWHP / 100
  279.     if self.battler.hp > lowhp
  280.       if on == true
  281.       @shield_disable = nil
  282.       else
  283.       @shield_disable = true
  284.       end
  285.     else
  286.       if on == true
  287.       @shield_disable = true
  288.       else
  289.       @shield_disable = nil
  290.       end           
  291.     end
  292.   end   
  293.   
  294. #--------------------------------------------------------------------------
  295. # Hero Level Shield
  296. #--------------------------------------------------------------------------
  297.   def hero_level_shield(level,on)
  298.     actor = $game_party.actors[0]
  299.     if  actor.level >= level        
  300.       if on == true
  301.       @shield_disable = nil
  302.       else
  303.       @shield_disable = true
  304.       end         
  305.     else
  306.       if on == true
  307.       @shield_disable = true
  308.       else
  309.       @shield_disable = nil
  310.       end        
  311.     end
  312.   end   
  313.   
  314. #--------------------------------------------------------------------------
  315. # Shield Directions
  316. #--------------------------------------------------------------------------
  317.   def shield_directions
  318.     set = @shield_disable ? [] : XAS_BA_ENEMY::SHILED_DIRECTIONS[self.enemy_id]
  319.     set = [] if set == nil
  320.     return set
  321.   end
  322.   
  323. #--------------------------------------------------------------------------
  324. # Shield Actions
  325. #--------------------------------------------------------------------------
  326.   def shield_actions
  327.     set = XAS_BA_ENEMY::SHILED_ACTIONS[self.enemy_id]
  328.     set = [] if set == nil
  329.     return set
  330.   end
  331.   
  332. #--------------------------------------------------------------------------
  333. # Knock Back Disable
  334. #--------------------------------------------------------------------------
  335.   def knock_back_disable
  336.     return XAS_BA_ENEMY::KNOCK_BACK_DISABLES.include?(self.enemy_id)
  337.   end
  338.   
  339. #--------------------------------------------------------------------------
  340. # Body Size
  341. #--------------------------------------------------------------------------
  342.   def body_size
  343.     return XAS_BA_ENEMY::BODY_SQUARE[self.enemy_id].to_i
  344.   end
  345.   
  346. #--------------------------------------------------------------------------
  347. # Defeat Process
  348. #--------------------------------------------------------------------------
  349.   def defeat_process
  350.     super
  351.     enemy_defeat_process(self.battler)
  352.     enemy_defeat_animation = XAS_BA_ENEMY::DEF_ANI[enemy_id]
  353.     if XAS_BA_ENEMY::DEF_ANI[enemy_id] != nil and not
  354.        terrain_tag == XAS::FALL_TERRAIN
  355.        self.animation_id = enemy_defeat_animation
  356.     end
  357.   end
  358. end


  359. #===============================================================================
  360. # Game Event
  361. #===============================================================================
  362. class Game_Event < Game_Character
  363.   attr_reader   :collision_attack
  364.   
  365. #--------------------------------------------------------------------------
  366. # Img Act Exist?
  367. #--------------------------------------------------------------------------
  368.   def img_act_exist?
  369.   RPG::Cache.character(@page.graphic.character_name + "_Act" , @page.graphic.character_hue) rescue return false
  370.   end

  371. #--------------------------------------------------------------------------
  372. # Attack ON
  373. #--------------------------------------------------------------------------
  374.   def attack_on
  375.     if self.battler.is_a?(Game_Enemy) and
  376.        (self.battler.states.include?(XAS::MUTE_ID) or
  377.         self.battler.states.include?(XAS::SEALATTACK_ID))
  378.         @collision_attack = false
  379.         self.battler.damage = XAS::SEALED_TEXT
  380.         self.battler.damage_pop = true
  381.         return false     
  382.     end   
  383.     @collision_attack = true
  384.     self.animation_id = self.battler.animation1_id
  385.     if img_act_exist?   
  386.     @character_name = @page.graphic.character_name + "_Act"
  387.     end
  388.   end

  389. #--------------------------------------------------------------------------
  390. # Attack Off
  391. #--------------------------------------------------------------------------
  392.   def attack_off
  393.     @collision_attack = false   
  394.     @character_name = @page.graphic.character_name
  395.   end
  396. end


  397. #===============================================================================
  398. # Game_Player
  399. #===============================================================================
  400. class Game_Player < Game_Character
  401.   
  402. #--------------------------------------------------------------------------
  403. # Check Event Trigger Touch
  404. #--------------------------------------------------------------------------
  405.   alias xrxs64c_check_event_trigger_touch check_event_trigger_touch
  406.   def check_event_trigger_touch(x, y)
  407.     xrxs64c_check_event_trigger_touch(x, y)
  408.     if $game_system.map_interpreter.running?
  409.       return
  410.     end
  411.     for event in $game_map.events.values
  412.       next unless event.collision_attack
  413.       unless [1,2].include?(event.trigger)
  414.         if event.battler != nil and event.x == x and event.y == y
  415.           $game_player.attack_effect(event)
  416.         end
  417.       end
  418.     end
  419.   end
  420. end

  421. #===============================================================================
  422. # Game_Event
  423. #===============================================================================
  424. class Game_Event < Game_Character
  425.   
  426. #--------------------------------------------------------------------------
  427. # Check Event Trigger Touch
  428. #--------------------------------------------------------------------------
  429.   alias xrxs64c_check_event_trigger_touch check_event_trigger_touch
  430.   def check_event_trigger_touch(x, y)
  431.     xrxs64c_check_event_trigger_touch(x, y)
  432.     if $game_system.map_interpreter.running?
  433.       return
  434.     end
  435.     return unless self.collision_attack
  436.     if self.battler != nil and x == $game_player.x and y == $game_player.y
  437.       $game_player.attack_effect(self)
  438.     end
  439.   end
  440. end

  441. #===============================================================================
  442. # XAS_BA_BATTLEEVENT_NONPREEMPT
  443. #===============================================================================
  444. module XAS_BA_BATTLEEVENT_NONPREEMPT
  445.   
  446. #--------------------------------------------------------------------------
  447. # Update
  448. #--------------------------------------------------------------------------
  449.   def update
  450.     return if self.battler != nil and $game_system.map_interpreter.running?
  451.     super
  452.   end  
  453. end

  454. #===============================================================================
  455. # Game_Event
  456. #===============================================================================
  457. class Game_Event < Game_Character
  458.   include XAS_BA_BATTLEEVENT_NONPREEMPT
  459. end


  460. #===============================================================================
  461. # Sprite_Character
  462. #===============================================================================
  463. class Sprite_Character < RPG::Sprite
  464.   
  465. #--------------------------------------------------------------------------
  466. # Update
  467. #--------------------------------------------------------------------------
  468.   alias xrxs64c_update update
  469.   def update
  470.     if @battler == nil
  471.        @battler = @character.battler
  472.     end
  473.     xrxs64c_update
  474.     if @battler == nil or @_collapse_duration > 0 or
  475.        @character.collapse_done
  476.       return
  477.     end
  478.     if @battler.hiblink_duration.is_a?(Numeric)      
  479.       if XAS_BA::BLINK_ON == true
  480.         @character.opacity = (@character.opacity + 70) % 190 + 40
  481.       end
  482.       if XAS_ABS_SETUP::BATTLER_SHAKE_EFFECT == true and @character.knockbacking?
  483.         self.x = @character.screen_x + rand(5)
  484.       end        
  485.       @battler.hiblink_duration -= 1
  486.       if @battler.hiblink_duration <= 0
  487.         @battler.hiblink_duration = nil
  488.         @character.opacity = 255
  489.       end      
  490.     end
  491.   end
  492. end


  493. #===============================================================================
  494. # Game_Character
  495. #===============================================================================
  496. class Game_Character
  497.   
  498. #--------------------------------------------------------------------------
  499. # Blow
  500. #--------------------------------------------------------------------------
  501. def blow(d, power = 1)
  502.     @knock_back_prespeed = @move_speed if @knock_back_prespeed == nil      
  503.     if self.knock_back_disable and (self.battler.xas_states_sleep == true or
  504.        self.battler.xas_states_stop == true)
  505.        @move_speed = XAS_BA::KNOCK_BACK_SPEED
  506.     end   
  507.     return if self.knock_back_disable
  508.     power.times do
  509.       if passable?(self.x, self.y, d)
  510.         @x += ([3,6,9].include?(d) ? 1 : [1,4,7].include?(d) ? -1 : 0)
  511.         @y += ([1,2,3].include?(d) ? 1 : [7,8,9].include?(d) ? -1 : 0)
  512.       end
  513.     end
  514.     if self.battler.is_a?(Game_Enemy)   
  515.       enemy_knock_duration = XAS_BA_ENEMY::INVICIBLE_DURATION_ENEMY[enemy_id]
  516.       if enemy_knock_duration != nil
  517.         @knock_back_duration = enemy_knock_duration
  518.       else
  519.         @knock_back_duration = XAS_BA_ENEMY::DEFAULT_INVICIBLE_DURATION_ENEMY   
  520.       end      
  521.     else
  522.        @knock_back_duration = XAS_BA::KNOCK_BACK_DURATION_HERO
  523.      end   
  524.     @move_speed = XAS_BA::KNOCK_BACK_SPEED
  525. end  
  526.    
  527. #--------------------------------------------------------------------------
  528. # Hit Image Check
  529. #--------------------------------------------------------------------------
  530. def hit_image_check  
  531.    if self.battler.is_a?(Game_Enemy)
  532.       @collision_attack = false
  533.       if img_hit_enemy_exist? and not
  534.          self.battler.xas_states_stop == true
  535.          @character_name = @page.graphic.character_name + "_Hit"
  536.       end
  537.    else
  538.       if img_hit_actor_exist?(@actor) and not
  539.          self.battler.xas_states_stop == true  
  540.          @character_name = @actor.character_name + "_Hit"
  541.       end
  542.    end   
  543. end

  544. #--------------------------------------------------------------------------
  545. # Fall Effect Update
  546. #--------------------------------------------------------------------------
  547. def fall_effect_update
  548.   unless moving? or jumping? or
  549.     self.is_a?(Game_Player)
  550.     if terrain_tag == XAS::FALL_TERRAIN  and
  551.        @through == false
  552.        if @erased == false
  553.           self.animation_id = XAS::FALL_ANIMATION_ID
  554.           self.erase
  555.        end
  556.     end     
  557.   end
  558.   if terrain_tag == XAS::SLIP_TERRAIN and @through == false
  559.      jump(0,0) unless jumping?
  560.      @y += 1
  561.   end
  562. end

  563. #--------------------------------------------------------------------------
  564. # knockbacking?
  565. #--------------------------------------------------------------------------
  566. def knockbacking?
  567.    return @knock_back_duration != nil
  568. end
  569.   
  570. #--------------------------------------------------------------------------
  571. # Collapsing?
  572. #--------------------------------------------------------------------------
  573. def collapsing?
  574.    return self.collapse_duration.to_i > 0
  575. end

  576. #--------------------------------------------------------------------------
  577. # Update
  578. #--------------------------------------------------------------------------
  579.   alias xrxs64c_nb_update update
  580.   def update
  581.     @stop_count = -1 if self.knockbacking? or self.dead?
  582.     xrxs64c_nb_update
  583.     throw_update
  584.     fall_effect_update  
  585.     if self.knockbacking?
  586.        hit_image_check        
  587.        @pattern = 0
  588.        unless self.battler.xas_states_stop == true or
  589.               self.battler.xas_states_sleep == true or
  590.               self.dead?
  591.               @knock_back_duration -= 1
  592.        end
  593.        if @knock_back_duration <= 0
  594.           unless self.erased == true
  595.             if self.battler.is_a?(Game_Enemy)  
  596.               @character_name = @page.graphic.character_name
  597.             else
  598.               @character_name = @actor.character_name        
  599.             end
  600.           end
  601.           @knock_back_duration = nil
  602.           @move_speed = @knock_back_prespeed
  603.           @knock_back_prespeed = nil
  604.        end
  605.        return
  606.     end
  607.   end
  608.   
  609. end
  610. #===============================================================================
  611. # XAS_DamageStop
  612. #===============================================================================
  613. module XAS_DamageStop
  614.   
  615.   #--------------------------------------------------------------------------
  616.   # Actiong?
  617.   #--------------------------------------------------------------------------
  618.   def acting?
  619.     return (super or self.knockbacking? or self.collapsing?)
  620.   end
  621. end

  622. #===============================================================================
  623. # Game_Player
  624. #===============================================================================
  625. class Game_Player < Game_Character
  626.   include XAS_DamageStop
  627. end

  628. #===============================================================================
  629. # Game_Event
  630. #===============================================================================
  631. class Game_Event < Game_Character
  632.   include XAS_DamageStop
  633. end

  634. #===============================================================================
  635. # module RPG
  636. #===============================================================================
  637. module RPG
  638. class Sprite < ::Sprite
  639.   
  640.   #--------------------------------------------------------------------------
  641.   # Dispose Animation
  642.   #--------------------------------------------------------------------------
  643.   def dispose_animation
  644.     if @_animation_sprites != nil
  645.     sprite = @_animation_sprites[0]
  646.       if sprite != nil
  647.       @@_reference_count[sprite.bitmap] -= 1
  648.       end
  649.       for sprite in @_animation_sprites
  650.       sprite.dispose
  651.       end
  652.     @_animation_sprites = nil
  653.     @_animation = nil
  654.     end
  655.     end
  656.   end
  657. end

  658. #===============================================================================
  659. # Game_Map
  660. #===============================================================================
  661. class Game_Map
  662.   
  663.   #--------------------------------------------------------------------------
  664.   # Starting?
  665.   #--------------------------------------------------------------------------
  666.   def starting?
  667.     if $game_system.map_interpreter.running?
  668.       return true
  669.     end
  670.     for event in $game_map.events.values
  671.       return true if event.starting
  672.     end
  673.     return false
  674.   end
  675. end

  676. #===============================================================================
  677. # class Interpreter
  678. #===============================================================================
  679. module XAS_ACTION
  680.   
  681.   #--------------------------------------------------------------------------
  682.   # Xas Z Shoot Bullet
  683.   #--------------------------------------------------------------------------
  684.   alias xas_z_shoot_bullet shoot_bullet
  685.   def shoot_bullet(action_id)
  686.     bullet_token = xas_z_shoot_bullet(action_id)
  687.     return bullet_token
  688.   end
  689. end

  690. #===============================================================================
  691. # Sprite_Battler Fix
  692. #===============================================================================
  693. class Sprite_Battler < RPG::Sprite
  694. alias xas_damage_update update

  695. #--------------------------------------------------------------------------
  696. # Update
  697. #--------------------------------------------------------------------------
  698.    def update
  699.     super
  700.     if @battler_visible
  701.        if @battler.damage_pop
  702.         damage(@battler.damage, @battler.critical,@battler.state,@battler.item)
  703.         @battler.damage = nil
  704.         @battler.critical = false
  705.         @battler.damage_pop = false
  706.       end
  707.     end  
  708.     xas_damage_update
  709.    end
  710. end
复制代码

Lv1.梦旅人

梦石
0
星屑
450
在线时间
16 小时
注册时间
2012-12-8
帖子
4
2
 楼主| 发表于 2012-12-16 14:38:59 | 只看该作者
使用3.82版本 同樣方法則顯示
GAME MAP 的305 行發生了NOMETHODERROR UNDEFINED METHOD > FOR NIL:NILCLASS
  1. #==============================================================================
  2. # ** Game_Map
  3. #------------------------------------------------------------------------------
  4. #  This class handles the map. It includes scrolling and passable determining
  5. #  functions. Refer to "$game_map" for the instance of this class.
  6. #==============================================================================

  7. class Game_Map
  8.   #--------------------------------------------------------------------------
  9.   # * Public Instance Variables
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor :tileset_name             # tileset file name
  12.   attr_accessor :autotile_names           # autotile file name
  13.   attr_accessor :panorama_name            # panorama file name
  14.   attr_accessor :panorama_hue             # panorama hue
  15.   attr_accessor :fog_name                 # fog file name
  16.   attr_accessor :fog_hue                  # fog hue
  17.   attr_accessor :fog_opacity              # fog opacity level
  18.   attr_accessor :fog_blend_type           # fog blending method
  19.   attr_accessor :fog_zoom                 # fog zoom rate
  20.   attr_accessor :fog_sx                   # fog sx
  21.   attr_accessor :fog_sy                   # fog sy
  22.   attr_accessor :battleback_name          # battleback file name
  23.   attr_accessor :display_x                # display x-coordinate * 128
  24.   attr_accessor :display_y                # display y-coordinate * 128
  25.   attr_accessor :need_refresh             # refresh request flag
  26.   attr_reader   :passages                 # passage table
  27.   attr_reader   :priorities               # prioroty table
  28.   attr_reader   :terrain_tags             # terrain tag table
  29.   attr_reader   :events                   # events
  30.   attr_reader   :fog_ox                   # fog x-coordinate starting point
  31.   attr_reader   :fog_oy                   # fog y-coordinate starting point
  32.   attr_reader   :fog_tone                 # fog color tone
  33.   #--------------------------------------------------------------------------
  34.   # * Object Initialization
  35.   #--------------------------------------------------------------------------
  36.   def initialize
  37.     @map_id = 0
  38.     @display_x = 0
  39.     @display_y = 0
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   # * Setup
  43.   #     map_id : map ID
  44.   #--------------------------------------------------------------------------
  45.   def setup(map_id)
  46.     # Put map ID in @map_id memory
  47.     @map_id = map_id
  48.     # Load map from file and set @map
  49.     @map = load_data(sprintf("Data/Map%03d.rxdata", @map_id))
  50.     # set tile set information in opening instance variables
  51.     tileset = $data_tilesets[@map.tileset_id]
  52.     @tileset_name = tileset.tileset_name
  53.     @autotile_names = tileset.autotile_names
  54.     @panorama_name = tileset.panorama_name
  55.     @panorama_hue = tileset.panorama_hue
  56.     @fog_name = tileset.fog_name
  57.     @fog_hue = tileset.fog_hue
  58.     @fog_opacity = tileset.fog_opacity
  59.     @fog_blend_type = tileset.fog_blend_type
  60.     @fog_zoom = tileset.fog_zoom
  61.     @fog_sx = tileset.fog_sx
  62.     @fog_sy = tileset.fog_sy
  63.     @battleback_name = tileset.battleback_name
  64.     @passages = tileset.passages
  65.     @priorities = tileset.priorities
  66.     @terrain_tags = tileset.terrain_tags
  67.     # Initialize displayed coordinates
  68.     @display_x = 0
  69.     @display_y = 0
  70.     # Clear refresh request flag
  71.     @need_refresh = false
  72.     # Set map event data
  73.     @events = {}
  74.     for i in @map.events.keys
  75.       @events[i] = Game_Event.new(@map_id, @map.events[i])
  76.     end
  77.     # Set common event data
  78.     @common_events = {}
  79.     for i in 1...$data_common_events.size
  80.       @common_events[i] = Game_CommonEvent.new(i)
  81.     end
  82.     # Initialize all fog information
  83.     @fog_ox = 0
  84.     @fog_oy = 0
  85.     @fog_tone = Tone.new(0, 0, 0, 0)
  86.     @fog_tone_target = Tone.new(0, 0, 0, 0)
  87.     @fog_tone_duration = 0
  88.     @fog_opacity_duration = 0
  89.     @fog_opacity_target = 0
  90.     # Initialize scroll information
  91.     @scroll_direction = 2
  92.     @scroll_rest = 0
  93.     @scroll_speed = 4
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # * Get Map ID
  97.   #--------------------------------------------------------------------------
  98.   def map_id
  99.     return @map_id
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # * Get Width
  103.   #--------------------------------------------------------------------------
  104.   def width
  105.     return @map.width
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # * Get Height
  109.   #--------------------------------------------------------------------------
  110.   def height
  111.     return @map.height
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # * Get Encounter List
  115.   #--------------------------------------------------------------------------
  116.   def encounter_list
  117.     return @map.encounter_list
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # * Get Encounter Steps
  121.   #--------------------------------------------------------------------------
  122.   def encounter_step
  123.     return @map.encounter_step
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # * Get Map Data
  127.   #--------------------------------------------------------------------------
  128.   def data
  129.     return @map.data
  130.   end
  131.   #--------------------------------------------------------------------------
  132.   # * Automatically Change Background Music and Backround Sound
  133.   #--------------------------------------------------------------------------
  134.   def autoplay
  135.     if @map.autoplay_bgm
  136.       $game_system.bgm_play(@map.bgm)
  137.     end
  138.     if @map.autoplay_bgs
  139.       $game_system.bgs_play(@map.bgs)
  140.     end
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # * Refresh
  144.   #--------------------------------------------------------------------------
  145.   def refresh
  146.     # If map ID is effective
  147.     if @map_id > 0
  148.       # Refresh all map events
  149.       for event in @events.values
  150.         event.refresh
  151.       end
  152.       # Refresh all common events
  153.       for common_event in @common_events.values
  154.         common_event.refresh
  155.       end
  156.     end
  157.     # Clear refresh request flag
  158.     @need_refresh = false
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # * Scroll Down
  162.   #     distance : scroll distance
  163.   #--------------------------------------------------------------------------
  164.   def scroll_down(distance)
  165.     @display_y = [@display_y + distance, (self.height - 15) * 128].min
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # * Scroll Left
  169.   #     distance : scroll distance
  170.   #--------------------------------------------------------------------------
  171.   def scroll_left(distance)
  172.     @display_x = [@display_x - distance, 0].max
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # * Scroll Right
  176.   #     distance : scroll distance
  177.   #--------------------------------------------------------------------------
  178.   def scroll_right(distance)
  179.     @display_x = [@display_x + distance, (self.width - 20) * 128].min
  180.   end
  181.   #--------------------------------------------------------------------------
  182.   # * Scroll Up
  183.   #     distance : scroll distance
  184.   #--------------------------------------------------------------------------
  185.   def scroll_up(distance)
  186.     @display_y = [@display_y - distance, 0].max
  187.   end
  188.   #--------------------------------------------------------------------------
  189.   # * Determine Valid Coordinates
  190.   #     x          : x-coordinate
  191.   #     y          : y-coordinate
  192.   #--------------------------------------------------------------------------
  193.   def valid?(x, y)
  194.     return (x >= 0 and x < width and y >= 0 and y < height)
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # * Determine if Passable
  198.   #     x          : x-coordinate
  199.   #     y          : y-coordinate
  200.   #     d          : direction (0,2,4,6,8,10)
  201.   #                  *  0,10 = determine if all directions are impassable
  202.   #     self_event : Self (If event is determined passable)
  203.   #--------------------------------------------------------------------------
  204.   def passable?(x, y, d, self_event = nil)
  205.     # If coordinates given are outside of the map
  206.     unless valid?(x, y)
  207.       # impassable
  208.       return false
  209.     end
  210.     # Change direction (0,2,4,6,8,10) to obstacle bit (0,1,2,4,8,0)
  211.     bit = (1 << (d / 2 - 1)) & 0x0f
  212.     # Loop in all events
  213.     for event in events.values
  214.       # If tiles other than self are consistent with coordinates
  215.       if event.tile_id >= 0 and event != self_event and
  216.          event.x == x and event.y == y and not event.through
  217.         # If obstacle bit is set
  218.         if @passages[event.tile_id] & bit != 0
  219.           # impassable
  220.           return false
  221.         # If obstacle bit is set in all directions
  222.         elsif @passages[event.tile_id] & 0x0f == 0x0f
  223.           # impassable
  224.           return false
  225.         # If priorities other than that are 0
  226.         elsif @priorities[event.tile_id] == 0
  227.           # passable
  228.           return true
  229.         end
  230.       end
  231.     end
  232.     # Loop searches in order from top of layer
  233.     for i in [2, 1, 0]
  234.       # Get tile ID
  235.       tile_id = data[x, y, i]
  236.       # Tile ID acquistion failure
  237.       if tile_id == nil
  238.         # impassable
  239.         return false
  240.       # If obstacle bit is set
  241.       elsif @passages[tile_id] & bit != 0
  242.         # impassable
  243.         return false
  244.       # If obstacle bit is set in all directions
  245.       elsif @passages[tile_id] & 0x0f == 0x0f
  246.         # impassable
  247.         return false
  248.       # If priorities other than that are 0
  249.       elsif @priorities[tile_id] == 0
  250.         # passable
  251.         return true
  252.       end
  253.     end
  254.     # passable
  255.     return true
  256.   end
  257.   #--------------------------------------------------------------------------
  258.   # * Determine Thicket
  259.   #     x          : x-coordinate
  260.   #     y          : y-coordinate
  261.   #--------------------------------------------------------------------------
  262.   def bush?(x, y)
  263.     if @map_id != 0
  264.       for i in [2, 1, 0]
  265.         tile_id = data[x, y, i]
  266.         if tile_id == nil
  267.           return false
  268.         elsif @passages[tile_id] & 0x40 == 0x40
  269.           return true
  270.         end
  271.       end
  272.     end
  273.     return false
  274.   end
  275.   #--------------------------------------------------------------------------
  276.   # * Determine Counter
  277.   #     x          : x-coordinate
  278.   #     y          : y-coordinate
  279.   #--------------------------------------------------------------------------
  280.   def counter?(x, y)
  281.     if @map_id != 0
  282.       for i in [2, 1, 0]
  283.         tile_id = data[x, y, i]
  284.         if tile_id == nil
  285.           return false
  286.         elsif @passages[tile_id] & 0x80 == 0x80
  287.           return true
  288.         end
  289.       end
  290.     end
  291.     return false
  292.   end
  293.   #--------------------------------------------------------------------------
  294.   # * Get Terrain Tag
  295.   #     x          : x-coordinate
  296.   #     y          : y-coordinate
  297.   #--------------------------------------------------------------------------
  298.   def terrain_tag(x, y)
  299.     if @map_id != 0
  300.       for i in [2, 1, 0]
  301.         tile_id = data[x, y, i]
  302.         if tile_id == nil
  303.           return 0
  304.         elsif @terrain_tags[tile_id] > 0
  305.           return @terrain_tags[tile_id]
  306.         end
  307.       end
  308.     end
  309.     return 0
  310.   end
  311.   #--------------------------------------------------------------------------
  312.   # * Get Designated Position Event ID
  313.   #     x          : x-coordinate
  314.   #     y          : y-coordinate
  315.   #--------------------------------------------------------------------------
  316.   def check_event(x, y)
  317.     for event in $game_map.events.values
  318.       if event.x == x and event.y == y
  319.         return event.id
  320.       end
  321.     end
  322.   end
  323.   #--------------------------------------------------------------------------
  324.   # * Start Scroll
  325.   #     direction : scroll direction
  326.   #     distance  : scroll distance
  327.   #     speed     : scroll speed
  328.   #--------------------------------------------------------------------------
  329.   def start_scroll(direction, distance, speed)
  330.     @scroll_direction = direction
  331.     @scroll_rest = distance * 128
  332.     @scroll_speed = speed
  333.   end
  334.   #--------------------------------------------------------------------------
  335.   # * Determine if Scrolling
  336.   #--------------------------------------------------------------------------
  337.   def scrolling?
  338.     return @scroll_rest > 0
  339.   end
  340.   #--------------------------------------------------------------------------
  341.   # * Start Changing Fog Color Tone
  342.   #     tone     : color tone
  343.   #     duration : time
  344.   #--------------------------------------------------------------------------
  345.   def start_fog_tone_change(tone, duration)
  346.     @fog_tone_target = tone.clone
  347.     @fog_tone_duration = duration
  348.     if @fog_tone_duration == 0
  349.       @fog_tone = @fog_tone_target.clone
  350.     end
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # * Start Changing Fog Opacity Level
  354.   #     opacity  : opacity level
  355.   #     duration : time
  356.   #--------------------------------------------------------------------------
  357.   def start_fog_opacity_change(opacity, duration)
  358.     @fog_opacity_target = opacity * 1.0
  359.     @fog_opacity_duration = duration
  360.     if @fog_opacity_duration == 0
  361.       @fog_opacity = @fog_opacity_target
  362.     end
  363.   end
  364.   #--------------------------------------------------------------------------
  365.   # * Frame Update
  366.   #--------------------------------------------------------------------------
  367.   def update
  368.     # Refresh map if necessary
  369.     if $game_map.need_refresh
  370.       refresh
  371.     end
  372.     # If scrolling
  373.     if @scroll_rest > 0
  374.       # Change from scroll speed to distance in map coordinates
  375.       distance = 2 ** @scroll_speed
  376.       # Execute scrolling
  377.       case @scroll_direction
  378.       when 2  # Down
  379.         scroll_down(distance)
  380.       when 4  # Left
  381.         scroll_left(distance)
  382.       when 6  # Right
  383.         scroll_right(distance)
  384.       when 8  # Up
  385.         scroll_up(distance)
  386.       end
  387.       # Subtract distance scrolled
  388.       @scroll_rest -= distance
  389.     end
  390.     # Update map event
  391.     for event in @events.values
  392.       event.update
  393.     end
  394.     # Update common event
  395.     for common_event in @common_events.values
  396.       common_event.update
  397.     end
  398.     # Manage fog scrolling
  399.     @fog_ox -= @fog_sx / 8.0
  400.     @fog_oy -= @fog_sy / 8.0
  401.     # Manage change in fog color tone
  402.     if @fog_tone_duration >= 1
  403.       d = @fog_tone_duration
  404.       target = @fog_tone_target
  405.       @fog_tone.red = (@fog_tone.red * (d - 1) + target.red) / d
  406.       @fog_tone.green = (@fog_tone.green * (d - 1) + target.green) / d
  407.       @fog_tone.blue = (@fog_tone.blue * (d - 1) + target.blue) / d
  408.       @fog_tone.gray = (@fog_tone.gray * (d - 1) + target.gray) / d
  409.       @fog_tone_duration -= 1
  410.     end
  411.     # Manage change in fog opacity level
  412.     if @fog_opacity_duration >= 1
  413.       d = @fog_opacity_duration
  414.       @fog_opacity = (@fog_opacity * (d - 1) + @fog_opacity_target) / d
  415.       @fog_opacity_duration -= 1
  416.     end
  417.   end
  418. end
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-2 15:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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