Difference between revisions of "Scripting/ko"

From Team Fortress Wiki
Jump to: navigation, search
m
(windBOT is a bot, it's automatic)
(17 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:스크립팅}}
+
{{DISPLAYTITLE:스크립트}}
{{trans}}
 
<!--문서를 수정하기 전 잘못된 점이 있다면 토론을 이용해주세요. 주의하고있는 문서입니다. 무차별적인 수정은 자제해주시기 바랍니다.-->
 
  
'''스크립팅'''설정 파일(.cfg)를 이용하여 콘솔에서 사용하는 명령어들로 키 변경 그리고 새로운 명령을 자동으로 입력해주는 방식입니다.
+
'''스크립트'''설정 파일(.cfg)을 이용해 복잡한 행동들과 [[console/ko|콘솔]] 명령들을 순서대로 자동으로 실행하는 새로운 키바인드와 앨리어스를 만드는 것을 말합니다. 스크립트는 Team Fortress 2에 내장된 기능으로서, 이를 사용해도 VAC에 걸리지 않습니다.
  
* 키 변경은 해당 키가 콘솔 명령어에 연결 되어있어야하며, [[weapon/ko|무기]]슬롯을 선택하거나 채팅 매크로를 작성 가능합니다.
+
* 키바인드는 특정한 키를 눌렀을 때 [[weapon/ko|무기]] 칸 선택이나 채팅 매크로 같은 콘솔 명령을 실행할 수 있게 해줍니다.
  
