조회 수 123 추천 수 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
번호 제목 글쓴이 날짜 조회 수
2467 여러분 스트립트와 비교만 해주시면 됩니다. 간단해요 ^^ file 초보XPer 2006.01.07 269
2466 밑에꺼랑 다른 질문. file Novelist 2006.01.07 157
2465 rpgxp 는 문장 쓸때 얼굴 그림이 안나오나요? 대털 2006.01.07 435
2464 처음으로 질문 올립니다. RPG2003에서... 류비혼 2006.01.07 497
2463 여러분 스트립트와 비교만 해주시면 됩니다. 간단해요 ^^ Novelist 2006.01.07 140
2462 XP - [타이머] 타이머가 안 보이게 하는 법. 수수 2006.01.07 332
2461 rpgxp] xp 스킬에서요 , End 2006.01.07 374
2460 그림 문제입니다;; 플로。 2006.01.07 151
2459 키입력의 대한질문.. 다크아머 2006.01.07 139
2458 키입력의 대한질문.. 무명인간 2006.01.07 196
» 천공,농장만든이님 꼭 봐주세요 농장만든이 2006.01.07 123
2456 온라인게임의 몬스터를 몬스터칩으로 봐꿀려면 허락받고해야되나요? 뇌류 2006.01.06 363
2455 간단한(?)질문 하나!! 『연금술사』 2006.01.06 90
2454 간단한(?)질문 하나!! Ress 2006.01.06 118
2453 그림 문제입니다;; file Novelist 2006.01.06 361
2452 타이틀에 넣을 글씨를 요청하고 싶은데... 다크아머 2006.01.06 146
2451 제가 제 설정창에 링크를 달려고 하는데... khost 2006.01.06 244
2450 +_+;; 잘못 올렸네요;;; 천공MiD짱 2006.01.06 296
2449 몬스터가 공격을안해요.. 블랙호크 2006.01.06 123
2448 Dunky`s answer ! 『덩키동크』 2006.01.06 127
Board Pagination Prev 1 ... 314 315 316 317 318 319 320 321 322 323 ... 442 Next
/ 442


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

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