Lua/ko

From The Powder Toy
Jump to navigation Jump to search
Language: English  • Deutsch • 한국어

이 페이지는 TPT의 이전 버전 Lua API를 설명하며, 대부분은 새 스크립트에 적합하지 않다. 새 API에 대해서는 The Powder Toy Lua API를 참조하라.

Lua 콘솔은 <`> 키를 눌러 열 수 있다. (<~>(물결표) 키 또는 <¬> 키라고도 함) 키 보기


여러분은 !set type dust metl과 같은 콘솔 명령어 스타일에 익숙할 수 있다. 이는 유용할 수 있지만, Lua는 훨씬 더 강력한 작업을 수행할 수 있는 완전한 프로그래밍 언어이다. TPT의 Lua에서 이에 상응하는 명령어는 tpt.set_property("type", "metl", "dust")이다(tpt.set_property 참조).

이 페이지는 Lua 언어 자체가 아닌 TPT Lua API를 설명한다. 하지만 Lua에 대해 직접 연구해 볼 수 있다. 초보자라면 여기를 참고하라: http://www.lua.org/pil/. 고급 사용자라면 모든 함수 목록은 여기에서 확인할 수 있다: http://www.lua.org/manual/5.1/

또한, FeynmanTechnologies가 가장 기본적인 Lua 기능에 대한 튜토리얼을 작성하였다: https://powdertoy.co.uk/Discussions/Thread/View.html?Thread=17801

Lua 콘솔은 매우 간단한 스크립팅 언어인 Lua를 사용해 스크립트를 생성할 수 있는 기능을 제공한다. Lua로 스크립팅할 수 있게 됨에 따라, 사용자는 이제 소스 코드를 편집하지 않고도 게임에 간단한 수정을 가할 수 있다. 스크립트 실행 방법에 대한 정보는 Lua 스크립트 실행을 참조하라.

Lua API

The Powder Toy는 Lua API에 다음 메서드를 공개한다:

게임

tpt.set_pause

tpt.set_pause(number state)

게임의 일시 정지 상태를 설정한다.

숫자 인수는 0 또는 1이며, 1은 게임을 일시 정지하고 0은 일시 정지를 해제한다. 인수를 전달하지 않으면 명령어는 현재 게임이 일시 정지 상태인지 여부에 따라 0 또는 1의 정수를 반환한다.

예시:

게임 일시 정지: tpt.set_pause(1)

현재 게임이 일시 정지 상태인지 확인: tpt.set_pause() == 1

tpt.set_console

tpt.set_console(number state)

콘솔의 표시 상태를 설정한다.

숫자 인수는 0 또는 1일 수 있으며, 1은 콘솔이 열릴 것을, 0은 콘솔이 닫힐 것을 의미한다. 인수를 전달하지 않으면, 명령어는 콘솔이 현재 열려 있는지 여부에 따라 0 또는 1의 정수를 반환한다.

예시:

콘솔 열기: tpt.set_console(1)

콘솔이 현재 열려 있는지 확인: tpt.set_console() == 1

tpt.set_shortcuts

이 함수는 TPT 94.0에서 제거되었다.

tpt.set_shortcuts(number state)

키보드 단축키 사용 여부를 설정한다. 이를테면 스탬프 생성, 콘솔 열기, 보기 모드 변경 등의 기능이 포함된다.

숫자 인수는 0 또는 1로 지정할 수 있다. 1은 키 사용을 허용하고, 0은 키 단축키를 비활성화한다. 인수를 전달하지 않으면 명령어는 현재 키 단축키 활성화 상태를 나타내는 정수(0 또는 1)를 반환한다.

다른 키를 사용하는 키 명령을 만들 때는 이 기능을 사용하지 않아야 한다. 대신 콜백 내부에서 false를 반환하여 해당 키에 대한 기본 동작만 비활성화하라.

예시:

키보드 단축키 비활성화: tpt.set_shortcuts(0)

현재 키보드 단축키가 비활성화되었는지 확인: tpt.set_shortcuts(-1) == 1

tpt.set_gravity

tpt.set_gravity(number x, number y, number width, number height, number value)

특정 위치나 영역에 대해 뉴턴 중력을 특정 값으로 설정한다.

기본값:

x = 0
y = 0
width = XRES/CELL = 612 / 4 = 153
height = YRES/CELL = 384 / 4 = 96
value = 0

예시:

(150, 150) 지점의 셀에서 중력 초기화: tpt.set_gravity(150 / sim.CELL, 150 / sim.CELL)

(100, 100)에서 (300, 300)까지 중력 초기화: tpt.set_gravity(100 / sim.CELL, 100 / sim.CELL, 200 / sim.CELL, 200 / sim.CELL)

전체 무대의 중력을 1000으로 설정: tpt.set_gravity(nil, nil, nil, nil, 1000)

tpt.reset_gravity_field

tpt.reset_gravity_field(number x, number y, number width, number height)

지정된 지점에서 뉴턴 중력을 완전히 초기화한다.

sim->gravmap만 수정하는 tpt.set_gravity 대신, 이 코드는 sim->gravp, sim->gravx, sim->gravy를 수정한다. 음, Gravy.

기본값:

x = 0
y = 0
width = XRES/CELL = 612 / 4 = 153
height = YRES/CELL = 384 / 4 = 96

예시:

(150, 150) 지점의 셀에서 중력 완전히 초기화: tpt.reset_gravity_field(150 / sim.CELL, 150 / sim.CELL)

(100, 100)부터 (300, 300)까지 중력 초기화: tpt.reset_gravity_field(100 / sim.CELL, 100 / sim.CELL, 200 / sim.CELL, 200 / sim.CELL)

tpt.set_pressure

tpt.set_pressure(number x, number y, number width, number height, number value)

압력 맵의 압력을 특정 압력으로 설정하거나 초기화한다. 문장 안에서 'pressure'이라는 단어를 얼마나 반복할 수 있을지 가끔 상상해 본다. 그 단어가 의미 없는 소리로 변하기 전에 말이다.

기본값:

x = 0
y = 0
width = XRES/CELL = 612 / 4 = 153
height = YRES/CELL = 384 / 4 = 96
value = 0

예시:

모든 위치의 압력 초기화: tpt.set_pressure()

(100, 100) 위치의 셀 압력을 200으로 설정: tpt.set_pressure(100 / sim.CELL, 100 / sim.CELL, 1, 1, 200)

모든 위치의 압력을 200으로 설정: tpt.set_pressure(nil,nil,nil,nil,200)

tpt.reset_velocity

tpt.reset_velocity(number x, number y, number width, number height)

지정된 영역 또는 지점의 기류(x 및 y 모두)를 0으로 설정한다.

기본값:

x = 0
y = 0
width = XRES/CELL = 612 / 4 = 153
height = YRES/CELL = 384 / 4 = 96

예시:

모든 위치에서 기류 초기화: tpt.reset_velocity()

(100, 100) 지점의 셀에서 기류 초기화: tpt.reset_velocity(100 / sim.CELL, 100 / sim.CELL, 1, 1)

tpt.hud

tpt.hud(number state)

HUD 표시 여부를 설정한다.

일반적으로 H 키를 누르는 것과 동일한 기능을 수행한다. 숫자 인수는 0 또는 1일 수 있으며, 1은 HUD를 표시하고 0은 HUD를 숨긴다. 인수를 전달하지 않으면 명령어는 현재 HUD가 표시 중인지 여부에 따라 0 또는 1의 정수를 반환한다.

tpt.newtonian_gravity

tpt.newtonian_gravity(number state)

뉴턴 중력을 켜고 끈다.

일반 게임 플레이에서 Ctrl+N과 동일한 기능을 수행한다.

숫자 인수는 0 또는 1일 수 있으며, 1은 뉴턴 중력을 활성화하고 0은 비활성화한다. 인수를 전달하지 않으면 명령어는 현재 뉴턴 중력이 활성화되었는지 여부에 따라 0 또는 1의 정수를 반환한다.

tpt.ambient_heat

tpt.ambient_heat(number state)

환경 열 상태를 전환한다.

숫자 인수는 0 또는 1일 수 있으며, 1은 주변 열을 활성화하고 0은 비활성화한다. 인수를 전달하지 않으면 명령어는 현재 환경 열이 활성화되었는지 여부에 따라 0 또는 1의 정수를 반환한다.

tpt.decorations_enable

tpt.decorations_enable(number state)

도색 표시 여부를 전환한다.

숫자 인수는 0 또는 1일 수 있으며, 1은 도색을 활성화하고 0은 비활성화한다. 인수를 전달하지 않으면 명령어는 현재 도색이 활성화되었는지 여부에 따라 0 또는 1의 정수를 반환한다.

tpt.heat

tpt.heat(number state)

열 시뮬레이션을 켜거나 끈다.

숫자 인수는 0 또는 1일 수 있으며, 1은 열을 활성화하고 0은 비활성화한다. 인수를 전달하지 않으면 명령어는 열이 현재 활성화되었는지 여부에 따라 0 또는 1의 정수를 반환한다.

호환성 모드가 필요한 세이브 데이터가 사실상 남아 있지 않으므로 일반적으로 이 기능을 비활성화하지 않는 것이 좋다. 그럼에도 불구하고 이 옵션은 존재한다.

tpt.active_menu

tpt.active_menu(number menu)

활성화된 메뉴를 반환한다. 인수를 전달하지 않으면 현재 활성화된 메뉴를 반환한다.

메뉴 ID는 다음에서 자세히 설명한다: 요소 속성 문서의 메뉴 섹션 문단

예시: tpt.active_menu(elem.SC_EXPLOSIVE)

tpt.menu_enabled

boolean tpt.menu_enabled(number menuID)

tpt.menu_enabled(number menuID, boolean enabled)

메뉴 섹션이 활성화된 경우 true를 반환한다.

논리형 값이 주어지면, 메뉴 섹션이 활성화되도록 설정한다.

tpt.num_menus

number tpt.num_menus()

number tpt.num_menus(boolean onlyEnabled)

메뉴의 개수를 반환한다.

선택적 onlyEnabled 논리형 값은 기본값이 true이다.

tpt.display_mode

tpt.display_mode(number display)

활성화된 디스플레이 모드를 변경한다.

11가지 디스플레이 모드가 있으며, 자세한 내용은 [[1]]에서 확인할 수 있다.
참고: 디스플레이 모드 순서는 1씩 이동되어 기류 모드가 첫 번째, 대체 기류 모드가 마지막에 위치한다.

디스플레이 모드

0 = 기류
1 = 압력
2 = 잔상
3 = 불꽃
4 = 얼룩
5 = 열
6 = 화려
7 = 기본
8 = 열 명암
9 = 수명 명암
10 = 대체 기류

tpt.setfpscap

tpt.setfpscap(number fpscap)

프로그램이 실행될 때의 FPS 상한을 변경한다. 이 값은 기본값이 60이다.

너무 높게 설정하지 않는다. CPU 속도를 모두 소모하고 게임 반응이 지나치게 빨라질 수 있다! 너무 낮게 설정하지도 않아야 한다. UI 및 관련 모든 요소가 동일한 FPS를 사용하므로 단추 등이 작동하지 않을 수 있다.

인수를 전달하지 않으면 현재 FPS 제한값을 반환한다. fpscap을 2로 설정하면 프레임률 제한을 해제한다.

tpt.setdrawcap

입자 그래픽과 UI가 화면에 렌더링되는 속도를 변경한다. 이는 시뮬레이션에만 영향을 미치는 fpscap과는 별개이다. drawcap을 사용하면 TPT가 매 프레임마다 렌더링을 건너뛸 수 있다. 이로 인해 일부 상황에서 프레임률이 향상될 수 있다.

기본값은 연결된 모든 모니터의 최대 주사율로 설정된다.

tpt.setfire

tpt.setfire(number strength)

게임의 빛나는 효과 강도를 변경한다. 기본값은 tpt.setfire(1)이다.

tpt.setwindowsize

tpt.setwindowsize(number scale, number fullscreen)

게임이 렌더링되는 크기에 관한 몇 가지 특수 속성을 변경한다.

scale은 모든 픽셀에 적용되는 배율이다. 현재 1(612x384) 또는 2(1224x768)로 설정할 수 있다.

fullscreen은 '키오스크 모드'를 활성화하는 토글(0 또는 1)이다. 이 모드는 기본적으로 게임을 화면 가득히 확대하고 나머지 가장자리를 검은색으로 채운다.

tpt.toggle_pause

tpt.toggle_pause()

일시 정지를 전환한다.

tpt.watertest

simulation.waterEqualisation로 대체됨.

number tpt.watertest()

액체 높이 균등화 기능을 켠다. 현재 상태를 반환한다.

tpt.perfectCircleBrush

boolean tpt.perfectCircleBrush()

tpt.perfectCircleBrush(boolean enabled)

정확한 원 브러시가 활성화된 경우 true를 반환한다.

논리형 값이 주어지면 활성화 상태를 변경한다.

정확한 원 브러시가 비활성화된 경우, 원 브러시 가장자리에 단일 픽셀이 튀어나오게 된다.

입자

tpt.reset_spark

tpt.reset_spark()

시뮬레이션에서 전류가 흐르는 전선을 제거하고 원래 소재로 초기화한다.

tpt.set_property

tpt.set_property(string property, object value)

tpt.set_property(string property, object value, string type)

tpt.set_property(string property, object value, number index)

tpt.set_property(string property, object value, number index, string type)

tpt.set_property(string property, object value, number x, number y)

tpt.set_property(string property, object value, number x, number y, string type)

tpt.set_property(string property, object value, number x, number y, number width, number height)

tpt.set_property(string property, object value, number x, number y, number width, number height, string type)

주어진 기준에 따라 입자의 다양한 속성을 설정한다. 오버로드 8개.

tpt.set_wallmap

tpt.set_wallmap(number x, number y, number walltype)

tpt.set_wallmap(number x, number y, number width, number height, number walltype)

tpt.set_wallmap(number x, number y, number width, number height, number fanVelocityX, number fanVelocityY, number walltype)

지정한 위치에 벽을 설정한다. 벽/공기 맵 좌표를 사용한다. 실제 좌표를 4로 나누어 벽 좌표를 구한다. 따라서 (100, 200) 위치에 벽을 설정하려면 x좌표로 100/4, y좌표로 200/4를 전달한다.

tpt.get_wallmap

tpt.get_wallmap(number x, number y)

지정된 위치에 벽을 가져온다. 벽/공기 맵 좌표를 사용한다. 실제 좌표를 4로 나누어 벽 좌표를 구한다. 따라서 (100, 200) 위치에 벽을 설정하려면 x좌표로 100/4, y좌표로 200/4를 전달한다.

tpt.set_elecmap

tpt.set_elecmap(number x, number y, number walltype)

tpt.set_elecmap(number x, number y, number width, number height, number walltype)

지정된 위치의 벽에 '전기' 플래그를 설정한다. 이 플래그는 일반적으로 벽에 전류가 흐를 때 설정된다. 값은 SPRK .life와 마찬가지로 매 프레임마다 1씩 감소하며, 0에 도달하면 벽에 전류가 흐르지 않는다. 벽/공기 맵 좌표를 사용한다. 실제 좌표를 4로 나누어 벽 좌표를 구한다. 따라서 (100, 200) 위치에 벽을 설정하려면 x좌표로 100/4, y좌표로 200/4를 전달한다.

tpt.get_elecmap

tpt.get_elecmap(number x, number y)

지정된 위치의 벽에 '전기' 플래그를 가져온다. 이 플래그는 일반적으로 벽에 전류가 흐를 때 설정된다. 벽/공기 맵 좌표를 사용한다. 실제 좌표를 4로 나누어 벽 좌표를 구한다. 따라서 (100, 200) 위치에 벽을 설정하려면 x좌표로 100/4, y좌표로 200/4를 전달한다.

tpt.get_property

tpt.get_property(string property, number index)

tpt.get_property(string property, number x, number y)

입자의 다양한 속성을 반환한다.

tpt.create

tpt.create(number x, number y, string type)

지정된 위치에 입자를 생성한다.

새로 생성된 입자의 인덱스를 반환한다.

tpt.delete

tpt.delete(number index)

tpt.delete(number x, number y)

특정한 입자 또는 위치의 입자를 제거한다.

tpt.start_getPartIndex

tpt.start_getPartIndex()

입자 인덱스 전체를 받기 위한 반복기를 시작한다. (입자 인덱스 획득을 돕기 위해 사용됨, tpt.next_getPartIndex 참조)

tpt.next_getPartIndex

tpt.next_getPartIndex()

다음 사용 가능한 입자 인덱스로 이동한다. 반복자가 모든 입자 인덱스의 끝에 도달한 경우 false를 반환한다. 새로운 인덱스가 사용 가능한 경우 true를 반환한다. (입자 인덱스 획득을 돕기 위해 사용됨, tpt.getPartIndex 참조)

tpt.getPartIndex

tpt.getPartIndex()

현재 인덱스 반복자를 가져온다.

인덱스 코드 예시:

     tpt.start_getPartIndex()
     while tpt.next_getPartIndex() do
        local index = tpt.getPartIndex()
        if tpt.get_property("ctype",index) == 21 then
           tpt.set_property("ctype","sing",index)
        end
     end

이 함수들은 sim.parts() 함수에 의해 더 이상 사용되지 않는다. 이 함수를 사용하면 Lua의 반복자를 활용할 수 있다.

tpt.get_numOfParts

tpt.get_numOfParts()

현재 화면에 표시된 입자의 수를 반환한다.

이를 얻는 새로운 방법은 변수 sim.NUM_PARTS이다.

그리기

tpt.textwidth

tpt.textwidth(string text)

주어진 문자열의 너비를 (픽셀 단위로) 측정한다. 숫자를 반환한다.

tpt.drawtext

tpt.drawtext(number x, number y, string text)

tpt.drawtext(number x, number y, string text, number red, number green, number blue)

tpt.drawtext(number x, number y, string text, number red, number green, number blue, number alpha)

화면에 텍스트를 그린다(한 프레임 동안, 스크립트에서만 유용함). 오버로드 3개.

tpt.drawpixel

tpt.drawpixel(number x, number y)

tpt.drawpixel(number x, number y, number red, number green, number blue)

tpt.drawpixel(number x, number y, number red, number green, number blue, number alpha)

화면에 픽셀을 그린다(한 프레임 동안, 스크립트에서만 유용함), 오버로드 3개.

tpt.drawline

tpt.drawline(number x1, number y1, number x2, number y2)

tpt.drawline(number x1, number y1, number x2, number y2, number red, number green, number blue)

tpt.drawline(number x1, number y1, number x2, number y2, number red, number green, number blue, number alpha)

화면에 선을 그린다(한 프레임 동안, 스크립트에서만 유용함). 오버로드 3개. 선은 점 (x1, y1)에서 시작하여 점 (x2, y2)에서 끝난다.

tpt.drawrect

tpt.drawrect(number x, number y, number width, number height)

tpt.drawrect(number x, number y, number width, number height, number red, number green, number blue)

tpt.drawrect(number x, number y, number width, number height, number red, number green, number blue, number alpha)

화면에 직사각형을 그린다(한 프레임 동안, 스크립트에서만 유용함), 오버로드 3개.

tpt.fillrect

tpt.fillrect(number x, number y, number width, number height)

tpt.fillrect(number x, number y, number width, number height, number red, number green, number blue)

tpt.fillrect(number x, number y, number width, number height, number red, number green, number blue, number alpha)

화면에 채워진 사각형을 그린다(한 프레임 동안만 표시되며, 스크립트에서만 유용함). 오버로드 3개.

TPT에서 tpt.fillrect는 약간 오류가 있어 좌표가 어긋난다. (x+1, y+1)부터 (x+w-1, y+h-1)까지의 영역을 채운다.

입출력

tpt.log

tpt.log(string text)

메시지를 콘솔에 기록한다.

tpt.message_box

tpt.message_box(string title, string message)

제목과 메시지가 포함된 확인만 가능한 메시지 상자를 표시한다.

tpt.input

tpt.input(string title, string message)

tpt.input(string title, string message, string text)

사용자에게 텍스트 입력을 요청한다. 사용자가 입력한 내용을 문자열로 반환한다. 인수 'text'는 플레이스홀더이다(선택적).

tpt.throw_error

tpt.throw_error(string text)

오류 메시지 상자를 표시한다.

tpt.confirm

tpt.confirm(string title, string message,string button_name)

제목과 메시지가 포함된 확인 메시지 상자를 표시한다. button_name 단추가 클릭되면 true를 반환하고, 취소 단추가 클릭되면 false를 반환한다.

이벤트

구형 이벤트 API는 94.0 버전에서 제거되었으며, 호환성 스크립트를 통해서만 여전히 존재한다. 대신 새로운 API를 사용하라: 이벤트.

tpt.register_step

이 함수는 TPT 94.0에서 사용 중단되었으며 호환성 스크립트를 통해서만 제공된다.

tpt.register_step(function func)

매 프레임마다 실행될 함수를 등록한다.

tpt.unregister_step

이 함수는 TPT 94.0에서 사용 중단되었으며 호환성 스크립트를 통해서만 제공된다.

tpt.unregister_step(function func)

이전에 등록된 함수를 등록 해제한다.

tpt.register_mouseclick

이 함수는 TPT 94.0에서 사용 중단되었으며 호환성 스크립트를 통해서만 제공된다.

tpt.register_mouseclick(function func)

함수 매개변수: mousex, mousey, button, event

마우스 클릭 시마다 실행될 함수를 등록한다.

마우스가 놓이거나 누른 상태가 유지될 때, 또는 마우스 휠이 사용될 때도 함수가 호출된다. event는 마우스가 눌렸을 때 1, 놓였을 때 2, 누른 상태일 때 3이다. 함수가 false를 반환하면 일반 The Powder Toy의 마우스 이벤트는 무시된다.

tpt.unregister_mouseclick

이 함수는 TPT 94.0에서 사용 중단되었으며 호환성 스크립트를 통해서만 제공된다.

tpt.unregister_mouseclick(function func)

이전에 등록된 함수를 등록 해제한다.

tpt.register_keypress

이 함수는 TPT 94.0에서 사용 중단되었으며 호환성 스크립트를 통해서만 제공된다.

tpt.register_keypress(function func)

함수 매개변수: key, nkey, modifier, event

키가 눌릴 때마다 실행될 함수를 등록한다.

키가 놓일 때도 함수가 호출된다. 키가 눌리면 이벤트 값이 1, 놓이면 2가 된다. 함수가 false를 반환하면 일반 The Powder Toy에서 키 입력이 무시된다.

tpt.unregister_keypress

이 함수는 TPT 94.0에서 사용 중단되었으며 호환성 스크립트를 통해서만 제공된다.

tpt.unregister_keypress(function func)

이전에 등록된 함수를 등록 해제한다.

기타

tpt.get_name

tpt.get_name()

현재 사용자 이름을 반환한다.

tpt.setdebug

tpt.setdebug(number mode)

'디버그 모드'를 설정한다. 비트 마스크를 사용하여 작동하므로 여러 디버그 기능을 동시에 활성화할 수 있다.
0x1을 설정하면 화면에 표시된 입자 수에 대한 정보를 표시한다.
0x2를 설정하면 화면에 표시된 각 유형의 요소 비율을 보여주는 그래프를 그린다.
0x4를 설정하면 Shift 키로 선을 그릴 때 유용한 정보를 표시한다.
0x8을 설정하면 서브프레임 입자 디버깅을 활성화한다. <Alt+F>를 사용하면 한 번에 하나의 입자씩 단계별로 이동한다. <Shift+F>를 사용하면 마우스 아래에 있는 입자까지 단계별로 이동한다. 입자 위에 있지 않을 때는 프레임 끝까지 이동한다.

tpt.element

tpt.element(string elementname)

tpt.element(number elementid)

요소의 번호를 반환한다. 이를테면 DMND에 대해 28을 반환한다. 숫자를 전달하면 대신 이름을 반환한다.

tpt.element_func

이 함수는 TPT 97.0에서 사용 중단되었으며 호환성 스크립트를 통해서만 제공된다.
대신 elements.property와 "Update"를 사용하라.

tpt.graphics_func

이 함수는 TPT 97.0에서 사용 중단되었으며 호환성 스크립트를 통해서만 제공된다.
대신 elements.property와 "Graphics"를 사용하라.

tpt.screenshot

tpt.screenshot()

tpt.screenshot(boolean fullscreen,number screenshot format)

현재 화면의 스크린샷을 찍는다. 단, 메뉴와 HUD는 제외된다.

스크린샷 형식:

0 - PNG

1 - BMP

2 - PPM

예시:

tpt.screenshot(1,1) - 전체 화면 스크린샷을 BMP 형식으로 찍기.

tpt.screenshot(1,2) - 전체 화면 스크린샷을 PPM 형식으로 찍기.

tpt.get_clipboard

tpt.get_clipboard()

클립보드의 내용을 반환한다.

tpt.set_clipboard

tpt.set_clipboard(string text)

클립보드에 복사한다.

tpt.record

number tpt.record(boolean record)

각각 그려진 프레임을 기록하고, 이를 모두 .ppm 형식으로 'recordings' 폴더 내부의 고유한 폴더에 저장한다.

'recordings' 폴더 내부의 폴더 이름을 반환한다.

record 인수가 true이면 기록을 시작하고, false이면 기록을 중지한다.

tpt.getscript

이 함수는 TPT 98.0에서 사용 중단되었으며 스크립트 관리자 설치에만 사용할 수 있다.

tpt.getscript(1, "autorun.lua", 1)

이 함수는 스크립트 매니저 설치에 일반적으로 사용되는 인수들이 아닌 경우 모든 입력을 거부한다. 이는 기존 설치 지침이 여전히 작동하도록 유지하기 위한 것이다. 대신 tpt.installScriptManager를 사용하라.

tpt.installScriptManager

tpt.installScriptManager()

스크립트 관리자를 다운로드하여 TPT의 공유 데이터 폴더에 autorun.lua로 설치한다. 즉시 실행되며, 이후 모든 실행 시에도 계속 실행된다.

상수

이 모든 상수는 tpt.<상수 이름>을 통해 접근할 수 있다.

tpt.selectedl

현재 mouse1에 있는 요소/도구.

tpt.selectedr

현재 mouse2에 있는 요소/도구.

tpt.selecteda

현재 mouse3(마우스 가운데 버튼)에 있는 요소/도구.

tpt.selectedreplace

현재 요소 대체 모드에서 사용될 요소(녹색 테두리).

tpt.brushx

현재 브러시 너비.

tpt.brushy

현재 브러시 높이.

tpt.brushID

현재 브러시 ID, 0 = 원형, 1 = 방형, 2 = 삼각형, 그 이상 = 사용자 정의 브러시.

이 상수들은 읽기 전용이 아니므로, 다음과 같이

tpt.selectedl = "DEFAULT_PT_SPRK"

를 실행하면 mouse1 이벤트 시 해당 요소가 SPRK로 변경된다.

실제 상수

  • tpt.version: 버전 관련 상수를 포함하는 테이블.
    • tpt.version.major: 메이저 버전 번호. 모드에서는 바닐라와 일치하지 않을 수 있음.
    • tpt.version.minor: 마이너 버전 번호. 모드에서는 바닐라와 일치하지 않을 수 있음.
    • tpt.version.build: 빌드 번호. 모드에서는 바닐라와 일치하지 않을 수 있음.
    • tpt.version.upstreamMajor: 업스트림(바닐라) 메이저 버전 번호.
    • tpt.version.upstreamMinor: 업스트림(바닐라) 마이너 버전 번호.
    • tpt.version.upstreamBuild: 업스트림(바닐라) 빌드 번호.
    • tpt.version.modid: 모드 ID, 바닐라 TPT인 경우 0.
    • tpt.snapshot: 논리형 플래그, 스냅샷인 경우 true.
    • tpt.version.beta: 논리형 플래그, 베타인 경우 true.
    • tpt.version.vcstag: Git SHA256 해시. 일부 빌드에서는 nil일 수 있음.
  • tpt.DEBUG_PARTS: 입자량 상수/pmap 여유 공간 그래프 활성화 상수.
  • tpt.DEBUG_ELEMENTPOP: 요소 양 그래프 활성화 상수.
  • tpt.DEBUG_LINES: 직선 도구 사용 시 디버깅 직선 활성화 상수.
  • tpt.DEBUG_PARTICLE: 서브프레임 디버깅 활성화 상수 및 단축키 활성화 상수.
  • tpt.DEBUG_SURFNORM: 반사/굴절 시 PHOT 표면 법선 그래픽 활성화 상수.

간단한 예시 코드

  -- 이 줄은 주석이다. -- 이후에 작성된 모든 내용은 주석으로 간주되며 Lua에 의해 해석되지 않는다.
  -- 주석은 여러 줄로 작성할 수 있다. 이를 위해서는 --[[와 ]]-- 사이에 작성해야 한다.
  -- 콘솔 상태를 0으로 설정한다. 이렇게 하면 콘솔이 닫힌다.
  tpt.set_console(0)

  -- 여기서 스크립트의 메인 함수를 정의한다.
  local function ClassicPowder()
     local ox = 125 -- 이것이 우리가 생성할 여러 요소들에 대한 오프셋이 될 것이다.
     local y = 4 -- 요소들을 생성할 y(세로)축상의 위치이다.

     local x = ox -- x(가로)축 상에서 요소를 생성할 위치를 지정한다. x값은 위의 ox값으로 시작한다.
     for i=0, 10 do -- for 루프이다. do와 end 사이의 모든 코드는 i가 10이 될 때까지 반복된다. i는 매 루프마다 1씩 증가한다.
        tpt.create(x + i, y, "DUST") -- 먼지 입자를 생성한다.
     end

     x = x + ox -- 위의 오프셋 x(ox) 값만큼 x축 값을 증가시킨다.
     for i=0, 10 do
        tpt.create(x + i, y, "WATR") -- 물 입자를 생성한다.
     end

     x = x + ox
     for i=0, 10 do
        tpt.create(x + i, y, "SALT")
     end

     x = x + ox
     for i=0, 10 do
        tpt.create(x + i, y, "OIL")
     end

     return false
  end

  -- ClassicPowder 단계 함수를 등록한다. 이렇게 하면 The Powder Toy의 매 틱마다 ClassicPowder 함수가 실행된다.
  tpt.register_step(ClassicPowder)