Difference between revisions of "Scripting/ko"
m |
m |
||
Line 5: | Line 5: | ||
* 키바인드는 특정한 키를 눌렀을 때 [[weapon/ko|무기]] 슬롯 선택이나 채팅 매크로 같은 콘솔 명령을 실행할 수 있게 해줍니다. | * 키바인드는 특정한 키를 눌렀을 때 [[weapon/ko|무기]] 슬롯 선택이나 채팅 매크로 같은 콘솔 명령을 실행할 수 있게 해줍니다. | ||
− | * 앨리어스는 여러 명령들을 한꺼번에 실행하는 새로운 명령을 만들어 줍니다. 앨리어스를 통해 [[crouch/ko|앉기]]와 [[jump/ko|뛰기]]를 묶은 [[Jumping/ko# | + | * 앨리어스는 여러 명령들을 한꺼번에 실행하는 새로운 명령을 만들어 줍니다. 앨리어스를 통해 [[crouch/ko|앉기]]와 [[jump/ko|뛰기]]를 묶은 [[Jumping/ko#.EC.95.89.EA.B3.A0_.EB.9B.B0.EA.B8.B0|앉으며 뛰기]] 명령을 만들어서 원하는 키에 지정할 수 있습니다. |
스크립트의 범위는 명령의 단순한 조합에서부터 자기지시적 루프, 다른 앨리어스를 내포하는 앨리어스까지 이릅니다. 충분한 시간과 노력을 들이면 당신도 스크립팅을 통해 하나의 키에 클라이언트에서 실행할 수 있는 거의 모든 행동들을 지정할 수 있습니다. | 스크립트의 범위는 명령의 단순한 조합에서부터 자기지시적 루프, 다른 앨리어스를 내포하는 앨리어스까지 이릅니다. 충분한 시간과 노력을 들이면 당신도 스크립팅을 통해 하나의 키에 클라이언트에서 실행할 수 있는 거의 모든 행동들을 지정할 수 있습니다. | ||
− | ==기본적인 | + | ==기본적인 스크립트 파일== |
''Team Fortress 2''는 몇 가지 게임 파일들을 자동으로 읽어들여 그 안의 모든 키바인드와 앨리어스들을 실행합니다. 그 파일들은 다음과 같습니다: | ''Team Fortress 2''는 몇 가지 게임 파일들을 자동으로 읽어들여 그 안의 모든 키바인드와 앨리어스들을 실행합니다. 그 파일들은 다음과 같습니다: | ||
Line 41: | Line 41: | ||
:'''bind "mouse3" "spraynpray"''' | :'''bind "mouse3" "spraynpray"''' | ||
− | :* 앨리어스를 실행하면 플레이어의 무기를 500 물리 프레임(physics frames) (초당 100프레임으로 돌아가는 서버에서 약 5초)동안 발사한 뒤 멈춥니다. 이 앨리어스는 키바인딩을 통해 마우스 가운데 버튼에 할당되었으며 따라서 이 버튼을 누르면 실행됩니다. | + | :* 앨리어스를 실행하면 플레이어의 무기를 500 물리 프레임(physics frames)(초당 100프레임으로 돌아가는 서버에서 약 5초)동안 발사한 뒤 멈춥니다. 이 앨리어스는 키바인딩을 통해 마우스 가운데 버튼에 할당되었으며 따라서 이 버튼을 누르면 실행됩니다. |
* 큰 따옴표 안에 큰 따옴표를 쓸 경우, 큰 따옴표를 두 번 써서("") 묶음을 마쳐줘야 합니다. 그렇지 않을 경우 명령의 해석이 잘못 될 수 있습니다. | * 큰 따옴표 안에 큰 따옴표를 쓸 경우, 큰 따옴표를 두 번 써서("") 묶음을 마쳐줘야 합니다. 그렇지 않을 경우 명령의 해석이 잘못 될 수 있습니다. | ||
==키바인드== | ==키바인드== | ||
− | ''Team Fortess 2''에서는 키보드의 모든 키를 스크립트와 앨리어스에 할당할 수 있습니다. 위의 예시에서처럼, 할당을 원하는 키는 | + | ''Team Fortess 2''에서는 키보드의 모든 키를 스크립트와 앨리어스에 할당할 수 있습니다. 위의 예시에서처럼, 할당을 원하는 키는 bind명령어와 할당하려는 명령의 사이에 입력합니다. 알파벳과 숫자 (a-z, 0-9), 기능 키들은 키의 이름을 입력하는 것만으로 사용할 수 있습니다 ("bind a"는 'a'를, "bind 5"는 '5'를, "bind F7"은 'F7'을 할당합니다). 그 외의 경우에는 특정한 이름을 써넣어야 사용할 수 있습니다. 이들은 다음과 같습니다: |
====키 이름 목록==== | ====키 이름 목록==== | ||
Line 102: | Line 102: | ||
* 마우스 우측 클릭: MOUSE5 | * 마우스 우측 클릭: MOUSE5 | ||
− | 위의 이름들을 써서 다음과 같은 명령을 만들어 설정 파일에 넣어둘 수 있습니다: <bind KP_ENTER "voicemenu 0 1">. 숫자패드의 '엔터' 키를 누르면 음성 명령어 '고맙다!'가 나옵니다. | + | 위의 이름들을 써서 다음과 같은 명령을 만들어 설정 파일에 넣어둘 수 있습니다: <bind KP_ENTER "voicemenu 0 1">. 숫자패드의 '엔터'키를 누르면 음성 명령어 '고맙다!'가 나옵니다. |
==기본 명령어== | ==기본 명령어== | ||
Line 150: | Line 150: | ||
n키를 누를 때마다 net_graph의 표시 위치가 3가지 위치 중 다음 위치로 바뀝니다. | n키를 누를 때마다 net_graph의 표시 위치가 3가지 위치 중 다음 위치로 바뀝니다. | ||
− | ==+ 와 - 명령어== | + | ==+와 -명령어== |
여기에 해당하는 명령어들은 두 가지 상태를 갖고 있습니다. 할당된 키를 누르고 있는 동안 '''+'''명령어가 계속해서 실행됩니다. 키를 떼면 '''-'''명령어가 계속해서 실행됩니다. | 여기에 해당하는 명령어들은 두 가지 상태를 갖고 있습니다. 할당된 키를 누르고 있는 동안 '''+'''명령어가 계속해서 실행됩니다. 키를 떼면 '''-'''명령어가 계속해서 실행됩니다. | ||
Line 276: | Line 276: | ||
* Loop2를 Loop1을 실행하는 앨리어스로 정의 | * Loop2를 Loop1을 실행하는 앨리어스로 정의 | ||
− | * Loop1을 콘솔에 'Loop1' 을 출력하고 150틱을 기다린 다음 Loop2를 호출하는 앨리어스로 정의 | + | * Loop1을 콘솔에 'Loop1'을 출력하고 150틱을 기다린 다음 Loop2를 호출하는 앨리어스로 정의 |
* +Loop를 앨리어스 Loop2가 Loop1을 실행하도록 재정의한 다음 Loop2를 호출하는 앨리어스로 정의 | * +Loop를 앨리어스 Loop2가 Loop1을 실행하도록 재정의한 다음 Loop2를 호출하는 앨리어스로 정의 | ||
* -Loop를 앨리어스 Loop2를 지우는 앨리어스로 정의 (루프를 멈춘다) | * -Loop를 앨리어스 Loop2를 지우는 앨리어스로 정의 (루프를 멈춘다) | ||
Line 355: | Line 355: | ||
===엔지니어 빠른 건설=== | ===엔지니어 빠른 건설=== | ||
− | [[Spy/ko|스파이]]의 변장과 마찬가지로, [[Engineer/ko|엔지니어]]도 PDA 메뉴를 거치지 않고 빠르게 건물을 폭파하고 | + | [[Spy/ko|스파이]]의 변장과 마찬가지로, [[Engineer/ko|엔지니어]]도 PDA 메뉴를 거치지 않고 빠르게 건물을 폭파하고 지을 수 있습니다. |
건설 명령 문법은 다음과 같습니다: | 건설 명령 문법은 다음과 같습니다: | ||
Line 383: | Line 383: | ||
'''bind f4 exit''' | '''bind f4 exit''' | ||
− | 이 예시에서는 건물을 F1-F4에 할당함으로써 기존 무기 선택 | + | 이 예시에서는 건물을 F1-F4에 할당함으로써 기존 무기 선택 키와 겹치는 것을 피했습니다. 키를 누르면 해당하는 건물을 즉시 파괴하고 동시에 청사진을 꺼내 배치 준비를 마칩니다. 일부 건물에 대한 스크립트만 만들어 사용할 수도 있습니다. |
===자동으로 메딕 호출=== | ===자동으로 메딕 호출=== | ||
Line 391: | Line 391: | ||
'''hud_medicautocallersthreshold <퍼센트>''' | '''hud_medicautocallersthreshold <퍼센트>''' | ||
− | 다른 플레이어의 체력이 지정된 <퍼센트>이하로 떨어지면 자동호출이 뜹니다. 0을 넣으면 자동호출이 뜨지 않고, | + | 다른 플레이어의 체력이 지정된 <퍼센트>이하로 떨어지면 자동호출이 뜹니다. 0을 넣으면 자동호출이 뜨지 않고, 300(가능한 최대 체력)을 넣으면 모든 동료들의 위치가 표시됩니다. |
− | 이 명령어를 통해 흔히 "메딕 레이더" 라 | + | 이 명령어를 통해 흔히 "메딕 레이더"라 불리는 스크립트를 만들 수 있습니다: 명령을 실행하는 키를 누르고 있는 동안 자동호출 임계값이 300%로 올라가므로, [[Medic/ko|메딕]]은 전장에 혼자 남겨졌을 때 호출 표시를 통해 모든 동료들의 위치를 파악할 수 있습니다 (300%는 모든 클래스, 심지어 [[Conniver's Kunai/ko|간자의 수리검]]을 통해 갓 [[overheal/ko|오버힐]]을 받은 [[Spy/ko|스파이]]의 최대 체력까지도 커버합니다). |
'''alias "autocall_default" "hud_medicautocallersthreshold "75""''' | '''alias "autocall_default" "hud_medicautocallersthreshold "75""''' | ||
Line 419: | Line 419: | ||
이전에는 시점을 좌우로 돌리는 키보드 명령어는 마우스 명령과는 다르게 취급되었습니다. [[Chargin' Targe/ko|돌격 방패]]는 이 시점을 돌릴 수 있는 속도를 제한하는 최초의 무기였고, 그래서 밸브에서 마우스 회전 속도에 제한을 걸었지만, 같은 제한을 키보드 명령어에도 적용하는 것은 깜빡한 상태였습니다. | 이전에는 시점을 좌우로 돌리는 키보드 명령어는 마우스 명령과는 다르게 취급되었습니다. [[Chargin' Targe/ko|돌격 방패]]는 이 시점을 돌릴 수 있는 속도를 제한하는 최초의 무기였고, 그래서 밸브에서 마우스 회전 속도에 제한을 걸었지만, 같은 제한을 키보드 명령어에도 적용하는 것은 깜빡한 상태였습니다. | ||
− | 플레이어들은 돌격 중에는 다른 키바인드를 적용하는 스크립트를 만들었고, 그래서 전속력으로 시점을 회전할 수 있었습니다. 가장 세련된 형태는 돌격 중엔 마우스의 x축 입력을 키보드의 회전 명령어에 할당하고, 플레이어가 공격과 함께 돌격을 끝낼 때 할당을 푸는 | + | 플레이어들은 돌격 중에는 다른 키바인드를 적용하는 스크립트를 만들었고, 그래서 전속력으로 시점을 회전할 수 있었습니다. 가장 세련된 형태는 돌격 중엔 마우스의 x축 입력을 키보드의 회전 명령어에 할당하고, 플레이어가 공격과 함께 돌격을 끝낼 때 할당을 푸는 것이었습니다. |
결국엔 밸브에서 키보드의 회전 명령어에 대해서도 마우스처럼 제한을 걸었고, 따라서 이 스크립트를 쓰는 것은 아무런 이득이 없게 되었습니다. | 결국엔 밸브에서 키보드의 회전 명령어에 대해서도 마우스처럼 제한을 걸었고, 따라서 이 스크립트를 쓰는 것은 아무런 이득이 없게 되었습니다. | ||
Line 433: | Line 433: | ||
====G.R.U. 스크립트==== | ====G.R.U. 스크립트==== | ||
− | 이전에는 [[Gloves of Running Urgently/ko|G.R.U.]]를 끼면 체력이 초당 | + | 이전에는 [[Gloves of Running Urgently/ko|G.R.U.]]를 끼면 체력이 초당 6씩 떨어졌습니다. 하지만 점프 중에는 이 무기의 이동 속도 보너스가 유지되었기 때문에, 이것을 낀 채로 점프한 다음 재빨리 무기를 바꾸는 식으로 속력은 거의 잃지 않으면서 체력 감소를 줄일 수 있었습니다. 굳이 직접 일일히 무기를 바꾸지 않아도, 스크립트를 쓰면 이 행동을 훨씬 더 간편하게 해낼 수 있었습니다. |
하지만 {{Patch name|6|27|2012}}를 통해 무기의 특성이 매 초당 체력을 잃는 것에서 짧은 시간 동안 죽음의 표적이 되는 것으로 바뀌었습니다. | 하지만 {{Patch name|6|27|2012}}를 통해 무기의 특성이 매 초당 체력을 잃는 것에서 짧은 시간 동안 죽음의 표적이 되는 것으로 바뀌었습니다. |
Revision as of 01:20, 2 October 2012
스크립팅은 설정 파일(.cfg)을 이용해 복잡한 행동들과 콘솔 명령들을 순서대로 자동으로 실행하는 새로운 키바인드와 앨리어스를 만드는 것을 말합니다. 스크립팅은 Team Fortress 2에 내장된 기능으로서, 이를 사용해도 VAC에 걸리지 않습니다.
- 키바인드는 특정한 키를 눌렀을 때 무기 슬롯 선택이나 채팅 매크로 같은 콘솔 명령을 실행할 수 있게 해줍니다.
스크립트의 범위는 명령의 단순한 조합에서부터 자기지시적 루프, 다른 앨리어스를 내포하는 앨리어스까지 이릅니다. 충분한 시간과 노력을 들이면 당신도 스크립팅을 통해 하나의 키에 클라이언트에서 실행할 수 있는 거의 모든 행동들을 지정할 수 있습니다.
목차
기본적인 스크립트 파일
Team Fortress 2는 몇 가지 게임 파일들을 자동으로 읽어들여 그 안의 모든 키바인드와 앨리어스들을 실행합니다. 그 파일들은 다음과 같습니다:
- config.cfg - 게임 내의 키 설정이나 비디오 설정 메뉴를 사용할 때마다 갱신되는 기본 설정 파일입니다. 직접 고쳐도 안전하지만, 그대로 놔두는 것이 더 편합니다. 다른 설정 파일에서 변경된 사항들은 여기에도 반영됩니다.
- autoexec.cfg - 커스텀 키바인드와 앨리어스를 실행하는 기본 설정 파일입니다. 여기에 직접 키바인드를 저장할 수도 있지만, 다른 .cfg 파일을 직접 만들어 그 안에 키바인드를 저장한 다음 여기에서는 그 파일들만 실행하게 만드는 것이 보통 더 쉽습니다.
- <클래스>.cfg - 해당하는 클래스를 선택했을 때 자동으로 실행되는 설정 파일입니다. 여기에 직접 키바인드를 저장할 수도 있지만, 다른 .cfg 파일을 직접 만들어 그 안에 키바인드를 저장한 다음 여기에서는 그 파일들만 실행하게 만드는 것이 보통 더 쉽습니다.
문법
문법 규칙은 다음과 같습니다:
- 모든 키바인드와 앨리어스는 다음의 형태를 따라야합니다:
- 명령 <인수1> <인수2>
- 명령은 사용하고자 하는 스크립트의 종류입니다. 다음을 포함합니다:
- bind - 특정한 키에 명령을 할당하기 위해 사용합니다.
- alias - 앨리어스에 할당될 명령을 지정하기 위해 사용합니다.
- exec - 명령을 자동으로 실행할 설정 파일을 불러들이기 위해 사용합니다.
- <인수1>은 지정할 키나 새로 만들 앨리어스의 이름입니다.
- <인수2>는 키나 앨리어스에 할당될 명령입니다.
- 여러 명령들을 한꺼번에 실행할 때는 아래처럼 모든 인수들을 큰 따옴표로 묶고 세미콜론(;)을 써서 구분해줍니다.
- alias "spraynpray" "+attack; wait 500; -attack"
- bind "mouse3" "spraynpray"
- 앨리어스를 실행하면 플레이어의 무기를 500 물리 프레임(physics frames)(초당 100프레임으로 돌아가는 서버에서 약 5초)동안 발사한 뒤 멈춥니다. 이 앨리어스는 키바인딩을 통해 마우스 가운데 버튼에 할당되었으며 따라서 이 버튼을 누르면 실행됩니다.
- 큰 따옴표 안에 큰 따옴표를 쓸 경우, 큰 따옴표를 두 번 써서("") 묶음을 마쳐줘야 합니다. 그렇지 않을 경우 명령의 해석이 잘못 될 수 있습니다.
키바인드
Team Fortess 2에서는 키보드의 모든 키를 스크립트와 앨리어스에 할당할 수 있습니다. 위의 예시에서처럼, 할당을 원하는 키는 bind명령어와 할당하려는 명령의 사이에 입력합니다. 알파벳과 숫자 (a-z, 0-9), 기능 키들은 키의 이름을 입력하는 것만으로 사용할 수 있습니다 ("bind a"는 'a'를, "bind 5"는 '5'를, "bind F7"은 'F7'을 할당합니다). 그 외의 경우에는 특정한 이름을 써넣어야 사용할 수 있습니다. 이들은 다음과 같습니다:
키 이름 목록
- 키보드 키: 키바인드 이름
- 왼쪽 Shift: SHIFT
- 왼쪽 Ctrl: CTRL
- 왼쪽 Alt: ALT
- 오른쪽 Shift: RSHIFT
- 오른쪽 Control: RCTRL
- 오른쪽 Alt: RALT
- 탭: TAB
- Backspace: BACKSPACE
- Semicolon: SEMICOLON
- ---
- Insert: INS
- Scroll Lock: SCROLLLOCK
- Pause/Break: NUMLOCK
- ---
- Home: HOME
- End: END
- Delete: DEL
- Page Up: PGUP
- Page Down: PGDN
- ---
- 위쪽 화살표: UPARROW
- 아래쪽 화살표: DOWNARROW
- 왼쪽 화살표: LEFTARROW
- 오른쪽 화살표: RIGHTARROW
- ---
- 숫자패드 키: 키바인드 이름
- 0: KP_INS
- 1: KP_END
- 2: KP_DOWNARROW
- 3: KP_PGDN
- 4: KP_LEFTARROW
- 5: KP_5
- 6: KP_RIGHTARROW
- 7: KP_HOME
- 8: KP_UPARROW
- 9: KP_PGUP
- Enter: KP_ENTER
- ".": KP_DEL
- "+": KP_PLUS
- "-": KP_MINUS
- "*": KP_MULTIPLY
- "/":KP_SLASH
- ---
- 마우스 휠 방향: 키바인드 이름
- 위로 휠: MWHEELUP
- 아래로 휠: MWHEELDOWN
- 마우스 왼쪽 클릭: MOUSE1
- 마우스 오른쪽 클릭: MOUSE2
- 마우스 휠 클릭: MOUSE3
- 마우스 좌측 클릭: MOUSE4
- 마우스 우측 클릭: MOUSE5
위의 이름들을 써서 다음과 같은 명령을 만들어 설정 파일에 넣어둘 수 있습니다: <bind KP_ENTER "voicemenu 0 1">. 숫자패드의 '엔터'키를 누르면 음성 명령어 '고맙다!'가 나옵니다.
기본 명령어
대부분의 명령어들은 하나의 인수만을 받아서 실행합니다.
bind "q" "sv_alltalk 1"
몇 몇 중요한 명령어의 경우 둘 이상의 인수를 받는 경우도 있습니다. 다음과 같습니다:
- voicemenu X Y - 음성 명령 실행. X는 첫 번째 메뉴, Y는 그 메뉴 안에서의 순서.
예: "voicemenu 1 1"은 '스파이!'입니다. 그러므로:
bind "t" "voicemenu 1 1"
이 명령은 해당 키를 눌렀을 때 캐릭터가 스파이를 외치게 만듭니다.
토글
toggle명령을 통해 convar를 켜고 끄거나, 정해진 값 사이를 순환할 수 있습니다. 예를 들면:
bind x "toggle viewmodel_fov 20 33 60 75 90"
bindtoggle은 켜고 끄는 형태의 토글을 할당하는 단축형 명령어입니다.
bindtoggle z r_drawviewmodel
이 명령어는 'bind <key> "incrementvar <cvar> 0 1 1"'의 축소된 형태입니다.
incrementvar
실행할 때마다 특정한 값들 사이를 순환하며 순환된 값을 다른 명령어에 적용합니다. 다음과 같은 형태를 띱니다:
- 명령 "<인수1>" "incrementvar <인수2> X Y Z"
- X와 Y는 <인수2>에 적용할 값의 범위입니다.
- Z는 값의 범위 사이를 순환하는 간격입니다.
1과 10사이에서 2씩 증가하는 값이 필요할 경우, X Y Z에 1 10 2를 넣어줍니다. 매번 명령을 실행할 때마다 <인수2>가 2, 4, 6, 8, 10, 2, 4, 6, 8, 10, ...의 값으로 실행됩니다.
다음은 incrementvar를 사용하는 실례입니다:
- bind "n" "incrementvar net_graphpos 1 3 1"
n키를 누를 때마다 net_graph의 표시 위치가 3가지 위치 중 다음 위치로 바뀝니다.
+와 -명령어
여기에 해당하는 명령어들은 두 가지 상태를 갖고 있습니다. 할당된 키를 누르고 있는 동안 +명령어가 계속해서 실행됩니다. 키를 떼면 -명령어가 계속해서 실행됩니다.
예:
- bind "c" "+duck"
+명령어가 "c"에 붙어 있으므로, 해당 키를 누를 때마다 플레이어가 앉습니다. 키를 떼면 실행되는 명령어가 "+duck"에서 "-duck"으로 바뀌고 플레이어는 다시 일어납니다 (앉는 것을 멈춥니다).
보통은 명령이나 앨리어스가 키에 할당되어 있을 경우, +는 키를 누르고 있는 동안 계속해서 게임에 명령을 실행하라고 전합니다. -도 비슷하게 키를 떼고 있는 동안 계속해서 게임에 명령을 실행하라고 전합니다.
앨리어스를 +를 붙여 정의할 경우, 이 앨리어스는 키를 누르고 있는 동안 계속해서 실행됩니다. 키를 누르지 않는 동안은 -명령어가 실행됩니다.
대기 명령어
앨리어스를 실행하는 동안 대기 시간을 두거나, 명령을 너무 빨리 연이어 실행해서 클라이언트가 깨지는 것을 막을 때 wait명령어를 사용합니다.
대기 명령어는 스크립트에 있는 다음 명령어를 1 물리 프레임 늦게 실행하도록 만듭니다 (물리 프레임은 TF2에서 이를테면 완전한 한 턴turn이라고 볼 수 있는 개념입니다). "wait 50"을 쓰면 앨리어스를 계속 실행하기 전 50 프레임을 기다리게 만들 수 있습니다. 초당 100프레임으로 돌아가는 서버에서 "wait 100"은 대략 1초 정도 됩니다.
일부 서버에서는 대기 명령어를 막아두기도 합니다. 이 서버에서 플레이할 때는 대기 명령어가 무시되며, 따라서 일부 스크립트가 깨질 수 있습니다. 대기 명령어로 순환의 시작과 끝을 나누는 루프를 이런 서버에서 사용하면 즉시 접속이 끊어질 수 있습니다.
앨리어스
앨리어스는 한꺼번에 실행할 수 있는 여러 개의 명령들을 묶어서 저장하는 일종의 변수라고 생각할 수 있습니다. 앨리어스의 간단한 형태는 다음과 같습니다:
alias "앨리어스 이름" "명령1; 명령2; 명령3"
그리고 할당된 키를 통해 이 앨리어스를 실행할 수 있습니다:
bind "키" "앨리어스 이름"
매번 키를 누를 때마다 "명령1", "명령2", "명령3"이 순차적으로 실행됩니다.
복잡한 형태의 앨리어스
앨리어스는 어떤 명령도 실행할 수 있으며 이는 다른 앨리어스까지 포함합니다. 여기서 더 나아가, 한 앨리어스의 명령을 재정의하기 위해 다른 앨리어스에 이 앨리어스를 넣어서 실행할 수도 있습니다. 이를 통해 앨리어스 사이를 순환할 수 있습니다. 다음은 그 간단한 예입니다:
bind "key" namescroll alias namescroll "firstname" alias firstname "setinfo name ""First_name""; alias namescroll secondname" alias secondname "setinfo name ""Second_name""; alias namescroll thirdname" alias thirdname "setinfo name ""Third_name""; alias namescroll firstname"
이 자체로는 이해하기 어려우니까, 차근차근 나눠보겠습니다.
- 첫 번째 줄에서 "key"에 아직 정의하지 않은 "namescroll"를 할당합니다.
- 두 번째 줄에서 "firstname"명령을 실행하는 앨리어스인 "namescroll"을 정의합니다.
- 세 번째 줄에서 "firstname"앨리어스를 두 가지 명령으로 정의합니다.
- 첫 번째 명령은 게임 내 이름을 "First_Name"으로 바꿉니다.
- 두 번째 명령은 "namescroll"앨리어스를 "secondname"명령을 실행하는 앨리어스로 재정의합니다.
- 네 번째 줄에서 "secondname"을 같은 식으로 정의합니다. 게임 내 이름을 바꾸고, "namescroll"앨리어스를 "thirdname"을 실행하도록 재정의합니다.
- 다섯 번째 줄에서도 마찬가지 방식으로 "thirdname"을 정의하지만, 한 가지 변화가 있습니다. "namescroll"을 "firstname"을 실행하도록 재정의합니다.
이로써 루프가 완성되었습니다. 키를 누를 때마다 명령을 실행한 다음 앨리어스를 재정의하므로, 다음에 눌렸을 때엔 다른 명령을 실행할 수 있습니다. 루프 없이는 "namescroll"이 매번 다른 명령을 실행할 수 없었을 것입니다.
앨리어스 토글
앨리어스를 써서 명령의 상태를 바꿀 수 있습니다 (예를 들면 cl_showfps를 0과 1 사이에서 바꿉니다). 아래의 예제는 토글을 만드는 일반적인 방법을 설명합니다:
alias ToggleStateA "A에서 할 일을 실행; alias ToggleControl ToggleStateB" alias ToggleStateB "B에서 할 일을 실행; alias ToggleControl ToggleStateA" alias ToggleControl ToggleStateA bind {토글 키} ToggleControl
- 첫 번째 줄에서 첫 번째 상태를 정의하고, 컨트롤을 두 번째 상태로 재정의합니다.
- 두 번째 줄에서 두 번째 상태를 정의하고, 컨트롤을 첫 번째 상태로 재정의합니다.
- 세 번째 줄에서 컨트롤을 첫 번째 상태로 정의합니다.
- 마지막 줄에서 토글 컨트롤을 키에 할당해줍니다.
앨리어스 스위치
한 쌍의 앨리어스를 써서 키를 다른 명령에 할당시켰다가 다시 되돌릴 수 있습니다. 예:
alias +AlternateBinds "bind Q B에서 할 일을 실행" alias -AlternateBinds "bind Q A에서 할 일을 실행" bind {바인드 전환 키} +AlternateBinds
B에서 할 일을 실행시키기 위해서는 바인드 전환 키를 누른 채로 Q를 누릅니다.
앨리어스 루프
앨리어스와 대기 명령어를 결합해 앨리어스 루프를 만들 수 있습니다.
경고: 대기 명령어를 빠트리거나 대기 명령어가 막힌 서버에 들어갈 경우 아래의 예시가 TF2를 깨뜨릴 수 있습니다.
alias "Loop" "echo Looping every 150 ticks.; wait 150; Loop" Loop
차근차근 나눠서 알아봅시다:
- 첫 번째 줄
- echo는 콘솔에 메세지를 출력합니다. 이를 통해 앨리어스가 작동하고 있음을 알 수 있습니다.
- 대기 명령어가 앨리어스를 150틱동안 기다리게 만듭니다.
- Loop를 다시 불러서, echo부터 반복합니다.
- 두 번째 줄
- Loop를 불러서 루프를 시작합니다.
또한 다음처럼 앨리어스의 루프를 만들 수도 있습니다:
alias "Loop1" "echo Loop 1; wait 150; Loop2" alias "Loop2" "echo Loop 2; wait 150; Loop1"
Loop1이 Loop2를 부르고, 이는 Loop1을 부르고, ...
이 방법을 통해 루프 앨리어스를 지우지 않고 루프를 멈출 수도 있습니다:
alias "Loop1" "echo Loop1; wait 150; Loop2" alias "Loop2" "Loop1"
이렇게 만들어진 루프를
alias "Loop2"
이렇게 Loop2 앨리어스를 지워서 멈춥니다.
키 입력 상태에도 적용할 수 있습니다:
alias Loop2 Loop1 alias "Loop1" "echo Loop1; wait 150; Loop2" alias "+Loop" "alias Loop2 Loop1; Loop2" alias "-Loop" "alias Loop2" bind "<키>" "+Loop"
위의 명령이 수행하는 작업은 순서대로 다음과 같습니다:
- Loop2를 Loop1을 실행하는 앨리어스로 정의
- Loop1을 콘솔에 'Loop1'을 출력하고 150틱을 기다린 다음 Loop2를 호출하는 앨리어스로 정의
- +Loop를 앨리어스 Loop2가 Loop1을 실행하도록 재정의한 다음 Loop2를 호출하는 앨리어스로 정의
- -Loop를 앨리어스 Loop2를 지우는 앨리어스로 정의 (루프를 멈춘다)
유용한 스크립트 명령어
스크립트에 적용할 수 있는 인수들은 말그대로 수백가지가 넘습니다. 그 중 일부를 아래에 적습니다.
음성 명령
음성 명령을 통해 캐릭터가 말을 할 수 있습니다. 보통 신호를 보내거나 빈둥거리는 데에 쓰입니다.
음성 명령 문법은 다음과 같습니다:
voicemenu <메뉴 번호> <구절 번호>
<메뉴 번호>는 세 가지 메뉴의 번호, <구절 번호>는 각 메뉴에 딸린 8가지 명령의 번호입니다.
음성 명령 인수
- 0 <구절 번호>
- 0: 메딕!
- 1: 고맙다!
- 2: 돌격! 돌격! 돌격!
- 3: 이동하라!
- 4: 왼쪽으로 이동하라
- 5: 오른쪽으로 이동하라
- 6: 그래
- 7: 아니
- 1 <구절 번호>
- 0: 적이다!
- 1: 스파이다!
- 2: 전방에 센트리!
- 3: 여기 텔레포터가 필요하다
- 4: 여기 디스펜서가 필요하다
- 5: 여기 센트리가 필요하다
- 6: 충전 활성화!
- 7: 메딕: 우버차지 준비 완료
- 2 <구절 번호>
- 0: 도와줘!
- 1: 함성
- 2: 격려
- 3: 야유
- 4: 긍정적
- 5: 부정적
- 6: 나이스 샷
- 7: 훌륭함
빠른 스파이 변장
변장을 키에 할당하면 변장 메뉴를 쓰지 않고도 빠르고 간편하게 해낼 수 있습니다.
변장 명령 문법은 다음과 같습니다:
disguise <클래스 번호> <팀 번호>
<클래스 번호>는 변장하려는 클래스의 번호, <팀 번호>는 변장하려는 팀의 번호입니다.
변장 명령 인수
- 1 <클래스 번호>
- 1: 스카웃
- 2: 스나이퍼
- 3: 솔저
- 4: 데모맨
- 5: 메딕
- 6: 헤비
- 7: 파이로
- 8: 스파이
- 9: 엔지니어
- 2 <팀 번호>
- 1: 블루 팀
- 2: 레드 팀
- -1: 적 팀
- -2: 우리 팀
엔지니어 빠른 건설
스파이의 변장과 마찬가지로, 엔지니어도 PDA 메뉴를 거치지 않고 빠르게 건물을 폭파하고 지을 수 있습니다.
건설 명령 문법은 다음과 같습니다:
build <건물 번호> destroy <건물 번호>
<건물 번호>는 폭파하거나 지으려는 건물의 번호입니다.
건설 명령 인수
- 번호: 건설/폭파
- 0: 디스펜서
- 1: 텔레포터 입구
- 2: 센트리 건/미니 센트리
- 3: 텔레포터 출구
아래는 위의 문법을 적용하는 방법에 대한 예시입니다:
alias sentry "destroy 2; build 2" alias dispenser "destroy 0; build 0" alias entrance "destroy 1; build 1" alias exit "destroy 3; build 3" bind f1 sentry bind f2 dispenser bind f3 entrance bind f4 exit
이 예시에서는 건물을 F1-F4에 할당함으로써 기존 무기 선택 키와 겹치는 것을 피했습니다. 키를 누르면 해당하는 건물을 즉시 파괴하고 동시에 청사진을 꺼내 배치 준비를 마칩니다. 일부 건물에 대한 스크립트만 만들어 사용할 수도 있습니다.
자동으로 메딕 호출
키바인드를 통해 메딕을 자동으로 호출하는 체력 값을 조절할 수 있습니다:
hud_medicautocallersthreshold <퍼센트>
다른 플레이어의 체력이 지정된 <퍼센트>이하로 떨어지면 자동호출이 뜹니다. 0을 넣으면 자동호출이 뜨지 않고, 300(가능한 최대 체력)을 넣으면 모든 동료들의 위치가 표시됩니다.
이 명령어를 통해 흔히 "메딕 레이더"라 불리는 스크립트를 만들 수 있습니다: 명령을 실행하는 키를 누르고 있는 동안 자동호출 임계값이 300%로 올라가므로, 메딕은 전장에 혼자 남겨졌을 때 호출 표시를 통해 모든 동료들의 위치를 파악할 수 있습니다 (300%는 모든 클래스, 심지어 간자의 수리검을 통해 갓 오버힐을 받은 스파이의 최대 체력까지도 커버합니다).
alias "autocall_default" "hud_medicautocallersthreshold "75"" alias "autocall_all" "hud_medicautocallersthreshold "300"" alias "+radar" "autocall_all" alias "-radar" "autocall_default" bind mouse3 "+radar"
명령을 사용하지 않을 때의 기본 임계값(예시에서 75%)과 명령을 실행할 키바인드(예시에서 MOUSE3)는 원하는 대로 바꿀 수 있습니다.
주목할 만한 스크립트
게임플레이에 영향을 미치는 중요한 스크립트들이 있습니다. 일부는 패치되어 막혔지만, 그 외의 경우에는 아직도 사용할 수 있습니다.
패치된 스크립트
권총 스크립트
이전에는 권총을 키를 누르는 속도만큼 빠르게 쏠 수 있었습니다. 이걸 알고 있던 일부 플레이어들이 키를 누르고 있으면 권총을 가능한 가장 빠르게 연사하는 스크립트를 만들었습니다. 키를 마구 누를 필요가 없었기 때문에, 스카웃과 엔지니어는 비정상적으로 빠르게 총을 쏠 수 있었을 뿐 아니라 조준도 더 쉽게 할 수 있었습니다.
결국엔 밸브가 경기를 공평하게 만들었고, 권총은 키를 누르고 있으면 일정한 연사 속도에 도달하도록 패치되었습니다. 권총 스크립트는 더 이상 쓸모가 없어졌습니다.
돌격 방향 전환 스크립트
이전에는 시점을 좌우로 돌리는 키보드 명령어는 마우스 명령과는 다르게 취급되었습니다. 돌격 방패는 이 시점을 돌릴 수 있는 속도를 제한하는 최초의 무기였고, 그래서 밸브에서 마우스 회전 속도에 제한을 걸었지만, 같은 제한을 키보드 명령어에도 적용하는 것은 깜빡한 상태였습니다.
플레이어들은 돌격 중에는 다른 키바인드를 적용하는 스크립트를 만들었고, 그래서 전속력으로 시점을 회전할 수 있었습니다. 가장 세련된 형태는 돌격 중엔 마우스의 x축 입력을 키보드의 회전 명령어에 할당하고, 플레이어가 공격과 함께 돌격을 끝낼 때 할당을 푸는 것이었습니다.
결국엔 밸브에서 키보드의 회전 명령어에 대해서도 마우스처럼 제한을 걸었고, 따라서 이 스크립트를 쓰는 것은 아무런 이득이 없게 되었습니다.
하지만 아직도 돌격을 할 때와 공격을 할 때 다른 마우스 감도를 토글해주는 형태의 스크립트는 사용이 가능합니다. 게임패드의 아날로그 스틱을 써도 쉽게 회전 할 수 있습니다.
공중 숙이기 스크립트
이전에는 점프 중에 원하는 만큼 숙이기를 할 수 있었습니다. 숙인 상태와 숙이지 않은 상태를 계속해서 빠르게 왕복하는 스크립트를 쓰면 공중에서 피격 판정을 받기 힘들어져 훨씬 더 맞추기 힘든 타겟이 될 수 있었습니다.
밸브가 이를 패치했고, 따라서 이제는 점프 중에 두 번까지만 숙이기를 할 수 있습니다.
G.R.U. 스크립트
이전에는 G.R.U.를 끼면 체력이 초당 6씩 떨어졌습니다. 하지만 점프 중에는 이 무기의 이동 속도 보너스가 유지되었기 때문에, 이것을 낀 채로 점프한 다음 재빨리 무기를 바꾸는 식으로 속력은 거의 잃지 않으면서 체력 감소를 줄일 수 있었습니다. 굳이 직접 일일히 무기를 바꾸지 않아도, 스크립트를 쓰면 이 행동을 훨씬 더 간편하게 해낼 수 있었습니다.
하지만 2012년 6월 27일 패치를 통해 무기의 특성이 매 초당 체력을 잃는 것에서 짧은 시간 동안 죽음의 표적이 되는 것으로 바뀌었습니다.
현존하는 스크립트
무기 감추기 스크립트
클래스가 선택한 무기 슬롯에 따라 무기 표시 옵션을 토글할 수 있는 스크립트가 많이 있습니다. 보통 플레이어들은 총을 시야 확보를 위해 감추고, 근접 무기, PDA, 시계 등의 모델을 중요한 정보를 알려주기 때문에 보여둡니다. 예를 들면 스파이는 언제 은폐 준비가 끝나는지, 부딪혀서 드러난 은폐가 언제까지 보이는지, 언제 데드 링어가 작동하는지를 자신의 보이는 모델에 의존해서 확인합니다. 다른 클래스들은 근접 무기 애니메이션을 통해 언제 공격 판정이 뜰 지를 판단합니다.
센트리 점프 스크립트
엔지니어 업데이트 이후로 엔지니어는 센트리 건을 옮길 수 있게 되었으며, 같은 업데이트에서 소개된 랭글러를 써서 센트리 로켓을 이용한 센트리 점프도 할 수 있게 되었습니다. 매우 빠른 키입력에 성공하면 플레이어가 센트리 점프로 날아가기 직전에 센트리 건을 들고 나를 수 있다는 것이 밝혀졌습니다.
직접 이 재주를 부리기는 것은 매우 어려운 일입니다. 그래서 일부 플레이어들은 정확한 순서와 속도로 명령을 실행해 매번 센트리 점프를 할 때마다 센트리를 옮길 수 있는 스크립트를 만들어냈습니다.
총잡이 스크립트
전장의 열기 속에서 PDA를 직접 꺼내 미니센트리를 부수고 다시 짓는 일이 꽤 거추장스러운 일이었기 때문에, 플레이어들은 마우스 버튼 한 두 개만으로 미니센트리를 부수고 지을 수 있는 스크립트를 만들었습니다. 이 스크립트를 개척자의 정의와 함께 쓰면 수시로 필요할 때마다 복수 치명타를 보충할 수 있기 때문에 무척 유용합니다.
감도와 조정 키 스크립트
일부 플레이어들은 클래스마다 다른 감도와 조정 방법을 쓰는 것을 선호합니다 (예를 들면 그다지 섬세한 조준이 필요하지 않은 데모맨에서 부주의적으로 손떨림을 일으켜도 조준이 지장을 받지 않을 정도로 낮은 마우스 감도가 필요한 스나이퍼로 바꾸는 경우). 이들을 위해서 클래스마다, 심지어는 무기마다 마우스 감도와 조정 방법을 바꿔주는 스크립트가 있습니다.
돌격 대시 스크립트
돌격과 점프의 시간간격을 맞추는 것이 쉽지 않기 때문에, 일부 플레이어들은 두 행동을 하나로 묶는 간단한 스크립트를 만들어서 돌격 대시의 거리를 최대로 늘리곤 합니다. 하지만 돌격을 끝내기 위해 근접 무기를 휘둘러줘야 하는 것은 마찬가지입니다.
퀵스코프 스크립트
많은 플레이어들이 줌 인 이후에 곧바로 헤드샷을 쏘는 것을 어려워 합니다. 때문에 마우스 버튼 한 번으로 줌 인과 발사를 실행하는 스크립트가 만들어졌습니다. 퀵스코프는 적을 스코프 밖에서 조준해야 하기 때문에 쉽지 않은 기술이지만, 숙달하면 훨씬 더 효율적인 플레이를 할 수 있게 됩니다.
로켓점프 스크립트
로켓 점프로 최대 높이나 거리에 도달하기 위해서는 점프, 숙이기, 발사를 거의 동시에 해내야 합니다. 이것에 어려움을 느낀 일부 플레이어들은 한 번의 버튼으로 이것들을 모두 실행해주는 간단한 스크립트를 만들어서 사용합니다.
참고
- 유용한 콘솔 명령어 목록
- 커스터마이징 - config_default.cfg: TF2 기본 키바인드
외부 링크
- Steam Users' Forums - TF2 Scripting Tutorial (영어). 스크립팅에 대한 기초를 유용하고 이해하기 쉬운 수많은 예제와 함께 다루는 튜토리얼.
- TF2 scripting tutorial - Warrior Nation Network (영어). 기초적인 스크립트 문법에 대한 사전지식을 필요로 하는, 훨씬 더 심화된 튜토리얼.
- Gamebanana.com - TF2 scripts (영어). 수백가지가 넘는 TF2 스크립트 예제.