조회 수 296 추천 수 0 댓글 0
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


블루님 말씀대로 일본판으로 하니까 실행은 되는데 중요한 건,
튕겨버리더군요

스크립트는 아래와 같고,
튕길때의 에러 메세지는 그림과 같습니다.
튕기는 시점은 연계 스킬을 시전 하기전, 7번스킬을 쓴 후 60번 스킬이 발동하기 전에 튕깁니다.


#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/  ◆連繋スキル - KGC_CooperationSkill◆
#_/----------------------------------------------------------------------------
#_/ 複数のスキルを組み合わせ、別のスキルを発動させる機能です。
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================

module KGC
# ◆연계 스킬 배열
# ≪[발동 스킬 ID, [필요 스킬 ID1, 필요 스킬 ID2, ...]]≫
# 배열이므로, 잊지 않고 , 그리고 단락지어 주세요.
CS_SKILLS = [101, [7, 60]], # 고대의 마법
[101, [7, 60]], [101, [8, 60]], [101, [9, 60]], # 스파이럴 플레어
# ←이 ] 는 지우지 않는 것

# ◆적연계 스킬 허가
# true 로 하면, 적도 연계 스킬 판정을 실시한다.
CS_ENEMY_PERMIT = true
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

$imported["CooperationSkill"] = true

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Battler (分割定義 3)
#==============================================================================

class Game_Battler
  #--------------------------------------------------------------------------
  # ● 連繋スキルの効果適用
  #     user  : スキルの使用者 (バトラー)
  #     skill : スキル
  #     actor : 使用者がアクター
  #--------------------------------------------------------------------------
  def cooperation_skill_effect(users, skill, actor)
    # クリティカルフラグをクリア
    self.critical = false
    # スキルの効果範囲が HP 1 以上の味方で、自分の HP が 0、
    # またはスキルの効果範囲が HP 0 の味方で、自分の HP が 1 以上の場合
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      # メソッド終了
      return false
    end
    # 有効フラグをクリア
    effective = false
    # コモンイベント ID が有効の場合は有効フラグをセット
    effective |= skill.common_event_id > 0
    # 第一命中判定
    hit2 = 100 * users.size
    if skill.atk_f > 0
      for i in 0...users.size
        user = actor ? $game_party.actors[users[i][0]] : $game_troop.enemies[users[i][0]]
        hit2 += user.hit * skill.atk_f / 100
      end
    end
    hit2 /= users.size * 0.75
    hit = Integer(skill.hit * hit2 / 100)
    hit_result = (rand(100) < hit)
    # 不確実なスキルの場合は有効フラグをセット
    effective |= hit < 100
    # 命中の場合
    if hit_result == true
      # 威力を計算
      power = 0
      for i in 0...users.size
        user = actor ? $game_party.actors[users[i][0]] : $game_troop.enemies[users[i][0]]
        power += user.atk * skill.atk_f / 100
      end
      power /= users.size * 0.75
      power = Integer(power + skill.power)
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      # 倍率を計算
      rate = 0
      for i in 0...users.size
        user = actor ? $game_party.actors[users[i][0]] : $game_troop.enemies[users[i][0]]
        rate += (user.str * skill.str_f / 100)
        rate += (user.dex * skill.dex_f / 100)
        rate += (user.agi * skill.agi_f / 100)
        rate += (user.int * skill.int_f / 100)
      end
      rate /= users.size * 0.75
      rate = Integer(rate + 20)
      # 基本ダメージを計算
      self.damage = power * rate / 20
      # 属性修正
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      # ダメージの符号が正の場合
      if self.damage > 0
        # 防御修正
        if self.guarding?
          self.damage /= 2
        end
      end
      # 分散
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # 第二命中判定
      eva = 0; user_dex = 0
      for i in 0...users.size
        user = actor ? $game_party.actors[users[i][0]] : $game_troop.enemies[users[i][0]]
        user_dex += user.dex
      end
      user_dex /= users.size
      eva += 8 * self.agi / user_dex
      eva += self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      # 不確実なスキルの場合は有効フラグをセット
      effective |= hit < 100
    end
    # 命中の場合
    if hit_result == true
      # 威力 0 以外の物理攻撃の場合
      if skill.power != 0 and skill.atk_f > 0
        # ステート衝撃解除
        remove_states_shock
        # 有効フラグをセット
        effective = true
      end
      # HP からダメージを減算
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      # ステート変化
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      # 威力が 0 の場合
      if skill.power == 0
        # ダメージに空文字列を設定
        self.damage = ""
        # ステートに変化がない場合
        unless @state_changed
          # ダメージに "Miss" を設定
          self.damage = "Miss"
        end
      end
    # ミスの場合
    else
      # ダメージに "Miss" を設定
      self.damage = "Miss"
    end
    # 戦闘中でない場合
    unless $game_temp.in_battle
      # ダメージに nil を設定
      self.damage = nil
    end
    # メソッド終了
    return effective
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● スキルの使用可能判定
  #     skill_id : スキル ID
  #--------------------------------------------------------------------------
  def skill_can_use?(skill_id)
    return super(skill_id)
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Battle (分割定義 1)
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● メイン処理
  #--------------------------------------------------------------------------
  alias main_KGC_CooperationSkill main
  def main
    # 連繋スキル発動フラグを解除
    @cooperation_skill_exec = false
    # 連繋判定用配列を初期化
    @cooperate_actors, @cooperate_enemies = [], []

    # 元の処理を実行
    main_KGC_CooperationSkill
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Battle (分割定義 2)
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● パーティコマンドフェーズ開始
  #--------------------------------------------------------------------------
  alias start_phase2_KGC_CooperationSkill start_phase2
  def start_phase2
    # 連繋スキル発動フラグを解除
    @cooperation_skill_exec = false
    # 連繋判定用配列を初期化
    @cooperate_actors, @cooperate_enemies = [], []

    # 元の処理を実行
    start_phase2_KGC_CooperationSkill
  end
