Skip to content

API UO BookSetPageText ko

Codex edited this page Sep 23, 2026 · 1 revision

UO.BookSetPageText

ClassicUO / Basic IDE

Home · API · Books

열린 편집 가능한 책의 한 페이지를 바꿉니다.

정확한 구문

UO.BookSetPageText(Page:Any, Text:Any) -> Unit

매개변수

  • Page — 1부터 시작하는 페이지 번호입니다. 책 ID가 아니며 전체 페이지 수는 서버가 제공합니다.
  • Text — 텍스트: Chr(10)은 줄 바꿈, Chr(13)은 제거됩니다. 페이지당 최대 10줄, 줄당 53자이며 NUL은 금지됩니다.

반환값

Unit: 반환값이 없습니다. 쓰기 요청이며 TRUE/FALSE나 서버 완료 확인이 아닙니다. 서버가 편집을 거절할 수 있습니다.

동작

  • 먼저 게임 동작으로 대상 책을 여세요. 마지막으로 연 책을 사용하며 ID 인수는 없습니다. 여러 책이면 대상을 확인하세요. Get은 받은 내용만 읽고 없는 페이지를 요청하지 않습니다.
  • 관리자는 그래픽 없이도 세션에 책을 보관합니다. 게임 창을 닫고 다시 열어도 책과 초안은 유지됩니다. 책 자체를 닫으면 열린 책에서 제외되고 연결이 끊기면 서버 책이 초기화됩니다.
  • 편집 가능한 책에만 쓸 수 있습니다. 잘못된 페이지와 너무 긴 텍스트는 거절됩니다. BookSetText는 보내기 전에 모든 페이지를 검사하므로 뒤쪽 오류로 일부만 기록되지 않습니다.

내부 함수: 호출부터 결과까지

서버는 헤더, 페이지 수와 본문을 전송합니다. SessionBooks는 전체 패킷을 검사하고 저장하며 화면을 갱신합니다. Basic은 bridge로 마지막 책을 고르고 SessionBook은 내용을 읽거나 검사 후 쓰기 패킷을 보냅니다. ModernBookGump는 같은 데이터를 표시하고 그래픽 분리 시 초안을 보관합니다.

1. GetOpenBook

먼저 게임 동작으로 대상 책을 여세요. 마지막으로 연 책을 사용하며 ID 인수는 없습니다. 여러 책이면 대상을 확인하세요. Get은 받은 내용만 읽고 없는 페이지를 요청하지 않습니다.

관리자는 그래픽 없이도 세션에 책을 보관합니다. 게임 창을 닫고 다시 열어도 책과 초안은 유지됩니다. 책 자체를 닫으면 열린 책에서 제외되고 연결이 끊기면 서버 책이 초기화됩니다.

프로젝트 소스: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 함수 GetOpenBook.

2. SessionBooks.ReceiveHeader/ReceivePages; SessionBook.Yoko*

편집 가능한 책에만 쓸 수 있습니다. 잘못된 페이지와 너무 긴 텍스트는 거절됩니다. BookSetText는 보내기 전에 모든 페이지를 검사하므로 뒤쪽 오류로 일부만 기록되지 않습니다.

Unit: 반환값이 없습니다. 쓰기 요청이며 TRUE/FALSE나 서버 완료 확인이 아닙니다. 서버가 편집을 거절할 수 있습니다.

프로젝트 소스: src/ClassicUO.Client/Game/Managers/SessionBooks.cs; 함수 SessionBooks.ReceiveHeader/ReceivePages; SessionBook.Yoko*.

보조 함수 전체가 제공됩니다. TRUE는 로컬 검사와 호출을 했다는 뜻일 뿐 서버 저장 확인이 아닙니다.

예제

직접 사용

# 직접 사용
#
# 열린 편집 가능한 책의  페이지를 바꿉니다.
#
# Unit: 반환값이 없습니다. 쓰기 요청이며 TRUE/FALSE 서버 완료 확인이 아닙니다. 서버가 편집을 거절할  있습니다.

SUB Main()
    # 대상 책이 열려 있고 필요한 페이지를 받았으며 쓰기에는 편집 권한이 있다고 가정합니다. 1, 2, 3 페이지 번호이므로 존재를 확인하세요. 이름과 본문은 예시입니다.

    UO.BookSetPageText(2, "Camp A")
END SUB

매개변수 및 실행 설명:

  • 대상 책이 열려 있고 필요한 페이지를 받았으며 쓰기에는 편집 권한이 있다고 가정합니다. 1, 2, 3은 페이지 번호이므로 존재를 확인하세요. 이름과 본문은 예시입니다.

실제 활용

# 실제 활용
#
# 열린 편집 가능한 책의  페이지를 바꿉니다.
#
# Unit: 반환값이 없습니다. 쓰기 요청이며 TRUE/FALSE 서버 완료 확인이 아닙니다. 서버가 편집을 거절할  있습니다.

SUB Main()
    # 대상 책이 열려 있고 필요한 페이지를 받았으며 쓰기에는 편집 권한이 있다고 가정합니다. 1, 2, 3 페이지 번호이므로 존재를 확인하세요. 이름과 본문은 예시입니다.

    UO.BookSetPageText(1, "Supplies" + Chr(10) + "Bandages" + Chr(10) + "Food")
END SUB

매개변수 및 실행 설명:

  • 대상 책이 열려 있고 필요한 페이지를 받았으며 쓰기에는 편집 권한이 있다고 가정합니다. 1, 2, 3은 페이지 번호이므로 존재를 확인하세요. 이름과 본문은 예시입니다.

전체 보조 함수

# 전체 보조 함수
#
# 열린 편집 가능한 책의  페이지를 바꿉니다.
#
# Unit: 반환값이 없습니다. 쓰기 요청이며 TRUE/FALSE 서버 완료 확인이 아닙니다. 서버가 편집을 거절할  있습니다.

SUB Main()
    # 대상 책이 열려 있고 필요한 페이지를 받았으며 쓰기에는 편집 권한이 있다고 가정합니다. 1, 2, 3 페이지 번호이므로 존재를 확인하세요. 이름과 본문은 예시입니다.
    # 보조 함수 전체가 제공됩니다. TRUE 로컬 검사와 호출을 했다는 뜻일  서버 저장 확인이 아닙니다.

    VAR requested = AppendNote(1, "Return before night")
END SUB

FUNCTION AppendNote(page, line)
    IF Len(line) > 53 THEN
        RETURN FALSE
    END IF
    VAR previous = UO.BookGetPageText(page)
    IF previous = "" THEN
        UO.BookSetPageText(page, line)
        RETURN TRUE
    END IF
    VAR lineCount = 1
    FOR VAR index = 1 TO Len(previous)
        IF Mid(previous, index, 1) = Chr(10) THEN
            lineCount = lineCount + 1
        END IF
    NEXT
    IF lineCount >= 10 THEN
        RETURN FALSE
    END IF
    UO.BookSetPageText(page, previous + Chr(10) + line)
    RETURN TRUE
END FUNCTION

매개변수 및 실행 설명:

  • 대상 책이 열려 있고 필요한 페이지를 받았으며 쓰기에는 편집 권한이 있다고 가정합니다. 1, 2, 3은 페이지 번호이므로 존재를 확인하세요. 이름과 본문은 예시입니다.
  • 보조 함수 전체가 제공됩니다. TRUE는 로컬 검사와 호출을 했다는 뜻일 뿐 서버 저장 확인이 아닙니다.

Русский · English · Українська · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Clone this wiki locally