kone
sub_icon

소미소프트

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

2026-04-11 08:20:55
유틸
조회 8738 · 좋아요 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
나에게 언홀메는 계륵이다...
일반
oooomen
05.19 2144 0
버그픽스 내역 개웃기네 ㅋㅋㅋ
일반
vivy
05.19 3812 1
혹시 여름의 14일 같은 도트 야겜 추천좀 가능할까여?
질문
muziz
05.19 4910 1
내가 쓸려고 만든 유니티 버전별 폰트랑 어디서 구해온거 (오토트랜스용)
유틸
neighborsbear
05.19 6750 4
윈11 미연시 번역 요즘 어떤거 씀?
질문
KrEam
05.19 2734 0
야만족에게 노려진 마을 후기
후기 및 공략
asdf788
05.19 4442 2
시니시스타2 임신 질문
질문
sksmszofl
05.19 1875 0
의술사 몇가지 질문좀
질문
부탄가스
05.19 6579 0
의술사 ex엔딩 중간에 세이브못하나
질문
simya1557
05.19 1914 0
던브) 폴라리스 딸내미 좆간지네;;
일반
nagisa8262
05.19 4365 0
5월말에 확실히 뭐가 많긴많네
일반
ㅇㅇ
05.19 4312 0
의술사 누군가를 위한 반지 입수처가 어떻게 됨?
질문
이상히상
05.19 3931 0
비월선행록 불당?이 어디에 있냐?
질문
!%#2;
05.19 2043 0
약스포)의술사 고난이도 적 체력 엄청 높네...
일반
shwarzschild
05.19 1651 0
비월선행록 파공반지 퀘 어케 깸?
질문
rt67hd
05.19 3852 0
Sinisistar2 새지역 해보신분 있으심?
질문
diproation
05.19 2603 0
오래된 하드 3TB 날렸다
일반
알기갹18
05.19 3176 0
아유라 크라이시스 도움
질문
jpppp
05.19 3700 0
의술사 주인공 공식설정으로 잘생겼구나
일반
ㅇㅇ
05.19 3074 0
[복구요청] 소년용사 켄
요청
jh2025
05.19 5131 1
평범한 현실 남매 IN 섹스하지 않으면 나올 수 없는 방 질문
질문
난민1호
05.19 4678 0
게임 좀 찾아줄 사람. (예시 이미지 있음)
질문
bstbtt
05.19 7183 1
던브) 이거 무슨 버그임?
질문
nagisa8262
05.19 4772 1
닥눈삼개월만에 여기서 제일 꼴리는 단어 찾았다
일반
39892
05.19 2030 0
의술사 2회차 질문 입니당
질문
yaworld
05.19 2944 0
던브) 폴라리스랑 결혼하고싶은데 못한다니 너무 아쉽다
일반
nagisa8262
05.19 2292 0
안돼 트랜스크랩이 또 버전업을 해버렸어
일반
날개 로봇
05.19 2424 6
[번역요청] 牛娘 밀피의 음욕 트랩 조교
미번
너무타박하지말아줘
05.19 17191 39
좀더! 임신! 불꽃 시리즈(밀크 팩토리) 이식, 번역 작업 계획 정리
작업현황
joyed47106
05.19 6573 39
생각보다 요청 복구 탭에 영상을 복구해달라는 글은 많이 안보이네
일반
마른안주
05.19 3614 -1