스크립트

From Team Fortress Wiki
< Scripting
Revision as of 12:21, 1 February 2024 by Howtoplaytf2happy (talk | contribs) (유용한 스크립트 명령어)
Jump to: navigation, search


스크립트는 설정 파일(.cfg)을 이용해 복잡한 행동들과 콘솔 명령들을 순서대로 자동으로 실행하는 새로운 bind와 alias를 만드는 것을 의미합니다. 스크립트는 Team Fortress 2에 내장된 기능으로서, VAC를 통해 제제당하지 않습니다.

  • bind는 특정한 키를 눌렀을 때 무기 선택이나 음성 명령, 퀵챗 같은 명령을 실행할 수 있게 해줍니다.
  • alias는 여러 명령들을 한꺼번에 실행하는 새로운 명령을 만들어 줍니다. 예를 들어서 alias를 통해 앉기뛰기를 묶은 덕점프 명령을 만들어서 원하는 키에 지정할 수 있습니다.

스크립트의 범위는 명령의 단순한 조합에서부터 재귀 루프, 다른 Alias를 포함하는 alias까지 이릅니다. 시간과 노력을 들이면 스크립트를 통해 하나의 키에 클라이언트에서 실행할 수 있는 거의 모든 행동들을 지정할 수 있습니다.

기본적인 스크립트 파일

Team Fortress 2는 몇 가지 게임 파일들을 자동으로 읽어들여 그 안의 모든 bind와 alias들을 실행합니다. 그 파일들은 다음과 같습니다.

  • config.cfg - 게임 내의 키 설정이나 비디오 설정 메뉴를 사용할 때마다 갱신되는 기본 설정 파일입니다. 직접 고쳐도 안전하지만, 그대로 놔두는 것이 더 편합니다. 다른 설정 파일에서 변경된 사항들은 여기에도 반영됩니다.
  • autoexec.cfg - 사용자 지정 키바인드와 Alias를 실행하는 기본 설정 파일입니다. 여기에 직접 키바인드를 저장할 수도 있지만, 다른 .cfg 파일을 직접 만들어 그 안에 키바인드를 저장한 다음 여기에서는 그 파일들만 실행하게 만드는 것이 보통 더 쉽습니다.
  • <병과>.cfg - 해당하는 병과를 선택했을 때 자동으로 실행되는 설정 파일입니다. 여기에 직접 키바인드를 저장할 수도 있지만, 다른 .cfg 파일을 직접 만들어 그 안에 키바인드를 저장한 다음 여기에서는 그 파일들만 실행하게 만드는 것이 보통 더 쉽습니다.

문법

문법 규칙은 다음과 같습니다.

  • 모든 bind와 alias는 다음의 형태를 따라야합니다:
명령 <인수1> <인수2>
  • 명령은 사용하고자 하는 스크립트의 종류입니다. 다음을 포함합니다:
  • bind - 특정한 키에 명령을 할당하기 위해 사용합니다.
  • alias - alias 하나에 할당될 명령을 지정하기 위해 사용합니다.
  • exec - 명령을 자동으로 실행할 설정 파일을 불러들이기 위해 사용합니다.
  • <인수1>은 지정할 키나 새로 만들 alias의 이름입니다.
  • <인수2>는 키나 alias에 할당될 명령입니다.
  • 여러 명령들을 한꺼번에 실행할 때는 아래처럼 모든 인수들을 큰 따옴표로 묶고 세미콜론(;)을 써서 구분해줍니다.
 alias "spraynpray" "+attack; wait 500; -attack"
 bind "mouse3" "spraynpray"
  • alias를 실행하면 플레이어의 무기를 500 물리 프레임(physics frames)(초당 100프레임으로 돌아가는 서버에서 약 5초)동안 발사한 뒤 멈춥니다. 이 alias는 키바인딩을 통해 마우스 가운데 버튼에 할당되었으며 따라서 이 버튼을 누르면 실행됩니다.
  • 큰 따옴표 안에 큰 따옴표를 쓸 경우, 큰 따옴표를 두 번 써서("") 묶음을 마쳐줘야 합니다. 그렇지 않을 경우 명령의 해석이 잘못 될 수 있습니다.

키바인드

