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

Project1

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

[已经解决] 请教一下在ZTBS战棋脚本中遇到的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
312 小时
注册时间
2011-6-27
帖子
1316
跳转到指定楼层
1
发表于 2012-2-20 13:13:25 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
  最近在使用ZTBS战棋脚本制作游戏的时候遇到了个问题。
  之前都很正常,到152号地图后就出现了进入战斗出错的问题,但是之前却没有出现这个问题。
  后来重新开始新游戏,通过传送直接进入那张战斗地图却能正常运行;本以为是开关或是变量出错,关掉所有开关和所有变量归零后再读档进入按流程进入或直接进入却还是出错。出错提示如下:


附录出错脚本:
  1. #==============================================================================
  2. # [ZTBS] -Zenith Tactical Battle System- タクティカルバトルシステム
  3. #   ~1:ZTBS用 基本設定強化~        by 水夜
  4. #   ver1.00                          Zenith Creation (http://zenith.ifdef.jp/)
  5. #------------------------------------------------------------------------------
  6. # マップ上での戦略的なバトルを実現。
  7. #==============================================================================

  8. class Game_System
  9.   #--------------------------------------------------------------------------
  10.   # ● 公開インスタンス変数  Game_Systemに記録することでセーブに対応
  11.   #--------------------------------------------------------------------------
  12.   attr_accessor :in_tactics            # タクティクス中フラグ
  13.   attr_accessor :tactics_turn          # ターン
  14.   attr_accessor :tactics_phase         # フェーズ
  15.   attr_accessor :tactics_step          # ステップ
  16.   attr_accessor :tactics_setup         # セットアップフラグ
  17.   attr_accessor :tactics_actors        # アクター
  18.   attr_accessor :tactics_dead_actors   # 戦闘不能アクター
  19.   attr_accessor :tactics_enemies       # エネミー
  20.   #--------------------------------------------------------------------------
  21.   # ● オブジェクト初期化
  22.   #--------------------------------------------------------------------------
  23.   alias ztbs_initialize initialize
  24.   def initialize
  25.     # 呼び戻す
  26.     ztbs_initialize
  27.     @in_tactics = false
  28.     @tactics_turn = 0
  29.     @tactics_phase = 0
  30.     @tactics_step = 0
  31.     @tactics_setup = false
  32.     @tactics_actors = {}
  33.     @tactics_dead_actors = {}
  34.     @tactics_enemies = {}
  35.   end
  36. end

  37. class Game_Party
  38.   #--------------------------------------------------------------------------
  39.   # ● アイテムの使用可能判定
  40.   #--------------------------------------------------------------------------
  41.   alias ztbs_item_can_use? item_can_use?
  42.   def item_can_use?(item_id)
  43.     if $game_system.in_tactics
  44.       # アイテムの個数が 0 個の場合
  45.       if item_number(item_id) == 0
  46.         # 使用不能
  47.         return false
  48.       end
  49.       # 戦闘不能者がいない場合は戦闘不能回復を使用不可に
  50.       if [5, 6].include?($data_items[item_id].scope) and
  51.          $game_system.tactics_dead_actors.size == 0
  52.         return false
  53.       end      
  54.       return true
  55.     else
  56.       # 呼び戻す
  57.       ztbs_item_can_use?(item_id)
  58.     end
  59.   end
  60. end

  61. class Game_Battler
  62.   #--------------------------------------------------------------------------
  63.   # ● 移動可能距離の取得
  64.   #--------------------------------------------------------------------------
  65.   def movable
  66.     n = agi / ZTBS::C_MOVABLE
  67.     n = [[Integer(n), 1].max, ZTBS::MOVABLE_MAX].min
  68.     return n
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● スキルの使用可能判定
  72.   #--------------------------------------------------------------------------
  73.   alias ztbs_skill_can_use? skill_can_use?
  74.   def skill_can_use?(skill_id)
  75.     if $game_system.in_tactics
  76.       # タクティカルスキルではない場合は使用不可
  77.       if !$data_skills[skill_id].tactical?
  78.         return false
  79.       end
  80.       # SP が足りない場合は使用不可
  81.       if $data_skills[skill_id].sp_cost > self.sp
  82.         return false
  83.       end
  84.       # 戦闘不能者がいない場合は戦闘不能回復を使用不可に
  85.       if [5, 6].include?($data_skills[skill_id].scope)
  86.         if self.is_a?(Game_Actor)
  87.           return false if $game_system.tactics_dead_actors.size == 0
  88.         else
  89.           return false
  90.         end
  91.       end
  92.       # 戦闘不能の場合は使用不可
  93.       if dead?
  94.         return false
  95.       end
  96.       # 沈黙状態の場合、物理スキル以外は使用不可
  97.       if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
  98.         return false
  99.       end
  100.       return true
  101.     else
  102.       # 呼び戻す
  103.       ztbs_skill_can_use?(skill_id)
  104.     end
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● スキルの効果適用
  108.   #--------------------------------------------------------------------------
  109.   alias ztbs_skill_effect skill_effect
  110.   def skill_effect(user, skill)
  111.     if $game_system.in_tactics
  112.       # 戦闘中フラグ
  113.       $game_temp.in_battle = true
  114.       # 呼び戻す
  115.       effective = ztbs_skill_effect(user, skill)
  116.       # 戦闘中フラグ解除
  117.       $game_temp.in_battle = false
  118.     else
  119.       # 呼び戻す
  120.       effective = ztbs_skill_effect(user, skill)
  121.     end
  122.     # メソッド終了
  123.     return effective
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● アイテムの効果適用
  127.   #--------------------------------------------------------------------------
  128.   alias ztbs_item_effect item_effect
  129.   def item_effect(item)
  130.     if $game_system.in_tactics
  131.       # 戦闘中フラグ
  132.       $game_temp.in_battle = true
  133.       # 呼び戻す
  134.       effective = ztbs_item_effect(item)
  135.       # 戦闘中フラグ解除
  136.       $game_temp.in_battle = false
  137.     else
  138.       # 呼び戻す
  139.       effective = ztbs_item_effect(item)
  140.     end
  141.     # メソッド終了
  142.     return effective
  143.   end
  144. end

  145. class Game_Enemy < Game_Battler
  146.   #--------------------------------------------------------------------------
  147.   # ● オブジェクト初期化
  148.   #--------------------------------------------------------------------------
  149.   alias ztbs_initialize initialize
  150.   def initialize(troop_id, member_index)
  151.     if troop_id == 0
  152.       super()
  153.       @enemy_id = member_index
  154.       enemy = $data_enemies[@enemy_id]
  155.       @hp = maxhp
  156.       @sp = maxsp
  157.     else
  158.       ztbs_initialize(troop_id, member_index)
  159.     end
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● タクティカルアクション作成
  163.   #--------------------------------------------------------------------------
  164.   def make_tactical_action
  165.     # カレントアクションをクリア
  166.     self.current_action.clear
  167.     # 現在有効なアクションを抽出
  168.     available_actions = []
  169.     rating_max = 0
  170.     for action in self.actions
  171.       # ターン 条件確認
  172.       n = $game_system.tactics_turn
  173.       a = action.condition_turn_a
  174.       b = action.condition_turn_b
  175.       if (b == 0 and n != a) or
  176.          (b > 0 and (n < 1 or n < a or n % b != a % b))
  177.         next
  178.       end
  179.       # HP 条件確認
  180.       if self.hp * 100.0 / self.maxhp > action.condition_hp
  181.         next
  182.       end
  183.       # レベル 条件確認
  184.       if $game_party.max_level < action.condition_level
  185.         next
  186.       end
  187.       # スイッチ 条件確認
  188.       switch_id = action.condition_switch_id
  189.       if switch_id > 0 and $game_switches[switch_id] == false
  190.         next
  191.       end
  192.       # スキル使用可能判定
  193.       if action.kind == 1
  194.         skill = $data_skills[action.skill_id]
  195.         if !self.skill_can_use?(skill.id)
  196.           next
  197.         end
  198.       end
  199.       # 条件に該当 : このアクションを追加
  200.       available_actions.push(action)
  201.       if action.rating > rating_max
  202.         rating_max = action.rating
  203.       end
  204.     end
  205.     # 最大のレーティング値を 3 として合計を計算 (0 以下は除外)
  206.     ratings_total = 0
  207.     for action in available_actions
  208.       if action.rating > rating_max - 3
  209.         ratings_total += action.rating - (rating_max - 3)
  210.       end
  211.     end
  212.     # レーティングの合計が 0 ではない場合
  213.     if ratings_total > 0
  214.       # 乱数を作成
  215.       value = rand(ratings_total)
  216.       # 作成した乱数に対応するものをカレントアクションに設定
  217.       for action in available_actions
  218.         if action.rating > rating_max - 3
  219.           if value < action.rating - (rating_max - 3)
  220.             self.current_action.kind = action.kind
  221.             self.current_action.basic = action.basic
  222.             self.current_action.skill_id = action.skill_id
  223.             return
  224.           else
  225.             value -= action.rating - (rating_max - 3)
  226.           end
  227.         end
  228.       end
  229.     end
  230.   end
  231. end

  232. class Game_Map
  233.   #--------------------------------------------------------------------------
  234.   # ● 公開インスタンス変数
  235.   #--------------------------------------------------------------------------
  236.   attr_reader :tactics_end_map           # タクティクス終了時の移動先
  237.   #--------------------------------------------------------------------------
  238.   # ● セットアップ
  239.   #--------------------------------------------------------------------------
  240.   alias ztbs_setup setup
  241.   def setup(map_id)
  242.     # 呼び戻す
  243.     ztbs_setup(map_id)
  244.     # マップ名を取得
  245.     $data_mapinfos = load_data("Data/MapInfos.rxdata") if $data_mapinfos.nil?
  246.     map_name = $data_mapinfos[@map_id].name
  247.     # タクティクス終了時の移動先を取得
  248.     @tactics_end_map = get_tactics_end_map(@map_id)
  249.     # マップ名からタクティクスマップ判定
  250.     $game_system.in_tactics = map_name.include?("[T]")
  251.   end
  252. end

  253. class Game_Character
  254.   #--------------------------------------------------------------------------
  255.   # ● 公開インスタンス変数
  256.   #--------------------------------------------------------------------------
  257.   attr_accessor :appear                   # 出現
  258.   attr_accessor :damage_pop               # ダメージ表示フラグ
  259.   attr_accessor :damage                   # ダメージ値
  260.   attr_accessor :critical                 # クリティカルフラグ
  261.   attr_accessor :animation_id             # アニメーション ID
  262.   attr_accessor :animation_hit            # アニメーション ヒットフラグ
  263.   attr_accessor :white_flash              # 白フラッシュフラグ
  264.   attr_accessor :blink                    # 明滅フラグ
  265.   attr_accessor :collapse                 # コラプス
  266.   attr_accessor :acted                    # 行動済み
  267.   attr_accessor :effect                   # エフェクト中
  268.   attr_accessor :invisible                # 不可視状態
  269.   attr_accessor :not_update               # 更新禁止
  270.   #--------------------------------------------------------------------------
  271.   # ● オブジェクト初期化
  272.   #--------------------------------------------------------------------------
  273.   alias ztbs_initialize initialize
  274.   def initialize
  275.     # 呼び戻す
  276.     ztbs_initialize
  277.     @damage_pop = false     #
  278.     @damage = nil           #
  279.     @critical = false       #
  280.     @animation_id = 0       # 角色出场动画 动画ID
  281.     @animation_hit = false  #
  282.     @white_flash = false    # 行走土是否在第零回合闪烁false为否true为是
  283.     @blink = false          # 行走土是否闪烁false为否true为是
  284.     @collapse = 0           # 0显示行走图  1~255以贞数来隐藏行走图
  285.     @acted = false          # 第零回合是否显示为待机状态false为不true为是
  286.     @effect = false         #
  287.     @invisible = false      # 是否显示事件行走图false为显示 true为隐藏
  288.     @not_update = false     # 是否进行地图刷新 true为不刷新false为刷新
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ● ステートのアニメーション ID 取得
  292.   #--------------------------------------------------------------------------
  293.   def state_animation_id
  294.     if self.is_a?(Game_Player) or !$game_system.in_tactics or
  295.        (!$game_system.tactics_actors.keys.include?(self.id) and
  296.        !$game_system.tactics_enemies.keys.include?(self.id))
  297.       return 0
  298.     end
  299.     # バトラー取得
  300.     if $game_system.tactics_actors.keys.include?(self.id)
  301.       battler = $game_system.tactics_actors[self.id]
  302.     else
  303.       battler = $game_system.tactics_enemies[self.id]
  304.     end
  305.     # ステートがひとつも付加されていない場合
  306.     if battler.states.size == 0
  307.       return 0
  308.     end
  309.     # レーティング最大のステートのアニメーション ID を返す
  310.     return $data_states[battler.states[0]].animation_id
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ● フレーム更新
  314.   #--------------------------------------------------------------------------
  315.   alias ztbs_update update
  316.   def update
  317.     return if @not_update
  318.     ztbs_update
  319.     # 「簡易版マップ処理軽量化」でのエラー防止
  320.     if defined? $onscreen and $game_system.in_tactics
  321.       # スプライト更新ありにする
  322.       $onscreen[@id] = true
  323.     end
  324.   end
  325. end

  326. class Game_Event < Game_Character
  327.   #--------------------------------------------------------------------------
  328.   # ● 公開インスタンス変数
  329.   #--------------------------------------------------------------------------
  330.   attr_reader     :name                  # 名前
  331.   attr_reader     :move_frequency        # 移動頻度
  332.   attr_reader     :erased                # 消去済み
  333.   #--------------------------------------------------------------------------
  334.   # ● オブジェクト初期化
  335.   #--------------------------------------------------------------------------
  336.   alias ztbs_e_initialize initialize
  337.   def initialize(map_id, event)
  338.     ztbs_e_initialize(map_id, event)
  339.     @name = event.name
  340.   end
  341.   #--------------------------------------------------------------------------
  342.   # ● 消去取り消し
  343.   #--------------------------------------------------------------------------
  344.   def cancel_erase
  345.     @erased = false
  346.     @appear = true
  347.     @effect = true
  348.   end
  349. end

  350. class Game_Player < Game_Character
  351.   #--------------------------------------------------------------------------
  352.   # ● 公開インスタンス変数
  353.   #--------------------------------------------------------------------------
  354.   attr_accessor :through                  # すり抜け
  355.   attr_accessor :move_speed               # 移動速度
  356.   attr_accessor :through_original         # すり抜け記憶
  357.   attr_accessor :speed_original           # 移動速度記憶
  358.   #--------------------------------------------------------------------------
  359.   # ● オブジェクト初期化
  360.   #--------------------------------------------------------------------------
  361.   def initialize()
  362.     super()
  363.     @through_original = @through
  364.     @speed_original = @move_speed
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ● 歩数増加
  368.   #--------------------------------------------------------------------------
  369.   alias ztbs_increase_steps increase_steps
  370.   def increase_steps
  371.     super
  372.     return if $game_system.in_tactics
  373.     # 呼び戻す
  374.     ztbs_increase_steps
  375.   end
  376. end

  377. class Sprite_Character < RPG::Sprite
  378.   #--------------------------------------------------------------------------
  379.   # ● フレーム更新
  380.   #--------------------------------------------------------------------------
  381.   alias ztbs_update update
  382.   def update
  383.     if $game_system.in_tactics
  384.       super
  385.       # タイル ID、ファイル名、色相のどれかが現在のものと異なる場合
  386.       if @tile_id != @character.tile_id or
  387.          @character_name != @character.character_name or
  388.          @character_hue != @character.character_hue
  389.         # タイル ID とファイル名、色相を記憶
  390.         @tile_id = @character.tile_id
  391.         @character_name = @character.character_name
  392.         @character_hue = @character.character_hue
  393.         # タイル ID が有効な値の場合
  394.         if @tile_id >= 384
  395.           self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  396.             @tile_id, @character.character_hue)
  397.           self.src_rect.set(0, 0, 32, 32)
  398.           self.ox = 16
  399.           self.oy = 32
  400.         # タイル ID が無効な値の場合
  401.         else
  402.           self.bitmap = RPG::Cache.character(@character.character_name,
  403.             @character.character_hue)
  404.           @cw = bitmap.width / 4
  405.           @ch = bitmap.height / 4
  406.           self.ox = @cw / 2
  407.           self.oy = @ch
  408.         end
  409.       end
  410.       # 可視状態を設定
  411.       self.visible = (not @character.transparent)
  412.       # グラフィックがキャラクターの場合
  413.       if @tile_id == 0
  414.         # 転送元の矩形を設定
  415.         sx = @character.pattern * @cw
  416.         sy = (@character.direction - 2) / 2 * @ch
  417.         self.src_rect.set(sx, sy, @cw, @ch)
  418.       end
  419.       # スプライトの座標を設定
  420.       self.x = @character.screen_x
  421.       self.y = @character.screen_y
  422.       self.z = @character.screen_z(@ch)
  423.       # 不透明度、合成方法、茂み深さを設定
  424.       if self.opacity == 0
  425.         @character.invisible = true
  426.       end
  427.       unless @character.effect
  428.         if @character.acted
  429.           self.opacity = @character.opacity - 100
  430.         elsif @character.invisible
  431.           self.opacity = 0
  432.         else
  433.           self.opacity = @character.opacity
  434.         end
  435.         self.blend_type = @character.blend_type
  436.         self.bush_depth = @character.bush_depth
  437.       end
  438.       @character.effect = effect?
  439.       if @character.is_a?(Game_Player)
  440.         return
  441.       end
  442.       # アニメーション ID が現在のものと異なる場合
  443.       if @character.damage == nil and
  444.          @character.state_animation_id != @state_animation_id and
  445.          ($game_system.tactics_step < 6 or $game_system.tactics_step > 9) and
  446.          ZTBS::STATE_ANIMATION
  447.         @state_animation_id = @character.state_animation_id
  448.         loop_animation($data_animations[@state_animation_id])
  449.       end
  450.       # アニメーション
  451.       if @character.animation_id != 0
  452.         animation = $data_animations[@character.animation_id]
  453.         animation(animation, @character.animation_hit)
  454.         @character.animation_id = 0
  455.       end
  456.       # 出現
  457.       if @character.appear and
  458.          ($game_system.tactics_step < 6 or $game_system.tactics_step > 8)
  459.         @character.refresh
  460.         @character.invisible = false
  461.         self.opacity = @character.opacity
  462.         appear
  463.         @character.appear = false
  464.       end
  465.       # 明滅
  466.       if @character.blink
  467.         blink_on
  468.       else
  469.         blink_off
  470.       end
  471.       # 白フラッシュ
  472.       if @character.white_flash
  473.         whiten
  474.         @character.white_flash = false
  475.       end
  476.       # ダメージ
  477.       if @character.damage_pop
  478.         damage(@character.damage, @character.critical)
  479.         @character.damage = nil
  480.         @character.critical = false
  481.         @character.damage_pop = false
  482.       end
  483.       # コラプス
  484.       if @character.damage == nil and @character.collapse > 0
  485.         case @character.collapse
  486.         when 1
  487.           $game_system.se_play($data_system.actor_collapse_se)
  488.         when 2
  489.           $game_system.se_play($data_system.enemy_collapse_se)
  490.         end
  491.         collapse
  492.         @character.collapse = 0
  493.         @character.effect = true
  494.       end
  495.     else
  496.       # 呼び戻す
  497.       ztbs_update
  498.     end
  499.   end
  500. end

  501. class Spriteset_Map
  502.   #--------------------------------------------------------------------------
  503.   # ● 公開インスタンス変数
  504.   #--------------------------------------------------------------------------
  505.   attr_reader     :viewport1                     # ビューポート1
  506.   attr_accessor   :area_sprites                  # エリアスプライト
  507.   attr_accessor   :range_sprites                 # レンジスプライト
  508.   attr_reader     :character_sprites             # キャラクタースプライト
  509.   #--------------------------------------------------------------------------
  510.   # ● オブジェクト初期化
  511.   #--------------------------------------------------------------------------
  512.   alias ztbs_initialize initialize
  513.   def initialize
  514.     if $game_system.in_tactics
  515.       # ビューポートを作成
  516.       @viewport1 = Viewport.new(0, 0, 640, 480)
  517.       @viewport2 = Viewport.new(0, 0, 640, 480)
  518.       @viewport3 = Viewport.new(0, 0, 640, 480)
  519.       @viewport2.z = 200
  520.       @viewport3.z = 5000
  521.       # タイルマップを作成
  522.       @tilemap = Tilemap.new(@viewport1)
  523.       @tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
  524.       for i in 0..6
  525.         autotile_name = $game_map.autotile_names[i]
  526.         @tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
  527.       end
  528.       @tilemap.map_data = $game_map.data
  529.       @tilemap.priorities = $game_map.priorities
  530.       # パノラマプレーンを作成
  531.       @panorama = Plane.new(@viewport1)
  532.       @panorama.z = -1000
  533.       # フォグプレーンを作成
  534.       @fog = Plane.new(@viewport1)
  535.       @fog.z = 3000
  536.       # エリアスプライトを作成
  537.       @area_sprites = []
  538.       # レンジスプライトを作成
  539.       @range_sprites = []
  540.       # 「簡易版マップ処理軽量化」でのエラー防止
  541.       if defined? $onscreen
  542.         # キャラクタースプライトを作成
  543.         @character_sprites = []
  544.         @party_sprites = []
  545.         for i in $game_map.events.keys.sort
  546.           sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  547.           @character_sprites[i] = sprite
  548.          $onscreen[i] = true
  549.         end
  550.         @party_sprites.push(Sprite_Cursor.new(@viewport1, $game_player.x, $game_player.y))
  551.       else
  552.         # キャラクタースプライトを作成
  553.         @character_sprites = []
  554.         for i in $game_map.events.keys.sort
  555.           sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
  556.           @character_sprites.push(sprite)
  557.         end
  558.         @character_sprites.push(Sprite_Cursor.new(@viewport1, $game_player.x, $game_player.y))
  559.       end
  560.       # 天候を作成
  561.       @weather = RPG::Weather.new(@viewport1)
  562.       # ピクチャを作成
  563.       @picture_sprites = []
  564.       for i in 1..50
  565.         @picture_sprites.push(Sprite_Picture.new(@viewport2,
  566.           $game_screen.pictures[i]))
  567.       end
  568.       # タイマースプライトを作成
  569.       @timer_sprite = Sprite_Timer.new
  570.       # フレーム更新
  571.       update
  572.     else
  573.       ztbs_initialize
  574.     end
  575.   end
  576.   #--------------------------------------------------------------------------
  577.   # ● エフェクト表示中判定
  578.   #--------------------------------------------------------------------------
  579.   def effect?
  580.     # エフェクトが一つでも表示中なら true を返す
  581.     for sprite in @character_sprites
  582.       if sprite != nil and sprite.effect?
  583.         return true
  584.       end
  585.     end
  586.     return false
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # ● 解放
  590.   #--------------------------------------------------------------------------
  591.   alias ztbs_dispose dispose
  592.   def dispose
  593.     ztbs_dispose
  594.     return if !defined? @area_sprites
  595.     # エリアスプライトを解放
  596.     for sprite in @area_sprites + @range_sprites
  597.       sprite.dispose
  598.     end
  599.   end
  600.   #--------------------------------------------------------------------------
  601.   # ● フレーム更新
  602.   #--------------------------------------------------------------------------
  603.   alias ztbs_update update
  604.   def update
  605.     ztbs_update
  606.     return if !defined? @area_sprites
  607.     # エリアスプライトを更新
  608.     for sprite in @area_sprites + @range_sprites
  609.       sprite.update
  610.     end
  611.   end
  612. end

  613. class Window_Help < Window_Base
  614.   #--------------------------------------------------------------------------
  615.   # ● アクター情報リフレッシュ
  616.   #--------------------------------------------------------------------------
  617.   def refresh_actor(actor)
  618.     @actor = nil
  619.     set_actor(actor)
  620.   end
  621.   #--------------------------------------------------------------------------
  622.   # ● エネミー情報リフレッシュ
  623.   #--------------------------------------------------------------------------
  624.   def refresh_enemy(enemy)
  625.     @actor = nil
  626.     set_enemy(enemy)
  627.   end
  628.   #--------------------------------------------------------------------------
  629.   # ● エネミー設定
  630.   #--------------------------------------------------------------------------
  631.   alias ztbs_set_enemy set_enemy
  632.   def set_enemy(enemy)
  633.     if $game_system.in_tactics and ZTBS::ENEMY_HPSP
  634.       set_actor(enemy)
  635.     else
  636.       # 呼び戻す
  637.       ztbs_set_enemy(enemy)
  638.     end
  639.   end
  640. end

  641. #==============================================================================
  642. # ■ Scene_Load
  643. #------------------------------------------------------------------------------
  644. # ※システム初期化を不要にします。
  645. #   新規プロジェクトで開始する場合やゲーム完成時には
  646. #   以下のスクリプトを消しても構いません。
  647. #==============================================================================
  648. class Scene_Load < Scene_File
  649.   #--------------------------------------------------------------------------
  650.   # ● セーブデータの読み込み
  651.   #--------------------------------------------------------------------------
  652.   alias ztbs_read_save_data read_save_data
  653.   def read_save_data(file)
  654.     # 呼び戻す
  655.     ztbs_read_save_data(file)
  656.     # システム初期化を不要に
  657.     if $game_system.tactics_turn == nil
  658.       $game_system.in_tactics = false
  659.       $game_system.tactics_turn = 0
  660.       $game_system.tactics_phase = 0
  661.       $game_system.tactics_step = 0
  662.       $game_system.tactics_setup = false
  663.       $game_system.tactics_actors = {}
  664.       $game_system.tactics_dead_actors = {}
  665.       $game_system.tactics_enemies = {}
  666.     end
  667.   end
  668. end