* 앨리어스는 콘솔에서 사용하는 명령어들을 추출하여 새로운 명령어를 만들어냅니다. 앨리어스는 [[crouch|앉기]]와 [[jump|뛰기]]의 개인 명령어들을 하나로 통합하여 [[Jumping/ko#.EC.95.89.EA.B3.A0_.EB.9B.B0.EA.B8.B0|앉으면서 뛰기]]명령어를 만들 수 있습니다. 이는 키를 수정하는 것으로도 가능합니다.
+
* 앨리어스는 여러 명령들을 한꺼번에 실행하는 새로운 명령을 만들어 줍니다. 앨리어스를 통해 [[crouch/ko|앉기]]와 [[jump/ko|뛰기]]를 묶은 [[Jumping/ko#앉고 뛰기|앉으며 뛰기]] 명령을 만들어서 원하는 키에 지정할 수 있습니다.
  
These scripts range in complexity from simple lists of commands to self-referential loops and nested aliases that redefine one another. With enough time and effort, you can use these tools to create almost any behavior available to the client at the press of a single key.
+
스크립트의 범위는 명령의 단순한 조합에서부터 자기지시적 루프, 다른 앨리어스를 내포하는 앨리어스까지 이릅니다. 충분한 시간과 노력을 들이면 당신도 스크립트를 통해 하나의 키에 클라이언트에서 실행할 수 있는 거의 모든 행동들을 지정할 수 있습니다.
스크립트로 건드릴 수 있는 범위는 간단한듯 보이지만 다양하면서도 자기지시적 반복들과 앨리어스 집합들을 정의할 수 있습니다. 당신이 조금의 시간과 노력만 들인다면, 스크립트 툴을 이용하여 키 하나를 누름으로써 당신이 몰랐던 클라이언트 뒤의
 
  
==기본 스크립팅 파일들==
+
==기본적인 스크립트 파일==
''Team Fortress 2'' 에서는 각자 게임 파일에 맞추어 키 수정 그리고 앨리어스를 자동으로 읽어옵니다. 자동으로 읽어오는 파일의 목록입니다.
 
  
* config.cfg - 이 기본설정 파일은 게임 안에서 비디오 설정을 변경하거나 키를 변경할 수 있습니다. 이 파일을 수정하는 동안에는 안전하며, 그냥 그대로 두는것이 가장 간단합니다. 다른 .cfg파일이 변경될 경우 config.cfg 파일 안에 기록도 가능합니다.
+
''Team Fortress 2''는 몇 가지 게임 파일들을 자동으로 읽어들여 그 안의 모든 키바인드와 앨리어스들을 실행합니다. 그 파일들은 다음과 같습니다:
  
* autoexec.cfg - This is the default config file for executing custom keybinds and aliases. You may put your keybinds directly into this file, but it is often easier to create separate .cfg files for different scripts, which you then execute within this file.
+
* config.cfg - 게임 내의 키 설정이나 비디오 설정 메뉴를 사용할 때마다 갱신되는 기본 설정 파일입니다. 직접 고쳐도 안전하지만, 그대로 놔두는 것이 더 편합니다. 다른 설정 파일에서 변경된 사항들은 여기에도 반영됩니다.
  
* <클래스>.cfg - Each class has a config file which automatically runs whenever you switch to that class. You may put your keybinds directly into this file, but it is often easier to create separate .cfg files for different scripts, which you then execute within these files.
+
* autoexec.cfg - 사용자 지정 키바인드와 앨리어스를 실행하는 기본 설정 파일입니다. 여기에 직접 키바인드를 저장할 수도 있지만, 다른 .cfg 파일을 직접 만들어 그 안에 키바인드를 저장한 다음 여기에서는 그 파일들만 실행하게 만드는 것이 보통 더 쉽습니다.
 +
 
 +
* <병과>.cfg - 해당하는 병과를 선택했을 때 자동으로 실행되는 설정 파일입니다. 여기에 직접 키바인드를 저장할 수도 있지만, 다른 .cfg 파일을 직접 만들어 그 안에 키바인드를 저장한 다음 여기에서는 그 파일들만 실행하게 만드는 것이 보통 더 쉽습니다.
  
 
==문법==
 
==문법==
여기 문법 규칙이 있습니다.
+
문법 규칙은 다음과 같습니다:
  
* 키 편집과 앨리어스가 작동하기 위해서는 아래와 같은 문법이 필요합니다.:
+
* 모든 키바인드와 앨리어스는 다음의 형태를 따라야합니다:
  
:'''명령어 <구문1> <구문2>'''
+
:'''명령 <인수1> <인수2>'''
  
:* 명령어에는 스크립팅 가능한 세가지 명령어들이 있습니다.
+
:* 명령은 사용하고자 하는 스크립트의 종류입니다. 다음을 포함합니다:
  
::* bind - bind 명령어를 사용하면 해당 키의 역할을 지정할 수 있습니다.
+
::* bind - 특정한 키에 명령을 할당하기 위해 사용합니다.
::* alias - Used to execute commands when the alias is executed.
+
::* alias - 앨리어스에 할당될 명령을 지정하기 위해 사용합니다.
::* exec - Used to execute commands automatically when a configuration file is loaded.
+
::* exec - 명령을 자동으로 실행할 설정 파일을 불러들이기 위해 사용합니다.
  
:* <argument1> is either the key being bound or the name of the alias being created.
+
:* <인수1>은 지정할 키나 새로 만들 앨리어스의 이름입니다.
  
:* <argument2> is either the command being bound or the commands executed by the alias.
+
:* <인수2>는 키나 앨리어스에 할당될 명령입니다.
  
*명령어를 여러개 돌리고싶을 경우엔, 명령어가 끝나는 지점마다 세미콜론(;)을 넣습니다. 예제는 아래와 같습니다.
+
* 여러 명령들을 한꺼번에 실행할 때는 아래처럼 모든 인수들을 큰 따옴표로 묶고 세미콜론(;)을 써서 구분해줍니다.  
  
 
:'''alias "spraynpray" "+attack; wait 500; -attack"'''
 
:'''alias "spraynpray" "+attack; wait 500; -attack"'''
:'''bind "mouse3" "spraynpray"
+
:'''bind "mouse3" "spraynpray"'''
 
 
:*When executed, the alias starts firing the player's weapon, continues for 500 physics frames (that is roughly five seconds if you are on a server that runs at a 100 frames per second), and then stops firing. The alias is keybound to execute when you press the middle mouse button.
 
  
*If the set of commands in quotation marks ''itself'' contains quotation marks, you must escape the internal quotes by using a double-set of quotation marks ("") instead. Otherwise, the command is likely to be misinterpreted.
+
:* 앨리어스를 실행하면 플레이어의 무기를 500 물리 프레임(physics frames)(초당 100프레임으로 돌아가는 서버에서 약 5초)동안 발사한 뒤 멈춥니다. 이 앨리어스는 키바인딩을 통해 마우스 가운데 버튼에 할당되었으며 따라서 이 버튼을 누르면 실행됩니다.
  
 +
* 큰 따옴표 안에 큰 따옴표를 쓸 경우, 큰 따옴표를 두 번 써서("") 묶음을 마쳐줘야 합니다. 그렇지 않을 경우 명령의 해석이 잘못 될 수 있습니다.
  
==키 수정==
+
==키바인드==
''Team Fortress 2'' allows scripts and aliases to be bound to any key on the keyboard. The key you wish to bind a command to is placed after your bind command and before the action you want the key to execute, as in the section above. Most keys are self-explanatory, as all alphanumerics (a-z, 0-9) and function keys are simply listed by typing that key ("bind a" binds a key to 'a', "bind 5" binds to '5' and "bind F7" binds to 'F7'). Other keys require you type specific names into your .cfg file in order to access them, and these names are not all obvious. A list of these keys is provided below:
+
''Team Fortess 2''에서는 키보드의 모든 키를 스크립트와 앨리어스에 할당할 수 있습니다. 위의 예시에서처럼, 할당을 원하는 키는 bind명령어와 할당하려는 명령의 사이에 입력합니다. 알파벳과 숫자 (a-z, 0-9), 기능 키들은 키의 이름을 입력하는 것만으로 사용할 수 있습니다 ("bind a"'a', "bind 5"'5'를, "bind F7"'F7'을 할당합니다). 그 외의 경우에는 특정한 이름을 써넣어야 사용할 수 있습니다. 이들은 다음과 같습니다:
  
====키 이름들====
+
====키 이름 목록====
* Keyboard Keys: Names of Keybinds
+
* 키보드 키: 키바인드 이름
* 왼쪽 쉬프트: SHIFT
+
* 왼쪽 Shift: SHIFT
* 왼쪽 컨트롤: CTRL
+
* 왼쪽 Ctrl: CTRL
* 왼쪽 알트: ALT
+
* 왼쪽 Alt: ALT
* 오른쪽 쉬프트: RSHIFT
+
* 오른쪽 Shift: RSHIFT
* 오른쪽 컨트롤: RCTRL
+
* 오른쪽 Control: RCTRL
* 오른쪽 알트: RALT
+
* 오른쪽 Alt: RALT
 
* 탭: TAB
 
* 탭: TAB
* 뒤로가기: BACKSPACE
+
* Backspace: BACKSPACE
* 세미콜론(;): SEMICOLON
+
* Semicolon: SEMICOLON
 
* ---
 
* ---
* 삽입(Insert): INS
+
* Insert: INS
* 스크롤 락(Scroll Lock): SCROLLLOCK
+
* Scroll Lock: SCROLLLOCK
 
* Pause/Break: NUMLOCK
 
* Pause/Break: NUMLOCK
 
* ---
 
* ---
Line 73: Line 70:
 
* Page Down: PGDN
 
* Page Down: PGDN
 
* ---
 
* ---
* Up Arrow: UPARROW
+
* 위쪽 화살표: UPARROW
* Down Arrow: DOWNARROW
+
* 아래쪽 화살표: DOWNARROW
* Left Arrow: LEFTARROW
+
* 왼쪽 화살표: LEFTARROW
* Right Arrow: RIGHTARROW
+
* 오른쪽 화살표: RIGHTARROW
 
* ---
 
* ---
* 숫자패드 키들: Names of Keybinds
+
* 숫자패드 : 키바인드 이름
 
* 0: KP_INS  
 
* 0: KP_INS  
 
* 1: KP_END  
 
* 1: KP_END  
Line 96: Line 93:
 
* "/":KP_SLASH  
 
* "/":KP_SLASH  
 
* ---
 
* ---
* Mouse Wheel Direction: Names of Keybinds
+
* 마우스 휠 방향: 키바인드 이름
* Mouse Wheel Up: MWHEELUP
+
* 위로 휠: MWHEELUP
* Mouse Wheel Down: MWHEELDOWN
+
* 아래로 휠: MWHEELDOWN
* Mouse Left Click: MOUSE1
+
* 마우스 왼쪽 클릭: MOUSE1
* Mouse Right Click: MOUSE2
+
* 마우스 오른쪽 클릭: MOUSE2
* Mouse Wheel Click: MOUSE3
+
* 마우스 휠 클릭: MOUSE3
* Mouse Left Side Click: MOUSE4
+
* 마우스 좌측 클릭: MOUSE4
* Mouse Right Side Click: MOUSE5
+
* 마우스 우측 클릭: MOUSE5
  
Using the above keynames, you are able to place the following example command into one of your config files: <bind KP_ENTER "voicemenu 0 1">. When you hit 'Enter' on your numpad in-game, you will trigger the "Thanks" voice command.
+
위의 이름들을 써서 다음과 같은 명령을 만들어 설정 파일에 넣어둘 수 있습니다: <bind KP_ENTER "voicemenu 0 1">. 숫자패드의 '엔터'키를 누르면 음성 명령어 '고맙다!'가 나옵니다.
  
 
==기본 명령어==
 
==기본 명령어==
Most commands accept a single argument, which is whatever value you want to execute.
+
대부분의 명령어들은 하나의 인수만을 받아서 실행합니다.
 +
 
 +
'''bind "q" "sv_alltalk 1"'''
  
'''bind "q" "sv_alltalk 1"'''
+
몇 몇 중요한 명령어의 경우 둘 이상의 인수를 받는 경우도 있습니다. 다음과 같습니다:
  
A handful of important commands accept multiple arguments. Here are some examples:
+
* disguise X Y - [[Spy/ko|스파이]] [[Disguise/ko|변장]]. X는 병과 번호(1-9), Y는 팀 넘버(1,2).
  
* disguise X Y - This [[disguise]]s the [[Spy]]. X is the class numbered 1 through 9, while Y is the team numbered 1 or 2.
+
* voicemenu X Y - 음성 명령 실행. X는 첫 번째 메뉴, Y는 그 메뉴 안에서의 순서.
  
* voicemenu X Y - This executes a voice command. X is the number of the primary menu, while Y is the command position in that menu.
+
예: "voicemenu 1 1"은 '스파이!'입니다. 그러므로:
  
Example: "voicemenu 1 1" is the command for Spy, so:
+
'''bind "t" "voicemenu 1 1"'''
  
'''bind "t" "voicemenu 1 1"'''
+
이 명령은 해당 키를 눌렀을 때 캐릭터가 스파이를 외치게 만듭니다.
  
This command will make your character yell Spy whenever you hit the key.
+
==토글==
  
==Incrementvar==
+
'''toggle'''명령을 통해 convar를 켜고 끄거나, 정해진 값 사이를 순환할 수 있습니다. 예를 들면:
This command cycles through a range of specified values whenever it executes and applies those values to another command. This has the form of:
 
  
:'''command "<argument1>" "incrementvar <argument2> X Y Z"'''
+
'''bind x "toggle viewmodel_fov 20 33 60 75 90"'''
  
:*X and Y represent the range of values you want to execute with <argument2>.
+
'''bindtoggle'''은 켜고 끄는 형태의 토글을 할당하는 단축형 명령어입니다.  
:*Z is the size of the step you want to make while you cycle through the range.
 
  
If you wanted a value range of 1 through 10 and you wanted to increment your value by 2 each time the command was executed, you'd make X Y Z into 1 10 2. Each time it executes, <argument2> will execute with an incrementing value of 2, 4, 6, 8, 10, 2, 4, 6, 8, 10... and so forth.
+
'''bindtoggle z r_drawviewmodel'''
  
Here is a real example of incrementvar in action:
+
이 명령어는 '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"'''
 
:'''bind "n" "incrementvar net_graphpos 1 3 1"'''
  
This binds the key "n" to cycle to the next position in the 3 available net_graph positions.
+
n키를 누를 때마다 net_graph의 표시 위치가 3가지 위치 중 다음 위치로 바뀝니다.
 +
 
 +
==+와 -명령어==
  
==+ 와 - 명령어==
+
여기에 해당하는 명령어들은 두 가지 상태를 갖고 있습니다. 할당된 키를 누르고 있는 동안 '''+'''명령어가 계속해서 실행됩니다. 키를 떼면 '''-'''명령어가 계속해서 실행됩니다.
These commands have two states. While the bound key is pressed, the '''+''' command executes and continues to execute. When the key is released, the '''-''' command executes and continues to execute.
 
  
Example:
+
:
:'''bind "c" "+duck"
+
:'''bind "c" "+duck"'''
  
This + command is bound to "c" so whenever the key is pressed, the player ducks. Whenever the key is released, "+duck" is swapped to "-duck" and the player stops ducking.
+
+명령어가 "c"에 붙어 있으므로, 해당 키를 누를 때마다 플레이어가 앉습니다. 키를 떼면 실행되는 명령어가 "+duck"에서 "-duck"으로 바뀌고 플레이어는 다시 일어납니다 (앉는 것을 멈춥니다).
  
In general, if a command or alias is bound to a key, a + tells the game to run the command as long as the key is held. Similarly, if a command or alias is bound to a key, a - tells the game to run the command when the key is released.
+
보통은 명령이나 앨리어스가 키에 할당되어 있을 경우, +는 키를 누르고 있는 동안 계속해서 게임에 명령을 실행하라고 전합니다. -도 비슷하게 키를 떼고 있는 동안 계속해서 게임에 명령을 실행하라고 전합니다.
  
If an alias is defined with a + in front of it, the alias will be run whenever the key is pressed, as the key is pressed. The - command will then run as the key is released.
+
앨리어스를 +를 붙여 정의할 경우, 이 앨리어스는 키를 누르고 있는 동안 계속해서 실행됩니다. 키를 누르지 않는 동안은 -명령어가 실행됩니다.
  
 
==대기 명령어==
 
==대기 명령어==
If you want the game to delay for a period of time during an alias, or if you want to avoid client crashes caused by executing commands too quickly, use the '''wait''' command.
 
  
The wait command tells the game to delay the next command in the script by one physics frame, something like a full turn in the TF2 rules. It accepts values such as "wait 50", telling the game to wait fifty frames before the alias continues. "wait 100" is roughly a second on a 100 FPS server.
+
앨리어스를 실행하는 동안 대기 시간을 두거나, 명령을 너무 빨리 연이어 실행해서 클라이언트가 깨지는 것을 막을 때 '''wait'''명령어를 사용합니다.
 +
 
 +
대기 명령어는 스크립트에 있는 다음 명령어를 1 물리 프레임 늦게 실행하도록 만듭니다 (물리 프레임은 TF2에서 이를테면 완전한 한 턴turn이라고 볼 수 있는 개념입니다). "wait 50"을 쓰면 앨리어스를 계속 실행하기 전 50 프레임을 기다리게 만들 수 있습니다. 초당 100프레임으로 돌아가는 서버에서 "wait 100"은 대략 1초 정도 됩니다.
  
Some servers disable the wait command. While playing on them, wait commands will be ignored, making some scripts susceptible to crashes. A script containing an indeterminate loop spaced by wait commands will always immediately hang upon usage on such servers.
+
일부 서버에서는 대기 명령어를 막아두기도 합니다. 이 서버에서 플레이할 때는 대기 명령어가 무시되며, 따라서 일부 스크립트가 깨질 수 있습니다. 대기 명령어로 순환의 시작과 끝을 나누는 루프를 이런 서버에서 사용하면 즉시 접속이 끊어질 수 있습니다.
  
==Aliases==
+
==앨리어스==
An '''alias''' is like a variable that stores a series of commands which can be executed as a group. A simple alias will take the form:
 
  
'''alias "aliasname" "command1; command2; command3"'''
+
'''앨리어스'''는 한꺼번에 실행할 수 있는 여러 개의 명령들을 묶어서 저장하는 일종의 변수라고 생각할 수 있습니다. 앨리어스의 간단한 형태는 다음과 같습니다:
  
You can then execute the commands through a bound key:
+
'''alias "앨리어스 이름" "명령1; 명령2; 명령3"'''
  
'''bind "key" "aliasname"'''
+
그리고 할당된 키를 통해 이 앨리어스를 실행할 수 있습니다:
  
Whenever the key is pressed, "command1", "command2", and "command3" are executed in order.
+
'''bind "" "앨리어스 이름"'''
  
===Complex aliases===
+
매번 키를 누를 때마다 "명령1", "명령2", "명령3"이 순차적으로 실행됩니다.
Aliases can execute any command including other aliases. Furthermore, an alias can execute an alias in order to redefine that alias's commands. This allows you to create cycling aliases. Here is a very simple example:
+
 
 +
===복잡한 형태의 앨리어스===
 +
앨리어스는 어떤 명령도 실행할 수 있으며 이는 다른 앨리어스까지 포함합니다. 여기서 더 나아가, 한 앨리어스의 명령을 재정의하기 위해 다른 앨리어스에 이 앨리어스를 넣어서 실행할 수도 있습니다. 이를 통해 앨리어스 사이를 순환할 수 있습니다. 다음은 그 간단한 예입니다:
  
 
  '''bind "key" namescroll'''
 
  '''bind "key" namescroll'''
  '''alias namescroll "firstname" '''
+
  '''alias namescroll "firstname"'''
  '''alias firstname "setinfo name ""First_name""; alias namescroll secondname" '''
+
  '''alias firstname "setinfo name ""First_name""; alias namescroll secondname"'''
 
  '''alias secondname "setinfo name ""Second_name""; alias namescroll thirdname"'''
 
  '''alias secondname "setinfo name ""Second_name""; alias namescroll thirdname"'''
  '''alias thirdname "setinfo name ""Third-name""; alias namescroll firstname"'''
+
  '''alias thirdname "setinfo name ""Third_name""; alias namescroll firstname"'''
  
This is difficult to read, so to break it down.
+
이 자체로는 이해하기 어려우니까, 차근차근 나눠보겠습니다.
  
*The first line binds "key" to an alias "namescroll" which we have yet to define.
+
* 첫 번째 줄에서 "key"에 아직 정의하지 않은 "namescroll"를 할당합니다.
*The second line creates the alias "namescroll" which executes the command "firstname"
+
* 두 번째 줄에서 "firstname"명령을 실행하는 앨리어스인 "namescroll"을 정의합니다.
*The third line defines the "firstname" alias as two commands:
+
* 세 번째 줄에서 "firstname"앨리어스를 두 가지 명령으로 정의합니다.
:*The first command sets your in-game name to "First_name"
+
:* 첫 번째 명령은 게임 내 이름을 "First_Name"으로 바꿉니다.
:*The second command redefines the alias "namescroll" as an alias for executing the alias "secondname"
+
:* 두 번째 명령은 "namescroll"앨리어스를 "secondname"명령을 실행하는 앨리어스로 재정의합니다.
*The fourth line defines "secondname" in the same manner. A different in-game name is set, and then "namescroll" is redefined to another alias "thirdname"
+
* 네 번째 줄에서 "secondname"을 같은 식으로 정의합니다. 게임 내 이름을 바꾸고, "namescroll"앨리어스를 "thirdname"을 실행하도록 재정의합니다.
*The fifth line defines "thirdname" just like the two before it, but with a twist. It redefines the "namescroll" alias as executing the "firstname" alias.
+
* 다섯 번째 줄에서도 마찬가지 방식으로 "thirdname"을 정의하지만, 한 가지 변화가 있습니다. "namescroll""firstname"을 실행하도록 재정의합니다.
  
This completes a loop. Each press of the key executes a command and redefines the alias bound to the key, so that when it is next pressed it will execute a different command. If there were no loop, then the alias "namescroll" wouldn't always have another alias to execute with each keypress.
+
이로써 루프가 완성되었습니다. 키를 누를 때마다 명령을 실행한 다음 앨리어스를 재정의하므로, 다음에 눌렸을 때엔 다른 명령을 실행할 수 있습니다. 루프 없이는 "namescroll"이 매번 다른 명령을 실행할 수 없었을 것입니다.
  
===Alias 전환===
+
===앨리어스 토글===
  
Aliases can be used to toggle the state of some command between values (eg toggle '''cl_showfps''' between 0 and 1). This example demonstrates creating a generic toggle:
+
앨리어스를 써서 명령의 상태를 바꿀 수 있습니다 (예를 들면 '''cl_showfps'''를 0과 1 사이에서 바꿉니다). 아래의 예제는 토글을 만드는 일반적인 방법을 설명합니다:
  
  '''alias ToggleStateA "do A stuff; alias ToggleControl ToggleStateB"'''
+
  '''alias ToggleStateA "A에서 할 일을 실행; alias ToggleControl ToggleStateB"'''
  '''alias ToggleStateB "do B stuff; alias ToggleControl ToggleStateA"'''
+
  '''alias ToggleStateB "B에서 할 일을 실행; alias ToggleControl ToggleStateA"'''
 
  '''alias ToggleControl ToggleStateA'''
 
  '''alias ToggleControl ToggleStateA'''
  '''bind {toggle button} ToggleControl'''
+
  '''bind {토글 키} ToggleControl'''
 +
 
 +
* 첫 번째 줄에서 첫 번째 상태를 정의하고, 조작을 두 번째 상태로 재정의합니다.
 +
* 두 번째 줄에서 두 번째 상태를 정의하고, 조작을 첫 번째 상태로 재정의합니다.
 +
* 세 번째 줄에서 조작을 첫 번째 상태로 정의합니다.
 +
* 마지막 줄에서 토글 조작을 키에 할당해줍니다.
 +
 
 +
===앨리어스 스위치===
 +
 
 +
한 쌍의 앨리어스를 써서 키를 다른 명령에 할당시켰다가 다시 되돌릴 수 있습니다. 예:
 +
 
 +
'''alias +AlternateBinds "bind Q B에서 할 일을 실행"'''
 +
'''alias -AlternateBinds "bind Q A에서 할 일을 실행"'''
 +
'''bind {바인드 전환 키} +AlternateBinds'''
  
*The first line defines the first state and also tells the control to set the second state when next executed
+
B에서 할 일을 실행시키기 위해서는 바인드 전환 키를 누른 채로 Q를 누릅니다.
*The second line defines the second state and also tells the control to set the first state when next executed
 
*The third line defines the control and initializes it to set the first state
 
*The last line binds the toggle control to the button with which you want to toggle
 
  
===Alias 스위칭===
+
===앨리어스 루프===
  
You can use the states of a set of aliases to rebind a key to something and back to its original. eg:
+
앨리어스와 대기 명령어를 결합해 앨리어스 루프를 만들 수 있습니다.
alias +AlternateBinds "bind Q do_B_stuff"
 
alias -AlternateBinds "bind Q do_A_stuff"
 
bind {bind switching key} +AlternateBinds
 
  
To execute do_B_stuff you would need to press both the bind switching key and Q.
+
''경고: 대기 명령어를 빠트리거나 대기 명령어가 막힌 서버에 들어갈 경우 아래의 예시가 TF2를 깨뜨릴 수 있습니다.''
  
===명령어 반복===
+
  '''alias "Loop" "echo Looping every 150 ticks.; wait 150; Loop"'''
Aliases can be used in conjunction with the wait command to create looping aliases.<br>
 
 
''Warning:Not having the wait in place, or being on a server with wait disabled will cause this example to crash TF2.''<br>
 
  '''alias "Loop" "echo Looping every 150 ticks.;wait 150;Loop"'''
 
 
  '''Loop'''
 
  '''Loop'''
  
Lets break this down into components:<br>
+
차근차근 나눠서 알아봅시다:
Line 1<br>
 
The echo displays a message to the console, just so you know it works.
 
The wait makes it wait 150 ticks between iterations
 
Loop calls the alias again, restarting at the echo.
 
  
Line 2
+
* 첫 번째 줄
Loop starts the looping alias.
+
:* echo는 콘솔에 메시지를 출력합니다. 이를 통해 앨리어스가 작동하고 있음을 알 수 있습니다.
 +
:* 대기 명령어가 앨리어스를 150틱동안 기다리게 만듭니다.
 +
:* Loop를 다시 불러서, echo부터 반복합니다.
  
You can also create loops of alias commands, like this example:
+
* 두 번째 줄
'''alias "Loop1" "echo Loop 1;wait 150;Loop2"'''
+
:* Loop를 불러서 루프를 시작합니다.
'''alias "Loop2" "echo Loop 2;wait 150;Loop1"'''
 
  
Loop1 calls Loop2 which in turn calls Loop1, etc...
+
또한 다음처럼 앨리어스의 루프를 만들 수도 있습니다:
This method can also be used for breaking a loop without clearing the loop alias:
+
 
  '''alias "Loop1" "echo Loop1;wait 150;Loop2"'''
+
'''alias "Loop1" "echo Loop 1; wait 150; Loop2"'''
 +
'''alias "Loop2" "echo Loop 2; wait 150; Loop1"'''
 +
 
 +
Loop1이 Loop2를 부르고, 이는 Loop1을 부르고, ...
 +
 
 +
이 방법을 통해 루프 앨리어스를 지우지 않고 루프를 멈출 수도 있습니다: <!-- 맞습니다. 루프 앨리어스를 지우지 않는다고 써넣고 밑에서는 Loop2 앨리어스를 지웁니다. 이해가 안 되지만 원문이 이러므로 일단 이대로 옮겼습니다. -->
 +
 
 +
  '''alias "Loop1" "echo Loop1; wait 150; Loop2"'''
 
  '''alias "Loop2" "Loop1"'''
 
  '''alias "Loop2" "Loop1"'''
This would create a loop, then
+
 
 +
이렇게 만들어진 루프를
 +
 
 
  '''alias "Loop2"'''
 
  '''alias "Loop2"'''
would break it, by clearing the Loop2 alias.
 
  
You can use these for button presses(Via the +/- prefixes covered earlier) like this:
+
이렇게 Loop2 앨리어스를 지워서 멈춥니다.
  '''alias "Loop2" "Loop1"'''
+
 
  '''alias "Loop1" "echo Loop1;wait 150;Loop2"'''
+
키 입력 상태에도 적용할 수 있습니다:
  '''alias "+Loop" "alias Loop2 Loop1;Loop2"'''
+
 
 +
  '''alias Loop2 Loop1'''
 +
  '''alias "Loop1" "echo Loop1; wait 150; Loop2"'''
 +
  '''alias "+Loop" "alias Loop2 Loop1; Loop2"'''
 
  '''alias "-Loop" "alias Loop2"'''
 
  '''alias "-Loop" "alias Loop2"'''
  '''bind "<Key>" "+Loop"'''
+
  '''bind "<>" "+Loop"'''
In order of what it's doing:
 
  
1. Make Loop2 point to Loop1
+
위의 명령이 수행하는 작업은 순서대로 다음과 같습니다:
2. Make Loop1 echo 'Loop1' to the console
 
3. wait 150
 
4. call Loop2
 
5. make +Loop point Loop2 to Loop1
 
6. run Loop2
 
7. make -Loop clear Loop2's link, breaking the loop.
 
  
== 유용한 스크립트 명령어들 ==
+
* Loop2를 Loop1을 실행하는 앨리어스로 정의
There are literally hundreds of different arguments for your script that can make them do almost anything. Here's a list of a few of them.
+
* Loop1을 콘솔에 'Loop1'을 출력하고 150틱을 기다린 다음 Loop2를 호출하는 앨리어스로 정의
 +
* +Loop를 앨리어스 Loop2가 Loop1을 실행하도록 재정의한 다음 Loop2를 호출하는 앨리어스로 정의
 +
* -Loop를 앨리어스 Loop2를 지우는 앨리어스로 정의 (루프를 멈춘다)
  
===음성 명령어===
+
==유용한 스크립트 명령어==
A '''voice command''' is the act of making your class say something, often used in gameplay as a way of either signaling information or just for goofing-off.
 
  
Voice commands are used with the following syntax;
+
스크립트에 적용할 수 있는 인수들은 말그대로 수백가지가 넘습니다. 그 중 일부를 아래에 적습니다.
  
'''voicemenu <menu_number> <phrase_number>
+
===음성 명령===
  
Where <menu_number> is the one of the 3 menus where voice commands are spread out through <phrase_number> is one of the 7 voice commands that are within each <menu_number> menu.
+
'''음성 명령'''을 통해 캐릭터가 말을 할 수 있습니다. 보통 신호를 보내거나 빈둥거리는 데에 쓰입니다.
  
====음성 명령어를 위한 구문====
+
음성 명령 문법은 다음과 같습니다:
*0 <phrase_number>
+
 
*:0: 메딕
+
'''voicemenu <메뉴 번호> <구절 번호>'''
*:1: Thanks
+
 
*:2: Go
+
<메뉴 번호>는 세 가지 메뉴의 번호, <구절 번호>는 각 메뉴에 딸린 8가지 명령의 번호입니다.
*:3: Move Up
+
 
*:4: Flank Left
+
====음성 명령 인수====
*:5: Flank Right
+
 
*:6: Yes
+
*0 <구절 번호>
*:7: No
+
*:0: 메딕!
*1 <phrase_number>
+
*:1: 고맙다!
*:0: Incoming
+
*:2: 돌격! 돌격! 돌격!
*:1: Cloaked Spy
+
*:3: 이동하라!
*:2: Sentry Ahead
+
*:4: 왼쪽으로 이동하라
*:3: Teleporter Here
+
*:5: 오른쪽으로 이동하라
*:4: Dispenser Here
+
*:6: 그래
*:5: Sentry Here
+
*:7: 아니
*:6: Activate ÜberCharge
+
*1 <구절 번호>
*:7: (Medic Only) ÜberCharge Ready
+
*:0: 적이다!
*2 <phrase_number>
+
*:1: 스파이다!
*:0: Help
+
*:2: 전방에 센트리!
*:1: Battlecry
+
*:3: 여기 텔레포터가 필요하다
*:2: Cheers
+
*:4: 여기 디스펜서가 필요하다
*:3: Jeers
+
*:5: 여기 센트리가 필요하다
*:4: Positive
+
*:6: 충전 활성화!
*:5: Negative
+
*:7: 메딕: 우버차지 준비 완료
*:6: Nice Shot
+
*2 <구절 번호>
*:7: Good Job
+
*:0: 도와줘!
 +
*:1: 함성
 +
*:2: 격려
 +
*:3: 야유
 +
*:4: 긍정적
 +
*:5: 부정적
 +
*:6: 나이스 샷
 +
*:7: 훌륭함
  
 
===빠른 스파이 변장===
 
===빠른 스파이 변장===
With these quick and easy commands, you can bind keys to specific disguises instead of having to flip through the disguise menu.
 
  
Disguise commands are used with the following syntax:
+
변장을 키에 할당하면 변장 메뉴를 쓰지 않고도 빠르고 간편하게 해낼 수 있습니다.
  
'''disguise <class_number> <team_number>
+
변장 명령 문법은 다음과 같습니다:
  
Where <class_number> is the number of the class you wish to disguise as, and <team_number> the number of the team you wish to disguise as.
+
'''disguise <병과 번호> <팀 번호>'''
  
====Arguments for disguise commands====
+
<병과 번호>는 변장하려는 병과의 번호, <팀 번호>는 변장하려는 팀의 번호입니다.
*1 <class_number>
 
*:1: Scout
 
*:2: Sniper
 
*:3: Soldier
 
*:4: Demoman
 
*:5: Medic
 
*:6: Heavy
 
*:7: Pyro
 
*:8: Spy
 
*:9: Engineer
 
  
*2 <team_number>
+
====변장 명령 인수====
*:1: BLU team
 
*:2: RED team
 
*:-1: Opposite team
 
*:-2: Same team
 
  
===엔지니어 빠른 건물제작===
+
*1 <병과 번호>
Similar to the [[Spy]]'s quick disguise, this allows the [[Engineer]] to bypass his [[PDA]] interface and instantly destroy an existing building type, while simultaneously pulling up blueprints to place a new building of the same type. 
+
*:1: 스카웃
 +
*:2: 스나이퍼
 +
*:3: 솔저
 +
*:4: 데모맨
 +
*:5: 메딕
 +
*:6: 헤비
 +
*:7: 파이로
 +
*:8: 스파이
 +
*:9: 엔지니어
  
Building commands are used with the following syntax:
+
*2 <팀 번호>
 +
*:1: 블루 팀
 +
*:2: 레드 팀
 +
*:-1: 적 팀
 +
*:-2: 우리 팀
  
'''build <building_number><br>
+
===엔지니어 빠른 건설===
'''destroy <building number>
 
  
Where <building_number> is the number of the building you wish to destroy or pull up blueprints for.
+
[[Spy/ko|스파이]]의 변장과 마찬가지로, [[Engineer/ko|엔지니어]]도 PDA 메뉴를 거치지 않고 빠르게 구조물을 폭파하고 지을 수 있습니다.
  
====Arguments for building commands====
+
건설 명령 문법은 다음과 같습니다:
*Number: Building/Destroying
 
*:0: Dispenser
 
*:1: Teleporter Entrance
 
*:2: Sentry Gun/Minisentry
 
*:3: Teleporter Exit
 
  
An example of how to implement the above syntax is as follows:
+
'''build <구조물 번호>'''
 +
'''destroy <구조물 번호>'''
  
<pre>
+
<구조물 번호>는 폭파하거나 지으려는 구조물의 번호입니다.
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
 
</pre>
 
  
In this example, buildings are bound to the F1-F4 keys so that they do not interfere with weapon selection keys. When activated, the script will instantly and irreversibly destroy an existing building of the listed type, while pulling up the [[Engineer]]'s blueprints of the destroyed building's same type, ready to deploy. This script will still function if only one or two building types are used (in case you only want to map Sentry quickbuilding to a single key).
+
====건설 명령 인수====
  
===메딕 자동호출===
+
*번호: 건설/폭파
The player can control the Medic's autocall threshold through keybinds. The command is:
+
*:0: 디스펜서
 +
*:1: 텔레포터 입구
 +
*:2: 센트리 건/소형 센트리
 +
*:3: 텔레포터 출구
  
'''hud_medicautocallersthreshold <percentage>
+
아래는 위의 문법을 적용하는 방법에 대한 예시입니다:
  
The percentage is the percent health below which the autocall is triggered; 0 will show nothing, while 300 will show all nearby allies (since 300% is the maximum possible health).
+
'''alias {{botignore|sentry}} "destroy 2; build 2"'''
 +
'''alias {{botignore|dispenser}} "destroy 0; build 0"'''
 +
'''alias entrance "destroy 1; build 1"'''
 +
'''alias exit "destroy 3; build 3"'''
 +
'''bind f1 {{botignore|sentry}}'''
 +
'''bind f2 {{botignore|dispenser}}'''
 +
'''bind f3 entrance'''
 +
'''bind f4 exit'''
  
This command can be used to make the popular "Medic Radar" script:
+
이 예시에서는 구조물을 F1-F4에 할당함으로써 기존 무기 선택 키와 겹치는 것을 피했습니다. 키를 누르면 해당하는 구조물을 즉시 파괴하고 동시에 청사진을 꺼내 배치 준비를 마칩니다. 일부 구조물에 대한 스크립트만 만들어 사용할 수도 있습니다.
This set of aliases and commands will temporarily boost the [[Medic]]'s autocall threshold to 300% (which covers everyone, even a [[Spy]] who just [[overheal]]ed with a [[Conniver's Kunai]]) for as long as they hold a key down, allowing the player to see where all of their teammates are by their [[Medic]] autocall speech bubbles in the event they find themselves alone.
 
  
  '''alias "autocall_default" "hud_medicautocallersthreshold "75""<br>
+
===자동으로 메딕 호출===
  '''alias "autocall_all" "hud_medicautocallersthreshold "300""<br>
 
  '''alias "+radar" "autocall_all"<br>
 
  '''alias "-radar" "autocall_default"<br>
 
  '''bind mouse3 "+radar"<br>
 
  
The default autocall value, or the autocall threshold when this command is not in use, can be adjusted to any desired number (in the example it is listed as 75% health) and the keybind to activate it can be changed as well (the example is bound to MOUSE3).
+
키바인드를 통해 메딕을 자동으로 호출하는 체력 값을 조절할 수 있습니다:
  
==주목할만한 스크립트==  
+
'''hud_medicautocallersthreshold <퍼센트>'''
There are several notable scripts that have affected gameplay. Some of these are patched out, while others remain functional.
+
 
 +
다른 플레이어의 체력이 지정된 <퍼센트>이하로 떨어지면 자동호출이 뜹니다. 0을 넣으면 자동호출이 뜨지 않고, 300(가능한 최대 체력)을 넣으면 모든 동료들의 위치가 표시됩니다.
 +
 
 +
이 명령어를 통해 흔히 "메딕 레이더"라 불리는 스크립트를 만들 수 있습니다: 명령을 실행하는 키를 누르고 있는 동안 자동호출 임계값이 300%로 올라가므로, [[Medic/ko|메딕]]은 전장에 혼자 남겨졌을 때 호출 표시를 통해 모든 동료들의 위치를 파악할 수 있습니다 (300%는 모든 병과, 심지어 [[Conniver's Kunai/ko|간자의 수리검]]을 통해 갓 [[overheal/ko|과치료]]를 받은 [[Spy/ko|스파이]]의 최대 체력까지도 커버합니다).
 +
 
 +
'''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)는 원하는 대로 바꿀 수 있습니다.
 +
 
 +
