Difference between revisions of "Scripting/ko"

From Team Fortress Wiki
Jump to: navigation, search
m
(무기 줌 스크립트)
 
(32 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:스크립팅}}
+
{{DISPLAYTITLE:스크립트}}
  
'''스크립팅'''설정 파일(.cfg)을 이용해 복잡한 행동들과 [[console/ko|콘솔]] 명령들을 순서대로 자동으로 실행하는 새로운 키바인드와 앨리어스를 만드는 것을 말합니다. 스크립팅은 Team Fortress 2에 내장된 기능으로서, 이를 사용해도 VAC에 걸리지 않습니다.
+
'''스크립트'''설정 파일 {{code|.cfg}}을 이용해 복잡한 행동들과 [[console/ko|콘솔]] 명령들을 자동으로 실행하는 새로운 bind와 alias를 만드는 것을 의미합니다. 스크립트는 Team Fortress 2에 내장된 기능으로서, [[Valve Anti-Cheat/ko|VAC]]를 통해 제제당하지 않습니다. 스크립트를 사용하는 방식은 단순히 키를 누르면 명령이 실행되는 것부터 반복문과 서로 재정의 하는 alias까지 다양합니다. 스크립트를 이용해 자동으로 만들 수 있는 것들은 수동으로도 할 수 있지만, 스크립트는 이를 전장에서 쉽게 이용할 수 있게 합니다.
  
* 키바인드는 특정한 키를 눌렀을 때 [[weapon/ko|무기]] 슬롯 선택이나 채팅 매크로 같은 콘솔 명령을 실행할 있게 해줍니다.
+
== 스크립트 명령어 ==
 +
이 명령어들은 스크립트 외에는 사용할 없는 명령어로, 게임에 직접적으로 영향을 끼치지 않습니다.
  
