조회 수 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 쯔꾸르 mv 게임을 apk 파일로 변환했는데... 1 박하맛 2023.01.14 1332
8826 쯔꾸르 젖소이야기 결혼 방법좀 알려주세요... 2 백지씨 2021.12.20 2627
8825 apk포팅 승인 어케 하나요? game메이커xp 2021.11.29 1258
8824 Yanfly님의 Action Sequence Pack 질문드립니다 Neuromancer 2021.07.15 1542
8823 싸게 MV 를 먼저? 아니면 돈을 더 들어서라도 MZ? 2 Xatra 2021.07.06 1753
8822 RMMV - 스탯창과 대화창 변견 관련 질문입니다. (초보입니다 도움좀 주세요 ㅜㅜ) 2 scribble 2021.01.22 1553
8821 아오오니를 하는 사람인데요 질문 두가지가 있어요 1 오니개무서워 2021.01.16 1635
8820 재밌는게임 land_tnt 2020.12.07 1455
8819 c언어 질문 세종기항19 2020.11.10 1685
8818 코딩 질문 1 세종기항19 2020.11.08 1541
8817 혹시나 물어보는데 드래곤규 2020.11.07 1402
8816 오픈보 게임 더블드래곤 리로디드 얼티네이트에 대해 궁금 이부닝 2020.09.09 1224
8815 상태이상 확률 결정 스트레이보우 2020.09.02 1007
8814 다음 인디사이드 제작대회는 언제쯤 열릴까요? WOONAALAA 2020.05.23 963
8813 xp로 제작된 어플 실행자체가 안된다는 분이 있습니다.(제생각엔 apk로 변환하는 과정에서 버전자체가 낮은 것 같습니다) 1 라엔 2020.05.04 1416
8812 apk 포팅하는데 게임 이름이 필요합니다 뜨는데 1 kashu 2020.05.03 1350
8811 쯔꾸르VX Ace렉먹음 도와주세요... 랖랖 2020.03.22 1780
8810 안녕하세요 1 청월령 2020.02.14 834
8809 포팅 중 '게임 이름이 필요합니다' 오류 2 아이비스 2020.02.11 817
8808 RPGMV 거리 추적 1 정욱 2020.01.19 932
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(김원배) | 사신지(김병국)