스크립트
스크립트는 설정 파일 .cfg
을 이용해 복잡한 행동들과 콘솔 명령들을 자동으로 실행하는 새로운 bind와 alias를 만드는 것을 의미합니다. 스크립트는 Team Fortress 2에 내장된 기능으로서, VAC를 통해 제제당하지 않습니다. 스크립트를 사용하는 방식은 단순히 키를 누르면 명령이 실행되는 것부터 반복문과 서로 재정의 하는 alias까지 다양합니다. 스크립트를 이용해 자동으로 만들 수 있는 것들은 수동으로도 할 수 있지만, 스크립트는 이를 전장에서 쉽게 이용할 수 있게 합니다.
Contents
스크립트 명령어
이 명령어들은 스크립트 외에는 사용할 수 없는 명령어로, 게임에 직접적으로 영향을 끼치지 않습니다.
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 인수 3...
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_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 is
와 very 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 on the Valve Developer Community에서 모든 실행 옵션을 확인해주세요.
실행 옵션을 설정하는 방법
- Steam의 라이브러리에서 팀 포트리스 2를 찾고, 우클릭을 누르고 속성을 선택합니다.
- 일반 탭의 시작 옵션을 선택합니다.
- 적용하고 싶은 시작 옵션을 입력합니다. 각 옵션은 띄어쓰기로 구분해야 합니다.
- 속성 창을 닫고 게임을 실행합니다.
창 옵션
이 옵션을 잘못 사용하면 성능을 낮출 수 있습니다. 가능하면 게임 내 설정을 사용해주십시오.
비율
실행 옵션: -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
- 설명: 특정 문자의 글꼴 렌더링을 precahce 하여, 렌더링 시간을 줄입니다.
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
← ↓ → |
|
마우스의 버튼 | 스크립트에 사용하는 이름 |
---|---|
휠 위로 올리기 | MWHEELUP |
휠 아래로 내리기 | MWHEELDOWN |
좌클릭 | MOUSE1 |
우클릭 | MOUSE2 |
휠 클릭 | MOUSE3 |
앞으로 가기 버튼 | MOUSE4 |
뒤로 가기 버튼 | MOUSE5 |
이를 이용해 다음과 같은 명령을 만들어 설정 파일에 저장할 수 있습니다: bind "KP_ENTER" "voicemenu 0 6"
. 넘버패드의 ↵ Enter키를 누르면 음성 명령어 '그래'가 나옵니다.
유용한 명령어
변장
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가 아닐 경우 스파이는 현재 팀에 상관없이 무조건 레드 팀으로 변장하게 됩니다.
구조물
build
와 destroy
명령어는 두 값을 사용하며, 첫 번째 값은 구조물을, 두 번째 값은 구조물의 타입을 결정합니다. 두 번째 값은 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를 한 번 누르면 다시 눌리기 전까지 플레이어가 앞으로 이동하게 합니다.
조합키
하나의 키를 누르고 있는 동안 다른 키를 누름으로써 다른 행동을 취하는 스크립트를 만들 수 있습니다.
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를 다시 누르면 반복이 멈추게 됩니다.
Sequences
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는 스크립트를 만드는데 유용하며, 어떻게 만드는 지 알면 이후 스크립트를 만드는데 도움이 될 것입니다.
Cycles
cycle은 최소 3가지의 옵션이 있는 토글 스크립트입니다:
alias Fov_Cycle Fov1 alias Fov1 "alias Fov_Cycle Fov2;fov_desired 70" alias Fov2 "alias Fov_Cycle Fov3;fov_desired 80" alias Fov3 "alias Fov_Cycle Fov1;fov_desired 90" bind o Fov_Cycle
이 스크립트는 0 키를 누를 때마다 시야의 값이 70, 80과 90 순서로 반복해서 바뀌게 됩니다.
Selection addons
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인 test
가 failure
를 실행하게 합니다. 간단히 말해, 조건에 알맞으면 test
가 가리키는 alias를 실행하지 않고, 조건에 알맞지 않으면 test
가 가리키는 alias를 실행합니다.
위 예시의 경우, J나 K를 누르지 않은 채로 L을 누르면 조건에 알맞게 되어 콘솔에 SUCCESS!
를 표시하며,J나 K를 누른 채로 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 //Activate Charge!
음성 호출이 무엇을 가리키는 지 나타나지 않기 때문에, 코멘트로 설명할 수 있습니다.
주목할 만한 스크립트들
다음은 게임에 영향을 끼친 스크립트들 입니다. 몇몇 스크립트는 패치되었고, 나머지 스크립트는 현재에도 사용 가능합니다.
패치된 스크립트들
권총 스크립트
이전에, 권총은 사람이 누르는 속도대로 쏠 수 있었습니다. 이에 키 하나만 누르면 굉장히 빠르게 쏠 수 있는 스크립트가 만들어졌습니다.
August 13, 2009 Patch: 권총의 발사 속도 문제를 수정하여 플레이어가 발사 단추를 누르는 속도에 관계되지 않게 했습니다.
돌격 방패 조종 스크립트
이전에, 키보드 명령어로 화면을 돌리는 것은 마우스로 돌리는 것과 달랐습니다. 돌격 방패는 플레이어가 화면을 돌릴 수 있는 속도에 제한을 둔 첫번째 무기이며, Valve는 마우스로 화면을 돌리는 속도에 제한을 두었습니다. 하지만 키보드로 화면을 돌리는 것에 제한을 두지 않아 이 제한을 무시하는 스크립트들이 만들어졌습니다.
June 23, 2011 Patch: 돌격 방패로 빨리 회전할 수 있었던 점을 수정했습니다.
공중에서 앉기 스크립트
이전에, 플레이어는 공중에서 마음대로 앉기를 누를 수 있었습니다. 최대한 빠르게 앉기를 눌렀다 떼는 스크립트를 만들면서, 공중의 적을 맞추기 힘들어졌습니다.
March 6, 2009 Patch: 이제 공중에서 두 번 앉을 수 있습니다.
잠수 스크립트
대부분의 서버가 잠수를 통해 아이템을 획득하는 것을 막는 방법을 이용했습니다. 플레이어들은 이 시스템을 무시하는 스크립트를 만들었습니다.
잠수를 막는 해결책에서 플레이어가 팝업 알림을 확인해야 아이템을 계속 얻을 수 있도록 했습니다.
이용 가능한 스크립트들
무기 모델을 끄는 스크립트
무기의 칸 등에 따라 무기 모델을 키고 끄는 스크립트가 많이 있습니다. 플레이어들은 무기 모델을 꺼 화면이 더 잘 보이게 하지만, 근접 무기 등은 모델을 켜놓는 경우가 있습니다. 에를 들어, 스파이는 은폐했을 때 무기 모델을 보는 것이 중요합니다. 다른 병과의 경우 근접 무기가 상대에게 언제 맞는지 판단하기 위해 근접 무기 모델을 켜놓습니다.
무기 줌 스크립트
이 스크립트는 시야를 변경하여 어느 무기를 사용하든 줌 효과를 사용할 수 있게 합니다.
센트리 건 점프 스크립트
Engineer Update 이후, 엔지니어는 센트리 건을 들고 옮길 수 있습니다. 동시에, 같은 업데이트에서 랭글러를 이용해 센트리 건 점프를 할 수 있게 되었습니다. 굉장히 빠른 입력을 이용해 플레이어가 센트리 건 점프를 함과 동시에 센트리 건을 들 수 있는 것을 알아냈습니다.
사람이 이를 할 수도 있지만, 굉장히 어렵습니다. 몇몇 플레이어는 매 번 센트리 건으로 점프를 함과 동시에 센트리 건을 옮기는 스크립트를 만들었습니다.
총잡이 스크립트
소형 센트리 건을 부수고 다시 짓는 것이 힘들 수 있기 때문에, 몇몇 플레이어는 소형 센트리 건을 부수고 다시 짓는 과정을 키 한 두 번만 눌러서 할 수 있는 스크립트를 만들었습니다. 이 스크립트는 개척자의 정의의 복수 치명타와 같이 이용하면 매우 유용합니다.
감도와 컨트롤 스크립트
몇몇 플레이어는 특정 병과에 따라 다른 감도와 컨트롤을 선호합니다. 예를 들어, 메딕은 조준이 많이 필요하지 않으나 스나이퍼는 정확한 조준이 필요하여 마우스 감도를 바꾸고 싶어할 수 있습니다. 이 스크립트는 병과마다, 혹은 무기마다 마우스 감도 등의 설정을 바꿉니다.
차지 대시 스크립트
점프와 돌격의 타이밍을 잡는 것이 어려울 수 있어, 몇몇 플레이어는 키 하나만 눌러 돌격으로 가장 멀리 날아갈 수 있게 하는 스크립트를 만들었습니다. 플레이어는 근접 공격으로 돌격을 멈출 수도 있습니다.
퀵스코프 스크립트
많은 플레이어가 조준을 하자마자 쏘는 것을 힘들어합니다. 이 스크립트는 키 하나만 누르면 조준 하자마자 쏘게 합니다. 하지만 조준을 하지 않은 상태에서 사용해야 합니다.
로켓 점프 스크립트
가장 높게나 가장 멀리로켓 점프를 하기 위해선 점프, 앉기와 로켓 쏘기를 거의 동시에 해야 합니다. 이는 스크립트를 통해 키 하나만 눌러서 쉽게 할 수 있습니다.
자동 변장 스크립트
수동으로 변장하는 것이 번거롭다고 생각한 플레이어들을 위한 이 스크립트는 어떤 무기든 공격하자마자 변장하게 합니다. 토글로 설정할 수 있고 변장할 병과를 설정할 수 있습니다.
우버차지 알림 스크립트
이 스크립트를 이용하면, 메딕이 우버차지를 사용하면 팀 채팅에 메시지를 남겨 팀이 같이 공격할 수 있게 합니다. 비슷한 스크립트로 "우버차지 준비 완료" 음성 호출을 사용하여 상대 팀을 속일 수 있습니다.
메딕 레이더
이 스크립트는 메딕으로만 사용 가능하며, 키를 누르면 자동 호출의 퍼센트가 굉장히 큰 수로 지정되어 주변에 팀이 어디 있는지 알 수 있습니다.
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"
주석
같이 보기
- 유용한 콘솔 명령어 목록
- 팀 포트리스 2 콘솔 명령어와 변수 목록 on the Valve Developer Community
- 명령어 옵션 on the Valve Developer Community
- VScript on the Valve Developer Community
- 치트