* 앨리어스는 여러 명령들을 한꺼번에 실행하는 새로운 명령을 만들어 줍니다. 앨리어스를 통해 [[crouch/ko|앉기]]와 [[jump/ko|뛰기]]를 묶은 [[Jumping/ko#앉고 뛰기|앉으며 뛰기]] 명령을 만들어서 원하는 키에 지정할 있습니다.
+
=== bind ===
 +
{{Main|vdc:bind|l1=bind}} [[List of default keys/ko|기본 키 목록은 이 문서를 참조하십시오.]]
 +
가장 단순한 명령어는 bind 명령어로, 이 명령어는 특정 키를 누르면 설정, 명령어, 또는 다른 스크립트 등의 특정 작업을 수행할 있게 합니다.
  
스크립트의 범위는 명령의 단순한 조합에서부터 자기지시적 루프, 다른 앨리어스를 내포하는 앨리어스까지 이릅니다. 충분한 시간과 노력을 들이면 당신도 스크립팅을 통해 하나의 키에 클라이언트에서 실행할 수 있는 거의 모든 행동들을 지정할 수 있습니다.
+
<pre>bind [KEY] [COMMAND]</pre>
 +
큰따옴표도 사용할 수 있으며, 어떤 값과 명령 사이에 띄어쓰기가 필요한 경우에 사용하여, 이를 한 명령으로 인식하게 합니다. 예를 들어 {{code|bind mouse1 "say (글)"}}의 경우 say와 (글) 사이에 띄어쓰기가 필요하여 큰따옴표를 사용합니다.
  
==기본적인 스크립트 파일==
+
<pre>bind [KEY] "[COMMAND 1]; [COMMAND 2]; [COMMAND 3]"</pre>
 +
큰따옴표를 키에도 사용할 수 있으나, 명령에 사용되지 않으면 콘솔은 연속된 명령을 인식할 수 없기 때문에 명령에 큰따옴표를 사용해야 합니다.
  
''Team Fortress 2''는 몇 가지 게임 파일들을 자동으로 읽어들여 그 안의 모든 키바인드와 앨리어스들을 실행합니다. 그 파일들은 다음과 같습니다:
+
''주석:'' 명령 <pre>say "예시 문장"</pre>올바른 명령이지만, <pre>bind [KEY] "say "예시 문장""</pre>은 올바르지 않은 명령입니다. 이는 큰따옴표가 잘못 인식되며, say 뒤의 큰따옴표를 인식하고 명령을 중단합니다.
  
* config.cfg - 게임 내의 키 설정이나 비디오 설정 메뉴를 사용할 때마다 갱신되는 기본 설정 파일입니다. 직접 고쳐도 안전하지만, 그대로 놔두는 것이 더 편합니다. 다른 설정 파일에서 변경된 사항들은 여기에도 반영됩니다.
+
bind 명령어는 두 가지의 형태가 있습니다.
 +
<pre>bind e "voicemenu 0 0"</pre>
 +
이 bind는 플레이어가 {{key|E}}를 누르면 메딕을 부르게 합니다.
  
* autoexec.cfg - 커스텀 키바인드와 앨리어스를 실행하는 기본 설정 파일입니다. 여기에 직접 키바인드를 저장할 수도 있지만, 다른 .cfg 파일을 직접 만들어 그 안에 키바인드를 저장한 다음 여기에서는 그 파일들만 실행하게 만드는 것이 보통 더 쉽습니다.
+
<pre>bind w +forward</pre>
 +
이 bind는 플레이어가 {{key|W}}를 누르고 있으면 앞으로 가게 합니다.
  
* <클래스>.cfg - 해당하는 클래스를 선택했을 때 자동으로 실행되는 설정 파일입니다. 여기에 직접 키바인드를 저장할 수도 있지만, 다른 .cfg 파일을 직접 만들어 그 안에 키바인드를 저장한 다음 여기에서는 그 파일들만 실행하게 만드는 것이 보통 더 쉽습니다.
+
=== say ===
 +
say 명령어는 문장이나 단어를 [[Text chat/ko|채팅]] 창에 전송할 수 있습니다.
 +
  bind "<아무 키>" "say <발신할 글>"
 +
"say_team <발신할 글>"은 팀에게만 발신합니다.
 +
"say_party <발신할 글>"은 파티에게만 발신합니다.
  
==문법==
+
say 명령어 단독으로 사용할 경우 채팅을 직접 작성할 수 있습니다.
문법 규칙은 다음과 같습니다:
+
  bind "<아무 키>" "say_party"
 +
<아무 키>를 누르면 파티에게만 발신되는 채팅 작성 창을 엽니다.
  
* 모든 키바인드와 앨리어스는 다음의 형태를 따라야합니다:
+
=== toggle ===
 +
이 명령어는 두 개 이상의 값을 번갈아 사용할 때 사용합니다.
 +
  "toggle <convar>" 인수 1 [인수 2]
 +
<pre>toggle "sv_cheats" 0 1
 +
bind "p" "toggle sv_cheats" 0 1</pre>
 +
:''주석:'' 만약 값을 지정하지 않는다면, toggle과 bindtoggle은 값을 0과 1 중 현재 상태와 다른 값으로 전환합니다.
 +
toggle과 bindtoggle을 사용할 때, 할당되는 값이 큰따옴표 밖에 있어야 합니다. ("예시 명령" 0 1)
  
:'''명령 <인수1> <인수2>'''
+
=== bindToggle ===
 +
이 명령어는 {{code|bind "<아무 키>" toggle ~}}을 단축시킨 명령어입니다
  
:* 명령은 사용하고자 하는 스크립트의 종류입니다. 다음을 포함합니다:
+
<pre>bindToggle o sv_cheats 0 1</pre>
 +
:''주석:'' 만약 값을 지정하지 않는다면, toggle과 bindtoggle은 값을 0과 1 중 현재 상태와 다른 값으로 전환합니다.
 +
toggle과 bindtoggle을 사용할 때, 할당되는 값이 큰따옴표 밖에 있어야 합니다. ("예시 명령" 0 1)
  
::* bind - 특정한 키에 명령을 할당하기 위해 사용합니다.
+
=== incrementvar ===
::* alias - 앨리어스에 할당될 명령을 지정하기 위해 사용합니다.
+
이 명령어는 지정한 값 내의 인수를 순환합니다.
::* exec - 명령을 자동으로 실행할 설정 파일을 불러들이기 위해 사용합니다.
+
  "incrementvar <convar> <최솟값> <최댓값> <증가값>"
 +
<pre>bind MWHEELUP "incrementvar fov_desired 75 90 1"
 +
bind MWHEELDOWN "incrementvar fov_desired 75 90 -1"</pre>
 +
이 명령어는 휠을 위로 올리면 [[Field of View/ko|시야]]가 넓어지고, 아래로 내리면 시야가 좁아지게 합니다.
 +
:''주석:'' incrementvar은 지정한 값보다 커지거나 작아지려 할 경우 값을 순환하도록 합니다. 예를 들어, 시야가 90보다 커지려 할 경우 75부터 90까지 다시 증가하고, 75보다 작아지려 할 경우 90에서 다시 75까지 작아집니다.
  
:* <인수1>은 지정할 키나 새로 만들 앨리어스의 이름입니다.
+
=== alias ===
 +
{{Main|vdc:alias|l1=alias}}
 +
alias는 여러 명령어를 한 명령으로 사용할 수 있게 합니다. 따라서 이는 굉장히 효율적이며, 여러 명령을 여러 번 사용해야 할 경우 가장 효과적입니다.
 +
:''주석:'' alias의 이름은 띄어쓰기를 포함할 수 없으며, 언더바, 숫자 및 특수문자를 포함할 수 있습니다. alias의 이름은 대소문자를 구분합니다.
 +
  alias <alias_name> "<command>; <command2>"
 +
  bind "<아무 키>" "<alias_name>"
 +
<pre>alias Call_For_Medic "Voicemenu 0 0"
 +
bind "e" "Call_For_Medic"</pre>
 +
이 스크립트는 bind와 똑같이 작동하며, 플레이어가 {{key|E}}를 누를 경우 메딕을 부르게 됩니다.
  
:* <인수2>는 키나 앨리어스에 할당될 명령입니다.
+
:''주석:'' alias는 + 문자를 앞에 사용할 수 있으며, +<alias>가 시행되고 있지 않을 때 -<alias>의 명령을 실행합니다. 이는 움직임과 관련된 bind를 만들 때 유용합니다.
  
* 여러 명령들을 한꺼번에 실행할 때는 아래처럼 모든 인수들을 큰 따옴표로 묶고 세미콜론(;)을 써서 구분해줍니다.  
+
<pre>alias "+Diagonal" "+moveleft; +back"
 +
alias "-Diagonal" "-moveleft; -back"
 +
bind "z" "+Diagonal"</pre>
 +
이 스크립트는 플레이어가 대각선으로 움직이게 합니다. {{key|Z}}를 누르면 플레이어가 뒤로 왼쪽 45도로 움직이게 합니다.
  
:'''alias "spraynpray" "+attack; wait 500; -attack"'''
+
:'''경고: 다음 명령은 사용할 수 없습니다.'''
:'''bind "mouse3" "spraynpray"'''
+
<pre>bind "z" "+moveleft; +back"</pre>
 +
{{key|Z}}를 누를 경우 플레이어가 뒤와 왼쪽으로 움직이게 하나, 게임 엔진은 +back 명령이 뒤에 있어서 -back 명령을 실행할 수 없으며, 플레이어가 계속 뒤로 움직이게 됩니다.
  
:* 앨리어스를 실행하면 플레이어의 무기를 500 물리 프레임(physics frames)(초당 100프레임으로 돌아가는 서버에서 약 5초)동안 발사한 뒤 멈춥니다. 이 앨리어스는 키바인딩을 통해 마우스 가운데 버튼에 할당되었으며 따라서 이 버튼을 누르면 실행됩니다.
+
=== exec ===
 +
이 명령어는 다른 파일을 불러옵니다. 이는 복잡한 스크립트를 다른 파일에 저장하여 일반 파일이 복잡해지지 않게 합니다.
  
* 큰 따옴표 안에 큰 따옴표를 쓸 경우, 큰 따옴표를 두 번 써서("") 묶음을 마쳐줘야 합니다. 그렇지 않을 경우 명령의 해석이 잘못 될 수 있습니다.
+
<pre>exec autoexec.cfg</pre>
 +
이 스크립트는 플레이어의 autoexec.cfg 파일을 불러오고 게임에 할당합니다.
  
==키바인드==
 
''Team Fortess 2''에서는 키보드의 모든 키를 스크립트와 앨리어스에 할당할 수 있습니다. 위의 예시에서처럼, 할당을 원하는 키는 bind명령어와 할당하려는 명령의 사이에 입력합니다. 알파벳과 숫자 (a-z, 0-9), 기능 키들은 키의 이름을 입력하는 것만으로 사용할 수 있습니다 ("bind a"는 'a'를, "bind 5"는 '5'를, "bind F7"은 'F7'을 할당합니다). 그 외의 경우에는 특정한 이름을 써넣어야 사용할 수 있습니다. 이들은 다음과 같습니다:
 
  
====키 이름 목록====
+
=== echo ===
* 키보드 키: 키바인드 이름
+
이 명령어는 글이 콘솔에 나타나게 합니다. 이는 디버깅에 사용됩니다.
* 왼쪽 Shift: SHIFT
+
  echo "<consolwriteline>"
* 왼쪽 Ctrl: CTRL
+
<pre>echo Scripting is; echo very useful</pre>
* 왼쪽 Alt: ALT
+
이 명령은 <code>Scripting is</code>와 <code>very useful</code>를 ''두 줄''로 나타나게 합니다. 이는 <code>echo</code>로 전달되는 글의 끝에 새 행이 추가되기 때문입니다. 띄어쓰기는 글자 사이에 있거나, 큰따옴표 내에 있을 경우 인식됩니다. 예를 들어:
* 오른쪽 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">. 숫자패드의 '엔터'키를 누르면 음성 명령어 '고맙다!'가 나옵니다.
+
<pre>echo " Scripting is very useful.  "</pre>
 +
이 경우 큰따옴표로 글을 지정했기 때문에 띄어쓰기가 나타나게 됩니다.
 +
:''주석:'' 큰따옴표는 나타내려 할 경우 잘못 인식될 것이기 때문에 나타낼 수 없으나, 작은따옴표는 나타낼 수 있습니다.
 +
:''주석:'' echo는 가끔 큰따옴표가 없는 경우 잘못 나타낼 수 있으니 큰따옴표를 사용하는 것이 더 나으며, 나타내고자 하는 글을 사람이 알아보기 더 쉽게 합니다.
  
==기본 명령어==
+
=== wait ===
대부분의 명령어들은 하나의 인수만을 받아서 실행합니다.
+
  wait <프레임>
 +
이 명령어는 게임이 다음 명령을 시행하기 전 주어진 프레임 동안 기다리게 합니다.
 +
:'''경고: wait 명령어는 특정 서버에서 비활성화 되어있을 수 있습니다. 따라서 특정 스크립트는 제대로 실행되지 않을 것이며, 게임이 강제 종료 될 수 있습니다. [[#wait 비활성화 확인|wait 비활성화 확인]]에서 이를 막을 방법을 알아보십시오.'''
  
'''bind "q" "sv_alltalk 1"'''
+
<pre>echo 못이 망치에 아무리 맞아도 피가 안 나는 이유는?;wait 300;echo 모세혈관이 없어서!</pre> <!-- 딱히 재밌는 두 줄짜리 개그가 없더라구요... -->
 +
이 스크립트는 첫 문장을 나타내고 300 프레임을 기다린 후 다음 문장을 나타내게 합니다.
  
몇 몇 중요한 명령어의 경우 둘 이상의 인수를 받는 경우도 있습니다. 다음과 같습니다:
+
== 클래스 특정 cfg 파일  ==
 +
특정 병과로 변경할 때, 게임이 그 병과에 맞는 cfg 파일을 실행하게 되며, 다음 이름을 따라야 합니다.
 +
<pre>
 +
scout.cfg
 +
soldier.cfg
 +
pyro.cfg
 +
demoman.cfg
 +
heavyweapons.cfg
 +
engineer.cfg
 +
medic.cfg
 +
sniper.cfg
 +
spy.cfg
 +
</pre>
 +
플레이어가 각 병과마다 설정해놓은 명령을 실행하게 합니다.
 +
autoexec.cfg와 class.cfg, 그리고 사용자가 생성한 cfg 문서들은 overrides 파일 안에 있어야 하며, 그러지 않으면 게임에 적용되지 않습니다.
  
* disguise X Y - [[Spy/ko|스파이]] [[Disguise/ko|변장]]. X는 클래스 번호(1-9), Y는 팀 넘버(1,2).
+
== 실행 옵션 ==
 +
실행 옵션은 게임 화질과 비율 등 팀 포트리스 2가 실행되는 방식을 변경할 수 있습니다. {{vdc|Command Line Options|Command Line Options}}에서 모든 실행 옵션을 확인해주세요.
  
* voicemenu X Y - 음성 명령 실행. X는 첫 번째 메뉴, Y는 그 메뉴 안에서의 순서.
+
== 실행 옵션을 설정하는 방법 ==
 +
[[File:Setting Launch Options Korean.png|thumb|none|시작 옵션을 설정하는 방법.]]
 +
# Steam의 '''라이브러리'''에서 팀 포트리스 2를 찾고, 우클릭을 누르고 '''속성'''을 선택합니다.
 +
# '''일반''' 탭의 '''시작 옵션'''을 선택합니다.
 +
# 적용하고 싶은 시작 옵션을 입력합니다. 각 옵션은 띄어쓰기로 구분해야 합니다.
 +
# '''속성''' 창을 닫고 게임을 실행합니다.
  
: "voicemenu 1 1"은 '스파이!'입니다. 그러므로:
+
=== 창 옵션 ===
 +
이 옵션을 잘못 사용하면 성능을 낮출 수 있습니다. 가능하면 게임 내 설정을 사용해주십시오.
 +
==== 비율 ====
 +
실행 옵션: '''-w # -h #'''
 +
:''설명:'' 게임 창의 너비와 높이를 픽셀 단위로 변경합니다.
 +
==== 재생률 ====
 +
실행 옵션: '''-freq #'''
 +
:''설명:'' 게임의 주사율(Hz)을 강제로 적용합니다.
 +
==== 창 모드 ====
 +
시작 옵션: '''-windowed'''
 +
:''설명:'' 게임을 창 모드로 실행합니다.
 +
==== 테두리 없는 창 모드 ====
 +
시작 옵션: '''-noborder'''
 +
:''설명:'' 창 모드일 때, 전체화면 모드처럼 테두리를 없앱니다.
 +
==== 전체화면 모드 ====
 +
시작 옵션: '''-fullscreen'''
 +
:''설명:'' 게임의 너비와 높이를 강제합니다.
  
'''bind "t" "voicemenu 1 1"'''
+
=== 주변 기기 지원 ===
 +
==== 조이스틱 지원 비활성화 ====
 +
시작 옵션: '''-nojoy'''
 +
:''설명:'' 조이스틱 시스템을 로딩하지 않도록 하여, 실행 시간을 단축시키고 메모리 사용을 줄입니다.
 +
만약 조이스틱을 사용하려는 경우 사용하지 마십시오.
 +
==== Steam 컨트롤러 지원 비활성화 ====
 +
시작 옵션: '''-nosteamcontroller'''
 +
:''설명:'' Steam 컨트롤러 시스템을 로딩하지 않도록 하여, 실행 시간을 단축시키고 메모리 사용을 줄입니다.
 +
만약 Steam 컨트롤러를 사용하려는 경우 사용하지 마십시오.
  
이 명령은 해당 키를 눌렀을 때 캐릭터가 스파이를 외치게 만듭니다.
+
=== 소프트웨어 지원 ===
 +
==== SourceTV 비활성화 ====
 +
시작 옵션: '''-nohltv'''
 +
:''설명:'' [[SourceTV/ko|SourceTV]] 지원을 비활성화하여, 메모리 사용을 줄입니다. 당신의 클라이언트에서 SourceTV를 사용하려는 경우 사용하지 마십시오.
 +
==== 퀵타임 비활성화 ====
 +
시작 옵션: '''-noquicktime'''
 +
:''설명:'' [[w:ko:퀵타임|퀵타임]] 지원을 비활성화하여, 메모리 사용을 줄입니다. .MOV 파일을 내보내는 등 퀵타임 지원이 필요한 경우 사용하지 마십시오.
  
==토글==
+
=== 엔진 옵션 ===
 +
=== 시작 영상 비활성화 ===
 +
시작 옵션: '''-novid'''
 +
:''설명:'' 게임을 실행할 때 나타나는 Valve 인트로 영상을 비활성화하여, 실행 시간을 단축시킵니다.
 +
==== beam 입자 제한 변경 ====
 +
시작 옵션: '''-particles #'''
 +
:''설명:'' beam 입자의 수를 제한합니다. #의 숫자를 1로 변경하여 메모리 사용을 줄일 수 있으며, 최대 512까지 변경할 수 있습니다.
 +
==== 글꼴 렌더링을 precache 하기====
 +
시작 옵션: '''-precachefontchars'''
 +
:''설명:'' 특정 문자의 글꼴 렌더링을 precache 하여, 렌더링 시간을 줄입니다.
 +
====Texture Streaming 비활성화====
 +
시작 옵션: '''-no_texture_stream'''
 +
:''설명:'' 더 좋은 퀄리티의 버전이 로딩되는 동안 낮은 퀄리티의 텍스처를 사용하지 않고, 언제나 더 좋은 퀄리티의 버전을 로딩하게 합니다. Texture Streaming을 비활성화하면 비디오 메모리 압력에 영향을 미칩니다.
  
'''toggle'''명령을 통해 convar를 켜고 끄거나, 정해진 값 사이를 순환할 수 있습니다. 예를 들면:
+
=== DirectX 버전 (Microsoft Windows만 가능) ===
 +
시작 옵션: '''-dxlevel #'''
 +
:''설명:'' 게임이 사용하는 DirectX 버전을 설정합니다. 많은 값을 사용할 수 있지만, '81'과 '100'을 사용하는 것이 좋습니다.
 +
::'-dxlevel 100' 은 DirectX 9와 Pixel Shader 3.0를 사용하며, 시스템의 그래픽 능력을 결정하는데 하드웨어가  사용됩니다.
 +
::'-dxlevel 81' 은 DirectX 8의 가장 안정적인 버전이며 Pixel Shader 1.1을 사용합니다. 이 버전은 DirectX 9의 버전들보다 더 좋은 성능을 주지만, 제한된 게임 내 컨텐츠를 사용하며, 성능 향상이 필요하지 않다면 사용하지 않는 것이 좋습니다.
 +
:''주석'': 이 시작 옵션을 가지고 게임을 한 번 실행한 후, 게임을 종료하고 이 시작 옵션을 삭제해야 적절한 구성 파일이 설정됩니다.
  
  '''bind x "toggle viewmodel_fov 20 33 60 75 90"'''
+
== 키의 이름 ==
 +
키 위에 마우스를 올리면 스크립트 할 때 사용하는 이름을 볼 수 있습니다. 이름은 대소문자를 구분하지 않습니다.
 +
{|
 +
! width="45%" <!-- 키보드 -->|
 +
! width="03%" <!-- 띄어쓰기용 -->|
 +
! width="25%" <!-- 화살표 등 -->|
 +
! width="01%" <!-- 띄어쓰기용 -->|
 +
! width="25%" <!-- 키패드 1 -->|
 +
! width="05%" <!-- 키패드 2 -->|
 +
|-
 +
|
 +
{{tooltip|{{key|ESC}}|ESCAPE}}
 +
{{tooltip|{{key|F1}}|F1}}
 +
{{tooltip|{{key|F2}}|F2}}
 +
{{tooltip|{{key|F3}}|F3}}
 +
{{tooltip|{{key|F4}}|F4}}
 +
{{tooltip|{{key|F5}}|F5}}
 +
{{tooltip|{{key|F6}}|F6}}
 +
{{tooltip|{{key|F7}}|F7}}
 +
{{tooltip|{{key|F8}}|F8}}
 +
{{tooltip|{{key|F9}}|F9}}
 +
{{tooltip|{{key|F10}}|F10}}
 +
{{tooltip|{{key|F11}}|F11}}
 +
{{tooltip|{{key|F12}}|F12}}
  
'''bindtoggle'''은 켜고 끄는 형태의 토글을 할당하는 단축형 명령어입니다.
+
{{tooltip|{{key|` &nbsp;}}|`}}
 +
{{tooltip|{{key|1}}|1}}
 +
{{tooltip|{{key|2}}|2}}
 +
{{tooltip|{{key|3}}|3}}
 +
{{tooltip|{{key|4}}|4}}
 +
{{tooltip|{{key|5}}|5}}
 +
{{tooltip|{{key|6}}|6}}
 +
{{tooltip|{{key|7}}|7}}
 +
{{tooltip|{{key|8}}|8}}
 +
{{tooltip|{{key|9}}|9}}
 +
{{tooltip|{{key|0}}|0}}
 +
{{tooltip|{{key|-}}|-}}
 +
{{tooltip|{{key|{{=}}}}|{{=}}}}
 +
{{tooltip|{{key|← Backspace}}|BACKSPACE}}
  
'''bindtoggle z r_drawviewmodel'''
+
{{tooltip|{{key|TAB}}|TAB}}
 +
{{tooltip|{{key|Q}}|Q}}
 +
{{tooltip|{{key|W}}|W}}
 +
{{tooltip|{{key|E}}|E}}
 +
{{tooltip|{{key|R}}|R}}
 +
{{tooltip|{{key|T}}|T}}
 +
{{tooltip|{{key|Y}}|Y}}
 +
{{tooltip|{{key|U}}|U}}
 +
{{tooltip|{{key|I}}|I}}
 +
{{tooltip|{{key|O}}|O}}
 +
{{tooltip|{{key|P}}|P}}
 +
{{tooltip|{{key|[}}|[}}
 +
{{tooltip|{{key|]}}|]}}
 +
{{tooltip|{{key|\ &nbsp; &nbsp; &nbsp;}}|\}}
  
이 명령어는 'bind <key> "incrementvar <cvar> 0 1 1"'의 축소된 형태입니다.
+
{{tooltip|{{key|⇪ Caps}}|CAPSLOCK}}
 +
{{tooltip|{{key|A}}|A}}
 +
{{tooltip|{{key|S}}|S}}
 +
{{tooltip|{{key|D}}|D}}
 +
{{tooltip|{{key|F}}|F}}
 +
{{tooltip|{{key|G}}|G}}
 +
{{tooltip|{{key|H}}|H}}
 +
{{tooltip|{{key|J}}|J}}
 +
{{tooltip|{{key|K}}|K}}
 +
{{tooltip|{{key|L}}|L}}
 +
{{tooltip|{{key|;}}|SEMICOLON}}
 +
{{tooltip|{{key|' &nbsp;}}|'}}
 +
{{tooltip|{{key|Enter ↵}}|ENTER}}
  
==incrementvar==
+
{{tooltip|{{key|Shift &nbsp; &nbsp;}}|SHIFT}}
 +
{{tooltip|{{key|Z}}|Z}}
 +
{{tooltip|{{key|X}}|X}}
 +
{{tooltip|{{key|C}}|C}}
 +
{{tooltip|{{key|V}}|V}}
 +
{{tooltip|{{key|B}}|B}}
 +
{{tooltip|{{key|N}}|N}}
 +
{{tooltip|{{key|M}}|M}}
 +
{{tooltip|{{key|, &nbsp;}}|,}}
 +
{{tooltip|{{key|. &nbsp;}}|.}}
 +
{{tooltip|{{key|/ &nbsp;}}|/}}
 +
{{tooltip|{{key|Shift &nbsp; &nbsp; &nbsp; &nbsp;}}|RSHIFT}}
  
실행할 때마다 특정한 값들 사이를 순환하며 순환된 값을 다른 명령어에 적용합니다. 다음과 같은 형태를 띱니다:
+
{{tooltip|{{key|Ctrl &nbsp;}}|CTRL}}
 +
{{tooltip|{{key|⊞}}|LWIN}}
 +
{{tooltip|{{key|Alt}}|ALT}}
 +
{{tooltip|{{key|&nbsp; &nbsp; &nbsp; Spacebar &nbsp; &nbsp; &nbsp;}}|SPACE}}
 +
{{tooltip|{{key|⊞}}|RWIN}}
 +
{{tooltip|{{key|Alt}}|RALT}}
 +
{{tooltip|{{key|Menu}}|bind 설정할 수 없음}}
 +
{{tooltip|{{key|Ctrl &nbsp; &nbsp;}}|RCTRL}}
  
:'''명령 "<인수1>" "incrementvar <인수2> X Y Z"'''
+
|<!-- 띄어쓰기용 -->
 +
|
 +
{{tooltip|{{key|PrtScn}}|bind 설정할 수 없음}}
 +
{{tooltip|{{key|ScrLk}}|SCROLLLOCK}}
 +
{{tooltip|{{key|Pause}}|PAUSE}}
  
:*X와 Y는 <인수2>에 적용할 값의 범위입니다.
+
{{tooltip|{{key|Insert &nbsp;}}|INS}}
:*Z는 값의 범위 사이를 순환하는 간격입니다.
+
{{tooltip|{{key|Home}}|HOME}}
 +
{{tooltip|{{key|PgUp}}|PGUP}}
  
1과 10사이에서 2씩 증가하는 값이 필요할 경우, X Y Z에 1 10 2를 넣어줍니다. 매번 명령을 실행할 때마다 <인수2>가 2, 4, 6, 8, 10, 2, 4, 6, 8, 10, ...의 값으로 실행됩니다.
+
{{tooltip|{{key|Delete}}|DEL}}
 +
{{tooltip|{{key|&nbsp; End &nbsp;}}|END}}
 +
{{tooltip|{{key|PgDn}}|PGDN}}
  
다음은 incrementvar를 사용하는 실례입니다:
 
  
:'''bind "n" "incrementvar net_graphpos 1 3 1"'''
+
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{{tooltip|{{key|&uarr;}}|UPARROW}}
  
n키를 누를 때마다 net_graph의 표시 위치가 3가지 위치 중 다음 위치로 바뀝니다.
+
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {{tooltip|{{key|&larr;}}|LEFTARROW}}
 +
{{tooltip|{{key|&darr;}}|DOWNARROW}}
 +
{{tooltip|{{key|&rarr;}}|RIGHTARROW}}
 +
|<!-- 띄어쓰기용 -->
 +
|
  
==+와 -명령어==
+
{{Scripting Numpad}}
 +
|}
  
여기에 해당하는 명령어들은 두 가지 상태를 갖고 있습니다. 할당된 키를 누르고 있는 동안 '''+'''명령어가 계속해서 실행됩니다. 키를 떼면 '''-'''명령어가 계속해서 실행됩니다.
+
{|
 +
! align="left"| 마우스의 버튼
 +
! 스크립트에 사용하는 이름
 +
|-
 +
| 휠 위로 올리기
 +
| MWHEELUP
 +
|-
 +
| 휠 아래로 내리기
 +
| MWHEELDOWN
 +
|-
 +
| 좌클릭
 +
| MOUSE1
 +
|-
 +
| 우클릭
 +
| MOUSE2
 +
|-
 +
| 휠 클릭
 +
| MOUSE3
 +
|-
 +
| 앞으로 가기 버튼
 +
| MOUSE4
 +
|-
 +
| 뒤로 가기 버튼
 +
| MOUSE5
 +
|}
  
예:
 
:'''bind "c" "+duck"'''
 
  
+명령어가 "c"에 붙어 있으므로, 해당 키를 누를 때마다 플레이어가 앉습니다. 키를 떼면 실행되는 명령어가 "+duck"에서 "-duck"으로 바뀌고 플레이어는 다시 일어납니다 (앉는 것을 멈춥니다).
+
이를 이용해 다음과 같은 명령을 만들어 설정 파일에 저장할 수 있습니다: {{code|bind "KP_ENTER" "voicemenu 0 6"}}. 넘버패드의 {{key|Enter}}키를 누르면 음성 명령어 '그래'가 나옵니다.
  
보통은 명령이나 앨리어스가 키에 할당되어 있을 경우, +는 키를 누르고 있는 동안 계속해서 게임에 명령을 실행하라고 전합니다. -도 비슷하게 키를 떼고 있는 동안 계속해서 게임에 명령을 실행하라고 전합니다.
+
== 유용한 명령어 ==
 +
{{Main|vdc:List of TF2 console commands and variables|l1=팀 포트리스 2 콘솔 명령어와 변수 목록}}
  
앨리어스를 +를 붙여 정의할 경우, 이 앨리어스는 키를 누르고 있는 동안 계속해서 실행됩니다. 키를 누르지 않는 동안은 -명령어가 실행됩니다.
+
===변장===
 +
<code>disguise</code> 명령어는 두 값을 사용하며, 첫 번째 값은 병과를, 두 번째 값은 팀을 나타냅니다.
 +
:'''병과'''
 +
:1. 스카웃
 +
:2. 스나이퍼
 +
:3. 솔저
 +
:4. 데모맨
 +
:5. 메딕
 +
:6. 헤비
 +
:7. 파이로
 +
:8. 스파이
 +
:9. 엔지니어
  
==대기 명령어==
+
:'''팀'''
 +
:1. 블루 팀
 +
:2. 레드 팀
 +
:-1. 상대 팀
 +
:-2. 자신의 팀
  
앨리어스를 실행하는 동안 대기 시간을 두거나, 명령을 너무 빨리 연이어 실행해서 클라이언트가 깨지는 것을 막을 때 '''wait'''명령어를 사용합니다.
+
예를 들어, <code>disguise 5 1</code>은 블루 팀의 메딕으로 변장하게 하며, <code>disguise 7 -2</code>은 같은 팀의 파이로로 변장하게 합니다.
 +
:''주석:'' <code>disguise 8 -2</code> (같은 팀 스파이로 변장)은 스파이의 변장을 해제하게 합니다. 은폐 상태에서 변장을 해제할 수 있습니다
 +
:''주석:'' 팀을 나타내는 값이 1, 2, -1, 또는 -2가 아닐 경우 스파이는 현재 팀에 상관없이 무조건 레드 팀으로 변장하게 됩니다.
  
대기 명령어는 스크립트에 있는 다음 명령어를 1 물리 프레임 늦게 실행하도록 만듭니다 (물리 프레임은 TF2에서 이를테면 완전한 한 턴turn이라고 볼 수 있는 개념입니다). "wait 50"을 쓰면 앨리어스를 계속 실행하기 전 50 프레임을 기다리게 만들 수 있습니다. 초당 100프레임으로 돌아가는 서버에서 "wait 100"은 대략 1초 정도 됩니다.
+
=== 구조물 ===
 +
<code>build</code>와 <code>destroy</code> 명령어는 두 값을 사용하며, 첫 번째 값은 구조물을, 두 번째 값은 구조물의 타입을 결정합니다. 두 번째 값은 <code>0</code>이 아닌 값을 사용할 경우에만 필요하며, 현재 텔레포터의 입구와 출구를 구분하는 데만 사용됩니다.
  
일부 서버에서는 대기 명령어를 막아두기도 합니다. 이 서버에서 플레이할 때는 대기 명령어가 무시되며, 따라서 일부 스크립트가 깨질 수 있습니다. 대기 명령어로 순환의 시작과 끝을 나누는 루프를 이런 서버에서 사용하면 즉시 접속이 끊어질 수 있습니다.
 
  
==앨리어스==
+
<code>build</code> 명령어는 구조물을 설치하기 위한 청사진을 꺼내며, 스파이의 경우 [[Sapper/ko|전자 교란기]]를 꺼내게 됩니다.
 +
:<code>build 0 0</code> 명령어는 [[Dispenser/ko|디스펜서]]를 설치합니다. <small>(엔지니어 전용)</small>
 +
:<code>build 1 0</code> 명령어는 [[teleporter/ko|텔레포터 입구]]를 설치합니다. <small>(엔지니어 전용)</small>
 +
:<code>build 1 1</code> 명령어는 [[teleporter/ko|텔레포터 출구]]를 설치합니다. <small>(엔지니어 전용)</small>
 +
:<code>build 2 0</code> 명령어는 [[Sentry Gun/ko|센트리 건]]을 설치합니다. <small>(엔지니어 전용)</small>
 +
:<code>build 3 0</code> 명령어는 [[Sapper/ko|전자 교란기]]를 설치합니다. <small>(스파이 전용)</small>
  
'''앨리어스'''는 한꺼번에 실행할 있는 여러 개의 명령들을 묶어서 저장하는 일종의 변수라고 생각할 수 있습니다. 앨리어스의 간단한 형태는 다음과 같습니다:
+
비슷하게, <code>destroy</code> 명령어는 구조물을 파괴합니다.
 +
:<code>destroy 0 0</code> 명령어는 디스펜서를 파괴합니다. <small>(엔지니어 전용)</small>
 +
:<code>destroy 1 0</code> 명령어는 텔레포터 입구를 파괴합니다. <small>(엔지니어 전용)</small>
 +
:<code>destroy 1 1</code> 명령어는 텔레포터 출구를 파괴합니다. <small>(엔지니어 전용)</small>
 +
:<code>destroy 2 0</code> 명령어는 센트리 건을 파괴합니다. <small>(엔지니어 전용)</small>
 +
:''주석:'' 전자 교란기와 전자 교란기가 설치된 구조물은 파괴할 없습니다.
  
'''alias "앨리어스 이름" "명령1; 명령2; 명령3"'''
+
<code>build</code> 명령어는 하나의 값만 사용할 수도 있습니다.
 +
:<code>build 0</code> 명령어는 디스펜서를 설치합니다. <small>(엔지니어 전용)</small>
 +
:<code>build 1</code> 명령어는 텔레포터 입구를 설치합니다. <small>(엔지니어 전용)</small>
 +
:<code>build 2</code> 명령어는 센트리 건을 설치합니다. <small>(엔지니어 전용)</small>
 +
:<code>build 3</code> 명령어는 텔레포터 출구를 설치합니다. <small>(엔지니어 전용)</small>
 +
:<code>build 3</code> 명령어는 전자 교란기를 설치합니다. <small>(스파이 전용) [더 이상 사용되지 않음]</small>
  
그리고 할당된 키를 통해 이 앨리어스를 실행할 수 있습니다:
+
=== 음성 호출 ===
 +
<code>voicemenu</code> 명령어는 메뉴 값과 명령 값인 두 값을 사용합니다.
 +
{|
 +
! width="25%" <!-- 키보드 -->|
 +
! width="03%" <!-- 띄어쓰기 -->|
 +
! width="25%" <!-- 키보드 -->|
 +
! width="03%" <!-- 띄어쓰기 -->|
 +
! width="25%" <!-- 키보드 -->|
 +
|-
 +
|
 +
*<code>voicemenu 0</code>
 +
*:0: 메딕!
 +
*:1: 고맙다!
 +
*:2: 돌격! 돌격! 돌격!
 +
*:3: 이동하라!
 +
*:4: 왼쪽으로 이동하라
 +
*:5: 오른쪽으로 이동하라
 +
*:6: 그래
 +
*:7: 아니
 +
*:8: 내게 넘겨!
  
'''bind "키" "앨리어스 이름"'''
+
|<!-- 띄어쓰기용 -->
 +
|
 +
*<code>voicemenu 1</code>
 +
*:0: 적이다!
 +
*:1: 스파이다!
 +
*:2: 전방에 센트리!
 +
*:3: 여기 텔레포터가 필요하다
 +
*:4: 여기 디스펜서가 필요하다
 +
*:5: 여기 센트리가 필요하다
 +
*:6: 우버를 발동하라!
 +
*:7: 메딕: 우버차지 준비 완료
 +
*:8: 내게 넘겨!
  
매번 키를 누를 때마다 "명령1", "명령2", "명령3"이 순차적으로 실행됩니다.
+
|<!-- 띄어쓰기용 -->
 +
|
 +
*<code>voicemenu 2</code>
 +
*:0: 도와줘!
 +
*:1: 전투 함성
 +
*:2: 격려
 +
*:3: 야유
 +
*:4: 긍정적
 +
*:5: 부정적
 +
*:6: 훌륭한 사격이군!
 +
*:7: 잘했어!
 +
|}
  
===복잡한 형태의 앨리어스===
+
:''주석'': 음성 호출 메뉴를 표시하려면 <code>voicemenu # #</code>이 아닌 <code>voice_menu_#</code> 명령어를 사용해야 하며, 1부터 3까지의 숫자를 넣을 수 있습니다.
앨리어스는 어떤 명령도 실행할 수 있으며 이는 다른 앨리어스까지 포함합니다. 여기서 더 나아가, 한 앨리어스의 명령을 재정의하기 위해 다른 앨리어스에 이 앨리어스를 넣어서 실행할 수도 있습니다. 이를 통해 앨리어스 사이를 순환할 수 있습니다. 다음은 그 간단한 예입니다:
 
  
'''bind "key" namescroll'''
+
=== 유레카 효과 텔레포트 ===
'''alias namescroll "firstname"'''
+
<code>eureka_teleport</code> 명령어는 [[Eureka Effect/ko|유레카 효과]]를 들고 있는 엔지니어를 기지나 텔레포터 출구로 순간이동 시킵니다.
'''alias firstname "setinfo name ""First_name""; alias namescroll secondname"'''
+
*<code>eureka_teleport 0</code> 명령어는 플레이어를 기지로 순간이동 시킵니다.
'''alias secondname "setinfo name ""Second_name""; alias namescroll thirdname"'''
+
*<code>eureka_teleport 1</code> 명령어는 플레이어를 텔레포터 출구로 순간이동 시킵니다.
'''alias thirdname "setinfo name ""Third_name""; alias namescroll firstname"'''
 
  
이 자체로는 이해하기 어려우니까, 차근차근 나눠보겠습니다.
+
:''주석:'' 명령어가 작동해도 콘솔에 "Unknown command" 라고 나타나게 됩니다.
  
* 첫 번째 줄에서 "key"에 아직 정의하지 않은 "namescroll"할당합니다.
+
=== 종합 ===
* 두 번째 줄에서 "firstname"명령을 실행하는 앨리어스인 "namescroll"을 정의합니다.
+
*<code>clear</code> 명령어는 콘솔의 모든 정보를 지웁니다.
* 세 번째 줄에서 "firstname"앨리어스를 두 가지 명령으로 정의합니다.
+
*<code>alias</code> 명령어는 모든 정의된 alias를 표시합니다.
:* 첫 번째 명령은 게임 내 이름을 "First_Name"으로 바꿉니다.
+
*<code>fov_desired (20-90)</code> 명령어는 [[Field of View/ko|시야]]설정합니다.
:* 두 번째 명령은 "namescroll"앨리어스를 "secondname"명령을 실행하는 앨리어스로 재정의합니다.
+
*<code>viewmodel_fov </code> 명령어는 무기 모델의 시야를 조정합니다.
* 네 번째 줄에서 "secondname"을 같은 식으로 정의합니다. 게임 내 이름을 바꾸고, "namescroll"앨리어스를 "thirdname"을 실행하도록 재정의합니다.
+
*<code>r_drawviewmodel (0/1)</code> 무기 모델을 키거나 (1), 끕니다 (0).
* 다섯 번째 줄에서도 마찬가지 방식으로 "thirdname"을 정의하지만, 한 가지 변화가 있습니다. "namescroll"을 "firstname"을 실행하도록 재정의합니다.
+
*<code>lastdisguise</code> 명령어는 이전 변장으로 다시 변장하게 합니다. <small>(스파이 전용)</small>
 +
*<code>load_itempreset (0-3)</code> 명령어는 장비 설정을 A/B/C/D 로 변경합니다.
 +
*<code>say message</code> 명령어는 채팅에 메시지를 보냅니다.
 +
*<code>say_team message</code> 명령어는 팀 채팅에 에시지를 보냅니다.
 +
*<code>say_party message</code> 명령어는 파티 채팅에 메시지를 보냅니다.
 +
*<code>+taunt</code> 명령어는 플레이어의 도발 메뉴를 엽니다.
 +
*<code>+use_action_slot_item</code> 명령어는 플레이어가 액션 아이템을 사용하게 합니다.
 +
*<code>volume (0-1)</code> 명령어는 게임 내 불륨을 설정합니다.
 +
*<code>taunt_by_name (name)</code> 명령어는 도발 메뉴를 열지 않고 현재 플레이어의 무기 도발을 실행합니다.
  
이로써 루프가 완성되었습니다. 키를 누를 때마다 명령을 실행한 다음 앨리어스를 재정의하므로, 다음에 눌렸을 때엔 다른 명령을 실행할 수 있습니다. 루프 없이는 "namescroll"이 매번 다른 명령을 실행할 수 없었을 것입니다.
+
== 고급 스크립트 ==
 +
=== 키다운 토글 ===
 +
꾹 누르고 있어야 하는 명령어를 토글로 설정하게 합니다.
  
===앨리어스 토글===
+
<pre>bind w toggle_movement
 +
alias toggle_movement enable_movement
 +
alias enable_movement "alias toggle_movement disable_movement;+forward"
 +
alias disable_movement "alias toggle_movement enable_movement;-forward"</pre>
 +
이 스크립트는 {{key|W}} 키를 한 번 누르면 {{key|W}}키가 다시 눌리기 전까지 플레이어가 앞으로 이동하게 합니다.
  
앨리어스를 써서 명령의 상태를 바꿀 수 있습니다 (예를 들면 '''cl_showfps'''를 0과 1 사이에서 바꿉니다). 아래의 예제는 토글을 만드는 일반적인 방법을 설명합니다:
+
=== 조합키 ===
 +
하나의 키를 누르고 있는 동안 다른 키를 누름으로써 다른 행동을 취하는 스크립트를 만들 수 있습니다.
  
'''alias ToggleStateA "A에서 할 일을 실행; alias ToggleControl ToggleStateB"'''
+
<pre>bind e call
'''alias ToggleStateB "B에서 할 일을 실행; alias ToggleControl ToggleStateA"'''
+
alias call Call_For_Medic
'''alias ToggleControl ToggleStateA'''
+
alias Call_For_Medic "voicemenu 0 0"
'''bind {토글 키} ToggleControl'''
+
alias Call_For_Ubercharge "voicemenu 1 6"</pre>
 +
이 스크립트는 {{key|E}}가 눌릴 때마다 플레이어가 메딕을 부르게 하며, 사용되지 않은 [[ÜberCharge/ko|우버차지]]를 요청하는 alias도 있습니다.
 +
<pre>bind shift +toggleState
 +
alias +toggleState "alias call Call_For_Ubercharge"
 +
alias -toggleState "alias call Call_For_Medic"</pre>
 +
이제, {{key|Shift}}를 누르고 있으면 <code>call</code> alias가 우버차지를 요청하도록 변경하며, {{key|Shift}}를 떼면 다시 <code>call</code> alias가 메딕을 부르도록 합니다.
  
* 번째 줄에서 첫 번째 상태를 정의하고, 컨트롤을 두 번째 상태로 재정의합니다.
+
만약 여러 키 조합을 하나의 토글로 연결하고 싶다면 단계를 반복해야 합니다.
* 두 번째 줄에서 두 번째 상태를 정의하고, 컨트롤을 첫 번째 상태로 재정의합니다.
+
<pre>bind f thank
* 세 번째 줄에서 컨트롤을 첫 번째 상태로 정의합니다.
+
alias thank Thank_Player
* 마지막 줄에서 토글 컨트롤을 키에 할당해줍니다.
+
alias Thank_Player "voicemenu 0 1"
 +
alias Good_Work "voicemenu 2 7"</pre>
 +
이 줄 다음엔 두 번째 단계와 비슷하게 만들면 됩니다.
  
===앨리어스 스위치===
+
<pre>bind shift +toggleState
 +
alias +toggleState "alias call Call_For_Ubercharge;alias thank Thank_Player"
 +
alias -toggleState "alias call Call_For_Medic;alias thank Good_Work"</pre>
 +
이 스크립트는 다음과 같습니다.
 +
<pre>bind e call
 +
alias call Call_For_Medic
 +
alias Call_For_Medic "voicemenu 0 0"
 +
alias Call_For_Ubercharge "voicemenu 1 6"
  
한 쌍의 앨리어스를 써서 키를 다른 명령에 할당시켰다가 다시 되돌릴 수 있습니다. 예:
+
bind f thank
 +
alias thank Thank_Player
 +
alias Thank_Player "voicemenu 0 1"
 +
alias Good_Work "voicemenu 2 7"
  
'''alias +AlternateBinds "bind Q B에서 할 일을 실행"'''
+
bind shift +toggleState
'''alias -AlternateBinds "bind Q A에서 할 일을 실행"'''
+
alias +toggleState "alias call Call_For_Ubercharge;alias thank Thank_Player"
'''bind {바인드 전환 키} +AlternateBinds'''
+
alias -toggleState "alias call Call_For_Medic;alias thank Good_Work"</pre>
  
B에서 할 일을 실행시키기 위해서는 바인드 전환 키를 누른 채로 Q를 누릅니다.
+
=== wait 비활성화 확인 ===
 +
<code>wait</code> 명령어가 몇몇 스크립트에 중요하게 사용되기 때문에, 서버가 <code>wait</code> 명령어를 비활성화 시켰는지 확인하는 것이 중요할 수 있습니다.
  
===앨리어스 루프===
+
<pre>alias waitTester "alias waitTest waitPositive;wait;waitTest"
 +
alias wait "alias waitTest waitNegative"
 +
alias waitPositive "echo Wait is enabled on this server.;exec waitPositive.cfg"
 +
alias waitNegative "echo Wait is DISABLED on this server!;exec waitNegative.cfg"
 +
waitTester</pre>
 +
이 스크립트는 서버 내 <code>wait</code> 명령어가 비활성화 되어있다면 wait 이름으로 alias를 만들 수 있다는 것을 이용합니다. 따라서, 스크립트는 먼저 <code>waitPositive</code>를 가리키는 <code>waitTest</code> alias를 만들고, <code>wait</code> 명령어가 서버 비활성화 되어있다면 <code>waitNegative</code>를 가리키게 됩니다.
  
앨리어스와 대기 명령어를 결합해 앨리어스 루프를 만들 수 있습니다.
+
=== 반복문 ===
 +
:'''경고: wait 명령어가 없는 반복문은 팀 포트리스 2 클라이언트를 멈출 수 있습니다. wait 비활성화 확인 스크립트를 사용한 다음에 반복문 스크립트를 사용하는 것을 매우 권장합니다.'''
 +
일반적으로, alias가 자신을 가리키게 하는 것은 초기화 할 수 없어 쓰이지 않습니다. 따라서, 반복문은 기다리는 부분과 반복하는 부분으로 나뉘어 만들어집니다.
  
''경고: 대기 명령어를 빠트리거나 대기 명령어가 막힌 서버에 들어갈 경우 아래의 예시가 TF2를 깨뜨릴 수 있습니다.''
+
<pre>bind g loopKey
 +
alias loopKey startLoop
 +
alias startLoop "alias loopKey stopLoop;+attack;alias redirect loop;loop"
 +
alias stopLoop "-attack;alias redirect;alias loopKey startLoop"
 +
alias loop "+left;wait 33;-left;+right;wait 33;-right;redirect"</pre>
  
'''alias "Loop" "echo Looping every 150 ticks.; wait 150; Loop"'''
+
이 스크립트는 {{key|G}}가 눌리면 33프레임 (약 0.5초)마다 시점을 앞과 뒤로 바꾸면서 공격하는 반복문입니다. {{key|G}}를 다시 누르면 반복이 멈추게 됩니다.
'''Loop'''
 
  
차근차근 나눠서 알아봅시다:
+
=== Sequence === <!-- 번역 필요할 수 있음 -->
 +
<pre>alias +pyrocombo "slot1;+attack;wait 32;slot2"
 +
alias -pyrocombo "-attack;slot1"</pre>
 +
이 스크립트는 sequence를 시작하는 alias와, sequence를 끝내는 alias로 구성되었습니다. sequence는 키를 뗄 때까지 32 프레임마다 [[Degreaser/ko|기름떼 제거기]]와 [[Panic Attack/ko|공황 공격]]으로 무기를 바꾸며 공격합니다. Sequence는 이렇게 사용할 수도 있습니다:
 +
<br><pre>alias quickscope "slot1;+attack2;wait 32;+attack;wait 16;-attack;-attack2"</pre>
 +
이 스크립트는 스나이퍼가 [[Sniper Rifle/ko|저격소총]]으로 퀵스코프를 하게 합니다.
 +
sequence는 스크립트를 만드는데 유용하며,  어떻게 만드는 지 알면 이후 스크립트를 만드는데 도움이 될 것입니다.
  
* 첫 번째 줄
+
=== Cycle 스크립트 === <!-- 번역 필요할 수 있음 -->
:* echo는 콘솔에 메세지를 출력합니다. 이를 통해 앨리어스가 작동하고 있음을 알 수 있습니다.
+
cycle 스크립트는 최소 3가지의 옵션이 있는 토글 스크립트입니다:
:* 대기 명령어가 앨리어스를 150틱동안 기다리게 만듭니다.
+
<pre>
:* Loop를 다시 불러서, echo부터 반복합니다.
+
alias message_1 "say message 1.; bind x message_2"
 +
alias message_2 "say message 2.; bind x message_3"
 +
alias message_3 "say message 3.; bind x message_1"
 +
bind x message_1
 +
</pre>
 +
이 스크립트는 {{key|X}} 키를 누를 때마다 채팅에 "message 1"→"message 2"→"message 3"→"message 1" 순서로 바뀌면서 글을 남깁니다.
  
* 두 번째 줄
+
{{note|콘솔 변수를 변경할 때 <code>[[vdc:toggle|toggle]]</code>, <code>[[vdc:incrementvar|incrementvar]]</code>, and <code>[[vdc:multvar|multvar]]</code> 명령어를 alias 대신 사용할 수 있습니다.}}
:* Loop를 불러서 루프를 시작합니다.
 
  
또한 다음처럼 앨리어스의 루프를 만들 수도 있습니다:
+
=== Selection 스크립트 === <!-- 번역 필요할 수 있음 -->
 +
selection 스크립트는 cycle을 더 이용하기 쉽게 합니다. selection 스크립트는 순서를 한 방향이 아닌 두 방향으로 만들어 어떤 명령어를 실행할 지 더 쉽게 알도록 합니다.
 +
<pre>
 +
alias CondC_UP Cond1
 +
alias CondC_DOWN Cond5
 +
alias ApplyCond ApplyCond33
 +
alias ApplyCond33 "addcond 33"
 +
alias ApplyCond49 "addcond 49"
 +
alias ApplyCond72 "addcond 72"
 +
alias ApplyCond74 "addcond 74"
 +
alias ApplyCond90 "addcond 90"
 +
alias Cond1 "alias CondC_UP Cond2;alias CondC_DOWN Cond5;alias ApplyCond ApplyCond33"
 +
alias Cond2 "alias CondC_UP Cond3;alias CondC_DOWN Cond1;alias ApplyCond ApplyCond49"
 +
alias Cond3 "alias CondC_UP Cond4;alias CondC_DOWN Cond2;alias ApplyCond ApplyCond72"
 +
alias Cond4 "alias CondC_UP Cond5;alias CondC_DOWN Cond3;alias ApplyCond ApplyCond74"
 +
alias Cond5 "alias CondC_UP Cond1;alias CondC_DOWN Cond4;alias ApplyCond ApplyCond90"
 +
</pre>
 +
이 스크립트는 어떤 조건을 플레이어에게 줄 지 더 쉽게 통제할 수 있으며, 더 쉽게 사용할 수 있습니다.
  
'''alias "Loop1" "echo Loop 1; wait 150; Loop2"'''
+
=== 무작위 스크립트 ===
'''alias "Loop2" "echo Loop 2; wait 150; Loop1"'''
+
무작위 스크립트는 거의 쓰이지 않지만, 거래 광고 등 채팅에 사용할 때 유용할 수 있습니다.
  
Loop1이 Loop2를 부르고, 이는 Loop1을 부르고, ...
+
'''주석: 팀 포트리스 2 스크립트의 특성 때문에, 이 부분이 굉장히 길 수 있습니다. cycle에 대해 잘 모를 경우 사용에 어려울 수 있습니다.'''
 +
<pre>
 +
alias call f1
 +
alias cycle c2
  
이 방법을 통해 루프 앨리어스를 지우지 않고 루프를 멈출 수도 있습니다: <!-- 맞습니다. 루프 앨리어스를 지우지 않는다고 써넣고 밑에서는 Loop2 앨리어스를 지웁니다. 이해가 안 되지만 원문이 이러므로 일단 이대로 옮겼습니다. -->
+
alias c1 "alias cycle c2;alias call f1"
 +
alias c2 "alias cycle c3;alias call f2"
 +
alias c3 "alias cycle c4;alias call f3"
 +
alias c4 "alias cycle c5;alias call f4"
 +
alias c5 "alias cycle c1;alias call f5"
  
'''alias "Loop1" "echo Loop1; wait 150; Loop2"'''
+
alias f1 "say 1"
'''alias "Loop2" "Loop1"'''
+
alias f2 "say 2"
 +
alias f3 "say 3"
 +
alias f4 "say 4"
 +
alias f5 "say 5"
  
이렇게 만들어진 루프를
+
alias +w "+forward;cycle"
 +
alias -w "-forward;cycle"
 +
alias +a "+moveleft;cycle"
 +
alias -a "-moveleft;cycle"
 +
alias +s "+back;cycle"
 +
alias -s "-back;cycle"
 +
alias +d "+moveright;cycle"
 +
alias -d "-moveright;cycle"
  
'''alias "Loop2"'''
+
bind o call
 +
bind w +w
 +
bind a +a
 +
bind s +s
 +
bind d +d
 +
</pre>
 +
이 스크립트는 여러 alias 값을 할당하고 해제합니다. {{key|WASD}} 키가 눌리면, cycle 명령어가 실행되며, cycle의 값이 다음 cycle로 넘어가고 "call" 명령어에 설정합니다. 이는 플레이어의 움직임에 영향을 받습니다. 반복문 등을 이용하면 더 무작위로 만들 수 있습니다.
  
이렇게 Loop2 앨리어스를 지워서 멈춥니다.
+
=== Timed action === <!-- 번역 -->
 +
Timed action은 어떤 키가 특정 시간만큼 눌려있을 경우 실행됩니다. 이는 키가 눌렸을 때 바로 실행되지 않아야 하는 스크립트를 만들 때 사용될 수 있습니다.
  
키 입력 상태에도 적용할 수 있습니다:
+
<pre>
 +
alias "+ti_zoom" "alias zoom_con zoomOn; wait 132; zoom_con"
 +
alias "-ti_zoom" "zoomOff; alias zoom_con ; rb_tizoom-M4"
 +
alias "rb_tizoom-M4" "unbind mouse4; wait 132; bind mouse4 +ti_zoom"
 +
alias "zoomOn" "fov_desired 20; r_drawviewmodel 0"
 +
alias "zoomOff" "fov_desired 90; r_drawviewmodel 1"
 +
bind "mouse4" "+ti_zoom"
 +
</pre>
  
'''alias Loop2 Loop1'''
+
{{key|Mouse 4}}를 누르고 바로 떼는 경우 아무 효과가 없으나, 2초간 누르고 있으면 시야를 20으로 줄이며, 무기 모델을 끕니다. {{key|Mouse 4}}를 아무 때나 떼면 이 설정을 원래대로 돌립니다.
'''alias "Loop1" "echo Loop1; wait 150; Loop2"'''
 
'''alias "+Loop" "alias Loop2 Loop1; Loop2"'''
 
'''alias "-Loop" "alias Loop2"'''
 
'''bind "<키>" "+Loop"'''
 
  
위의 명령이 수행하는 작업은 순서대로 다음과 같습니다:
+
이 스크립트는 +와 - alias를 사용하여 만들어집니다. <code>+ti_zoom</code>를 누르면 <code>zoom_con</code>를 재정의하며 스크립트가 실행되며, <code>wait</code> 기간 동안 눌러진 상태가 되면 스크립트를 실행합니다. 하지만, 키를 떼면 <code>zoom_con</code>가 아무 것도 실행되지 않도록 재정의됩니다. 이후 같은 <code>wait</code> 기간동안 키를 해제하고, 이후 다시 정의합니다.
  
* Loop2를 Loop1을 실행하는 앨리어스로 정의
+
'''주석:''' 키를 다시 bind하는 것은 스크립트가 키가 눌리지 않으면 실행되지 않기 때문에 과도한 부분입니다. 하지만, 키가 여러 번 눌리면 스크립트가 실행될 수 있기 때문에, <code>wait</code> 명령어가 이를 막습니다.
* Loop1을 콘솔에 'Loop1'을 출력하고 150틱을 기다린 다음 Loop2를 호출하는 앨리어스로 정의
 
* +Loop를 앨리어스 Loop2가 Loop1을 실행하도록 재정의한 다음 Loop2를 호출하는 앨리어스로 정의
 
* -Loop를 앨리어스 Loop2를 지우는 앨리어스로 정의 (루프를 멈춘다)
 
  
==유용한 스크립트 명령어==
+
=== 기본 조건문 ===
 +
기본 조건문은 스크립트가 완전히 새로운 스크립트를 실행하지 않아도 행동을 바꾸게 합니다. 더미 alias를 만듦으로써 입력에 따라 출력을 바꿀 수 있습니다. 기본 조건문은 명령의 상태에 따라 무한히 많은 행동을 취할 수 있으나, 한 조건문 당 많은 조건을 쓰진 않습니다.
  
스크립트에 적용할 수 있는 인수들은 말그대로 수백가지가 넘습니다. 그 중 일부를 아래에 적습니다.
+
기본 조건문의 예시는 다음과 같습니다:
 +
<pre>
 +
alias "check_test" "check1; check2; test"
 +
alias "check1" ""
 +
alias "check2" ""
 +
alias "test" "success"
  
===음성 명령===
+
alias "fail_check" "alias test failure"
  
'''음성 명령'''을 통해 캐릭터가 말을 할 수 있습니다. 보통 신호를 보내거나 빈둥거리는 데에 쓰입니다.
+
alias "success" "echo SUCCESS!"
 +
alias "failure" "alias test success; echo FAILURE!"
  
음성 명령 문법은 다음과 같습니다:
+
alias "+k" "alias check1 fail_check"
 +
alias "-k" "alias check1"
 +
alias "+j" "alias check2 fail_check"
 +
alias "-j" "alias check2"
  
'''voicemenu <메뉴 번호> <구절 번호>'''
+
bind "l" "check_test"
 +
bind "j" "+j"
 +
bind "k" "+k"
 +
</pre>
  
<메뉴 번호>는 세 가지 메뉴의 번호, <구절 번호>는 각 메뉴에 딸린 8가지 명령의 번호입니다.
+
이 스크립트의 주요 부분은 <code>check_test</code> alias입니다. 스크립트를 실행하면, 이 alias가 2개의 조건을 확인하며, 조건에 알맞은 경우 <code>success</code> alias를 실행합니다. 하나의 조건이라도 알맞지 않으면 더미 alias인 <code>test</code>가 <code>failure</code>를 실행하게 합니다. 간단히 말해, 조건에 알맞으면 <code>test</code>가 가리키는 alias를 실행하지 않고, 조건에 알맞지 않으면 <code>test</code>가 가리키는 alias를 실행합니다.
  
====음성 명령 인수====
+
위 예시의 경우, {{key|J}}나 {{key|K}}를 누르지 않은 채로 {{key|L}}을 누르면 조건에 알맞게 되어 콘솔에 <code>SUCCESS!</code>를 표시하며,{{key|J}}나 {{key|K}}를 누른 채로 {{key|L}}을 누르면 조건에 알맞지 않게 되어 <code>FAILURE!</code>를 표시합니다.
  
*0 <구절 번호>
+
실제로 사용하는 조건문 예시:
*:0: 메딕!
+
<pre>
*: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: 우리 팀
 
 
 
===엔지니어 빠른 건설===
 
 
 
[[Spy/ko|스파이]]의 변장과 마찬가지로, [[Engineer/ko|엔지니어]]도 PDA 메뉴를 거치지 않고 빠르게 건물을 폭파하고 지을 수 있습니다.
 
 
 
건설 명령 문법은 다음과 같습니다:
 
 
 
'''build <건물 번호>'''
 
'''destroy <건물 번호>'''
 
 
 
<건물 번호>는 폭파하거나 지으려는 건물의 번호입니다.
 
  
====건설 명령 인수====
+
alias "+w" "+forward; press_w"
 +
alias "+a" "+moveleft; press_a"
 +
alias "+s" "+back; press_s"
 +
alias "+d" "+moveright; press_d"
 +
alias "-w" "-forward; unpress_w"
 +
alias "-a" "-moveleft; unpress_a"
 +
alias "-s" "-back; unpress_s"
 +
alias "-d" "-moveright; unpress_d"
  
*번호: 건설/폭파
+
alias "press_w" "alias check_w pressed_w; chc_forward"
*:0: 디스펜서
+
alias "press_a" "alias check_a pressed_a; chc_left"
*:1: 텔레포터 입구
+
alias "press_s" "alias check_s pressed_s; chc_back"
*:2: 센트리 건/미니 센트리
+
alias "press_d" "alias check_d pressed_d; chc_right"
*:3: 텔레포터 출구
+
alias "unpress_w" "alias check_w unpressed; check_none"
 +
alias "unpress_a" "alias check_a unpressed; check_none"
 +
alias "unpress_s" "alias check_s unpressed; check_none"
 +
alias "unpress_d" "alias check_d unpressed; check_none"
  
아래는 위의 문법을 적용하는 방법에 대한 예시입니다:
+
alias "check_w" "unpressed"
 +
alias "check_a" "unpressed"
 +
alias "check_s" "unpressed"
 +
alias "check_d" "unpressed"
  
'''alias sentry "destroy 2; build 2"'''
+
alias "pressed_w" "dchk_fail; chc_forward"
'''alias dispenser "destroy 0; build 0"'''
+
alias "pressed_a" "dchk_fail; chc_left"
'''alias entrance "destroy 1; build 1"'''
+
alias "pressed_s" "dchk_fail; chc_back"
'''alias exit "destroy 3; build 3"'''
+
alias "pressed_d" "dchk_fail; chc_right"
'''bind f1 sentry'''
+
alias "unpressed" ""
'''bind f2 dispenser'''
 
'''bind f3 entrance'''
 
'''bind f4 exit'''
 
  
이 예시에서는 건물을 F1-F4에 할당함으로써 기존 무기 선택 키와 겹치는 것을 피했습니다. 키를 누르면 해당하는 건물을 즉시 파괴하고 동시에 청사진을 꺼내 배치 준비를 마칩니다. 일부 건물에 대한 스크립트만 만들어 사용할 수도 있습니다.
+
alias "check_none" "check_s; check_a; check_d; check_w; dmy_check"
 +
alias "dmy_check" "chc_success"
  
===자동으로 메딕 호출===
+
alias "dchk_fail" "alias dmy_check chc_failure"
 +
alias "dchk_reset" "alias dmy_check chc_success"
  
키바인드를 통해 메딕을 자동으로 호출하는 체력 값을 조절할 수 있습니다:
+
alias "chc_failure" "dchk_reset"
 +
alias "chc_success" "chc_default"
  
'''hud_medicautocallersthreshold <퍼센트>'''
+
alias "chc_default" "color0"
 +
alias "chc_forward" "color1"
 +
alias "chc_left" "color2"
 +
alias "chc_back" "color3"
 +
alias "chc_right" "color4"
  
다른 플레이어의 체력이 지정된 <퍼센트>이하로 떨어지면 자동호출이 뜹니다. 0을 넣으면 자동호출이 뜨지 않고, 300(가능한 최대 체력)을 넣으면 모든 동료들의 위치가 표시됩니다.
+
// Bind
 +
bind "w" "+w"
 +
bind "a" "+a"
 +
bind "s" "+s"
 +
bind "d" "+d"
  
이 명령어를 통해 흔히 "메딕 레이더"라 불리는 스크립트를 만들 수 있습니다: 명령을 실행하는 키를 누르고 있는 동안 자동호출 임계값이 300%로 올라가므로, [[Medic/ko|메딕]]은 전장에 혼자 남겨졌을 때 호출 표시를 통해 모든 동료들의 위치를 파악할 수 있습니다 (300%는 모든 클래스, 심지어 [[Conniver's Kunai/ko|간자의 수리검]]을 통해 갓 [[overheal/ko|오버힐]]을 받은 [[Spy/ko|스파이]]의 최대 체력까지도 커버합니다).
+
// 색
 +
alias "color0" "cl_crosshair_red 0; cl_crosshair_green 255; cl_crosshair_blue 0"        // 움직이지 않을 때의 기본 색
 +
alias "color1" "cl_crosshair_red 0; cl_crosshair_green 0; cl_crosshair_blue 255"       // 앞으로 가기를 눌렀을 때의 색
 +
alias "color2" "cl_crosshair_red 255; cl_crosshair_green 0; cl_crosshair_blue 255"      // 왼쪽으로 가기를 눌렀을 때의 색
 +
alias "color3" "cl_crosshair_red 128; cl_crosshair_green 212; cl_crosshair_blue 255"    // 뒤로 가기를 눌렀을 때의 색
 +
alias "color4" "cl_crosshair_red 255; cl_crosshair_green 140; cl_crosshair_blue 25"    // 오른쪽으로 가기를 눌렀을 때의 색
 +
</pre>
  
'''alias "autocall_default" "hud_medicautocallersthreshold "75""'''
+
이 스크립트는 {{key|WASD}}를 누르며 움직일 때 조준선의 색이 바뀌게 합니다. 이 스크립트가 이용하는 중요한 것은 조건에 알맞지 않으면 여러 가지 행위를 한다는 것입니다. 조건에 알맞지 않으면 조준선이 색이 바뀌고, 조건을 확인하기 위한 더미 명령도 바꿉니다. 이는 여러 키가 눌리지 않으면, 조준선의 색을 가장 마지막에 누른 키에 맞는 색으로 바꿉니다.
'''alias "autocall_all" "hud_medicautocallersthreshold "300""'''
 
'''alias "+radar" "autocall_all"'''
 
'''alias "-radar" "autocall_default"'''
 
'''bind mouse3 "+radar"'''
 
  
명령을 사용하지 않을 때의 기본 임계값(예시에서 75%)과 명령을 실행할 키바인드(예시에서 MOUSE3)는 원하는 대로 바꿀 있습니다.
+
== 코멘트 ==
 +
스크립트가 길어지면, 적절한 이름을 가진 alias가 필요해집니다. 하지만, 언제나 alias의 이름만으로 alias를 설명하기엔 무리일 수 있습니다. 두 개의 슬래시 (//)를 이용하면 코멘트를 달 있으며 스크립트는 이를 실행하지 않습니다.
  
==주목할 만한 스크립트==
+
<pre>voicemenu 1 6 //우버를 발동하라!</pre>
 +
음성 호출이 무엇을 가리키는 지 나타나지 않기 때문에, 코멘트로 설명할 수 있습니다.
  
게임플레이에 영향을 미치는 중요한 스크립트들이 있습니다. 일부는 패치되어 막혔지만, 그 외의 경우에는 아직도 사용할 수 있습니다.
+
== 주목할 만한 스크립트들 ==
 +
다음은 게임에 영향을 끼친 스크립트들입니다. 몇몇 스크립트는 패치되었고, 나머지 스크립트들은 현재 사용 가능합니다.
  
===패치된 스크립트===
+
=== 패치된 스크립트들 ===
 +
==== 권총 스크립트 ====
 +
이전에, [[Pistol/ko|권총]]은 사람이 누르는 속도만큼 빠르게 쏠 수 있었습니다. 이에 키 하나만 누르면 굉장히 빠르게 쏠 수 있는 스크립트가 만들어졌습니다.
  
====권총 스크립트====
+
{{Patch name|8|13|2009}}: 권총의 발사 속도 문제를 수정하여 플레이어가 발사 단추를 누르는 속도에 관계되지 않게 했습니다.
  
이전에는 [[Pistol/ko|권총]]을 키를 누르는 속도만큼 빠르게 쏠 있었습니다. 이걸 알고 있던 일부 플레이어들이 키를 누르고 있으면 권총을 가능한 가장 빠르게 연사하는 스크립트를 만들었습니다. 키를 마구 누를 필요가 없었기 때문에, [[Scout/ko|스카웃]]과 [[Engineer/ko|엔지니어]]는 비정상적으로 빠르게 총을 쏠 수 있었을 뿐 아니라 조준도 더 쉽게 할 수 있었습니다.
+
==== 돌격 방패 조종 스크립트 ====
 +
이전에, 키보드 명령어로 화면을 돌리는 것은 마우스로 돌리는 것과 달랐습니다. [[Chargin' Targe/ko|돌격 방패]]는 플레이어가 화면을 돌릴 있는 속도에 제한을 둔 첫번째 무기이며, Valve는 마우스로 화면을 돌리는 속도에 제한을 두었습니다. 하지만, 키보드로 화면을 돌리는 것에 제한을 두지 않았고, 이후 이 제한을 무시하는 스크립트들이 만들어졌습니다.
  
결국엔 밸브가 경기를 공평하게 만들었고, 권총은 키를 누르고 있으면 일정한 연사 속도에 도달하도록 패치되었습니다. 권총 스크립트는 더 이상 쓸모가 없어졌습니다.
+
{{Patch name|6|23|2011}}: 돌격 방패로 빨리 회전할 수 있었던 점을 수정했습니다.
  
====돌격 방향 전환 스크립트====
+
==== 공중에서 앉기 스크립트 ====
 +
이전에, 플레이어는 공중에서 제한 없이 앉기를 누를 수 있었습니다. 이후 굉장히 빠르게 앉기를 눌렀다 떼는 스크립트를 만들어졌는데, 이 스크립트 때문에 공중의 적을 맞추기 힘들어졌었습니다.
  
이전에는 시점을 좌우로 돌리는 키보드 명령어는 마우스 명령과는 다르게 취급되었습니다. [[Chargin' Targe/ko|돌격 방패]]는 이 시점을 돌릴 있는 속도를 제한하는 최초의 무기였고, 그래서 밸브에서 마우스 회전 속도에 제한을 걸었지만, 같은 제한을 키보드 명령어에도 적용하는 것은 깜빡한 상태였습니다.
+
{{Patch name|3|6|2009}}: 이제 공중에서 두 번만 앉을 있습니다.
  
플레이어들은 돌격 중에는 다른 키바인드를 적용하는 스크립트를 만들었고, 그래서 전속력으로 시점을 회전할 수 있었습니다. 가장 세련된 형태는 돌격 중엔 마우스의 x축 입력을 키보드의 회전 명령어에 할당하고, 플레이어가 공격과 함께 돌격을 끝낼 때 할당을 푸는 것이었습니다.
+
==== 잠수 스크립트 ====
 +
대부분의 서버가 잠수를 통해 [[Item drop system/ko|아이템을 획득]]하는 것을 막는 방법을 이용했습니다. 플레이어들은 이 시스템을 무시하는 스크립트를 만들었습니다.
  
결국엔 밸브에서 키보드의 회전 명령어에 대해서도 마우스처럼 제한을 걸었고, 따라서 이 스크립트를 쓰는 것은 아무런 이득이 없게 되었습니다.
+
[http://www.teamfortress.com/post.php?id=11105 잠수를 막는 해결책]에서 플레이어가 팝업 알림을 확인해야 아이템을 계속 얻을 수 있도록 했습니다.
  
하지만 아직도 돌격을 할 때와 공격을 할 다른 마우스 감도를 토글해주는 형태의 스크립트는 사용이 가능합니다. 게임패드의 아날로그 스틱을 써도 쉽게 회전 할 수 있습니다.
+
=== 이용 가능한 스크립트들 ===
 +
==== 무기 모델을 끄는 스크립트 ====
 +
무기의 칸 등에 따라 무기 모델을 키고 끄는 스크립트가 많이 있습니다. 플레이어들은 무기 모델을 꺼 화면이 더 잘 보이게 하지만, 근접 무기 등은 모델을 켜놓는 경우가 있습니다. 에를 들어, [[Spy/ko|스파이]]는 은폐했을 무기 모델을 보는 것이 중요합니다. 또한 근접 무기가 상대에게 언제 맞는지 알기 위해 근접 무기 모델을 켜놓기도 합니다.
  
====공중 숙이기 스크립트====
+
==== 무기 줌 스크립트 ====
 +
이 스크립트는 [[Field of View/ko|시야]]를 변경하여 어느 무기를 사용하든 줌 효과를 사용할 수 있게 합니다.
 +
  alias "+zoomer" "fov_desired 75; r_drawviewmodel 0"
 +
  alias "-zoomer" "fov_desired 90; viewmodel_fov 110; r_drawviewmodel 1"
 +
  bind "shift" "+zoomer"
  
이전에는 점프 중에 원하는 만큼 숙이기를 할 수 있었습니다. 숙인 상태와 숙이지 않은 상태를 계속해서 빠르게 왕복하는 스크립트를 쓰면 공중에서 피격 판정을 받기 힘들어져 훨씬 더 맞추기 힘든 타겟이 될 있었습니다.
+
==== 센트리 건 점프 스크립트 ====
 +
{{update link|Engineer Update}} 이후, 엔지니어는 [[Sentry Gun/ko|센트리 건]]을 들고 옮길 수 있습니다. 동시에, 같은 업데이트에서 [[Wrangler/ko|랭글러]]를 이용해 [[Jumping/ko#센트리 건 점프|센트리 건 점프]]를 할 수 있게 되었습니다. 굉장히 빠른 입력을 이용해 플레이어가 센트리 건 점프를 함과 동시에 센트리 건을 들 있는 것을 알아냈습니다.
  
밸브가 이를 패치했고, 따라서 이제는 점프 중에 두 번까지만 숙이기를 할 수 있습니다.
+
사람이 이를 할 수도 있지만, 굉장히 어렵습니다. 이에 매 번 센트리 건으로 점프를 함과 동시에 센트리 건을 옮기는 스크립트가 만들어졌습니다.
 +
:''주석:'' [[Rescue Ranger/ko|구조대원]]은 먼 거리에서 100 [[metal/ko|금속]]을 이용해 [[buildings/ko|구조물]]을 옮길 수 있으므로 이를 더 쉽게 할 수 있습니다.
  
====G.R.U. 스크립트====
+
==== 총잡이 스크립트 ====
 +
[[Combat Mini-Sentry/ko|소형 센트리 건]]을 부수고 다시 짓는 것이 번거로울 수 있기 때문에, 플레이어들은 소형 센트리 건을 부수고 다시 짓는 과정을 키 한 두 번만 눌러서 할 수 있는 스크립트를 만들었습니다. 이 스크립트는 [[Frontier Justice/ko|개척자의 정의]]의 복수 치명타와 함께 이용하면 매우 유용합니다.
  
이전에는 [[Gloves of Running Urgently/ko|G.R.U.]]를 끼면 체력이 초당 6씩 떨어졌습니다. 하지만 점프 중에는 이 무기의 이동 속도 보너스가 유지되었기 때문에, 이것을 낀 채로 점프한 다음 재빨리 무기를 바꾸는 식으로 속력은 거의 잃지 않으면서 체력 감소를 줄일 있었습니다. 굳이 직접 일일히 무기를 바꾸지 않아도, 스크립트를 쓰면 이 행동을 훨씬 더 간편하게 해낼 수 있었습니다.
+
==== 감도와 컨트롤 스크립트 ====
 +
몇몇 플레이어는 특정 병과에 따라 다른 감도와 컨트롤을 선호합니다. 예를 들어, 메딕은 조준이 많이 필요하지 않으나 스나이퍼는 정확한 조준이 필요하여 각각 다른 마우스 감도를 사용하고 싶어할 있습니다. 이 스크립트는 병과마다, 혹은 무기마다 마우스 감도 등의 설정을 바꿉니다.
  
하지만 {{Patch name|6|27|2012}}를 통해 무기의 특성이 매 초당 체력을 잃는 것에서 짧은 시간 동안 죽음의 표적이 되는 것으로 바뀌었습니다.
+
==== 차지 대시 스크립트 ====
 +
점프와 돌격의 타이밍을 잡는 것이 어려울 수 있어, 몇몇 플레이어는 키 하나만 눌러 돌격으로 가장 멀리 날아갈 수 있게 하는 스크립트를 만들었습니다. 플레이어는 근접 공격으로 돌격을 멈출 수도 있습니다.
  
===현존하는 스크립트===
+
==== 퀵스코프 스크립트 ====
 +
많은 플레이어가 스나이퍼로 조준을 하자마자 쏘는 것을 힘들어 합니다. 이 스크립트는 키 하나만 누르면 조준을 하자마자 쏘게 합니다. 하지만 조준을 하지 않은 상태에서 사용해야 합니다.
  
====무기 감추기 스크립트====
+
==== 로켓 점프 스크립트 ====
 +
가장 높게나 가장 멀리[[Jumping/ko#솔저의 점프|로켓 점프]]를 하기 위해선 점프, 앉기와 로켓 쏘기를 거의 동시에 해야 합니다. 이는 스크립트를 통해 키 하나만 눌러서 쉽게 할 수 있습니다.
  
클래스가 선택한 무기 슬롯에 따라 무기 표시 옵션을 토글할 있는 스크립트가 많이 있습니다. 보통 플레이어들은 총을 시야 확보를 위해 감추고, 근접 무기, PDA, 시계 등의 모델을 중요한 정보를 알려주기 때문에 보여둡니다. 예를 들면 스파이는 언제 은폐 준비가 끝나는지, 부딪혀서 드러난 은폐가 언제까지 보이는지, 언제 [[Dead Ringer/ko|데드 링어]]가 작동하는지를 자신의 보이는 모델에 의존해서 확인합니다. 다른 클래스들은 근접 무기 애니메이션을 통해 언제 공격 판정이 뜰 지를 판단합니다.
+
==== 자동 변장 스크립트 ====
 +
수동으로 변장하는 것이 번거롭다고 생각한 플레이어들을 위한 이 스크립트는 어떤 무기든 공격하자마자 변장하게 합니다. 토글로 설정할 수 있고, 변장할 병과를 직접 설정할 수 있습니다.
  
====센트리 점프 스크립트====
+
==== 우버차지 알림 스크립트 ====
 +
이 스크립트를 이용하면, [[Medic/ko|메딕]]이 우버차지를 사용하면 팀 채팅에 메시지를 남겨 팀이 같이 공격할 수 있게 합니다. 비슷한 스크립트로 "우버차지 준비 완료" 음성 호출을 사용하여 상대 팀을 속일 수 있습니다.
  
[[Engineer Update/ko|엔지니어 업데이트]] 이후로 엔지니어는 [[Sentry Gun/ko|센트리 건]]을 옮길 수 있게 되었으며, 같은 업데이트에서 소개된 [[Wrangler/ko|랭글러]]를 써서 센트리 로켓을 이용한 [[Sentry Jump/ko|센트리 점프]]도 할 수 있게 되었습니다. 매우 빠른 키입력에 성공하면 플레이어가 센트리 점프로 날아가기 직전에 센트리 건을 들고 나를 있다는 것이 밝혀졌습니다.
+
==== 메딕 레이더 ====
 +
<pre>alias "autocall_default" "hud_medicautocallersthreshold 75.730003/사용자 지정 숫자"
 +
alias "autocall_all" "hud_medicautocallersthreshold 150"
 +
alias "+radar" "autocall_all"
 +
alias "-radar" "autocall_default"
 +
bind [KEY] "+radar</pre>
 +
이 스크립트는 메딕으로만 사용 가능하며, 키를 누르면 자동 호출의 퍼센트가 굉장히 큰 수로 지정되어 주변에 팀이 어디 있는지 알 있습니다.
  
직접 이 재주를 부리기는 것은 매우 어려운 일입니다. 그래서 일부 플레이어들은 정확한 순서와 속도로 명령을 실행해 매번 센트리 점프를 할 때마다 센트리를 옮길 수 있는 스크립트를 만들어냈습니다.
+
==== 자살 스크립트 ====
 +
{{main|Suicide/ko|l1=자살}}
 +
[[Ubersaw/ko|우버톱]]을 든 메딕에게 공격 당하는 등의 상황에서, <code>kill</code>를 지정한 키를 눌러서 자살하는 것이 도움이 될 수도 있습니다. 이는 대부분 경쟁 모드에서 사용하나, 공개 서버에서 웃기기 위한 용도로 사용하는 경우가 있습니다. 또한, <code>explode</code>를 사용하는 경우 폭발하며 자살하게 됩니다.
  
====총잡이 스크립트====
+
==== Null-Cancelling 움직임 스크립프 ====
 +
아무 설정도 하지 않은 팀 포트리스 2에서, 반대 방향으로 움직이는 키들을 동시에 누르는 경우 플레이어의 모든 움직임을 없애고 가만히 있게 합니다. 이 스크립트는 마지막에 눌린 키만을 입력으로 받아 그 방향으로 움직이게 합니다.
  
전장의 열기 속에서 PDA를 직접 꺼내 [[Combat Mini-Sentry/ko|미니센트리]]를 부수고 다시 짓는 일이 꽤 거추장스러운 일이었기 때문에, 플레이어들은 마우스 버튼 한 두 개만으로 미니센트리를 부수고 지을 있는 스크립트를 만들었습니다. 이 스크립트를 [[Frontier Justice/ko|개척자의 정의]]와 함께 쓰면 수시로 필요할 때마다 복수 치명타를 보충할 수 있기 때문에 무척 유용합니다.
+
==== 채팅 bind 스크립트 ====
 +
채팅 bind 스크립트는 미리 적어놓은 메시지를 채팅에 보내기 위한 스크립트 입니다. 일반적으로, 이 스크립트를 키에 적용해 채팅을 직접 치지 않고도 채팅에 글을 쓸 수 있게 합니다. 이 스크립트는 유저마다 다르게 사용할 수 있으며, 글자 수 제한 내의 모든 메시지를 보낼 있습니다. 이 메시지는 팀 채팅에 적을 수도 있습니다. 또한 거래 관련한 채팅을 적을 수도 있으며, 몇 분마다 채팅을 보내도록 할 수도 있습니다.
  
====감도와 조정 키 스크립트====
+
==== 보이스 채팅 토글 ====
 +
<pre>bind [KEY] mic_toggle
 +
alias mic_toggle mic_enable
 +
alias mic_enable "+voicerecord; alias mic_toggle mic_disable"
 +
alias mic_disable "-voicerecord; alias mic_toggle mic_enable"</pre>
 +
이 스크립트는 눌러서 보이스 채팅을 하는 것이 아닌 토글로 보이스 채팅을 할 수 있게 합니다.
  
일부 플레이어들은 클래스마다 다른 감도와 조정 방법을 쓰는 것을 선호합니다 (예를 들면 그다지 섬세한 조준이 필요하지 않은 데모맨에서 부주의적으로 손떨림을 일으켜도 조준이 지장을 받지 않을 정도로 낮은 마우스 감도가 필요한 스나이퍼로 바꾸는 경우). 이들을 위해서 클래스마다, 심지어는 무기마다 마우스 감도와 조정 방법을 바꿔주는 스크립트가 있습니다.
+
== 주석 ==
 
+
* 각 스크립트 파일은 1[[w:ko:메비바이트|MiB]] (1.04858 메가바이트)의 정보만 가질 수 있습니다. 파일의 끝에 [[#Exec|exec]]를 이용하여 다른 파일을 열게 함으로써 우회할 있습니다.
====돌격 대시 스크립트====
 
 
 
돌격과 점프의 시간간격을 맞추는 것이 쉽지 않기 때문에, 일부 플레이어들은 두 행동을 하나로 묶는 간단한 스크립트를 만들어서 돌격 대시의 거리를 최대로 늘리곤 합니다. 하지만 돌격을 끝내기 위해 근접 무기를 휘둘러줘야 하는 것은 마찬가지입니다.
 
 
 
====퀵스코프 스크립트====
 
 
 
많은 플레이어들이 줌 인 이후에 곧바로 헤드샷을 쏘는 것을 어려워 합니다. 때문에 마우스 버튼 한 번으로 줌 인과 발사를 실행하는 스크립트가 만들어졌습니다. 퀵스코프는 적을 스코프 밖에서 조준해야 하기 때문에 쉽지 않은 기술이지만, 숙달하면 훨씬 더 효율적인 플레이를 할 있게 됩니다.
 
 
 
====로켓점프 스크립트====
 
 
 
로켓 점프로 최대 높이나 거리에 도달하기 위해서는 점프, 숙이기, 발사를 거의 동시에 해내야 합니다. 이것에 어려움을 느낀 일부 플레이어들은 한 번의 버튼으로 이것들을 모두 실행해주는 간단한 스크립트를 만들어서 사용합니다.
 
 
 
==참고==
 
  
 +
== 같이 보기 ==
 
* [[List of useful console commands/ko|유용한 콘솔 명령어 목록]]
 
* [[List of useful console commands/ko|유용한 콘솔 명령어 목록]]
* [[Customizing/ko#tf.5Ccfg.5Cconfig default.cfg|커스터마이징 - config_default.cfg]]: TF2 기본 키바인드
+
* {{vdc|List of TF2 console commands and variables|팀 포트리스 2 콘솔 명령어와 변수 목록}}
 
+
* {{vdc|Command Line Options|명령어 옵션}}<!-- 어떻게 번역해야 하지 -->
==외부 링크==
+
* {{vdc|VScript}}
 +
* [[Cheats/ko|치트]]
  
* [http://forums.steampowered.com/forums/showthread.php?t=709568 Steam Users' Forums - TF2 Scripting Tutorial] {{lang icon|en}}. 스크립팅에 대한 기초를 유용하고 이해하기 쉬운 수많은 예제와 함께 다루는 튜토리얼.
+
== 외부 링크 ==
* [http://warriornation.net/Forum/showthread.php?t=568008 TF2 scripting tutorial - Warrior Nation Network] {{lang icon|en}}. 기초적인 스크립트 문법에 대한 사전지식을 필요로 하는, 훨씬 더 심화된 튜토리얼.
+
* [https://gamebanana.com/scripts/games/297 Gamebanana에 있는 스크립트 예시]
* [http://www.gamebanana.com/scripts/games/297 Gamebanana.com - TF2 scripts] {{lang icon|en}}. 수백가지가 넘는 TF2 스크립트 예제.
+
* [https://cfg.tf 팀 포트리스 2 구성 파일을 설정할 수 있는 cfg.tf]
  
[[Category:customization/ko]]
+
[[Category:Customization/ko]]

Latest revision as of 07:31, 17 March 2024


스크립트는 설정 파일 .cfg을 이용해 복잡한 행동들과 콘솔 명령들을 자동으로 실행하는 새로운 bind와 alias를 만드는 것을 의미합니다. 스크립트는 Team Fortress 2에 내장된 기능으로서, VAC를 통해 제제당하지 않습니다. 스크립트를 사용하는 방식은 단순히 키를 누르면 명령이 실행되는 것부터 반복문과 서로 재정의 하는 alias까지 다양합니다. 스크립트를 이용해 자동으로 만들 수 있는 것들은 수동으로도 할 수 있지만, 스크립트는 이를 전장에서 쉽게 이용할 수 있게 합니다.

목차

스크립트 명령어

이 명령어들은 스크립트 외에는 사용할 수 없는 명령어로, 게임에 직접적으로 영향을 끼치지 않습니다.

bind

본문: bind

기본 키 목록은 이 문서를 참조하십시오.

가장 단순한 명령어는 bind 명령어로, 이 명령어는 특정 키를 누르면 설정, 명령어, 또는 다른 스크립트 등의 특정 작업을 수행할 수 있게 합니다.

bind [KEY] [COMMAND]

큰따옴표도 사용할 수 있으며, 어떤 값과 명령 사이에 띄어쓰기가 필요한 경우에 사용하여, 이를 한 명령으로 인식하게 합니다. 예를 들어 bind mouse1 "say (글)"의 경우 say와 (글) 사이에 띄어쓰기가 필요하여 큰따옴표를 사용합니다.

bind [KEY] "[COMMAND 1]; [COMMAND 2]; [COMMAND 3]"

큰따옴표를 키에도 사용할 수 있으나, 명령에 사용되지 않으면 콘솔은 연속된 명령을 인식할 수 없기 때문에 명령에 큰따옴표를 사용해야 합니다.

주석: 명령

say "예시 문장"

는 올바른 명령이지만,

bind [KEY] "say "예시 문장""

은 올바르지 않은 명령입니다. 이는 큰따옴표가 잘못 인식되며, say 뒤의 큰따옴표를 인식하고 명령을 중단합니다.

bind 명령어는 두 가지의 형태가 있습니다.

bind e "voicemenu 0 0"

이 bind는 플레이어가 E를 누르면 메딕을 부르게 합니다.

bind w +forward

이 bind는 플레이어가 W를 누르고 있으면 앞으로 가게 합니다.

say

say 명령어는 문장이나 단어를 채팅 창에 전송할 수 있습니다.

 bind "<아무 키>" "say <발신할 글>"

"say_team <발신할 글>"은 팀에게만 발신합니다. "say_party <발신할 글>"은 파티에게만 발신합니다.

say 명령어 단독으로 사용할 경우 채팅을 직접 작성할 수 있습니다.

 bind "<아무 키>" "say_party"

<아무 키>를 누르면 파티에게만 발신되는 채팅 작성 창을 엽니다.

toggle

이 명령어는 두 개 이상의 값을 번갈아 사용할 때 사용합니다.

 "toggle <convar>" 인수 1 [인수 2]
toggle "sv_cheats" 0 1
bind "p" "toggle sv_cheats" 0 1
주석: 만약 값을 지정하지 않는다면, toggle과 bindtoggle은 값을 0과 1 중 현재 상태와 다른 값으로 전환합니다.

toggle과 bindtoggle을 사용할 때, 할당되는 값이 큰따옴표 밖에 있어야 합니다. ("예시 명령" 0 1)

bindToggle

이 명령어는 bind "<아무 키>" toggle ~을 단축시킨 명령어입니다

bindToggle o sv_cheats 0 1
주석: 만약 값을 지정하지 않는다면, toggle과 bindtoggle은 값을 0과 1 중 현재 상태와 다른 값으로 전환합니다.

toggle과 bindtoggle을 사용할 때, 할당되는 값이 큰따옴표 밖에 있어야 합니다. ("예시 명령" 0 1)

incrementvar

이 명령어는 지정한 값 내의 인수를 순환합니다.

 "incrementvar <convar> <최솟값> <최댓값> <증가값>"
bind MWHEELUP "incrementvar fov_desired 75 90 1"
bind MWHEELDOWN "incrementvar fov_desired 75 90 -1"

이 명령어는 휠을 위로 올리면 시야가 넓어지고, 아래로 내리면 시야가 좁아지게 합니다.

주석: incrementvar은 지정한 값보다 커지거나 작아지려 할 경우 값을 순환하도록 합니다. 예를 들어, 시야가 90보다 커지려 할 경우 75부터 90까지 다시 증가하고, 75보다 작아지려 할 경우 90에서 다시 75까지 작아집니다.

alias

본문: alias

alias는 여러 명령어를 한 명령으로 사용할 수 있게 합니다. 따라서 이는 굉장히 효율적이며, 여러 명령을 여러 번 사용해야 할 경우 가장 효과적입니다.

주석: alias의 이름은 띄어쓰기를 포함할 수 없으며, 언더바, 숫자 및 특수문자를 포함할 수 있습니다. alias의 이름은 대소문자를 구분합니다.
 alias <alias_name> "<command>; <command2>"
 bind "<아무 키>" "<alias_name>"
alias Call_For_Medic "Voicemenu 0 0"
bind "e" "Call_For_Medic"

이 스크립트는 bind와 똑같이 작동하며, 플레이어가 E를 누를 경우 메딕을 부르게 됩니다.

주석: alias는 + 문자를 앞에 사용할 수 있으며, +<alias>가 시행되고 있지 않을 때 -<alias>의 명령을 실행합니다. 이는 움직임과 관련된 bind를 만들 때 유용합니다.
alias "+Diagonal" "+moveleft; +back"
alias "-Diagonal" "-moveleft; -back"
bind "z" "+Diagonal"

이 스크립트는 플레이어가 대각선으로 움직이게 합니다. Z를 누르면 플레이어가 뒤로 왼쪽 45도로 움직이게 합니다.

경고: 다음 명령은 사용할 수 없습니다.
bind "z" "+moveleft; +back"

Z를 누를 경우 플레이어가 뒤와 왼쪽으로 움직이게 하나, 게임 엔진은 +back 명령이 뒤에 있어서 -back 명령을 실행할 수 없으며, 플레이어가 계속 뒤로 움직이게 됩니다.

exec

이 명령어는 다른 파일을 불러옵니다. 이는 복잡한 스크립트를 다른 파일에 저장하여 일반 파일이 복잡해지지 않게 합니다.

exec autoexec.cfg

이 스크립트는 플레이어의 autoexec.cfg 파일을 불러오고 게임에 할당합니다.


echo

이 명령어는 글이 콘솔에 나타나게 합니다. 이는 디버깅에 사용됩니다.

 echo "<consolwriteline>"
echo Scripting is; echo very useful

이 명령은 Scripting isvery useful두 줄로 나타나게 합니다. 이는 echo로 전달되는 글의 끝에 새 행이 추가되기 때문입니다. 띄어쓰기는 글자 사이에 있거나, 큰따옴표 내에 있을 경우 인식됩니다. 예를 들어:

echo " Scripting is very useful.   "

이 경우 큰따옴표로 글을 지정했기 때문에 띄어쓰기가 나타나게 됩니다.

주석: 큰따옴표는 나타내려 할 경우 잘못 인식될 것이기 때문에 나타낼 수 없으나, 작은따옴표는 나타낼 수 있습니다.
주석: echo는 가끔 큰따옴표가 없는 경우 잘못 나타낼 수 있으니 큰따옴표를 사용하는 것이 더 나으며, 나타내고자 하는 글을 사람이 알아보기 더 쉽게 합니다.

wait

 wait <프레임>

이 명령어는 게임이 다음 명령을 시행하기 전 주어진 프레임 동안 기다리게 합니다.

경고: wait 명령어는 특정 서버에서 비활성화 되어있을 수 있습니다. 따라서 특정 스크립트는 제대로 실행되지 않을 것이며, 게임이 강제 종료 될 수 있습니다. wait 비활성화 확인에서 이를 막을 방법을 알아보십시오.
echo 못이 망치에 아무리 맞아도 피가 안 나는 이유는?;wait 300;echo 모세혈관이 없어서!

이 스크립트는 첫 문장을 나타내고 300 프레임을 기다린 후 다음 문장을 나타내게 합니다.

클래스 특정 cfg 파일

특정 병과로 변경할 때, 게임이 그 병과에 맞는 cfg 파일을 실행하게 되며, 다음 이름을 따라야 합니다.

scout.cfg
soldier.cfg
pyro.cfg
demoman.cfg
heavyweapons.cfg
engineer.cfg
medic.cfg
sniper.cfg
spy.cfg

플레이어가 각 병과마다 설정해놓은 명령을 실행하게 합니다. autoexec.cfg와 class.cfg, 그리고 사용자가 생성한 cfg 문서들은 overrides 파일 안에 있어야 하며, 그러지 않으면 게임에 적용되지 않습니다.

실행 옵션

실행 옵션은 게임 화질과 비율 등 팀 포트리스 2가 실행되는 방식을 변경할 수 있습니다. Command Line Options (영어) 에 대한 Valve Developer Community (영어)에서 모든 실행 옵션을 확인해주세요.

실행 옵션을 설정하는 방법

시작 옵션을 설정하는 방법.
  1. Steam의 라이브러리에서 팀 포트리스 2를 찾고, 우클릭을 누르고 속성을 선택합니다.
  2. 일반 탭의 시작 옵션을 선택합니다.
  3. 적용하고 싶은 시작 옵션을 입력합니다. 각 옵션은 띄어쓰기로 구분해야 합니다.
  4. 속성 창을 닫고 게임을 실행합니다.

창 옵션

이 옵션을 잘못 사용하면 성능을 낮출 수 있습니다. 가능하면 게임 내 설정을 사용해주십시오.

비율

실행 옵션: -w # -h #

설명: 게임 창의 너비와 높이를 픽셀 단위로 변경합니다.

재생률

실행 옵션: -freq #

설명: 게임의 주사율(Hz)을 강제로 적용합니다.

창 모드

시작 옵션: -windowed

설명: 게임을 창 모드로 실행합니다.

테두리 없는 창 모드

시작 옵션: -noborder

설명: 창 모드일 때, 전체화면 모드처럼 테두리를 없앱니다.

전체화면 모드

시작 옵션: -fullscreen

설명: 게임의 너비와 높이를 강제합니다.

주변 기기 지원

조이스틱 지원 비활성화

시작 옵션: -nojoy

설명: 조이스틱 시스템을 로딩하지 않도록 하여, 실행 시간을 단축시키고 메모리 사용을 줄입니다.

만약 조이스틱을 사용하려는 경우 사용하지 마십시오.

Steam 컨트롤러 지원 비활성화

시작 옵션: -nosteamcontroller

설명: Steam 컨트롤러 시스템을 로딩하지 않도록 하여, 실행 시간을 단축시키고 메모리 사용을 줄입니다.

만약 Steam 컨트롤러를 사용하려는 경우 사용하지 마십시오.

소프트웨어 지원

SourceTV 비활성화

시작 옵션: -nohltv

설명: SourceTV 지원을 비활성화하여, 메모리 사용을 줄입니다. 당신의 클라이언트에서 SourceTV를 사용하려는 경우 사용하지 마십시오.

퀵타임 비활성화

시작 옵션: -noquicktime

설명: 퀵타임 지원을 비활성화하여, 메모리 사용을 줄입니다. .MOV 파일을 내보내는 등 퀵타임 지원이 필요한 경우 사용하지 마십시오.

엔진 옵션

시작 영상 비활성화

시작 옵션: -novid

설명: 게임을 실행할 때 나타나는 Valve 인트로 영상을 비활성화하여, 실행 시간을 단축시킵니다.

beam 입자 제한 변경

시작 옵션: -particles #

설명: beam 입자의 수를 제한합니다. #의 숫자를 1로 변경하여 메모리 사용을 줄일 수 있으며, 최대 512까지 변경할 수 있습니다.

글꼴 렌더링을 precache 하기

시작 옵션: -precachefontchars

설명: 특정 문자의 글꼴 렌더링을 precache 하여, 렌더링 시간을 줄입니다.

Texture Streaming 비활성화

시작 옵션: -no_texture_stream

설명: 더 좋은 퀄리티의 버전이 로딩되는 동안 낮은 퀄리티의 텍스처를 사용하지 않고, 언제나 더 좋은 퀄리티의 버전을 로딩하게 합니다. Texture Streaming을 비활성화하면 비디오 메모리 압력에 영향을 미칩니다.

DirectX 버전 (Microsoft Windows만 가능)

시작 옵션: -dxlevel #

설명: 게임이 사용하는 DirectX 버전을 설정합니다. 많은 값을 사용할 수 있지만, '81'과 '100'을 사용하는 것이 좋습니다.
'-dxlevel 100' 은 DirectX 9와 Pixel Shader 3.0를 사용하며, 시스템의 그래픽 능력을 결정하는데 하드웨어가 사용됩니다.
'-dxlevel 81' 은 DirectX 8의 가장 안정적인 버전이며 Pixel Shader 1.1을 사용합니다. 이 버전은 DirectX 9의 버전들보다 더 좋은 성능을 주지만, 제한된 게임 내 컨텐츠를 사용하며, 성능 향상이 필요하지 않다면 사용하지 않는 것이 좋습니다.
주석: 이 시작 옵션을 가지고 게임을 한 번 실행한 후, 게임을 종료하고 이 시작 옵션을 삭제해야 적절한 구성 파일이 설정됩니다.

키의 이름

키 위에 마우스를 올리면 스크립트 할 때 사용하는 이름을 볼 수 있습니다. 이름은 대소문자를 구분하지 않습니다.

ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12

`   1 2 3 4 5 6 7 8 9 0 - = ← Backspace

Tab ⇆ Q W E R T Y U I O P [ ] \      

⇪ Caps A S D F G H J K L ; '   Enter ↵

Shift     Z X C V B N M ,   .   /   Shift        

Ctrl   Alt       Spacebar       Alt ≣ Menu Ctrl    

PrtScn ScrLk Pause

Insert   Home PgUp

Delete   End   PgDn


                 

         

Num / * -
7 8 9 +
4 5 6
1 2 3
    0     .
마우스의 버튼 스크립트에 사용하는 이름
휠 위로 올리기 MWHEELUP
휠 아래로 내리기 MWHEELDOWN
좌클릭 MOUSE1
우클릭 MOUSE2
휠 클릭 MOUSE3
앞으로 가기 버튼 MOUSE4
뒤로 가기 버튼 MOUSE5


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

유용한 명령어

본문: 팀 포트리스 2 콘솔 명령어와 변수 목록

변장

disguise 명령어는 두 값을 사용하며, 첫 번째 값은 병과를, 두 번째 값은 팀을 나타냅니다.

병과
1. 스카웃
2. 스나이퍼
3. 솔저
4. 데모맨
5. 메딕
6. 헤비
7. 파이로
8. 스파이
9. 엔지니어
1. 블루 팀
2. 레드 팀
-1. 상대 팀
-2. 자신의 팀

예를 들어, disguise 5 1은 블루 팀의 메딕으로 변장하게 하며, disguise 7 -2은 같은 팀의 파이로로 변장하게 합니다.

주석: disguise 8 -2 (같은 팀 스파이로 변장)은 스파이의 변장을 해제하게 합니다. 은폐 상태에서 변장을 해제할 수 있습니다
주석: 팀을 나타내는 값이 1, 2, -1, 또는 -2가 아닐 경우 스파이는 현재 팀에 상관없이 무조건 레드 팀으로 변장하게 됩니다.

구조물

builddestroy 명령어는 두 값을 사용하며, 첫 번째 값은 구조물을, 두 번째 값은 구조물의 타입을 결정합니다. 두 번째 값은 0이 아닌 값을 사용할 경우에만 필요하며, 현재 텔레포터의 입구와 출구를 구분하는 데만 사용됩니다.


build 명령어는 구조물을 설치하기 위한 청사진을 꺼내며, 스파이의 경우 전자 교란기를 꺼내게 됩니다.

build 0 0 명령어는 디스펜서를 설치합니다. (엔지니어 전용)
build 1 0 명령어는 텔레포터 입구를 설치합니다. (엔지니어 전용)
build 1 1 명령어는 텔레포터 출구를 설치합니다. (엔지니어 전용)
build 2 0 명령어는 센트리 건을 설치합니다. (엔지니어 전용)
build 3 0 명령어는 전자 교란기를 설치합니다. (스파이 전용)

비슷하게, destroy 명령어는 구조물을 파괴합니다.

destroy 0 0 명령어는 디스펜서를 파괴합니다. (엔지니어 전용)
destroy 1 0 명령어는 텔레포터 입구를 파괴합니다. (엔지니어 전용)
destroy 1 1 명령어는 텔레포터 출구를 파괴합니다. (엔지니어 전용)
destroy 2 0 명령어는 센트리 건을 파괴합니다. (엔지니어 전용)
주석: 전자 교란기와 전자 교란기가 설치된 구조물은 파괴할 수 없습니다.

build 명령어는 하나의 값만 사용할 수도 있습니다.

build 0 명령어는 디스펜서를 설치합니다. (엔지니어 전용)
build 1 명령어는 텔레포터 입구를 설치합니다. (엔지니어 전용)
build 2 명령어는 센트리 건을 설치합니다. (엔지니어 전용)
build 3 명령어는 텔레포터 출구를 설치합니다. (엔지니어 전용)
build 3 명령어는 전자 교란기를 설치합니다. (스파이 전용) [더 이상 사용되지 않음]

음성 호출

voicemenu 명령어는 메뉴 값과 명령 값인 두 값을 사용합니다.

  • voicemenu 0
    0: 메딕!
    1: 고맙다!
    2: 돌격! 돌격! 돌격!
    3: 이동하라!
    4: 왼쪽으로 이동하라
    5: 오른쪽으로 이동하라
    6: 그래
    7: 아니
    8: 내게 넘겨!
  • voicemenu 1
    0: 적이다!
    1: 스파이다!
    2: 전방에 센트리!
    3: 여기 텔레포터가 필요하다
    4: 여기 디스펜서가 필요하다
    5: 여기 센트리가 필요하다
    6: 우버를 발동하라!
    7: 메딕: 우버차지 준비 완료
    8: 내게 넘겨!
  • voicemenu 2
    0: 도와줘!
    1: 전투 함성
    2: 격려
    3: 야유
    4: 긍정적
    5: 부정적
    6: 훌륭한 사격이군!
    7: 잘했어!
주석: 음성 호출 메뉴를 표시하려면 voicemenu # #이 아닌 voice_menu_# 명령어를 사용해야 하며, 1부터 3까지의 숫자를 넣을 수 있습니다.

유레카 효과 텔레포트

eureka_teleport 명령어는 유레카 효과를 들고 있는 엔지니어를 기지나 텔레포터 출구로 순간이동 시킵니다.

  • eureka_teleport 0 명령어는 플레이어를 기지로 순간이동 시킵니다.
  • eureka_teleport 1 명령어는 플레이어를 텔레포터 출구로 순간이동 시킵니다.
주석: 명령어가 작동해도 콘솔에 "Unknown command" 라고 나타나게 됩니다.

종합

  • clear 명령어는 콘솔의 모든 정보를 지웁니다.
  • alias 명령어는 모든 정의된 alias를 표시합니다.
  • fov_desired (20-90) 명령어는 시야를 설정합니다.
  • viewmodel_fov 명령어는 무기 모델의 시야를 조정합니다.
  • r_drawviewmodel (0/1) 무기 모델을 키거나 (1), 끕니다 (0).
  • lastdisguise 명령어는 이전 변장으로 다시 변장하게 합니다. (스파이 전용)
  • load_itempreset (0-3) 명령어는 장비 설정을 A/B/C/D 로 변경합니다.
  • say message 명령어는 채팅에 메시지를 보냅니다.
  • say_team message 명령어는 팀 채팅에 에시지를 보냅니다.
  • say_party message 명령어는 파티 채팅에 메시지를 보냅니다.
  • +taunt 명령어는 플레이어의 도발 메뉴를 엽니다.
  • +use_action_slot_item 명령어는 플레이어가 액션 아이템을 사용하게 합니다.
  • volume (0-1) 명령어는 게임 내 불륨을 설정합니다.
  • taunt_by_name (name) 명령어는 도발 메뉴를 열지 않고 현재 플레이어의 무기 도발을 실행합니다.

고급 스크립트

키다운 토글

꾹 누르고 있어야 하는 명령어를 토글로 설정하게 합니다.

bind w toggle_movement
alias toggle_movement enable_movement
alias enable_movement "alias toggle_movement disable_movement;+forward"
alias disable_movement "alias toggle_movement enable_movement;-forward"

이 스크립트는 W 키를 한 번 누르면 W키가 다시 눌리기 전까지 플레이어가 앞으로 이동하게 합니다.

조합키

하나의 키를 누르고 있는 동안 다른 키를 누름으로써 다른 행동을 취하는 스크립트를 만들 수 있습니다.

bind e call
alias call Call_For_Medic
alias Call_For_Medic "voicemenu 0 0"
alias Call_For_Ubercharge "voicemenu 1 6"

이 스크립트는 E가 눌릴 때마다 플레이어가 메딕을 부르게 하며, 사용되지 않은 우버차지를 요청하는 alias도 있습니다.

bind shift +toggleState
alias +toggleState "alias call Call_For_Ubercharge"
alias -toggleState "alias call Call_For_Medic"

이제, ⇧ Shift를 누르고 있으면 call alias가 우버차지를 요청하도록 변경하며, ⇧ Shift를 떼면 다시 call alias가 메딕을 부르도록 합니다.

만약 여러 키 조합을 하나의 토글로 연결하고 싶다면 첫 단계를 반복해야 합니다.

bind f thank
alias thank Thank_Player
alias Thank_Player "voicemenu 0 1"
alias Good_Work "voicemenu 2 7"

이 줄 다음엔 두 번째 단계와 비슷하게 만들면 됩니다.

bind shift +toggleState
alias +toggleState "alias call Call_For_Ubercharge;alias thank Thank_Player"
alias -toggleState "alias call Call_For_Medic;alias thank Good_Work"

이 스크립트는 다음과 같습니다.

bind e call
alias call Call_For_Medic
alias Call_For_Medic "voicemenu 0 0"
alias Call_For_Ubercharge "voicemenu 1 6"

bind f thank
alias thank Thank_Player
alias Thank_Player "voicemenu 0 1"
alias Good_Work "voicemenu 2 7"

bind shift +toggleState
alias +toggleState "alias call Call_For_Ubercharge;alias thank Thank_Player"
alias -toggleState "alias call Call_For_Medic;alias thank Good_Work"

wait 비활성화 확인

wait 명령어가 몇몇 스크립트에 중요하게 사용되기 때문에, 서버가 wait 명령어를 비활성화 시켰는지 확인하는 것이 중요할 수 있습니다.

alias waitTester "alias waitTest waitPositive;wait;waitTest"
alias wait "alias waitTest waitNegative"
alias waitPositive "echo Wait is enabled on this server.;exec waitPositive.cfg"
alias waitNegative "echo Wait is DISABLED on this server!;exec waitNegative.cfg"
waitTester

이 스크립트는 서버 내 wait 명령어가 비활성화 되어있다면 wait 이름으로 alias를 만들 수 있다는 것을 이용합니다. 따라서, 스크립트는 먼저 waitPositive를 가리키는 waitTest alias를 만들고, wait 명령어가 서버 비활성화 되어있다면 waitNegative를 가리키게 됩니다.

반복문

경고: wait 명령어가 없는 반복문은 팀 포트리스 2 클라이언트를 멈출 수 있습니다. wait 비활성화 확인 스크립트를 사용한 다음에 반복문 스크립트를 사용하는 것을 매우 권장합니다.

일반적으로, alias가 자신을 가리키게 하는 것은 초기화 할 수 없어 쓰이지 않습니다. 따라서, 반복문은 기다리는 부분과 반복하는 부분으로 나뉘어 만들어집니다.

bind g loopKey
alias loopKey startLoop
alias startLoop "alias loopKey stopLoop;+attack;alias redirect loop;loop"
alias stopLoop "-attack;alias redirect;alias loopKey startLoop"
alias loop "+left;wait 33;-left;+right;wait 33;-right;redirect"

이 스크립트는 G가 눌리면 33프레임 (약 0.5초)마다 시점을 앞과 뒤로 바꾸면서 공격하는 반복문입니다. G를 다시 누르면 반복이 멈추게 됩니다.

Sequence

alias +pyrocombo "slot1;+attack;wait 32;slot2"
alias -pyrocombo "-attack;slot1"

이 스크립트는 sequence를 시작하는 alias와, sequence를 끝내는 alias로 구성되었습니다. sequence는 키를 뗄 때까지 32 프레임마다 기름떼 제거기공황 공격으로 무기를 바꾸며 공격합니다. Sequence는 이렇게 사용할 수도 있습니다:


alias quickscope "slot1;+attack2;wait 32;+attack;wait 16;-attack;-attack2"

이 스크립트는 스나이퍼가 저격소총으로 퀵스코프를 하게 합니다. sequence는 스크립트를 만드는데 유용하며, 어떻게 만드는 지 알면 이후 스크립트를 만드는데 도움이 될 것입니다.

Cycle 스크립트

cycle 스크립트는 최소 3가지의 옵션이 있는 토글 스크립트입니다:

alias message_1 "say message 1.; bind x message_2"
alias message_2 "say message 2.; bind x message_3"
alias message_3 "say message 3.; bind x message_1"
bind x message_1

이 스크립트는 X 키를 누를 때마다 채팅에 "message 1"→"message 2"→"message 3"→"message 1" 순서로 바뀌면서 글을 남깁니다.

Pictogram comment.png 콘솔 변수를 변경할 때 toggle, incrementvar, and multvar 명령어를 alias 대신 사용할 수 있습니다.

Selection 스크립트

selection 스크립트는 cycle을 더 이용하기 쉽게 합니다. selection 스크립트는 순서를 한 방향이 아닌 두 방향으로 만들어 어떤 명령어를 실행할 지 더 쉽게 알도록 합니다.

alias CondC_UP Cond1
alias CondC_DOWN Cond5
alias ApplyCond ApplyCond33
alias ApplyCond33 "addcond 33"
alias ApplyCond49 "addcond 49"
alias ApplyCond72 "addcond 72"
alias ApplyCond74 "addcond 74"
alias ApplyCond90 "addcond 90"
alias Cond1 "alias CondC_UP Cond2;alias CondC_DOWN Cond5;alias ApplyCond ApplyCond33"
alias Cond2 "alias CondC_UP Cond3;alias CondC_DOWN Cond1;alias ApplyCond ApplyCond49"
alias Cond3 "alias CondC_UP Cond4;alias CondC_DOWN Cond2;alias ApplyCond ApplyCond72"
alias Cond4 "alias CondC_UP Cond5;alias CondC_DOWN Cond3;alias ApplyCond ApplyCond74"
alias Cond5 "alias CondC_UP Cond1;alias CondC_DOWN Cond4;alias ApplyCond ApplyCond90"

이 스크립트는 어떤 조건을 플레이어에게 줄 지 더 쉽게 통제할 수 있으며, 더 쉽게 사용할 수 있습니다.

무작위 스크립트

무작위 스크립트는 거의 쓰이지 않지만, 거래 광고 등 채팅에 사용할 때 유용할 수 있습니다.

주석: 팀 포트리스 2 스크립트의 특성 때문에, 이 부분이 굉장히 길 수 있습니다. cycle에 대해 잘 모를 경우 사용에 어려울 수 있습니다.

alias call f1
alias cycle c2

alias c1 "alias cycle c2;alias call f1"
alias c2 "alias cycle c3;alias call f2"
alias c3 "alias cycle c4;alias call f3"
alias c4 "alias cycle c5;alias call f4"
alias c5 "alias cycle c1;alias call f5"

alias f1 "say 1"
alias f2 "say 2"
alias f3 "say 3"
alias f4 "say 4"
alias f5 "say 5"

alias +w "+forward;cycle"
alias -w "-forward;cycle"
alias +a "+moveleft;cycle"
alias -a "-moveleft;cycle"
alias +s "+back;cycle"
alias -s "-back;cycle"
alias +d "+moveright;cycle"
alias -d "-moveright;cycle"

bind o call
bind w +w
bind a +a
bind s +s
bind d +d

이 스크립트는 여러 alias 값을 할당하고 해제합니다. WASD 키가 눌리면, cycle 명령어가 실행되며, cycle의 값이 다음 cycle로 넘어가고 "call" 명령어에 설정합니다. 이는 플레이어의 움직임에 영향을 받습니다. 반복문 등을 이용하면 더 무작위로 만들 수 있습니다.

Timed action

Timed action은 어떤 키가 특정 시간만큼 눌려있을 경우 실행됩니다. 이는 키가 눌렸을 때 바로 실행되지 않아야 하는 스크립트를 만들 때 사용될 수 있습니다.

alias "+ti_zoom" "alias zoom_con zoomOn; wait 132; zoom_con"
alias "-ti_zoom" "zoomOff; alias zoom_con ; rb_tizoom-M4"
alias "rb_tizoom-M4" "unbind mouse4; wait 132; bind mouse4 +ti_zoom"
alias "zoomOn" "fov_desired 20; r_drawviewmodel 0"
alias "zoomOff" "fov_desired 90; r_drawviewmodel 1"
bind "mouse4" "+ti_zoom"

Mouse 4를 누르고 바로 떼는 경우 아무 효과가 없으나, 2초간 누르고 있으면 시야를 20으로 줄이며, 무기 모델을 끕니다. Mouse 4를 아무 때나 떼면 이 설정을 원래대로 돌립니다.

이 스크립트는 +와 - alias를 사용하여 만들어집니다. +ti_zoom를 누르면 zoom_con를 재정의하며 스크립트가 실행되며, wait 기간 동안 눌러진 상태가 되면 스크립트를 실행합니다. 하지만, 키를 떼면 zoom_con가 아무 것도 실행되지 않도록 재정의됩니다. 이후 같은 wait 기간동안 키를 해제하고, 이후 다시 정의합니다.

주석: 키를 다시 bind하는 것은 스크립트가 키가 눌리지 않으면 실행되지 않기 때문에 과도한 부분입니다. 하지만, 키가 여러 번 눌리면 스크립트가 실행될 수 있기 때문에, wait 명령어가 이를 막습니다.

기본 조건문

기본 조건문은 스크립트가 완전히 새로운 스크립트를 실행하지 않아도 행동을 바꾸게 합니다. 더미 alias를 만듦으로써 입력에 따라 출력을 바꿀 수 있습니다. 기본 조건문은 명령의 상태에 따라 무한히 많은 행동을 취할 수 있으나, 한 조건문 당 많은 조건을 쓰진 않습니다.

기본 조건문의 예시는 다음과 같습니다:

alias "check_test" "check1; check2; test"
alias "check1" ""
alias "check2" ""
alias "test" "success"

alias "fail_check" "alias test failure"

alias "success" "echo SUCCESS!"
alias "failure" "alias test success; echo FAILURE!"

alias "+k" "alias check1 fail_check"
alias "-k" "alias check1"
alias "+j" "alias check2 fail_check"
alias "-j" "alias check2"

bind "l" "check_test"
bind "j" "+j"
bind "k" "+k"

이 스크립트의 주요 부분은 check_test alias입니다. 스크립트를 실행하면, 이 alias가 2개의 조건을 확인하며, 조건에 알맞은 경우 success alias를 실행합니다. 하나의 조건이라도 알맞지 않으면 더미 alias인 testfailure를 실행하게 합니다. 간단히 말해, 조건에 알맞으면 test가 가리키는 alias를 실행하지 않고, 조건에 알맞지 않으면 test가 가리키는 alias를 실행합니다.

위 예시의 경우, JK를 누르지 않은 채로 L을 누르면 조건에 알맞게 되어 콘솔에 SUCCESS!를 표시하며,JK를 누른 채로 L을 누르면 조건에 알맞지 않게 되어 FAILURE!를 표시합니다.

실제로 사용하는 조건문 예시:

// 움직이면 조준선의 색이 바뀌게 됩니다

alias "+w" "+forward; press_w"
alias "+a" "+moveleft; press_a"
alias "+s" "+back; press_s"
alias "+d" "+moveright; press_d"
alias "-w" "-forward; unpress_w"
alias "-a" "-moveleft; unpress_a"
alias "-s" "-back; unpress_s"
alias "-d" "-moveright; unpress_d"

alias "press_w" "alias check_w pressed_w; chc_forward"
alias "press_a" "alias check_a pressed_a; chc_left"
alias "press_s" "alias check_s pressed_s; chc_back"
alias "press_d" "alias check_d pressed_d; chc_right"
alias "unpress_w" "alias check_w unpressed; check_none"
alias "unpress_a" "alias check_a unpressed; check_none"
alias "unpress_s" "alias check_s unpressed; check_none"
alias "unpress_d" "alias check_d unpressed; check_none"

alias "check_w" "unpressed"
alias "check_a" "unpressed"
alias "check_s" "unpressed"
alias "check_d" "unpressed"

alias "pressed_w" "dchk_fail; chc_forward"
alias "pressed_a" "dchk_fail; chc_left"
alias "pressed_s" "dchk_fail; chc_back"
alias "pressed_d" "dchk_fail; chc_right"
alias "unpressed" ""

alias "check_none" "check_s; check_a; check_d; check_w; dmy_check"
alias "dmy_check" "chc_success"

alias "dchk_fail" "alias dmy_check chc_failure"
alias "dchk_reset" "alias dmy_check chc_success"

alias "chc_failure" "dchk_reset"
alias "chc_success" "chc_default"

alias "chc_default" "color0"
alias "chc_forward" "color1"
alias "chc_left" "color2"
alias "chc_back" "color3"
alias "chc_right" "color4"

// Bind
bind "w" "+w"
bind "a" "+a"
bind "s" "+s"
bind "d" "+d"

// 색
alias "color0" "cl_crosshair_red 0; cl_crosshair_green 255; cl_crosshair_blue 0"        // 움직이지 않을 때의 기본 색
alias "color1" "cl_crosshair_red 0; cl_crosshair_green 0; cl_crosshair_blue 255"        // 앞으로 가기를 눌렀을 때의 색
alias "color2" "cl_crosshair_red 255; cl_crosshair_green 0; cl_crosshair_blue 255"      // 왼쪽으로 가기를 눌렀을 때의 색
alias "color3" "cl_crosshair_red 128; cl_crosshair_green 212; cl_crosshair_blue 255"    // 뒤로 가기를 눌렀을 때의 색
alias "color4" "cl_crosshair_red 255; cl_crosshair_green 140; cl_crosshair_blue 25"     // 오른쪽으로 가기를 눌렀을 때의 색

이 스크립트는 WASD를 누르며 움직일 때 조준선의 색이 바뀌게 합니다. 이 스크립트가 이용하는 중요한 것은 조건에 알맞지 않으면 여러 가지 행위를 한다는 것입니다. 조건에 알맞지 않으면 조준선이 색이 바뀌고, 조건을 확인하기 위한 더미 명령도 바꿉니다. 이는 여러 키가 눌리지 않으면, 조준선의 색을 가장 마지막에 누른 키에 맞는 색으로 바꿉니다.

코멘트

스크립트가 길어지면, 적절한 이름을 가진 alias가 필요해집니다. 하지만, 언제나 alias의 이름만으로 alias를 설명하기엔 무리일 수 있습니다. 두 개의 슬래시 (//)를 이용하면 코멘트를 달 수 있으며 스크립트는 이를 실행하지 않습니다.

voicemenu 1 6 //우버를 발동하라!

음성 호출이 무엇을 가리키는 지 나타나지 않기 때문에, 코멘트로 설명할 수 있습니다.

주목할 만한 스크립트들

다음은 게임에 영향을 끼친 스크립트들입니다. 몇몇 스크립트는 패치되었고, 나머지 스크립트들은 현재 사용 가능합니다.

패치된 스크립트들

권총 스크립트

이전에, 권총은 사람이 누르는 속도만큼 빠르게 쏠 수 있었습니다. 이에 키 하나만 누르면 굉장히 빠르게 쏠 수 있는 스크립트가 만들어졌습니다.

2009년 8월 13일 패치: 권총의 발사 속도 문제를 수정하여 플레이어가 발사 단추를 누르는 속도에 관계되지 않게 했습니다.

돌격 방패 조종 스크립트

이전에, 키보드 명령어로 화면을 돌리는 것은 마우스로 돌리는 것과 달랐습니다. 돌격 방패는 플레이어가 화면을 돌릴 수 있는 속도에 제한을 둔 첫번째 무기이며, Valve는 마우스로 화면을 돌리는 속도에 제한을 두었습니다. 하지만, 키보드로 화면을 돌리는 것에 제한을 두지 않았고, 이후 이 제한을 무시하는 스크립트들이 만들어졌습니다.

2011년 6월 23일 패치: 돌격 방패로 빨리 회전할 수 있었던 점을 수정했습니다.

공중에서 앉기 스크립트

이전에, 플레이어는 공중에서 제한 없이 앉기를 누를 수 있었습니다. 이후 굉장히 빠르게 앉기를 눌렀다 떼는 스크립트를 만들어졌는데, 이 스크립트 때문에 공중의 적을 맞추기 힘들어졌었습니다.

2009년 3월 6일 패치: 이제 공중에서 두 번만 앉을 수 있습니다.

잠수 스크립트

대부분의 서버가 잠수를 통해 아이템을 획득하는 것을 막는 방법을 이용했습니다. 플레이어들은 이 시스템을 무시하는 스크립트를 만들었습니다.

잠수를 막는 해결책에서 플레이어가 팝업 알림을 확인해야 아이템을 계속 얻을 수 있도록 했습니다.

이용 가능한 스크립트들

무기 모델을 끄는 스크립트

무기의 칸 등에 따라 무기 모델을 키고 끄는 스크립트가 많이 있습니다. 플레이어들은 무기 모델을 꺼 화면이 더 잘 보이게 하지만, 근접 무기 등은 모델을 켜놓는 경우가 있습니다. 에를 들어, 스파이는 은폐했을 때 무기 모델을 보는 것이 중요합니다. 또한 근접 무기가 상대에게 언제 맞는지 알기 위해 근접 무기 모델을 켜놓기도 합니다.

무기 줌 스크립트

이 스크립트는 시야를 변경하여 어느 무기를 사용하든 줌 효과를 사용할 수 있게 합니다.

 alias "+zoomer" "fov_desired 75; r_drawviewmodel 0"
 alias "-zoomer" "fov_desired 90; viewmodel_fov 110; r_drawviewmodel 1"
 bind "shift" "+zoomer"

센트리 건 점프 스크립트

엔지니어 업데이트 이후, 엔지니어는 센트리 건을 들고 옮길 수 있습니다. 동시에, 같은 업데이트에서 랭글러를 이용해 센트리 건 점프를 할 수 있게 되었습니다. 굉장히 빠른 입력을 이용해 플레이어가 센트리 건 점프를 함과 동시에 센트리 건을 들 수 있는 것을 알아냈습니다.

사람이 이를 할 수도 있지만, 굉장히 어렵습니다. 이에 매 번 센트리 건으로 점프를 함과 동시에 센트리 건을 옮기는 스크립트가 만들어졌습니다.

주석: 구조대원은 먼 거리에서 100 금속을 이용해 구조물을 옮길 수 있으므로 이를 더 쉽게 할 수 있습니다.

총잡이 스크립트

소형 센트리 건을 부수고 다시 짓는 것이 번거로울 수 있기 때문에, 플레이어들은 소형 센트리 건을 부수고 다시 짓는 과정을 키 한 두 번만 눌러서 할 수 있는 스크립트를 만들었습니다. 이 스크립트는 개척자의 정의의 복수 치명타와 함께 이용하면 매우 유용합니다.

감도와 컨트롤 스크립트

몇몇 플레이어는 특정 병과에 따라 다른 감도와 컨트롤을 선호합니다. 예를 들어, 메딕은 조준이 많이 필요하지 않으나 스나이퍼는 정확한 조준이 필요하여 각각 다른 마우스 감도를 사용하고 싶어할 수 있습니다. 이 스크립트는 병과마다, 혹은 무기마다 마우스 감도 등의 설정을 바꿉니다.

차지 대시 스크립트

점프와 돌격의 타이밍을 잡는 것이 어려울 수 있어, 몇몇 플레이어는 키 하나만 눌러 돌격으로 가장 멀리 날아갈 수 있게 하는 스크립트를 만들었습니다. 플레이어는 근접 공격으로 돌격을 멈출 수도 있습니다.

퀵스코프 스크립트

많은 플레이어가 스나이퍼로 조준을 하자마자 쏘는 것을 힘들어 합니다. 이 스크립트는 키 하나만 누르면 조준을 하자마자 쏘게 합니다. 하지만 조준을 하지 않은 상태에서 사용해야 합니다.

로켓 점프 스크립트

가장 높게나 가장 멀리로켓 점프를 하기 위해선 점프, 앉기와 로켓 쏘기를 거의 동시에 해야 합니다. 이는 스크립트를 통해 키 하나만 눌러서 쉽게 할 수 있습니다.

자동 변장 스크립트

수동으로 변장하는 것이 번거롭다고 생각한 플레이어들을 위한 이 스크립트는 어떤 무기든 공격하자마자 변장하게 합니다. 토글로 설정할 수 있고, 변장할 병과를 직접 설정할 수 있습니다.

우버차지 알림 스크립트

이 스크립트를 이용하면, 메딕이 우버차지를 사용하면 팀 채팅에 메시지를 남겨 팀이 같이 공격할 수 있게 합니다. 비슷한 스크립트로 "우버차지 준비 완료" 음성 호출을 사용하여 상대 팀을 속일 수 있습니다.

메딕 레이더

alias "autocall_default" "hud_medicautocallersthreshold 75.730003/사용자 지정 숫자"
alias "autocall_all" "hud_medicautocallersthreshold 150"
alias "+radar" "autocall_all"
alias "-radar" "autocall_default"
bind [KEY] "+radar

이 스크립트는 메딕으로만 사용 가능하며, 키를 누르면 자동 호출의 퍼센트가 굉장히 큰 수로 지정되어 주변에 팀이 어디 있는지 알 수 있습니다.

자살 스크립트

본문: 자살

우버톱을 든 메딕에게 공격 당하는 등의 상황에서, kill를 지정한 키를 눌러서 자살하는 것이 도움이 될 수도 있습니다. 이는 대부분 경쟁 모드에서 사용하나, 공개 서버에서 웃기기 위한 용도로 사용하는 경우가 있습니다. 또한, explode를 사용하는 경우 폭발하며 자살하게 됩니다.

Null-Cancelling 움직임 스크립프

아무 설정도 하지 않은 팀 포트리스 2에서, 반대 방향으로 움직이는 키들을 동시에 누르는 경우 플레이어의 모든 움직임을 없애고 가만히 있게 합니다. 이 스크립트는 마지막에 눌린 키만을 입력으로 받아 그 방향으로 움직이게 합니다.

채팅 bind 스크립트

채팅 bind 스크립트는 미리 적어놓은 메시지를 채팅에 보내기 위한 스크립트 입니다. 일반적으로, 이 스크립트를 키에 적용해 채팅을 직접 치지 않고도 채팅에 글을 쓸 수 있게 합니다. 이 스크립트는 유저마다 다르게 사용할 수 있으며, 글자 수 제한 내의 모든 메시지를 보낼 수 있습니다. 이 메시지는 팀 채팅에 적을 수도 있습니다. 또한 거래 관련한 채팅을 적을 수도 있으며, 몇 분마다 채팅을 보내도록 할 수도 있습니다.

보이스 채팅 토글

bind [KEY] mic_toggle
alias mic_toggle mic_enable
alias mic_enable "+voicerecord; alias mic_toggle mic_disable"
alias mic_disable "-voicerecord; alias mic_toggle mic_enable"

이 스크립트는 눌러서 보이스 채팅을 하는 것이 아닌 토글로 보이스 채팅을 할 수 있게 합니다.

주석

  • 각 스크립트 파일은 1MiB (1.04858 메가바이트)의 정보만 가질 수 있습니다. 파일의 끝에 exec를 이용하여 다른 파일을 열게 함으로써 우회할 수 있습니다.

같이 보기

외부 링크