kone
sub_icon

소미소프트

줄 바꿈, RPGM VXA 스크립트) ▼ シーン ## 자동 줄바꿈.txt

2026-04-11 08:20:55
유틸
조회 8817 · 좋아요 2
스크립트
# DarkPlasma_AutoLineBreak for RPG Maker VX Ace
# 버전: 1.0.5 (LINE_MARGIN 상수 참조 수정 + 약간의 안정성 개선)
# 목표: 최대한 간단하게 유지하면서 에러 제거

module DarkPlasma
  module AutoLineBreak
    PROHIBIT_BEFORE = ',)]}、〕〉》」』】〙〗〟’”⦆»ゝゞーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇷ゚ㇺㇻㇼㇽㇾㇿ々〻‐゠–〜~?!‼⁇⁈⁉・:;/。.'.freeze
    PROHIBIT_AFTER  = '([{〔〈《「『【〘〖〝‘“⦅«'.freeze
    
    LINE_MARGIN     = 4
    WORD_BASE       = false   # true = 영어 단어 단위 시도 (아주 제한적)

    IGNORE_CLASS_NAMES = []   # 필요하면 여기에 클래스 이름 추가
  end
end

class Window_Base
  attr_accessor :ignore_auto_linebreak_temp

  def ignore_auto_linebreak?
    DarkPlasma::AutoLineBreak::IGNORE_CLASS_NAMES.include?(self.class.name) ||
    @ignore_auto_linebreak_temp
  end

  def start_ignore_auto_linebreak
    @ignore_auto_linebreak_temp = true
  end

  def finish_ignore_auto_linebreak
    @ignore_auto_linebreak_temp = false
  end

  def auto_line_width
    contents.width - DarkPlasma::AutoLineBreak::LINE_MARGIN
  end

  def prohibit_before?(char)
    DarkPlasma::AutoLineBreak::PROHIBIT_BEFORE.include?(char)
  end

  def prohibit_after?(char)
    DarkPlasma::AutoLineBreak::PROHIBIT_AFTER.include?(char)
  end

  # 자동 줄바꿈 필요 여부 판단 (VX Ace 한계로 매우 단순화됨)
  def should_auto_break_here?(c, pos)
    return false if ignore_auto_linebreak?
    return false if c == "\n" || c.nil? || c.empty?

    char_width = begin
      contents.text_width(c)
    rescue
      12   # 폰트/문자 문제 시 기본값
    end

    current_x = pos[:x]

    # 1. 기본 폭 초과 → 행두 금지 문자가 아니면 줄바꿈
    if current_x + char_width > auto_line_width
      return !prohibit_before?(c)
    end

    # 2. 행미 금지 문자 + 여유 공간 부족 시 강제 줄바꿈 시도
    if prohibit_after?(c) && current_x + char_width + DarkPlasma::AutoLineBreak::LINE_MARGIN > auto_line_width
      return true
    end

    # 3. 영어 단어 단위 (매우 제한적 – lookahead 불가)
    if DarkPlasma::AutoLineBreak::WORD_BASE &&
       pos[:last_char] == ' ' && c != ' ' && c =~ /\w/
      if current_x + char_width * 4 > auto_line_width   # 임의 예측
        return true
      end
    end

    false
  end
end

class Window_Base
  alias dp_alb_process_character process_character
  def process_character(c, text, pos)
    if ignore_auto_linebreak?
      dp_alb_process_character(c, text, pos)
      return
    end

    # 자동 줄바꿈 필요 시 먼저 줄 바꿈
    if should_auto_break_here?(c, pos)
      process_new_line(text, pos)
      pos[:x] = pos[:new_x]   # x 위치 초기화 (중요!)
    end

    # 마지막 문자 기억 (영어 옵션용)
    pos[:last_char] = c if c =~ /[\w\s]/

    # 원본 처리
    dp_alb_process_character(c, text, pos)
  end

  # \ALB[START] / \ALB[FINISH] 간단 구현
  alias dp_alb_process_escape_character process_escape_character
  def process_escape_character(code, text, pos)
    if code.upcase == 'ALB'
      if text.sub!(/^\[START\]/i, '')
        start_ignore_auto_linebreak
        return
      elsif text.sub!(/^\[FINISH\]/i, '')
        finish_ignore_auto_linebreak
        return
      end
    end

    dp_alb_process_escape_character(code, text, pos)
  end
