2006.09.17 07:47

스크립트 문제 !

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  타이틀 화면의 처리를 실시하는 클래스입니다.
#==============================================================================


class Scene_Title
  #--------------------------------------------------------------------------
  # ● 메인 처리
  #--------------------------------------------------------------------------
  def main
    # 전투 테스트의 경우
    if $BTEST
      battle_test
      return
    end
    # 데이타베이스를 로드
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes       = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items         = load_data("Data/Items.rxdata")
    $data_weapons       = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies       = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")
    # 시스템 오브젝트를 작성
    $game_system = Game_System.new
    # 타이틀 그래픽을 작성
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)
    # 커멘드 윈도우를 작성
    s1 = "시작하기"
    s2 = "불러오기"
    s3 = "게임종료"
    @command_window = Window_Command.new(192, [s1, s2])
    @command_window.back_opacity = 160
    @command_window.x = 550 - @command_window.width / 2
    @command_window.y = 400
    # 콘티 뉴 유효 판정
    # 세이브 파일이 하나에서도 존재할지를 조사한다
    # 유효하면 @continue_enabled 를 true, 무효라면 false 로 한다
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    # 콘티 뉴가 유효한 경우, 커서를 콘티 뉴에 맞춘다
    # 무효인 경우, 콘티 뉴의 문자를 그레이 표시로 한다
    if @continue_enabled
      @command_window.index = 1
    else
      @command_window.disable_item(1)
    end
    # 타이틀 BGM 를 연주
    $game_system.bgm_play($data_system.title_bgm)
    # ME, BGS 의 연주를 정지
    Audio.me_stop
    Audio.bgs_stop
    # 트란지션 실행
    Graphics.transition
    # 메인 루프
    loop do
      # 게임 화면을 갱신
      Graphics.update
      # 입력 정보를 갱신
      Input.update
      # 프레임 갱신
      update
      # 화면이 바뀌면 루프를 중단
      if $scene != self
        break
      end
    end
    # 트란지션 준비
    Graphics.freeze
    # 커멘드 윈도우를 해방
    @command_window.dispose
    # 타이틀 그래픽을 해방
    @sprite.bitmap.dispose
    @sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    # 커멘드 윈도우를 갱신
    @command_window.update
    # C 버튼이 밀렸을 경우
    if Input.trigger?(Input::C)
      # 커멘드 윈도우의 커서 위치에서 분기
      case @command_window.index
      when 0  # 뉴 게임
        command_new_game
      when 1  # 콘티 뉴
        command_continue
      when 2  # 슛다운
        command_shutdown
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 커멘드 : 뉴 게임
  #--------------------------------------------------------------------------
  def command_new_game
    # 결정 SE 를 연주
    $game_system.se_play($data_system.decision_se)
    # BGM 를 정지
    Audio.bgm_stop
    # 플레이 시간 계측용의 프레임 카운트를 리셋트
    Graphics.frame_count = 0
    # 각종 게임 오브젝트를 작성
    $game_temp          = Game_Temp.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables     = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_screen        = Game_Screen.new
    $game_actors        = Game_Actors.new
    $game_party         = Game_Party.new
    $game_troop         = Game_Troop.new
    $game_map           = Game_Map.new
    $game_player        = Game_Player.new
    # 초기 파티를 셋업
    $game_party.setup_starting_members
    # 초기 위치의 맵을 셋업
    $game_map.setup($data_system.start_map_id)
    # 플레이어를 초기 위치에 이동
    $game_player.moveto($data_system.start_x, $data_system.start_y)
    # 플레이어를 리프레쉬
    $game_player.refresh
    # 맵으로 설정되어 있는 BGM 와 BGS 의 자동 변환을 실행
    $game_map.autoplay
    # 맵을 갱신 (병렬 이벤트 실행)
    $game_map.update
    # 맵 화면으로 전환해
    $scene = Scene_Map.new
  end
  #--------------------------------------------------------------------------
  # ● 커멘드 : 콘티 뉴
  #--------------------------------------------------------------------------
  def command_continue
    # 콘티 뉴가 무효의 경우
    unless @continue_enabled
      # 버저 SE 를 연주
      $game_system.se_play($data_system.buzzer_se)
      return
    end
    # 결정 SE 를 연주
    $game_system.se_play($data_system.decision_se)
    # 로드 화면으로 전환해
    $scene = Scene_Load.new
  end
  #--------------------------------------------------------------------------
  # ● 커멘드 : 슛다운
  #--------------------------------------------------------------------------
  def command_shutdown
    # 결정 SE 를 연주
    $game_system.se_play($data_system.decision_se)
    # BGM, BGS, ME 를 페이드아웃
    Audio.bgm_fade(800)
    Audio.bgs_fade(800)
    Audio.me_fade(800)
    # 슛다운
    $scene = nil
  end
  #--------------------------------------------------------------------------
  # ● 전투 테스트
  #--------------------------------------------------------------------------
  def battle_test
    # 데이타베이스 (전투 테스트용)를 로드
    $data_actors        = load_data("Data/BT_Actors.rxdata")
    $data_classes       = load_data("Data/BT_Classes.rxdata")
    $data_skills        = load_data("Data/BT_Skills.rxdata")
    $data_items         = load_data("Data/BT_Items.rxdata")
    $data_weapons       = load_data("Data/BT_Weapons.rxdata")
    $data_armors        = load_data("Data/BT_Armors.rxdata")
    $data_enemies       = load_data("Data/BT_Enemies.rxdata")
    $data_troops        = load_data("Data/BT_Troops.rxdata")
    $data_states        = load_data("Data/BT_States.rxdata")
    $data_animations    = load_data("Data/BT_Animations.rxdata")
    $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")
    $data_common_events = load_data("Data/BT_CommonEvents.rxdata")
    $data_system        = load_data("Data/BT_System.rxdata")
    # 플레이 시간 계측용의 프레임 카운트를 리셋트
    Graphics.frame_count = 0
    # 각종 게임 오브젝트를 작성
    $game_temp          = Game_Temp.new
    $game_system        = Game_System.new
    $game_switches      = Game_Switches.new
    $game_variables     = Game_Variables.new
    $game_self_switches = Game_SelfSwitches.new
    $game_screen        = Game_Screen.new
    $game_actors        = Game_Actors.new
    $game_party         = Game_Party.new
    $game_troop         = Game_Troop.new
    $game_map           = Game_Map.new
    $game_player        = Game_Player.new
    # 전투 테스트용의 파티를 셋업
    $game_party.setup_battle_test_members
    # 무리 ID, 도주 가능 플래그, 배틀 가방을 설정
    $game_temp.battle_troop_id = $data_system.test_troop_id
    $game_temp.battle_can_escape = true
    $game_map.battleback_name = $data_system.battleback_name
    # 배틀 개시 SE 를 연주
    $game_system.se_play($data_system.battle_start_se)
    # 배틀 BGM 를 연주
    $game_system.bgm_play($game_system.battle_bgm)
    # 배틀 화면으로 전환해
    $scene = Scene_Battle.new
  end