end

#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

#==============================================================================
# ■ Scene_Battle (分割定義 4)
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 6 : リフレッシュ)
  #--------------------------------------------------------------------------
  alias update_phase4_step6_KGC_CooperationSkill update_phase4_step6
  def update_phase4_step6
    # 敵全滅判定
    target_all_dead = true
    for battler in (@active_battler.is_a?(Game_Actor) ? $game_troop.enemies : $game_party.actors)
      if battler.exist?
        target_all_dead = false
        break
      end
    end
    # 連繋スキル発動中の場合
    if @cooperation_skill_exec
      # 連繋スキル発動フラグを解除
      @cooperation_skill_exec = false
      # 判定用配列をクリア
      if @active_battler.is_a?(Game_Actor)
        @cooperate_actors = []
      elsif @active_battler.is_a?(Game_Enemy) && KGC::CS_ENEMY_PERMIT
        @cooperate_enemies = []
      end
    # 行動がスキルで、対象が残っている場合
    elsif @active_battler.current_action.kind == 1 && !target_all_dead
      # 判定用データ作成
      data = [@active_battler.index, @active_battler.current_action.skill_id]
      if @active_battler.is_a?(Game_Actor)
        if @cooperate_actors.size >= 1
          for i in 0...@cooperate_actors.size
            # 自身、及び異常データを削除
            if @cooperate_actors[i][0] == @active_battler.index ||
                @cooperate_actors[i].size != 2
              @cooperate_actors[i] = nil
            end
          end
          @cooperate_actors.compact!
        end
        # 判定用配列に追加
        @cooperate_actors << data
      elsif @active_battler.is_a?(Game_Enemy) && KGC::CS_ENEMY_PERMIT
        if @cooperate_enemies.size >= 1
          for i in 0...@cooperate_enemies.size
            # 自身、及び異常データを削除
            if @cooperate_enemies[i][0] == @active_battler.index ||
                @cooperate_enemies[i].size != 2
              @cooperate_enemies[i] = nil
            end
          end
          @cooperate_enemies.compact!
        end
        # 判定用配列に追加
        @cooperate_enemies << data
      end
      # 連繋スキル発動判定
      for i in 0...KGC::CS_SKILLS.size
        cs = KGC::CS_SKILLS[i]
        # アクター判定
        if @active_battler.is_a?(Game_Actor)
          exec, @exec_battlers = [], []
          for j in 0...cs[1].size
            exec[j] = false
            for k in 0...@cooperate_actors.size
              if @cooperate_actors[k] == nil || @cooperate_actors[k].size != 2
                @cooperate_actors.delete_at(k)
                next
              end
              if cs[1][j] == @cooperate_actors[k][1]
                exec[j] = true
                @exec_battlers << @cooperate_actors[k]
              end
            end
          end
          exec2 = true
          for j in 0...@exec_battlers.size
            unless $game_party.actors[@exec_battlers[j][0]].exist?
              exec2 = false
              break
            end
          end
          exec3 = true
          for j in 0...@exec_battlers.size
            unless $game_party.actors[@exec_battlers[j][0]].skill_can_use?(cs[0])
              exec3 = false
              break
            end
          end
          # 連繋スキル発動
          if exec.all? && exec2 && exec3
            # 発動フラグを立てる
            @cooperation_skill_exec = true
            if $imported["ActiveCountBattle"] && @input_battler != nil
              for j in 0...@exec_battlers.size
                if $game_party.actors[@exec_battlers[j][0]] == @input_battler
                  # コマンド入力を解除
                  command_input_cancel
                end
              end
            end
            # スキル取得
            skill = $data_skills[cs[0]]
            # SP消費
            for j in 0...@exec_battlers.size
              $game_party.actors[@exec_battlers[j][0]].sp -= skill.sp_cost
            end
            @status_window.refresh
            # ヘルプウィンドウにスキル名を表示
            @help_window.set_text(skill.name, 1)
            if $imported["SkillMessage"]
              # スキル使用メッセージ表示
              show_skill_message(@active_battler, skill)
            end
            # アニメーション ID を設定
            @animation1_id = skill.animation1_id
            @animation2_id = skill.animation2_id
            # 対象存在判定
            target_dead = false
            for target in @target_battlers
              unless target.exist?
                target_dead = true
                break
              end
            end
            # 攻撃対象取得
            if skill.scope == 2 || skill.scope == 4 || skill.scope == 6 || target_dead
              @target_battlers = []
              set_target_battlers(skill.scope)
            end
            for target in @target_battlers
              target.cooperation_skill_effect(@cooperate_actors, skill, true)
            end
            # 発動者全員に発動アニメを表示
            for j in 0...@exec_battlers.size
              $game_party.actors[@exec_battlers[j][0]].animation_id = @animation1_id
              $game_party.actors[@exec_battlers[j][0]].animation_hit = true
            end
            # ステップ 4 に移行
            @phase4_step = 4
            return
          end
        # エネミー判定
        elsif @active_battler.is_a?(Game_Enemy) && KGC::CS_ENEMY_PERMIT
          exec, @exec_battlers = [], []
          for j in 0...cs[1].size
            exec[j] = false
            for k in 0...@cooperate_enemies.size
              if @cooperate_enemies[k] == nil || @cooperate_enemies[k].size != 2
                @cooperate_enemies.delete_at(k)
                next
              end
              if cs[1][j] == @cooperate_enemies[k][1]
                exec[j] = true
                @exec_battlers << @cooperate_enemies[k]
              end
            end
          end
          exec2 = true
          for j in 0...@exec_battlers.size
            unless $game_troop.enemies[@exec_battlers[j][0]].exist?
              exec2 = false
              break
            end
          end
          exec3 = true
          for j in 0...@exec_battlers.size
            unless $game_troop.enemies[@exec_battlers[j][0]].skill_can_use?(cs[0])
              exec3 = false
              break
            end
          end
          # 連繋スキル発動
          if exec.all? && exec2 && exec3
            # 発動フラグを立てる
            @cooperation_skill_exec = true
            # スキル取得
            skill = $data_skills[cs[0]]
            # SP消費
            for j in 0...@exec_battlers.size
              $game_troop.enemies[@exec_battlers[j][0]].sp -= skill.sp_cost
            end
            # ヘルプウィンドウにスキル名を表示
            @help_window.set_text(skill.name, 1)
            if $imported["SkillMessage"]
              # スキル使用メッセージ表示
              show_skill_message(@active_battler, skill)
            end
            # アニメーション ID を設定
            @animation1_id = skill.animation1_id
            @animation2_id = skill.animation2_id
            # 対象存在判定
            target_dead = false
            for target in @target_battlers
              unless target.exist?
                target_dead = true
                break
              end
            end
            # 攻撃対象取得
            if skill.scope == 2 || skill.scope == 4 || skill.scope == 6 || target_dead
              @target_battlers = []
              set_target_battlers(skill.scope)
            end
            for battler in @target_battlers
              battler.cooperation_skill_effect(@cooperate_enemies, skill, false)
            end
            # 発動者全員に発動アニメを表示
            for j in 0...@exec_battlers.size
              $game_troop.enemies[@exec_battlers[j][0]].animation_id = @animation1_id
              $game_troop.enemies[@exec_battlers[j][0]].animation_hit = true
            end
            # ステップ 4 に移行
            @phase4_step = 4
            return
          end
        end
      end
    else
      # 判定用配列から削除
      if @active_battler.is_a?(Game_Actor) && @cooperate_actors.size > 1
        for i in 0...@cooperate_actors.size
          if @cooperate_actors[i][0] == @active_battler.index
            @cooperate_actors.delete_at(i)
            break
          end
        end
      elsif @active_battler.is_a?(Game_Enemy) && KGC::CS_ENEMY_PERMIT &&
          @cooperate_enemies.size > 1
        for i in 0...@cooperate_enemies.size
          if @cooperate_enemies[i][0] == @active_battler.index
            @cooperate_enemies.delete_at(i)
            break
          end
        end
      end
    end

    # 元の処理を実行
    update_phase4_step6_KGC_CooperationSkill
  end
  #--------------------------------------------------------------------------
  # ● 連繋スキル発動中判定
  #     battler : 判定するバトラー
  #--------------------------------------------------------------------------
  def cooperation_exec?(battler)
    if @cooperation_skill_exec
      if battler.is_a?(Game_Actor)
        # 発動者に含まれているか判定
        for i in 0...@exec_battlers.size
          if @exec_battlers[i][0] == battler.index
            return true
          end
        end
      elsif battler.is_a?(Game_Enemy) && KGC::CS_ENEMY_PERMIT
        # 発動者に含まれているか判定
        for i in 0...@exec_battlers.size
          if @exec_battlers[i][0] == battler.index
            return true
          end
        end
      end
    end
    return false
  end
