조회 수 137 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
이번에는 아예 다 써드릴게요;;;

#==============================================================================
# ■ Interpreter (분할 정의 7)
#------------------------------------------------------------------------------
#  이벤트 커멘드를 실행하는 interpreter입니다.이 클래스는 Game_System 곳간
# 스나 Game_Event 클래스의 내부에서 사용됩니다.
#==============================================================================

class Interpreter
  #--------------------------------------------------------------------------
  # ● 에너미의 HP 증감
  #--------------------------------------------------------------------------
  def command_331
    # 조작하는 값을 취득
    value = operate_value(@parameters[1], @parameters[2], @parameters[3])
    # 이테레이타로 처리
    iterate_enemy(@parameters[0]) do |enemy|
      # HP 가 0 이 아닌 경우
      if enemy.hp > 0
        # HP 를 변경 (전투 불능이 허가되어 있지 않으면 1 으로 한다)
        if @parameters[4] == false and enemy.hp + value <= 0
          enemy.hp = 1
        else
          enemy.hp += value
        end
      end
    end
    # 계속
    return true
  end
  #--------------------------------------------------------------------------
  # ● 에너미의 SP 증감
  #--------------------------------------------------------------------------
  def command_332
    # 조작하는 값을 취득
    value = operate_value(@parameters[1], @parameters[2], @parameters[3])
    # 이테레이타로 처리
    iterate_enemy(@parameters[0]) do |enemy|
      # SP 를 변경
      enemy.sp += value
    end
    # 계속
    return true
  end
  #--------------------------------------------------------------------------
  # ● 에너미의 스테이트 변경
  #--------------------------------------------------------------------------
  def command_333
    # 이테레이타로 처리
    iterate_enemy(@parameters[0]) do |enemy|
      # 스테이트의 옵션 [HP 0 상태로 간주하는] 이 유효의 경우
      if $data_states[@parameters[2]].zero_hp
        # 불사신 플래그를 클리어
        enemy.immortal = false
      end
      # 스테이트를 변경
      if @parameters[1] == 0
        enemy.add_state(@parameters[2])
      else
        enemy.remove_state(@parameters[2])
      end
    end
    # 계속
    return true
  end
  #--------------------------------------------------------------------------
  # ● 에너미의 전회복
  #--------------------------------------------------------------------------
  def command_334
    # 이테레이타로 처리
    iterate_enemy(@parameters[0]) do |enemy|
      # 전회복
      enemy.recover_all
    end
    # 계속
    return true
  end
  #--------------------------------------------------------------------------
  # ● 에너미의 출현
  #--------------------------------------------------------------------------
  def command_335
    # 에너미를 취득
    enemy = $game_troop.enemies[@parameters[0]]
    # 숨어 플래그를 클리어
    if enemy != nil
      enemy.hidden = false
    end
    # 계속
    return true
  end
  #--------------------------------------------------------------------------
  # ● 에너미의 변신
  #--------------------------------------------------------------------------
  def command_336
    # 에너미를 취득
    enemy = $game_troop.enemies[@parameters[0]]
    # 변신 처리
    if enemy != nil
      enemy.transform(@parameters[1])
    end
    # 계속
    return true
  end
  #--------------------------------------------------------------------------
  # ● 애니메이션의 표시
  #--------------------------------------------------------------------------
  def command_337
    # 이테레이타로 처리
    iterate_battler(@parameters[0], @parameters[1]) do |battler|
      # 버틀러가 존재하는 경우
      if battler.exist?
        # 애니메이션 ID 를 설정
        battler.animation_id = @parameters[2]
      end
    end
    # 계속
    return true
  end
  #--------------------------------------------------------------------------
  # ● 데미지의 처리
  #--------------------------------------------------------------------------
  def command_338
    # 조작하는 값을 취득
    value = operate_value(0, @parameters[2], @parameters[3])
    # 이테레이타로 처리
    iterate_battler(@parameters[0], @parameters[1]) do |battler|
      # 버틀러가 존재하는 경우
      if battler.exist?
        # HP 를 변경
        battler.hp -= value
        # 전투중이라면
        if $game_temp.in_battle
          # 데미지를 설정
          battler.damage = value
          battler.damage_pop = true
        end
      end
    end
    # 계속
    return true
  end
  #--------------------------------------------------------------------------
  # ● 액션의 강제
  #--------------------------------------------------------------------------
  def command_339
    # 전투중이 아니면 무시
    unless $game_temp.in_battle
      return true
    end
    # 턴수가 0 이라면 무시
    if $game_temp.battle_turn == 0
      return true
    end
    # 이테레이타로 처리 (편의적인 것으로, 복수가 될 것은 없다)
    iterate_battler(@parameters[0], @parameters[1]) do |battler|
      # 버틀러가 존재하는 경우
      if battler.exist?
        # 액션을 설정
        battler.current_action.kind = @parameters[2]
        if battler.current_action.kind == 0
          battler.current_action.basic = @parameters[3]
        else
          battler.current_action.skill_id = @parameters[3]
        end
        # 행동 대상을 설정
        if @parameters[4] == -2
          if battler.is_a?(Game_Enemy)
            battler.current_action.decide_last_target_for_enemy
          else
            battler.current_action.decide_last_target_for_actor
          end
        elsif @parameters[4] == -1
          if battler.is_a?(Game_Enemy)
            battler.current_action.decide_random_target_for_enemy
          else
            battler.current_action.decide_random_target_for_actor
          end
        elsif @parameters[4] >= 0
          battler.current_action.target_index = @parameters[4]
        end
        # 강제 플래그를 설정
        battler.current_action.forcing = true
        # 액션이 유효하고 [곧바로 실행] 의 경우
        if battler.current_action.valid? and @parameters[5] == 1
          # 강제 대상의 버틀러를 설정
          $game_temp.forcing_battler = battler
          # 인덱스를 진행시킨다
          @index += 1
          # 종료
          return false
        end
      end
    end
    # 계속
    return true
  end
  #--------------------------------------------------------------------------
  # ● 배틀의 중단
  #--------------------------------------------------------------------------
  def command_340
    # 배틀 중단 플래그를 세트
    $game_temp.battle_abort = true
    # 인덱스를 진행시킨다
    @index += 1
    # 종료
    return false
  end
  #--------------------------------------------------------------------------
  # ● 메뉴 화면의 호출
  #--------------------------------------------------------------------------
  def command_351
    # 배틀 중단 플래그를 세트
    $game_temp.battle_abort = true
    # 메뉴 호출 플래그를 세트
    $game_temp.menu_calling = true
    # 인덱스를 진행시킨다
    @index += 1
    # 종료
    return false
  end
  #--------------------------------------------------------------------------
  # ● 세이브 화면의 호출
  #--------------------------------------------------------------------------
  def command_352
    # 배틀 중단 플래그를 세트
    $game_temp.battle_abort = true
    # 세이브 호출 플래그를 세트
    $game_temp.save_calling = true
    # 인덱스를 진행시킨다
    @index += 1
    # 종료
    return false
  end
  #--------------------------------------------------------------------------
  # ● 게임 오버
  #--------------------------------------------------------------------------
  def command_353
    # 게임 오버 플래그를 세트
    $game_temp.gameover = true
    # 종료
    return false
  end
  #--------------------------------------------------------------------------
  # ● 타이틀 화면에 되돌린다
  #--------------------------------------------------------------------------
  def command_354
    # 타이틀 화면에 되돌리는 플래그를 세트
    $game_temp.to_title = true
    # 종료
    return false
  end
  #--------------------------------------------------------------------------
  # ● 스크립트
  #--------------------------------------------------------------------------
  def command_355
    # script 에 1 행 째를 설정
    script = @list[@index].parameters[0] + "n"
    # 루프
    loop do
      # 다음의 이벤트 커멘드가 스크립트 2 행 째 이후의 경우
      if @list[@index+1].code == 655
        # script 에 2 행 째 이후를 추가
        script += @list[@index+1].parameters[0] + "n"
      # 이벤트 커멘드가 스크립트 2 행 째 이후가 아닌 경우
      else
        # 루프 중단
        break
      end
      # 인덱스를 진행시킨다
      @index += 1
    end
    # 평가
    result = eval(script)
    # 반환값이 false 의 경우
    if result == false
      # 종료
      return false
    end
    # 계속
    return true
  end