Team Fortress 2에서는 키보드의 모든 키를 스크립트와 alias에 할당할 수 있습니다. 위의 예시에서처럼, 할당을 원하는 키는 bind명령어와 할당하려는 명령의 사이에 입력합니다. 알파벳과 숫자 (a-z, 0-9), 기능 키들은 키의 이름을 입력하는 것만으로 사용할 수 있습니다 ("bind a"는 'a'를, "bind 5"는 '5'를, "bind F7"은 'F7'을 할당합니다). 그 외의 경우에는 특정한 이름을 써넣어야 사용할 수 있습니다. 이들은 다음과 같습니다:

키 목록

키보드 키바인드 명칭
좌 Shift SHIFT
좌 Ctrl CTRL
좌 Alt ALT
우 Shift RSHIFT
우 Alt RALT
Tab TAB
Backspace BACKSPACE
세미콜론 SEMICOLON
ScrLk SCROLLLOCK
Pause/Break PAUSE
Insert INS
Home HOME
PgUp PGUP
Del DEL
End END
PgDn PGDN
방향키(화살표 키) ---[1]
위 방향키 UPARROW
아래 방향키 DOWNARROW
오른쪽 방향키 RIGHTARROW
왼쪽 방향키 LEFTARROW
넘버패드 ---[2]
Num NUMLOCK
/ KP_SLASH
* KP_MULTIPLY
- KP_MINUS
+ KP_PLUS
Enter KP_ENTER
Del(.) KP_DEL
1(End) KP_END
2(아래 방향키) KP_DOWNARROW
3(PgDn) KP_PGDN
4(왼쪽 방향키) KP_LEFTARROW
5 KP_5
6(오른쪽 방향키) KP_RIGHTARROW
7(Home) KP_HOME
8(위 방향키) KP_UPARROW
9(PgUp) KP_PGUP
0(Ins) KP_INS
마우스 ---[3]
위로 스크롤(휠) MWHEELUP
아래로 스크롤(휠) MWHEELDOWN
좌클릭 MOUSE1
우클릭 MOUSE2
휠 클릭 MOUSE3
왼쪽 버튼 클릭(앞쪽) MOUSE4
오른쪽 버튼 클릭(뒤쪽) MOUSE5

이를 이용해 다음과 같은 명령을 만들어 설정 파일에 저장할 수 있습니다: bind "KP_ENTER" "voicemenu 0 6". 넘버패드의 'Enter'키를 누르면 음성 명령어 '그래'가 나옵니다.

기본 명령어

대부분의 명령어들은 하나의 인수만을 받아서 실행합니다.

몇 몇 중요한 명령어의 경우 둘 이상의 인수를 받는 경우도 있습니다. 다음과 같습니다:

  • disguise X Y - 스파이 변장. X는 병과 번호(1-9), Y는 팀 인수(레드: 1, 블루 : 2).
  • voicemenu X Y - 음성 명령 실행. X는 첫 번째 메뉴, Y는 그 메뉴 안에서의 구절 번호.

예: "voicemenu 1 1"은 '스파이!'입니다. 그러므로:

bind "t" "voicemenu 1 1"

이 명령은 해당 키를 눌렀을 때 캐릭터가 스파이를 외치게 만듭니다.

Toggle

toggle명령을 통해 Convar를 켜고 끄거나, 정해진 값 사이를 순환할 수 있습니다.

bind "x" "toggle sv_cheats" 0 1

콘솔에 toggle viewmodel_fov 75와 같이 입력해 Convar 값을 조절할 수 있습니다. 그러나 toggle을 생략해도 틀린 것은 아닙니다

bindtoggle은 bind <key> toggle <cvar> 0 1 1을 단축한 명령어입니다.

bindtoggle "x" "sv_cheats" 0 1 

이 명령어는 'bind x "toggle sv_cheats" 0 1의 축소된 형태입니다.

toggle 명령어를 사용할 때에는 "toggle <convar>" 0 1와 같이 toggle과 convar를 큰따옴표로 묶고 인수는 밖에 할당해야 합니다.

Incrementvar

실행할 때마다 특정한 값들 사이를 순환하며 순환된 값을 다른 명령어에 적용합니다. 다음과 같은 형태를 띱니다:

명령 "<인수1>" "incrementvar <인수2> X Y Z"
  • X와 Y는 <인수2>에 적용할 값의 범위입니다.
  • Z는 값의 범위 사이를 순환하는 간격입니다.

1과 10사이에서 2씩 증가하는 값이 필요할 경우, X Y Z에 1 10 2를 할당합니다. 매번 명령을 실행할 때마다 2, 4, 6, 8, 10, 2, 4, 6, 8, 10, ...의 값으로 실행됩니다.