end

# 레이아웃이 깨지기 쉬운 윈도우는 자동 줄바꿈 끄기
class Window_ChoiceList < Window_Command
  def ignore_auto_linebreak?
    true
  end
end

class Window_BattleLog < Window_Selectable
  def ignore_auto_linebreak?
    true
  end
end


적용된 게임 참조: https://kone.gg/s/somisoft/bC8e92EXqwOp90q_d0MzWb


용머리 게임 텍스트 자동 줄바꿈 스크립트

aHR0cHM6Ly9raW8uYWMvYy9jN251a3lBamxNSzZ6NERfQUZFNTBi


업로드한 파일은 바로 적용 못함

에디터로 스크립트 넣을 수 있는 상태에서 복사 붙여넣기용


▼ シーン ## 자동 줄바꿈.txt


▼ 적용 위치 ## 스크립트명

2
댓글 1개
댓글 쓰기
감사합니다
0 / 500
Poriuretan 수영부의 에이스
동인
uzaki
04.25 15119 37
Poriuretan 여름 해변에서 의기투합
동인
uzaki
04.25 17922 48
Poriuretan 시골누나
동인
uzaki
04.25 16032 46
Poriuretan 선생님
동인
uzaki
04.25 13078 31
Poriuretan 옆방의 아주머니
동인
uzaki
04.25 14040 28
Poriuretan 정오가 지난 오후의 단지아내
동인
uzaki
04.25 15496 30
Poriuretan 폭풍전의 도서실
동인
uzaki
04.25 11124 28
Poriuretan 장마철의 빨래방
동인
uzaki
04.25 11326 43
Poriuretan 갸루b의 파파카츠
동인
uzaki
04.25 12543 60
[미번][번역요청] 디펜드 다이어리~_ver1.02
미번
minki
04.25 20422 27
[미번] RJ01612483,RJ01414102
미번
페비
04.25 53448 261
[요청복구] RJ01412500 Night High 5
미번
아무일도없었다
04.25 18979 37
기번) 더블 유부녀(미검수)
번역
썩은동태눈깔맨
04.25 31876 106
특공위원회 오우카 RPG 0 이미지(ui) 번역 80% 진행
작업현황
joyed47106
04.25 6844 19
[한국어 자막판][구매보급][전편느긋오호】 다우너 오호고에 개변태 후배와 섹스라이프
소리
이름뭐하지
04.25 19484 69
[미번] 비주얼노벨계 야겜 11개
미번
미스터장
04.25 18937 92
기번) BBC×FAMILY~
번역
썩은동태눈깔맨
04.25 42368 215
(요청복구) 테러블 레버토리 v1.01
복구
kakinara12
04.25 38873 62
고블린 네스트 세이브 최신화 완
세이브
흰꼴뚜기
04.25 8515 15
RJ388166 에이전트 시리우스 DLC
복구
doritori
04.25 25891 63
개꽂혀서 최소 10시간 이상 박았던 게임들
후기 및 공략
dpgutlqkf
04.25 29647 82
~임신 전설~ 옛 용사인 나와 초변태 폭유 공주님×3의 모유 듬뿍 임신시키기 아이 만들기 마왕 봉인 전설♪
소리
dasdaa
04.25 23148 109
후타, 명방) [직번] 시한테 박는 니엔
동인
wa4231
04.25 15678 94
[구매보급]【사상 최고의 오호신음】몰락 메스가키 영애 음문 조교
소리
이름뭐하지
04.25 12959 63
(요청복구) カーテンのむこう NTR 커튼 너머 NTR ver.1.8
복구
sinryeong
04.25 27785 90
[기번] 사신상관EX+DLC 2.0.02
번역
풍수식노천탕
04.25 52026 185
(요청복구) 무치 무치 자매 환생 목적지에서 변태 봉사 생활
복구
sinryeong
04.25 20693 67
메르시 (오버워치)
영상
브레머튼
04.25 19287 101
(청아) 꾸준 연필 30주차
창작
지나가던사람
04.25 17093 28
[AI번역] [JUNN] 네토라레바에 - 인싸 여친의 SNS 네토라레 기록 2
동인
gkcuwuwlltnnrra
04.25 44369 153