复制代码
493行脚本截取如下:
  1. if @character.damage == nil and @character.collapse > 0
复制代码
这段应该是定义角色在地图上显示的,但我实在想不到问题出在哪里了。

评分

参与人数 1星屑 +200 收起 理由
步兵中尉 + 200

查看全部评分

Lv1.梦旅人

梦石
0
星屑
70
在线时间
312 小时
注册时间
2011-6-27
帖子
1316
9
 楼主| 发表于 2012-2-23 18:16:10 | 只看该作者
本帖最后由 钢铁列兵 于 2012-2-23 18:17 编辑

感谢两位的解答;将后面所有地图重新制作一遍后又没问题了,这个脚本啊。
无法部分认证,只好认可一个,另一个明天通过评分不上了。

评分

参与人数 1星屑 +170 收起 理由
步兵中尉 + 170

查看全部评分

回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
8
发表于 2012-2-22 10:22:16 | 只看该作者
图片挂了;不过大于符号出问题倒很少见到。
你试试新开游戏直接到出发战斗之前的那段剧情,剧情结束后进入战斗不知有问题没有?
步兵中尉
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
323 小时
注册时间
2012-2-20
帖子
236

开拓者

7
发表于 2012-2-21 20:09:29 | 只看该作者
但是从脚本上我也看不出什么问题啊..


