임계 부문 행동을 사용하여 여러 입력들을 처리할 경우
대기 입력은 최근에 입력된 순서부터 순차적으로 처리합니다.
(A->B->C 순서로 입력했을 경우 A->C->B 순서로 처리됨)
입력한 순서대로 처리하는 임계부문을 만들어봅시다.
A. 스크립트 난독화 게시 안하는 사람 버전
1. 전역 정수 변수 A, B 2개를 만든다 (각각 이름은 aaa, bbb)
2. 행동 정의를 새로 만든다. (단축키 Ctrl+Alt+R)
3. 만든 행동 정의의 옵션에 하위 함수 체크
4. 하위 함수 유형을 행동으로 하나 만든다 (이름은 actions)
5. 부울 매개 변수 1개를 만든다. (이름은 lock)
6. 해당 행동의 사용자 지정 스크립트를 밑에거 복붙
#AUTOVAR(number,int) = gv_aaa;
gv_aaa += 1;
while ((#PARAM(lock)) || (#AUTOVAR(number) != gv_bbb)) {
Wait(1.0, c_timeGame);
}
#PARAM(lock) = true;
#SUBFUNCS(actions)
gv_bbb += 1;
#PARAM(lock) = false;
9. 임계 부문 쓰듯이 쓴다.
B. 스크립트 난독화 게시하는 사람 버전
1~5는 위와 같음
6. 정수 매개 변수 2개를 만든다. (각각 이름은 a, b)
7. 정수 매개 변수 2개의 기본값을 설정한다 (a = aaa, b = bbb)
8. 해당 행동의 사용자 지정 스크립트를 밑에거 복붙
#AUTOVAR(number,int) = #PARAM(a);
#PARAM(a) += 1;
while ((#PARAM(lock)) || (#AUTOVAR(number) != #PARAM(b))) {
Wait(1.0, c_timeGame);
}
#PARAM(lock) = true;
#SUBFUNCS(actions)
#PARAM(b) += 1;
#PARAM(lock) = false;
9. 임계 부문 쓰듯이 쓴다.
ps. 자날 초기 시절 임계 부문은 부울 변수가 참인 도중에 들어온 입력은 싸그리 무시했습니다.
while을 지우고 나머지 내용을 if (!#PARAM(lock))) { }에 넣는다면 이 때 임계 부문을 구현할 수 있을 것 같네요