end


     이상입니다.
그다음은 메인이죠?

#==============================================================================
# ■ Main
#------------------------------------------------------------------------------
#  각 클래스의 정의가 끝난 후, 여기로부터 실제의 처리가 시작됩니다.
#==============================================================================
begin
  # 트란지션 준비
  Graphics.freeze
  # 씬 오브젝트 (타이틀 화면)를 작성
  $scene = Scene_Title.new
  # $scene 가 유효한 한계 main 메소드를 호출한다
  while $scene != nil
    $scene.main
  end
  # 페이드아웃
  Graphics.transition(20)
rescue Errno::ENOENT
  # 예외 Errno::ENOENT 를 보충
  # 파일을 오픈할 수 없었던 경우, 메세지를 표시해 종료한다
  filename = $!.message.sub("No such file or directory - ", "")
  print("파일 #{filename} 가 발견되지 않습니다.")
end
?

List of Articles
번호 제목 글쓴이 날짜 조회 수
8827 형제들이여 !!! 나를 구제해다오!! Ress 2006.01.26 223
8826 형제들이여 !!! 나를 구제해다오!! KaSsia 2006.01.25 263
8825 rpg2003에서 music음향이 작업시에는 실행되는데 게임을 실행하면 않되네요 ★샤일☆ 2007.01.03 784
8824 RPG2003의 그림들의 사이즈... MiNi'M' 2006.02.21 821
8823 RPG만들기2003에 관하여...정말 굼금해요~!~부탁드림 ∑☆メ이누∴。』 2005.08.09 577
8822 게이지바 구동 방법좀 <<게이지 유>> file 랑이a 2006.07.03 430
8821 길드는 어떻게 만드나요? 루넨스 2009.06.15 974
8820 길드는 어떻게 만드나요? 제로스 2009.06.15 1232
8819 동영상 관련및.. 급해요 ㅠ RML 2006.07.12 1483
8818 마법 연계 다시 질문!!! 제발 대답부탁!!; file 나르카이제 2005.06.15 331
8817 몬스터가없으면 다른곳으로 자동이동가능? Novelist 2006.08.29 277
8816 몬스터가없으면 다른곳으로 자동이동가능? CredMotion 2006.08.29 341
8815 스크립트로요,, 이동하는걸 보드게임처럼 할순 없나요? XLostTimesX 2006.01.09 429
8814 아이템창 같은 단축창를 만들려고하는데..[rpg2003] ScolPion 2006.04.15 572
8813 아이템창 같은 단축창를 만들려고하는데..[rpg2003] 방콕족의생활 2006.04.15 786
8812 질문! file 『Q트_아키』 2005.05.22 494
8811 "스크립트 데이터 읽기 실패" 라고 뜨는데.. 김세츠나 2009.07.31 1062
8810 "클래스가 등록되지 않았습니다"라니 -0-;;[RPG2003] Chrishyua .E 2007.03.02 700
8809 "클래스가 등록되지 않았습니다"라니 -0-;;[RPG2003] =ROD= 2007.03.07 886
8808 "파일 dmd 은 열지 않습니다" 이리저디 옮겼는데.. 윈드 2006.08.18 208
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 442 Next
/ 442


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

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