맵 이름을 뜨게 하는 스크립트에서요...

by メIllusion。 posted Jun 02, 2005
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

>맵 이름을 뜨게하는 스크립트를 구하긴 했는데...
>
>특정경우에 맵이름을 뜨지 않게 하고 싶은데...
>
>그럴경우 어떤 명령어를 집어 넣어야 할까요???
>
>C에서는 문자변수중에서 좌측 첫글자만 뽑아오는 명령어가 있었는데...
>
>그런 명령어가 역활을 하는 명령어가 루비에도 있다고 하면
>
>Ruby에서는 어떤 명령어가 그 역활을 하는지좀 알고 싶어요...
>
>그것만 알면 if문으로 검사해서 대충 바꿔볼수있을꺼 같아서 말이죠^^;;;
>
>
>-- 혹시 특정문자를 집어넣으면 맵이름이 뜨지 않는 맵이름뜨는 스크립트가 --
>-- 존재하고 있다면 그 스크립트를 좀 알려주시지 않겠어요..?? --
>-- 없다면 위에 명령어관련 물음이라도.. 제발.. ㅜ.ㅜ--


제가 사용하고 있는 스크립트 올려드리겠습니다. 보통 맵 이름 띄우는 스크립트에서는

맵 이름 앞에 . 을 찍어주면 이름이 뜨지 않습니다.

# ▼▲▼ XRXS20. 맵명 표시 윈도우 ver.1.04 ▼▲▼
# by , 앵아 재흙, fukuyama
#
# 맵명의 선두에 피리어드 「.」이 있으면(자) 맵명을 표시하지 않는다.
#
module XRXS20_Config
  # true (이)라면 전투후 , 맵으로 돌아왔을 경우도 표시한다
  SCENE_BATTLE_TO_SCENE_MAP = true
end

#==============================================================================
# ■ Window_Map_Name
#------------------------------------------------------------------------------
#  맵명을 표시하는 윈도우입니다.
#==============================================================================
class Window_Map_Name < Window_Base
  attr_accessor :text

  #--------------------------------------------------------------------------
  # ● 오브젝트 초기
  #--------------------------------------------------------------------------
  def initialize
    super(460, 0, 180, 64)
    self.contents = Bitmap.new(self.width - 32, self.height - 32)
    @align = 2
    @showing_time = -1
    @text_color   = Color.new(255, 255, 0, 255)      # 지명:묘사 문자색
  end
  #--------------------------------------------------------------------------
  # ● 텍스트 설정
  # text : 윈도우에 표시하는 캐릭터 라인
  # align : alignment (0..왼쪽 가지런히 해1..centering ,2..오른쪽맞춤)
  #--------------------------------------------------------------------------
  def set_text(text, align = 1)
    # 텍스트와 alignment의 적어도 한편이 전회와 다른 경우
    if text != @text or align != @align
      @text = text
      @align = align
      if text.empty? or text =~ /^./
        @showing_time = -1
        self.contents_opacity = 100
        self.visible = false
      else
        @showing_time = 100
        self.contents_opacity = 255
        self.visible = true
        self.contents.clear
        x = 4
        y = 0
        width = self.contents.width - 8
        str = " " +@text+ " "
        self.contents.font.color = Color.new(  0,  0,  0, 192)
        self.contents.draw_text(x+2, y+2, width, 32, str, @align)
        self.contents.font.color = Color.new( 64, 64, 64, 192)
        self.contents.draw_text(x-1, y-1, width, 32, str, @align)
        self.contents.draw_text(x+1, y-1, width, 32, str, @align)
        self.contents.draw_text(x-1, y+1, width, 32, str, @align)
        self.contents.draw_text(x+1, y+1, width, 32, str, @align)
        self.contents.font.color = @text_color
        self.contents.draw_text(x,   y,   width, 32, str, @align)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 재묘화
  #--------------------------------------------------------------------------
  def update
    return if @showing_time < 0
    @showing_time -= 1
  end
end
#==============================================================================
# ■ Scene_Map
#==============================================================================
class Scene_Map
  def initialize_map_name_window(text = nil)
    if @map_name_window.nil?
      @map_name_window = Window_Map_Name.new
      @map_name_window.opacity = 100
      @map_name_window.text = text if not text.nil?
    end
  end
  #--------------------------------------------------------------------------
  # ● 메인 처리
  #--------------------------------------------------------------------------
  alias xrxs20_main main
  def main
    # 지명 윈도우를 작성
    initialize_map_name_window
    # 되돌리는
    xrxs20_main
    # 지명 윈도우를 해방
    @map_name_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  alias xrxs20_update update
  def update
    # 지명 윈도우의 갱신
    @map_name_window.set_text($game_map.name)
    @map_name_window.update
    xrxs20_update
  end
end
#==============================================================================
# ■ Game_Map
#==============================================================================
class Game_Map
  #--------------------------------------------------------------------------
  # ● 맵명을 취득
  #--------------------------------------------------------------------------
  def name
    $map_infos = load_data("Data/MapInfos.rxdata") if $map_infos.nil?
    $map_infos[@map_id].name
  end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 메인 처리
  #--------------------------------------------------------------------------
  alias xrxs20_main main
  def main
    xrxs20_main
    if $scene.is_a?(Scene_Map) and (not XRXS20_Config::SCENE_BATTLE_TO_SCENE_MAP)
      $scene.initialize_map_name_window($game_map.name)
    end
  end
end


이건 제가 쓰고 있는 것이며, 약간 수정되어 있을겁니다. 제 취향에 맞게..하하하..