|
트리거를 사용해서 자금을 올리는 일반적인 방법과 킬 스코어를 응용해서 자금을 올리는 방법을 알아보자.
이 외에 죽인수를 비교하는 Kill 컨디션 명령이 있지만,이를 제어하는
역션 명령은 없다. 종족 유닛 건물 테란 Marine: 100 Nuclear Silo: 225 저그 Larva: 10 Spore Colony: 195 프로토스 Zealot: 200 Pylon: 150 중립 Critters: 10 Norad: 5000 *영웅유닛은 기본유닛의 2배(감염캐리건,제라툴 제외)
1.Set resources
Set - 해당 플레이어의 자금(미네랄/가스)을 설정치로 만든다.
Add - 해당 플레이어의 자금(미네랄/가스)에 @를 더한다.
Subtract - 해당 플레이어의 자금(미네랄/가스)에서 @를 뺀다.
ore = mineral, gas = gas
2.예제
Conditions :
-Allways(게임이 시작하면서)
Actions :
-Modify resources for player1 set to 113 ore.
(플레이어1의 미네랄을 113으로 만든다.)
Conditions :
-Allways.
Actions :
-Modify resources for player1 add 100 ore.
(플레이어1의 미네랄에 100의 미네랄을 더한다.)
#Score 컨디션
1.SCORE 의 종류
Total score - 보유한 유닛과 건물수 + 킬점수(유닛+건물)
Units score - 유닛 보유수
Buildings score - 건물 보유수
Unit and Buildings score - 유닛과 건물 보유수
Kills score - 킬 점수(유닛)
Razings score - 킬 점수(건물)
Kills and Razings score - 킬점수(유닛+건물)
Custom score - 플레이어 별로 제어 가능한 정수형 변수(defult 0)
Kills score는 항상 양의 수 만을 값으로 취하므로 최소값이 0 이며,보유수나 건물의 킬점수를 비교할때 주로 사용한다.
기본적으로 주어진 킬스코어를 사용자가 임의로 변경할수없다.
2. KILLS SCORE를 알아내는 트리거
킬스코어는 적의 유닛을 죽일때 변화가 생긴다.
어떤 유닛을 한마리 죽였을때 해당하는 유닛의 킬점수와 일치할때까지 1의 미네랄을 게속 더하고, 이 미네랄의 수치로 킬점수를 알수있다
미네랄 올라가는것이 변화가 없으면 미네랄을 리셋시킨뒤 다음 유닛을 죽여보자.
게임이 시작하면 플레이어1의 미네랄이 0 이 되게 하기
Conditions :
-Allways
Actions :
-Modify resources for player1 set to 0 ore.
플레이어1의 유닛이 '미네랄리셋'에 가면 미네랄이 0 이 되는 트리거
Conditions :
-player1 brings at least 1 man to '미네랄리셋'.
Actions :
-Modify resources for player1 set to 0 ore.
- Preserve trigger.
Kills Score 가 일치 할때까지 계속해서 미네랄에 1을 더한다.
Conditions :
-player1 kills score is at least 1.
Actions :
-Modify resources for player1 add 1 ore.
-Modify score for player1: subtract 1 Kills.(킬점수에서 1을 뺀다.)
-Preserve trigger.
위와 같이 작성하면 매초당 1씩 올라가는 미네랄로 인해 기다리기엔
지루하지만,트리거가 꼬이는 단점을 피할수 있다.switch나 custom
score 또는 wait 틀거를 사용하여 트리거 빨리 돌아가며서 꼬이지 않게 할수도 있지만,이해하기 쉬운 방법으로 만들어 봤다.
건물에 관련된 Razings Score도 같은 방법으로 알아볼수 있다.
실제 게임상에서 속도를 조금이나마 높이려면 한스타1.5를 사용하거나 스피드핵으로 속도 높일것.
3. 종족별 유닛과 건물에 대한 킬 스코어
Firebat: 200
Ghost: 350
SCV: 100
Tank: 700
Vulture: 150
Spider Mine: 25
Goliath: 400
Battlecruiser 2400
Wraith: 800
Dropship: 600
Science Vessel: 1250
Civilian: 10
Valkyrie: 800
Medic: 250
ComSat Station: 225
Command Center: 1200
Refinery: 150
Armory: 300
Supply Depot: 150
Science Facility: 825
Covert Ops: 225
Physics Lab: 225
Turret: 150
Engineering Bay: 195
Starport: 600
Control Tower: 300
Barracks: 225
Factory: 600
Machine shop: 225
Academy: 300
Bunker: 150
Egg: 25
Broodling: 25
Infested Terran: 400
Zergling: 50
Hydralisk: 350
Ultralisk: 1300
Overlord: 200
Drone: 100
Defiler: 450
Mutalisk: 600
Guardian: 1100
Scourge: 200
Queen: 800
Lurker: 500
Devourer: 1100
Sunken Colony: 240
Creep Colony: 120
Extractor: 75
Spawning Pool: 225
Evolution Chamber: 120
Spire: 750
Greater Spire: 1350
Hatchery: 900
Lair: 1200
Hive:1500
Nydus Canal: 225
Queen's Nest: 525
Ultralisk Cavern: 825
Hydralisk Den: 300
Infested Command Center: 900
Defiler Mound: 450
Dragoon: 500
High Templar: 700
Archon: 1400
Reaver: 800
Scarab: 0
Observer: 450
Carrier: 1900
Interceptor: 60
Scout: 1300
Probe: 100
Shuttle: 400
Arbiter: 2050
Dark Templar: 650
Dark Archon: 1300
Corsair: 700
Nexus: 1200
Robotics facility: 900
Gateway: 225
Assimilator: 150
Stargate: 900
Photon Cannon: 300
Citadel of Adun: 600
Cybernetics Core: 300
Fleet Beacon: 1050
Templar Archives: 750
Forge: 300
Robotics Support Bay: 375
Arbiter Tribunal: 1350
Shield Battery: 150
Observatory: 525
Mineral/Gas: 10
Trap: 100
Ion Cannon: 5000
Overmind: 10000
Mature Chrysalis: 2500
Cerebrate: 2500
Stasis Cell: 5000
Prison: 5000
Kydarin Crystal Formation: 2500
Temple: 5000
WarpGate: 2000
Psi Disruptor: 3600
Power Generator: 600
Overmind Cocoon: 4000
Infested Kerrigan: 4000
Zeratul: 800
4. 킬 스코어를 이용한 자금 올리기 예제
*방법1
플레이어1이 저글링을 죽일때마다 10의 미네랄이 올라가고,히드라를 죽일때마다 20의 미네랄을 올리기.
Conditions :
-player1 kills score is exactly 50.(플레이어1이 죽인 킬 스코어가 50
이라면)
Actions :
-Modify resources for player1 add 10 ore.(미네랄에 10을 더한다.)
-Modify score for player1: subtract 50 kills.(킬점수에서 50을 뺀다.)
-Preserve trigger.
Conditions :
-player1 kills score is exactly 350.(플레이어1이 죽인 킬 스코어가
350 이라면)
Actions :
-Modify resources for player1 add 20 ore.(미네랄에 20을 더한다.)
-Modify score for player1: subtract 350 kills.(킬점수에서 350을 뺀다.)
-Preserve trigger.
*방법2
플레이어1의 킬 스코어가 1 이상 99 이내라면 10의 미네랄을 올리고, 100 이상 999이내라면 20의 미네랄 올리기.역시 죽일때마다 비교하기.
Conditions :
-player1 kills score is at least 1.
-player1 kills score is at most 99.
Actions :
-Modify resources for player1 add 10 ore.
-Modify score for player1: subtract 99 kills.(킬점수에서 99를 뺀다.)
-Preserve trigger.
Conditions :
-player1 kills score is at least 100.
-player1 kills score is at most 999.
Actions :
-Modify resources for player1 add 20 ore.
-Modify score for player1: subtract 999 kills.(킬점수에서 999를 뺀다.)
-Preserve trigger.
일반적으로는 위의 두가지 방법으로 적을 죽일때마다 자금을 올리는것을 생각해 볼수 있지만 첫번째 방법은 유닛과 건물의 종류가 너무
많은 관계로 트리거가 길어지는 단점이 있어서, 두번째 방법을 가장
많이 사용한다.
5. 자금을 다른 플레이어에게 보내는 방법
먼저 각 플레이어 마다 하나의 비콘을 만들고(색색별로 하나씩),
비콘위에 로케이션을 달아준다.
*경험치가 된다면 다른 플레이어에게 보내기.
Conditions :
-Current player brings at least 1 man to '노랑비콘(player2의 비콘)'.
-Current player kills score is at least 5000.
Actions :
-Modify score for current player: Subtract 5000 kills.
-Display for current player."경험치 5000을 플레이어2에게 줌니다."(생략가능)
-Modify score for player2: Add 5000 kills.
-Preserve trigger.
*경험치가 모자른다면 보넬수없다.
Conditions :
-Player1 brings at least 1 man to '노랑비콘(player2의 비콘)'.
-Current player kills score is at most 5000.
Actions :
-Display for current player."경험치가 모자라 경험치를 다른 플레이어에게 줄수 없습니다."(생략가능)
-Preserve trigger.
*어떤 플레이어의 경험치가 5000 이상이고 유닛이 교환비콘에 있다면 5000경험치와 100 미네랄을 교환하기.
Conditions :
-Current player brings at least 1 man to '교환비콘'.
-Current player kills score is at least 5000.
Actions :
-Modify score for current player: Subtract 5000 kills.
-Modify resources for current player: Add 100 ore.
-Preserve trigger.
6. 3초마다 미네랄 1씩 올리기
게임을 시작하면 플레이어1의 custom score를 0으로 만든다.
Conditions :
-Allways
Actions :
-Modify score for player1: Set to 0 custom.
게임을 시작하면 플레이어1의 custom score에 1씩 더한다.
Conditions :
-Allways
Actions :
-Modify score for player1: Add 1 custom.
custom score가 3 이되면 값을 초기화한다.
Conditions :
-Player1 custom score is at least 3.
Actions :
-Modify score for player1: Set to 0 custom.
custom score가 초기화 됫다면 미네랄에 1을 더한다.
Conditions :
-Player1 custom score is exactly 0.
Actions :
-Modify resources for player1 add 1 ore.
- Preserve trigger.
7. custom score를 응용한 다른 예제
만약 우리의 a라는 유닛옆에 xx시간동안 보조유닛이 생겼다가 사라지게 할려면,아래의 사항들을 먼저 생각해야 한다.
*. 무조건 작동하게 할것인지 아니면, 특정 레벨 또는 퀘스트를 깼을때부터 나오게 할것인지
*. 보조유닛이 나온뒤 몇초간 활동하게 할것인지 또한 몇초후 사라지게 할것인지
*. 보조유닛으로 어떤 유닛을 사용할것인지
*. 보조유닛이 나타날때 특정 효과를 사용할것인지(힐루시에이션?된
유닛이 사라질때처럼 구름 효과나 다른 효과가 나타나게 할것인지의
여부)
저글링 이라는 보조 유닛이 생겼다 사라지는 플레이어 1의 트리거
Conditions :
-Allways.(게임이 시작하면)
Actions :
-Center location labeled 'P1' on 히어로 owned by player1 at
'anywhere'(P1이라는 로케이션이 플레이어1의 히어로를 따라다니게
한다.)
-Preserve trigger.(계속해서 따라다니게 한다.)
Conditions :
-Allways.(게임이 시작하면)
Actions :
-Modify score for current player: Set to 0 custom.(플레이어1의 커스텀 스코어를 0으로 만든다.한번만 실행한뒤 사라지는 트리거임)
Conditions :
-Allways.(게임이 시작하면)
Actions :
-Modify score for current player: Add 1 custom.(플레이어1의 커스텀 스코어에 1씩 계속해서 더한다.Preserve trigger를 함계 사용하지
않아도 계속해서 반복함)
Conditions :
-Current player custom score is at least 10.(플레이어1의 커스텀 스코어가 10 이 되면)
Actions :
-Modify score for current player: Set to 0 custom.(커스텀 스코어를 0으로 만든다.)
-Preserve trigger.(이 위에 있는 트리거에 의해 0부터 1씩 더해 10
이 되면 다시 0 이 되기를 반복함)
Conditions :
-동맹컴터 brings at least 3 flag to "anywhere".(동맹컴터의 깃발이 3개 이상이라면,이는 퀘스트를 깰때마다 깃발이 하나씩 생기고,3개 이상이 있을때를 의미함)
-Current player brings exactly 0 히어로 to "main town".(플레이어1의 히어로가 main town에 없다면)
-Current player brings exactly 0 저글링 to "anywhere".(플레이어1의 저글링이 어디에도 없다면)
-Current player custom score is exaclty 0.(플레이어1의 커스텀 스코어가 0 이라면)
-적군 brings at least 1 man to "P1".(적군의 유닛이 플레이어1을 따라다니는 P1이라는 로케이션 속에 있다면,P1이라는 로케이션이 약간
커야겠죠.)
Actions :
-Create 1 저글링 at "P1" for current player.(플레이어1을 따라다니는 P1이라는 로케이션의 중앙에 그의 저글링 한마리를 만든다.)
-Preserve trigger.(같은 상황이라면 반복한다.)
Conditions :
-Current player brings at least 1 저글링 to "anywhere".(플레이어1의 저글링이 어딘가에 있고)
-Current player custom score is at least 5.(플레이어1의 커스텀 스코어가 5 이상이라면)
Actions :
-Remove all 저글링 for current player at "anywhere".(플레이어1의
저글링을 없앤다.)
-Preserve trigger.(같은 상황이라면 반복한다.)
스위치가 모든 플레이어를 제어하는 2진수라면, 커스텀 스코어는 플레이어 별로 제어 가능한 변수이며 10진수라 할수 있다.
즉 스위치는 on과 off의 두가지 상태만을 비교하고, 제어할수 있지만,Custom score는 score의 한 종류로 수십 수백가지 상태를 비교,제어할수 있다.
커스텀 스코어가 아닌 스위치와 타이머를 사용했다면,해당하는 플레이어만 생기는 것이 아니라 모든 플레이어에게 동시에 생기는 오류가 발생!
사실 트리거라는 것은 score와 switch 의 정확한 의미와 사용법 그리고 응용을 할 수 만 있다면, 다른건 전부 쉽다고 할 수 있다.
P.S
부르드 맵은 어떤 유닛을 하나씩 계속해서 만들도록 작성되어있다.
하지만 렉이 없는 상황에서 게임속도를 fast로 설정하고 게임 플레이
해본다면 대략 1초의 간격을 두고 저글링이 생성되는 것을 볼수있다.
이것으로 예상할수 있는것은, 트리거는 내용 전체를 메모리에 읽어
들인후 조건이 일치하는 것을 동시에 처리하며,읽어들여진 내용 전체를 반복해서 검사할때 대략 1초의 간격이 생긴다고 볼수있다.
이것이 맞다면,custom score에 add 1을 적용하고 Preserve trigger를 함께 사용한 목적이 변수값에 매초마다 1씩 누적 시키기 위함이라
할수있다.
첫댓글 캠페인이나 겹치기에디로 안되던데요..
ㄳ
다시 잘 해보시면 될겁니다....
저글링죽일때마다 돈 5씩 올라가는건 어케해요?
다크템플러영웅인 제라툴은 Hero란에 있는 닥템의 2배라고 압니다만.
위의 내용을 처음 작성한게 몇년전인데 아마 1.09패치 이전일겁니다. 킬스코어나 생산시의 스코어는 패치를 통해 바뀌었을수도 있고, 수치가 잘못 기재되어 있을수 있습니다. 궁금하신분은 직접 테스트 해보세요.
우연의 일치일 뿐이죠. 그러면 크립 콜로니가 120원이고 성큰 콜로니가 그 2배인 240원이라 해서 스포어 콜로니까지 240원이라는 것은 아니지요.