现在不知是6R附件抽了还是我网抽了图看不到了,没记错的话是大于号报错了是吧?我估摸着就是前面的@character变nil型了,调用.collapse之后没法和数字比较所以报错了
所以猜想是由于删除了某些先前设置的事件造成的?呜..太久没摸ZTBS都不太记得了,印象中ZTBS的设置确实很繁琐而且一个不小心没设置好就会踩到地雷,尤其是制作了
一些事件之后再删掉其中的某些事件的时候脚本各种傲娇..虽然我手上的版本是被人家改的面目全非的倒也是了orz

呼,那啥,提供一种暴力的办法..估摸着会有些隐患而且也未必就能成功..不过楼主亲先试试吧?
在出问题的这层if-else-end外再加一层判断,就是加上"if @character != nil"这样的判断,在@character是nil型的时候把这一段跳过去..

然后建议楼主亲仔细检查一下场景转换和地图事件的设置~

如果还没法解决的话我暂时也想不出是什么问题了..等等看有没有ZTBS触手出现吧,抱歉~

点评

感谢您的解答。因为论坛无法部分认可,介于我跟中尉认识,所以我了中尉。关于您的解答我将明后天能评的分都给你。  发表于 2012-2-23 18:21

评分

参与人数 1星屑 +90 收起 理由
钢铁列兵 + 90 部分认可答案