end


--------------------------------------------------------


이 스크립트 에서요


 


    $game_player.refresh


 


이부분이 오류나는데 문제점이 뭐에요?


---------------------------------------------------------


#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  게임중의 모든 윈도우의 슈퍼 클래스입니다.
#==============================================================================


class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #     x      : 윈도우의 X 좌표
  #     y      : 윈도우의 Y 좌표
  #     width  : 윈도우의 폭
  #     height : 윈도우의 높이
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super()
    @windowskin_name = $game_system.windowskin_name
    self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    self.x = x
    self.y = y
    self.width = width
    self.height = height
    self.z = 100
    Font.default_size = 20
    Font.default_name = ["바보","바보"]
  end
  #--------------------------------------------------------------------------
  # ● 해방
  #--------------------------------------------------------------------------
  def dispose
    # 윈도우 내용의 비트 맵이 설정되어 있으면 해방
    if self.contents != nil
      self.contents.dispose
    end
    super
  end
  #--------------------------------------------------------------------------
  # ● 문자색취득
  #     n : 문자색번호 (0~7)
  #--------------------------------------------------------------------------
  def text_color(n)
    case n
    when 0
      return Color.new(255, 255, 255, 255)
    when 1
      return Color.new(128, 128, 255, 255)
    when 2
      return Color.new(255, 128, 128, 255)
    when 3
      return Color.new(128, 255, 128, 255)
    when 4
      return Color.new(128, 255, 255, 255)
    when 5
      return Color.new(255, 128, 255, 255)
    when 6
      return Color.new(255, 255, 128, 255)
    when 7
      return Color.new(192, 192, 192, 255)
    else
      normal_color
    end
  end
  #--------------------------------------------------------------------------
  # ● 통상 문자색의 취득
  #--------------------------------------------------------------------------
  def normal_color
    return Color.new(255, 255, 255, 255)
  end
  #--------------------------------------------------------------------------
  # ● 무효 문자색의 취득
  #--------------------------------------------------------------------------
  def disabled_color
    return Color.new(255, 255, 255, 128)
  end
  #--------------------------------------------------------------------------
  # ● 시스템 문자색의 취득
  #--------------------------------------------------------------------------
  def system_color
    return Color.new(192, 224, 255, 255)
  end
  #--------------------------------------------------------------------------
  # ● 핀치 문자색의 취득
  #--------------------------------------------------------------------------
  def crisis_color
    return Color.new(255, 255, 64, 255)
  end
  #--------------------------------------------------------------------------
  # ● 전투 불능 문자색의 취득
  #--------------------------------------------------------------------------
  def knockout_color
    return Color.new(255, 64, 0)
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    super
    # 윈도우 스킨이 변경되었을 경우, 재설정
    if $game_system.windowskin_name != @windowskin_name
      @windowskin_name = $game_system.windowskin_name
      self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    end
  end
  #--------------------------------------------------------------------------
  # ● 그래픽의 묘화
  #     actor : 엑터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #--------------------------------------------------------------------------
  def draw_actor_graphic(actor, x, y)
    bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
    cw = bitmap.width / 4
    ch = bitmap.height / 4
    src_rect = Rect.new(0, 0, cw, ch)
    self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  end
  #--------------------------------------------------------------------------
  # ● 이름의 묘화
  #     actor : 엑터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #--------------------------------------------------------------------------
  def draw_actor_name(actor, x, y)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 120, 32, actor.name)
  end
  #--------------------------------------------------------------------------
  # ● 클래스의 묘화
  #     actor : 엑터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #--------------------------------------------------------------------------
  def draw_actor_class(actor, x, y)
    self.contents.font.color = normal_color
    self.contents.draw_text(x, y, 236, 32, actor.class_name)
  end
  #--------------------------------------------------------------------------
  # ● 레벨의 묘화
  #     actor : 엑터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #--------------------------------------------------------------------------
  def draw_actor_level(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, "Lv")
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # ● 묘화용의 스테이트 캐릭터 라인 작성
  #     actor       : 엑터
  #     width       : 묘화처의 폭
  #     need_normal : [정상] 이 필요한가 어떤가 (true / false)
  #--------------------------------------------------------------------------
  def make_battler_state_text(battler, width, need_normal)
    # 괄호의 폭을 취득
    brackets_width = self.contents.text_size("[]"). width
    # 스테이트명의 캐릭터 라인을 작성
    text = ""
    for i in battler.states
      if $data_states[i]. rating >= 1
        if text == ""
          text = $data_states[i]. name
        else
          new_text = text + "/" + $data_states[i]. name
          text_width = self.contents.text_size(new_text). width
          if text_width > width - brackets_width
            break
          end
          text = new_text
        end
      end
    end
    # 스테이트명의 캐릭터 라인이 하늘의 경우는 "[정상]" 으로 한다
    if text == ""
      if need_normal
        text = "[정상]"
      end
    else
      # 괄호를 붙인다
      text = "[" + text + "]"
    end
    # 완성한 캐릭터 라인을 돌려준다
    return text
  end
  #--------------------------------------------------------------------------
  # ● 스테이트의 묘화
  #     actor : 엑터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #     width : 묘화처의 폭
  #--------------------------------------------------------------------------
  def draw_actor_state(actor, x, y, width = 112)
    text = make_battler_state_text(actor, width, true)
    self.contents.font.color = actor.hp == 0 ?  knockout_color : normal_color
    self.contents.draw_text(x, y, width, 32, text)
  end
  #--------------------------------------------------------------------------
  # ● EXP 의 묘화
  #     actor : 엑터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #--------------------------------------------------------------------------
  def draw_actor_exp(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 24, 32, "E")
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
    self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
    self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
  end
  #--------------------------------------------------------------------------
  # ● HP 의 묘화
  #     actor : 엑터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #     width : 묘화처의 폭
  #--------------------------------------------------------------------------
  def draw_actor_hp(actor, x, y, width = 144)
    # 캐릭터 라인 "HP" 를 묘화
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
    # MaxHP 를 묘화 하는 스페이스가 있을까 계산
    if width - 32 >= 108
      hp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      hp_x = x + width - 48
      flag = false
    end
    # HP 를 묘화
    self.contents.font.color = actor.hp == 0 ?  knockout_color :
      actor.hp <= actor.maxhp / 4 ?  crisis_color : normal_color
    self.contents.draw_text(hp_x, y, 48, 32, actor.hp.to_s, 2)
    # MaxHP 를 묘화
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(hp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(hp_x + 60, y, 48, 32, actor.maxhp.to_s)
    end
  end
  #--------------------------------------------------------------------------
  # ● SP 의 묘화
  #     actor : 엑터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #     width : 묘화처의 폭
  #--------------------------------------------------------------------------
  def draw_actor_sp(actor, x, y, width = 144)
    # 캐릭터 라인 "SP" 를 묘화
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
    # MaxSP 를 묘화 하는 스페이스가 있을까 계산
    if width - 32 >= 108
      sp_x = x + width - 108
      flag = true
    elsif width - 32 >= 48
      sp_x = x + width - 48
      flag = false
    end
    # SP 를 묘화
    self.contents.font.color = actor.sp == 0 ?  knockout_color :
      actor.sp <= actor.maxsp / 4 ?  crisis_color : normal_color
    self.contents.draw_text(sp_x, y, 48, 32, actor.sp.to_s, 2)
    # MaxSP 를 묘화
    if flag
      self.contents.font.color = normal_color
      self.contents.draw_text(sp_x + 48, y, 12, 32, "/", 1)
      self.contents.draw_text(sp_x + 60, y, 48, 32, actor.maxsp.to_s)
    end
  end
  #--------------------------------------------------------------------------
  # ● 파라미터의 묘화
  #     actor : 엑터
  #     x     : 묘화처 X 좌표
  #     y     : 묘화처 Y 좌표
  #     type  : 파라미터의 종류 (0~6)
  #--------------------------------------------------------------------------
  def draw_actor_parameter(actor, x, y, type)
    case type
    when 0
      parameter_name = $data_system.words.atk
      parameter_value = actor.atk
    when 1
      parameter_name = $data_system.words.pdef
      parameter_value = actor.pdef
    when 2
      parameter_name = $data_system.words.mdef
      parameter_value = actor.mdef
    when 3
      parameter_name = $data_system.words.str
      parameter_value = actor.str
    when 4
      parameter_name = $data_system.words.dex
      parameter_value = actor.dex
    when 5
      parameter_name = $data_system.words.agi
      parameter_value = actor.agi
    when 6
      parameter_name = $data_system.words.int
      parameter_value = actor.int
    end
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 120, 32, parameter_name)
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 120, y, 36, 32, parameter_value.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # ● 아이템명의 묘화
  #     item : 아이템
  #     x    : 묘화처 X 좌표
  #     y    : 묘화처 Y 좌표
  #--------------------------------------------------------------------------
  def draw_item_name(item, x, y)
    if item == nil
      return
    end
    bitmap = RPG::Cache.icon(item.icon_name)
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
    self.contents.font.color = normal_color
    self.contents.draw_text(x + 28, y, 212, 32, item.name)
  end
end
----------------------------------------------------------------------------


여기는


 


    self.contents.font.color = actor.hp == 0 ?  knockout_color :


 


이부분이 오류나네요

?

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 822
8823 RPG만들기2003에 관하여...정말 굼금해요~!~부탁드림 ∑☆メ이누∴。』 2005.08.09 577
8822 게이지바 구동 방법좀 <<게이지 유>> file 랑이a 2006.07.03 431
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(김원배) | 사신지(김병국)