==주목할 만한 스크립트==
 +
 
 +
게임플레이에 영향을 미치는 중요한 스크립트들이 있습니다. 일부는 패치되어 막혔지만, 그 외의 경우에는 아직도 사용할 수 있습니다.
  
 
===패치된 스크립트===
 
===패치된 스크립트===
====Pistol scripts====
 
Originally, the [[Pistol]] could be fired almost as fast as the human hand could press a key. Realizing this, some people created scripts that made the Pistol fire as rapidly as possible as long as you held down the fire button. This not only allowed the [[Scout]] and [[Engineer]] to fire faster than most people could manage, but it was easier to aim because you weren't mashing any keys.
 
  
Valve eventually leveled the playing field. They patched the Pistol to have a lower max firing rate, which was reached by default whenever a player held down the attack key. The Pistol scripts were no longer necessary.
+
====권총 스크립트====
 +
 
 +
이전에는 [[Pistol/ko|권총]]을 키를 누르는 속도만큼 빠르게 쏠 수 있었습니다. 이걸 알고 있던 일부 플레이어들이 키를 누르고 있으면 권총을 가능한 가장 빠르게 연사하는 스크립트를 만들었습니다. 키를 마구 누를 필요가 없었기 때문에, [[Scout/ko|스카웃]]과 [[Engineer/ko|엔지니어]]는 비정상적으로 빠르게 총을 쏠 수 있었을 뿐 아니라 조준도 더 쉽게 할 수 있었습니다.
 +
 
 +