end
?

  1. No Image 02Jul
    by 샤안
    2006/07/02 by 샤안
    Views 160 

    전투할때 플래이어의 이미지를 옮기는 방법?

  2. 으악 염치없게 또 질문입니다;;

  3. No Image 09Jul
    by 샤안
    2006/07/09 by 샤안
    Views 144 

    링메뉴 스크립트에서 세이브관련된건 다 없에주세요

  4. No Image 20Feb
    by 노을.
    2009/02/20 by 노을.
    Views 772 

    $A,$B… 를 사용하여 나타내는 문자 변경하는 법

  5. No Image 15Oct
    by 다크세이버™
    2006/10/15 by 다크세이버™
    Views 159 

    "폴더를 작성할수 없습니다." 라는 경고문구...

  6. No Image 15Oct
    by 『덩키동크』
    2006/10/15 by 『덩키동크』
    Views 158 

    "폴더를 작성할수 없습니다." 라는 경고문구...

  7. No Image 15Oct
    by SKT_Terr god
    2006/10/15 by SKT_Terr god
    Views 229 

    "폴더를 작성할수 없습니다." 라는 경고문구...

  8. No Image 18Aug
    by 윈드
    2006/08/18 by 윈드
    Views 182 

    "파일 dmd 은 열지 않습니다" 이리저디 옮겼는데..

  9. "파일 dmd 은 열지 않습니다" 이리저디 옮겼는데..

  10. No Image 02Mar
    by Chrishyua .E
    2007/03/02 by Chrishyua .E
    Views 639 

    "클래스가 등록되지 않았습니다"라니 -0-;;[RPG2003]

  11. No Image 07Mar
    by =ROD=
    2007/03/07 by =ROD=
    Views 857 

    "클래스가 등록되지 않았습니다"라니 -0-;;[RPG2003]

  12. No Image 31Jul
    by 김세츠나
    2009/07/31 by 김세츠나
    Views 1038 

    "스크립트 데이터 읽기 실패" 라고 뜨는데..

  13. 질문!

  14. No Image 15Apr
    by ScolPion
    2006/04/15 by ScolPion
    Views 530 

    아이템창 같은 단축창를 만들려고하는데..[rpg2003]

  15. No Image 15Apr
    by 방콕족의생활
    2006/04/15 by 방콕족의생활
    Views 748 

    아이템창 같은 단축창를 만들려고하는데..[rpg2003]

  16. No Image 09Jan
    by XLostTimesX
    2006/01/09 by XLostTimesX
    Views 385 

    스크립트로요,, 이동하는걸 보드게임처럼 할순 없나요?

  17. No Image 29Aug
    by Novelist
    2006/08/29 by Novelist
    Views 261 

    몬스터가없으면 다른곳으로 자동이동가능?

  18. No Image 29Aug
    by CredMotion
    2006/08/29 by CredMotion
    Views 307 

    몬스터가없으면 다른곳으로 자동이동가능?

  19. 마법 연계 다시 질문!!! 제발 대답부탁!!;

  20. No Image 12Jul
    by RML
    2006/07/12 by RML
    Views 1454 

    동영상 관련및.. 급해요 ㅠ

Board Pagination Prev 1 ... 433 434 435 436 437 438 439 440 441 442 Next
/ 442






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)