다음은 incrementvar를 사용하는 예입니다:

bind MWHEELUP "incrementvar fov_desired 75 90 1"
bind MWHEELDOWN "incrementvar fov_desired 75 90 -1"

마우스 휠을 위로 돌리면 시야가 늘어나고 아래로 돌리면 1씩 줄어듭니다. 이는 순환하며 90에서 증가시키면 75로 돌아옵니다.

+와 -명령어

여기에 해당하는 명령어들은 두 가지 상태를 갖고 있습니다. 할당된 키를 누르고 있는 동안 +명령어가 계속해서 실행됩니다. 키를 떼면 -명령어가 계속해서 실행됩니다.

예:

bind "CTRL" "+duck"

c에 +duck이 바인드되어 있으므로 c를 누르면 앉습니다. 키를 떼면 실행되는 명령어가 "+duck"에서 "-duck"으로 바뀌고 플레이어는 다시 일어납니다 (앉는 것을 멈춥니다).

보통은 명령이나 alias가 키에 할당되어 있을 경우, +는 키를 누르고 있는 동안 계속해서 게임에 명령을 실행하라고 전합니다. -도 비슷하게 키를 떼고 있는 동안 계속해서 게임에 명령을 실행하라고 전합니다.

alias를 +를 붙여 정의할 경우, 이 alias는 키를 누르고 있는 동안 계속해서 실행됩니다. 키를 누르지 않는 동안은 -명령어가 실행됩니다.

Wait

wait 명령어는 특정 서버에서 작동하지 않을 수 있습니다. 이는 최대 명령어 호출 양을 넘어 강제 종료로 이어질 수 있으니 조심해서 사용하십시오

alias를 실행하는 동안 대기 시간을 두거나, 명령을 너무 빨리 연이어 실행해서 클라이언트가 강제 종료되는 것을 막을 때 wait명령어를 사용합니다.

대기 명령어는 스크립트에 있는 다음 명령어를 1 물리 프레임 늦게 실행하도록 만듭니다. "wait 50"을 쓰면 alias를 계속 실행하기 전 50 프레임을 기다리게 만들 수 있습니다. 초당 100프레임으로 돌아가는 서버에서 "wait 100"은 대략 1초 정도 됩니다.

일부 서버에서는 대기 명령어를 막아두기도 합니다. 이 서버에서 플레이할 때는 대기 명령어가 무시되며, 따라서 일부 스크립트가 깨질 수 있습니다. 대기 명령어로 순환의 시작과 끝을 나누는 루프를 이런 서버에서 사용하면 즉시 접속이 끊어질 수 있습니다.

Alias

alias는 한꺼번에 실행할 수 있는 여러 개의 명령들을 묶어서 저장하는 일종의 변수입니다. alias의 형태는 다음과 같습니다:

alias "이름" "명령1; 명령2; 명령3"

그리고 할당된 키를 통해 이 alias를 실행할 수 있습니다:

bind "키" "alias 이름"

매번 키를 누를 때마다 "명령1", "명령2", "명령3"이 순차적으로 실행됩니다.

Alias의 '명령'에는 다른 alias들은 물론이고 alias 자신 또한 들어갈 수 있습니다.

유용한 스크립트 명령어

스크립트에 적용할 수 있는 인수들은 말그대로 수백가지가 넘습니다. 그 중 일부를 아래에 적습니다.

음성 명령

음성 명령을 통해 캐릭터가 말을 할 수 있습니다. 보통 신호를 보내거나 빈둥거리는 데에 쓰입니다.

음성 명령 문법은 다음과 같습니다:

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 <병과 번호> <팀 번호>
 bind "<아무 키>" "disguise 8 -2" 아군 스파이로 변장하는 키이지만 은폐 상태에서 변장을 해제하는 데 사용합니다.

<병과 번호>는 변장하려는 병과의 번호, <팀 번호>는 변장하려는 팀의 번호입니다.

변장 명령 인수

  • 1 <병과 번호>
    1: 스카웃
    2: 스나이퍼
    3: 솔저
    4: 데모맨
    5: 메딕
    6: 헤비
    7: 파이로
    8: 스파이
    9: 엔지니어
  • 2 <팀 번호>
    1: 블루 팀
    2: 레드 팀
    -1: 적 팀
    -2: 우리 팀

엔지니어 빠른 건설