결국엔 Valve가 경기를 공평하게 만들었고, 권총은 키를 누르고 있으면 일정한 연사 속도에 도달하도록 패치되었습니다. 권총 스크립트는 더 이상 쓸모가 없어졌습니다.
  
====Targe turn scripts====
+
====돌격 방향 전환 스크립트====
Originally, the keyboard commands to turn your viewpoint left and right were not treated the same as the mouse commands. The [[Chargin' Targe]] was the first weapon to create a restriction on how quickly you could turn your viewpoint, therefore Valve put a limit on mouse turn-speed, yet forgot to apply the same restriction to the keyboard command that resulted in the same action.
 
  
Players made scripts that rebound keys whenever a player charged, allowing them to turn at full speed. The most sophisticated examples temporarily rebound the mouse x-axis inputs to the keyboard turn commands, then unbound them when the player attacked at the end of the charge.
+
이전에는 시점을 좌우로 돌리는 키보드 명령어는 마우스 명령과는 다르게 취급되었습니다. [[Chargin' Targe/ko|돌격 방패]]는 이 시점을 돌릴 수 있는 속도를 제한하는 최초의 무기였고, 그래서 Valve에서 마우스 회전 속도에 제한을 걸었지만, 같은 제한을 키보드 명령어에도 적용하는 것은 깜빡한 상태였습니다.
  
Valve eventually capped the keyboard turn commands as they did with the mouse commands, thus conferring no advantage to individuals who used the script.
+
플레이어들은 돌격 중에는 다른 키바인드를 적용하는 스크립트를 만들었고, 그래서 전속력으로 시점을 회전할 수 있었습니다. 가장 세련된 형태는 돌격 중엔 마우스의 x축 입력을 키보드의 회전 명령어에 할당하고, 플레이어가 공격과 함께 돌격을 끝낼 때 할당을 푸는 것이었습니다.
  
However, it is still possible to write a script that will toggle sensitivity between extremely high values when charging and normal values when the player performs an attack. It is also possible to turn easily while using a gamepad's analog sticks.
+
결국엔 Valve에서 키보드의 회전 명령어에 대해서도 마우스처럼 제한을 걸었고, 따라서 이 스크립트를 쓰는 것은 아무런 이득이 없게 되었습니다.
  
====공중에서 앉기 스크립트====
+
하지만 아직도 돌격을 할 때와 공격을 할 때 다른 마우스 감도를 토글해주는 형태의 스크립트는 사용이 가능합니다. 게임패드의 아날로그 스틱을 써도 쉽게 회전 할 수 있습니다.
Originally, you could crouch as many times as you liked in a single jump. By binding a script to crouch and uncrouch as rapidly as possible, you could exploit the engine and make it difficult to properly register shots on jumping targets.
 
  
Valve patched it so you could only crouch twice in a single jump.
+
====공중 숙이기 스크립트====
  
===Current Scripts===
+
이전에는 점프 중에 원하는 만큼 숙이기를 할 수 있었습니다. 숙인 상태와 숙이지 않은 상태를 계속해서 빠르게 왕복하는 스크립트를 쓰면 공중에서 피격 판정을 받기 힘들어져 훨씬 더 맞추기 힘든 타겟이 될 수 있었습니다.
====무기 숨기기 스크립트====
 
There are a large number of scripts which toggle the weapon display option depending on which weapon slot is selected for a class. Players often make their guns invisible to clear up the screen, but make items like melee weapons, PDAs, watches, and so forth visible because these models indicate important information. For example, the [[Spy]] relies heavily on his visible model to determine when he is cloaked, when his cloak is disturbed, and when the [[Dead Ringer]] activates. Other classes use the melee animations to judge when their attacks will hit.
 
  
====센트리 점핑 스크립트====
+
Valve가 이를 패치했고, 따라서 이제는 점프 중에 두 번까지만 숙이기를 할 수 있습니다.
Since the [[Engineer Update]], Engineers have been able to pack up and carry their [[Sentry Gun]]s. Simultaneously introduced in the update, the [[Wrangler]] allows Engineers to [[Sentry jump]] with their Sentry rockets. With extremely fast inputs, it was discovered that a player could Sentry jump and successfully pack up their Sentry before they were launched away.
 
  
While a human can repeat this feat, it is difficult. Some players made scripts which could reliably execute the commands in the right order at the right speed allowing them to make a Sentry jump while carrying their Sentry every time.
+
====G.R.U. 스크립트====
  
====Gunslinger Scripts====
+
이전에는 [[Gloves of Running Urgently/ko|G.R.U.]]를 끼면 체력이 초당 6씩 떨어졌습니다. 하지만 점프 중에는 이 무기의 이동 속도 증가가 유지되었기 때문에, 이것을 낀 채로 점프한 다음 재빨리 무기를 바꾸는 식으로 속력은 거의 잃지 않으면서 체력 감소를 줄일 수 있었습니다. 굳이 직접 일일히 무기를 바꾸지 않아도, 스크립트를 쓰면 이 행동을 훨씬 더 간편하게 해낼 수 있었습니다.
Since it can be troublesome to destroy then rebuild a [[Combat Mini-Sentry]] in the heat of battle through the PDA, some players have scripted the destruction and rebuilding of their Combat Mini-Sentry with the click of one or two mouse buttons. Such a script is especially useful when using the [[Frontier Justice]], as the player gains practically instant access to revenge crits when needed.
 
  
====Sensitivity and Control scripts====
+
하지만 {{Patch name|6|27|2012}}를 통해 무기의 특성이 매 초당 체력을 잃는 것에서 짧은 시간 동안 죽음의 표적이 되는 것으로 바뀌었습니다.
Some players prefer different mouse sensitivities and control schemes for some classes. (For example, changing from the Demoman, which doesn't require fine aiming, to the Sniper, which encourages low sensitivity for precise aiming so that a hand twitching inadvertently won't ruin a player's aim too much) These scripts alter control schemes and mouse settings on a per class, or even per weapon, basis.
 
  
====차지 대시 스크립트====
+
===현존하는 스크립트===
Since timing a charge and jump can be difficult, some players may use a quick script that binds the two actions to a button so that the charge dash will cover the maximum amount of distance possible. The player is still required to swing their melee weapon normally to end the charge though.
+
 
 +
====무기 감추기 스크립트====
 +
 
 +
병과가 선택한 무기 칸에 따라 무기 표시 옵션을 토글할 수 있는 스크립트가 많이 있습니다. 보통 플레이어들은 총을 시야 확보를 위해 감추고, 근접 무기, PDA, 시계 등의 모델을 중요한 정보를 알려주기 때문에 보여둡니다. 예를 들면 스파이는 언제 은폐 준비가 끝나는지, 부딪혀서 드러난 은폐가 언제까지 보이는지, 언제 [[Dead Ringer/ko|데드 링어]]가 작동하는지를 자신의 보이는 모델에 의존해서 확인합니다. 다른 병과들은 근접 무기 애니메이션을 통해 언제 공격 판정이 뜰 지를 판단합니다.
 +
 
 +
====센트리 점프 스크립트====
 +
 
 +
[[Engineer Update/ko|엔지니어 업데이트]] 이후로 엔지니어는 [[Sentry Gun/ko|센트리 건]]을 옮길 수 있게 되었으며, 같은 업데이트에서 소개된 [[Wrangler/ko|원격 조련 장비]]를 써서 센트리 로켓을 이용한 [[Sentry Jump/ko|센트리 점프]]도 할 수 있게 되었습니다. 매우 빠른 키입력에 성공하면 플레이어가 센트리 점프로 날아가기 직전에 센트리 건을 들고 나를 수 있다는 것이 밝혀졌습니다.
 +
 
 +
직접 이 재주를 부리기는 것은 매우 어려운 일입니다. 그래서 일부 플레이어들은 정확한 순서와 속도로 명령을 실행해 매번 센트리 점프를 할 때마다 센트리를 옮길 수 있는 스크립트를 만들어냈습니다.
 +
 
 +
====총잡이 스크립트====
 +
 
 +
전장의 열기 속에서 PDA를 직접 꺼내 [[Combat Mini-Sentry/ko|소형 센트리]]를 부수고 다시 짓는 일이 꽤 거추장스러운 일이었기 때문에, 플레이어들은 마우스 버튼 한 두 개만으로 소형 센트리를 부수고 지을 수 있는 스크립트를 만들었습니다. 이 스크립트를 [[Frontier Justice/ko|개척자의 정의]]와 함께 쓰면 수시로 필요할 때마다 복수 치명타를 보충할 수 있기 때문에 무척 유용합니다.
 +
 
 +
====감도와 조정 키 스크립트====
 +
 
 +
일부 플레이어들은 병과마다 다른 감도와 조정 방법을 쓰는 것을 선호합니다 (예를 들면 그다지 섬세한 조준이 필요하지 않은 데모맨에서 부주의적으로 손떨림을 일으켜도 조준이 지장을 받지 않을 정도로 낮은 마우스 감도가 필요한 스나이퍼로 바꾸는 경우). 이들을 위해서 병과마다, 심지어는 무기마다 마우스 감도와 조정 방법을 바꿔주는 스크립트가 있습니다.
 +
 
 +
====돌격 대시 스크립트====
 +
 
 +
돌격과 점프의 시간간격을 맞추는 것이 쉽지 않기 때문에, 일부 플레이어들은 두 행동을 하나로 묶는 간단한 스크립트를 만들어서 돌격 대시의 거리를 최대로 늘리곤 합니다. 하지만 돌격을 끝내기 위해 근접 무기를 휘둘러줘야 하는 것은 마찬가지입니다.
  
 
====퀵스코프 스크립트====
 
====퀵스코프 스크립트====
Many players find it difficult to scope in and fire straight after to get a quick headshot. There are scripts that will zoom in and fire just by clicking one mouse button. It may be harder to aim for some players because it is required that the player aim outside of the scope, though if this is mastered, a player can become much more effective at quickscoping.
 
  
====Gloves of Running Urgently Scripts====
+
많은 플레이어들이 줌 인 이후에 곧바로 헤드샷을 쏘는 것을 어려워 합니다. 때문에 마우스 버튼 한 번으로 줌 인과 발사를 실행하는 스크립트가 만들어졌습니다. 퀵스코프는 적을 스코프 밖에서 조준해야 하기 때문에 쉽지 않은 기술이지만, 숙달하면 훨씬 더 효율적인 플레이를 할 수 있게 됩니다.
While using the Gloves of Running Urgently, the player will constantly lose 6 health per second. However, jumping preserves the speed bonus granted by this weapon while the player is still in the air. Because of this, by jumping with this weapon, and then immediately switching to another weapon, health loss can be minimized with very little negative impact on speed. While a player can manually jump and continually switch weapons, using a script greatly simplifies this technique.
+
 
 +
====로켓점프 스크립트====
 +
 
 +
로켓 점프로 최대 높이나 거리에 도달하기 위해서는 점프, 숙이기, 발사를 거의 동시에 해내야 합니다. 이것에 어려움을 느낀 일부 플레이어들은 한 번의 버튼으로 이것들을 모두 실행해주는 간단한 스크립트를 만들어서 사용합니다.
 +
 
 +
==참고==
  
====로켓 점프 스크립트====
+
* [[List of useful console commands/ko|유용한 콘솔 명령어 목록]]
In order to Rocket Jump to a maximum height or distance, it is required that the player jumps, crouches, and fires their rocket at roughly the same time. Some players seem to find this difficult, and so use a simple script to perform this action at the press of a button.
+
* [[Customizing/ko#tf.5Ccfg.5Cconfig default.cfg|사용자 지정 - config_default.cfg]]: TF2 기본 키바인드
  
==관련 항목==
+
==외부 링크==
* [[List of useful console commands|유용한 콘솔 명령어 목록]]
 
* [[Customizing#tf.5Ccfg.5Cconfig default.cfg|config_default.cfg 커스터마이징]]: 팀 포트리스2의 기본적인 키 설정입니다.
 
  
==외부 항목==
+
* [http://forums.steampowered.com/forums/showthread.php?t=709568 Steam Users' Forums - TF2 Scripting Tutorial] {{lang icon|en}}. 스크립트에 대한 기초를 유용하고 이해하기 쉬운 수많은 예제와 함께 다루는 튜토리얼.
*[http://forums.steampowered.com/forums/showthread.php?t=709568 스팀 유저포럼 - TF2 스크립팅 튜토리얼]. 스크립트의 기초에 관하여 다루고 있으며, 많고 실용적이며 이해하기 쉬운 예제들이 있습니다.
+
* [http://warriornation.net/Forum/showthread.php?t=568008 TF2 scripting tutorial - Warrior Nation Network] {{lang icon|en}}. 기초적인 스크립트 문법에 대한 사전지식을 필요로 하는, 훨씬 더 심화된 튜토리얼.
*[http://warriornation.net/Forum/showthread.php?t=568008 TF2 scripting tutorial - Warrior Nation Network]. 한층 수준이 높은 게시글로, 기본적으로 스크립팅 문법 이해가 전제로 깔려있습니다.
+
* [http://www.gamebanana.com/scripts/games/297 Gamebanana.com - TF2 scripts] {{lang icon|en}}. 수백가지가 넘는 TF2 스크립트 예제.
*[http://www.gamebanana.com/scripts/games/297 Gamebanana.com - TF2 scripts]. 팀 포트리스2를 위한 수백개의 스크립트 예제들.
 
  
[[Category:Customization/ko]]
+
[[Category:customization/ko]]

Revision as of 21:43, 19 October 2019


스크립트는 설정 파일(.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"

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

  • disguise X Y - 스파이 변장. X는 병과 번호(1-9), Y는 팀 넘버(1,2).
  • 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)는 원하는 대로 바꿀 수 있습니다.

주목할 만한 스크립트

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

패치된 스크립트

권총 스크립트

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

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

돌격 방향 전환 스크립트

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

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

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

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

공중 숙이기 스크립트

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

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

G.R.U. 스크립트

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

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

현존하는 스크립트

무기 감추기 스크립트

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

센트리 점프 스크립트

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

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

총잡이 스크립트

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

감도와 조정 키 스크립트

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

돌격 대시 스크립트

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

퀵스코프 스크립트

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

로켓점프 스크립트

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

참고

외부 링크