查看全部评分

Glimmer系列应援~

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
312 小时
注册时间
2011-6-27
帖子
1316
6
 楼主| 发表于 2012-2-21 13:06:46 | 只看该作者
ArcDriver 发表于 2012-2-20 22:14
就是这个问题,你试试看从头开始测试吧
改动了脚本之后再读档的话经常会报一些莫名其妙的错,这就是我所 ...

最大的问题是我没有新添脚本,也没对原来的脚本进行任何改动。

评分

参与人数 1星屑 +180 收起 理由
步兵中尉 + 180

查看全部评分

回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
5
发表于 2012-2-20 22:14:30 | 只看该作者
你尝试一下那些存档传送回以前的战斗看是否出问题。
看来两遍脚本也没发现什么问题。

点评

直接传送到前面的战斗没问题,但那个战斗和之后的战斗都要出问题;战斗地图重新绘制也无济于事。  发表于 2012-2-21 13:07

评分

参与人数 1星屑 +120 收起 理由
钢铁列兵 + 120

查看全部评分

步兵中尉
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
323 小时
注册时间
2012-2-20
帖子
236

开拓者

4
发表于 2012-2-20 22:14:10 | 只看该作者
钢铁列兵 发表于 2012-2-20 22:01
可是我的就是以前的那个存档;制作好第二章后测试,在boss战之前居然出问题。不知是什么原因
...

就是这个问题,你试试看从头开始测试吧
改动了脚本之后再读档的话经常会报一些莫名其妙的错,这就是我所指的“存档失效”
可以参考一下这个帖子:
http://rpg.blue/thread-102972-1-1.html

评分

参与人数 1星屑 +90 收起 理由
钢铁列兵 + 90 部分认可答案

查看全部评分

Glimmer系列应援~

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
312 小时
注册时间
2011-6-27
帖子
1316
3
 楼主| 发表于 2012-2-20 22:01:50 | 只看该作者
可是我的就是以前的那个存档;制作好第二章后测试,在boss战之前居然出问题。不知是什么原因

评分

参与人数 1星屑 +240 收起 理由
步兵中尉 + 240

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
323 小时
注册时间
2012-2-20
帖子
236

开拓者

2
发表于 2012-2-20 21:20:33 | 只看该作者
嗯,这种莫名其妙地报一些明明就定义的好好的未定义方式的错大概就是因为在脚本改动之后原来的存档失效的缘故吧。
楼主亲直接从头开始重新测试吧。

评分

参与人数 1星屑 +90 收起 理由
钢铁列兵 + 90

查看全部评分

Glimmer系列应援~

回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-1 12:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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