스파이의 변장과 마찬가지로, 엔지니어도 PDA 메뉴를 거치지 않고 빠르게 구조물을 폭파하고 지을 수 있습니다.

건설 명령 문법은 다음과 같습니다:

 build <구조물 번호>
 destroy <구조물 번호>
 bind "F1" "build 2"

F1을 누르면 센트리 건 청사진을 꺼내 설치를 준비합니다.

<구조물 번호>는 폭파하거나 지으려는 구조물의 번호입니다.

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에 할당함으로써 기존 무기 선택 키와 겹치는 것을 피했습니다. 키를 누르면 해당하는 구조물을 즉시 파괴하고 동시에 청사진을 꺼내 배치 준비를 마칩니다. 일부 구조물에 대한 스크립트만 만들어 사용할 수도 있습니다.

건설 명령 인수

  • 번호: 건설/폭파
    0: 디스펜서
    1: 텔레포터 입구
    2: 센트리 건/소형 센트리
    3: 텔레포터 출구

자동으로 메딕 호출

키바인드를 통해 메딕을 자동으로 호출하는 체력 값을 조절할 수 있습니다:

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)는 원하는 대로 바꿀 수 있습니다.

주목할 만한 스크립트

게임플레이에 영향을 미치는 중요한 스크립트들이 있습니다. 일부는 패치되어 막혔지만, 그 외의 경우에는 아직도 사용할 수 있습니다.

패치된 스크립트

권총 스크립트

이전에는 권총을 키를 누르는 속도만큼 빠르게 쏠 수 있었습니다. 이걸 알고 있던 일부 플레이어들이 키를 누르고 있으면 권총을 가능한 가장 빠르게 연사하는 스크립트를 만들었습니다. 키를 마구 누를 필요가 없었기 때문에, 스카웃엔지니어는 비정상적으로 빠르게 총을 쏠 수 있었을 뿐 아니라 조준도 더 쉽게 할 수 있었습니다.

결국엔 Valve가 경기를 공평하게 만들었고, 권총은 키를 누르고 있으면 일정한 연사 속도에 도달하도록 패치되었습니다. 권총 스크립트는 더 이상 쓸모가 없어졌습니다.

돌격 방향 전환 스크립트

이전에는 시점을 좌우로 돌리는 키보드 명령어는 마우스 명령과는 다르게 취급되었습니다. 돌격 방패는 이 시점을 돌릴 수 있는 속도를 제한하는 최초의 무기였고, 그래서 Valve에서 마우스 회전 속도에 제한을 걸었지만, 같은 제한을 키보드 명령어에도 적용하는 것은 깜빡한 상태였습니다.

플레이어들은 돌격 중에는 다른 키바인드를 적용하는 스크립트를 만들었고, 그래서 전속력으로 시점을 회전할 수 있었습니다. 가장 세련된 형태는 돌격 중엔 마우스의 x축 입력을 키보드의 회전 명령어에 할당하고, 플레이어가 공격과 함께 돌격을 끝낼 때 할당을 푸는 것이었습니다.

결국엔 Valve에서 키보드의 회전 명령어에 대해서도 마우스처럼 제한을 걸었고, 따라서 이 스크립트를 쓰는 것은 아무런 이득이 없게 되었습니다.

하지만 아직도 돌격을 할 때와 공격을 할 때 다른 마우스 감도를 토글해주는 형태의 스크립트는 사용이 가능합니다. 게임패드의 아날로그 스틱을 써도 쉽게 회전 할 수 있습니다.

공중 숙이기 스크립트

이전에는 점프 중에 원하는 만큼 숙이기를 할 수 있었습니다. 숙인 상태와 숙이지 않은 상태를 계속해서 빠르게 왕복하는 스크립트를 쓰면 공중에서 피격 판정을 받기 힘들어져 훨씬 더 맞추기 힘든 타겟이 될 수 있었습니다.

Valve가 이를 패치했고, 따라서 이제는 점프 중에 두 번까지만 숙이기를 할 수 있습니다.

G.R.U. 스크립트

이전에는 G.R.U.를 끼면 체력이 초당 6씩 떨어졌습니다. 하지만 점프 중에는 이 무기의 이동 속도 증가가 유지되었기 때문에, 이것을 낀 채로 점프한 다음 재빨리 무기를 바꾸는 식으로 속력은 거의 잃지 않으면서 체력 감소를 줄일 수 있었습니다. 굳이 직접 일일히 무기를 바꾸지 않아도, 스크립트를 쓰면 이 행동을 훨씬 더 간편하게 해낼 수 있었습니다.

하지만 2012년 6월 27일 패치를 통해 무기의 특성이 매 초당 체력을 잃는 것에서 짧은 시간 동안 죽음의 표적이 되는 것으로 바뀌었습니다.

현존하는 스크립트

무기 감추기 스크립트

병과가 선택한 무기 칸에 따라 무기 표시 옵션을 토글할 수 있는 스크립트가 많이 있습니다. 보통 플레이어들은 총을 시야 확보를 위해 감추고, 근접 무기, PDA, 시계 등의 모델을 중요한 정보를 알려주기 때문에 보여둡니다. 예를 들면 스파이는 언제 은폐 준비가 끝나는지, 부딪혀서 드러난 은폐가 언제까지 보이는지, 언제 데드 링어가 작동하는지를 자신의 보이는 모델에 의존해서 확인합니다. 다른 병과들은 근접 무기 애니메이션을 통해 언제 공격 판정이 뜰 지를 판단합니다.

센트리 점프 스크립트

엔지니어 업데이트 이후로 엔지니어는 센트리 건을 옮길 수 있게 되었으며, 같은 업데이트에서 소개된 원격 조련 장비를 써서 센트리 로켓을 이용한 센트리 점프도 할 수 있게 되었습니다. 매우 빠른 키입력에 성공하면 플레이어가 센트리 점프로 날아가기 직전에 센트리 건을 들고 나를 수 있다는 것이 밝혀졌습니다.

직접 이 재주를 부리기는 것은 매우 어려운 일입니다. 그래서 일부 플레이어들은 정확한 순서와 속도로 명령을 실행해 매번 센트리 점프를 할 때마다 센트리를 옮길 수 있는 스크립트를 만들어냈습니다.

총잡이 스크립트

전장의 열기 속에서 PDA를 직접 꺼내 소형 센트리를 부수고 다시 짓는 일이 꽤 거추장스러운 일이었기 때문에, 플레이어들은 마우스 버튼 한 두 개만으로 소형 센트리를 부수고 지을 수 있는 스크립트를 만들었습니다. 이 스크립트를 개척자의 정의와 함께 쓰면 수시로 필요할 때마다 복수 치명타를 보충할 수 있기 때문에 무척 유용합니다.

감도와 조정 키 스크립트

일부 플레이어들은 병과마다 다른 감도와 조정 방법을 쓰는 것을 선호합니다 (예를 들면 그다지 섬세한 조준이 필요하지 않은 데모맨에서 부주의적으로 손떨림을 일으켜도 조준이 지장을 받지 않을 정도로 낮은 마우스 감도가 필요한 스나이퍼로 바꾸는 경우). 이들을 위해서 병과마다, 심지어는 무기마다 마우스 감도와 조정 방법을 바꿔주는 스크립트가 있습니다.

돌격 서프 스크립트

돌격과 점프의 시간간격을 맞추는 것이 쉽지 않기 때문에, 일부 플레이어들은 두 행동을 하나로 묶는 간단한 스크립트를 만들어서 돌격 대시의 거리를 최대로 늘리곤 합니다. 하지만 돌격을 끝내기 위해 근접 무기를 휘둘러줘야 하는 것은 마찬가지입니다.

퀵스코프 스크립트

많은 플레이어들이 줌 인 이후에 곧바로 헤드샷을 쏘는 것을 어려워 합니다. 때문에 마우스 버튼 한 번으로 줌 인과 발사를 실행하는 스크립트가 만들어졌습니다. 퀵스코프는 적을 스코프 밖에서 조준해야 하기 때문에 쉽지 않은 기술이지만, 숙달하면 훨씬 더 효율적인 플레이를 할 수 있게 됩니다.

로켓점프 스크립트

로켓 점프로 최대 높이나 거리에 도달하기 위해서는 점프, 숙이기, 발사를 거의 동시에 해내야 합니다. 이것에 어려움을 느낀 일부 플레이어들은 한 번의 버튼으로 이것들을 모두 실행해주는 간단한 스크립트를 만들어서 사용합니다.

참고

외부 링크

  • 키보드 오른쪽의 방향키(화살표 키)를 지칭합니다.
  • 이제부터는 넘버패드의 키바인드명을 지칭합니다.
  • 이제부터는 마우스의 키바운드명을 지칭합니다