2013년 5월 18일 토요일

ARMA 커맨드 그룹 Groups

싱글 플레이에서 주로 쓰이고, 멀티에선 왠만해선 잘 쓰이지 않을 그룹에 대한 명령들이다. DayZ처럼 유닛들을 다양하게 생성해서 컨트롤해야한다면 편하게 쓰일 것 같다.



createGroup

그룹을 생성한다.
Group = createGroup side 

group1 = createGroup west;
group1 createUnit ["B_Soldier_F",(position this), [],2,"FORM"];
group1 createUnit ["B_Soldier_02_f",(position this), [],2,"FORM"];
group1 createUnit ["B_Soldier_03_f",(position this), [],2,"FORM"];
group1 createUnit ["B_Soldier_lite_F",(position this), [],2,"FORM"];

  • deleteGroup
    생성된 그룹을 삭제한다. 그룹 내에 멤버들이 남아 있으면 동작하지 않는다.
deleteGroup group

units

해당 그룹에 속해있는 유닛들의 목록을 리턴.
Array = units groupOrunit


group

해당 유닛이 속해있는 그룹을 리턴
Group = group object



grpNull

존재하지 않는 그룹. if문등으로 체크할때 쓰면 될 것 같다.
Group = grpNull



join

지정한 유닛들을 라디오 메세지로 특정 그룹으로 합류시킨다.
unitArray join group
player addAction ["Join","(units group1) join (group player)"];

  • joinSilent
    라디오 명령 없이 그룹으로 합류시킵니다.

    unitArray joinSilent group
player addAction ["Join","(units group1) joinSilent (group player)"];





selectLeader

해당 그룹의 리더를 선정한다.
groupName selectLeader unitName


  • leader
    해당 유닛이나 그룹의 리더를 리턴해준다.

    Object = leader unitName
    • unitName : Object or Group



effectiveCommander

해당 차량내에서 유닛들에게 명령을 내려서 실질적으로 차량을 컨트롤하는 유닛을 리턴
Object = effectiveCommander vehicle





formLeader

해당 유닛이 속해있는 그룹의 포메이션 리더를 리턴한다. 대체로 그룹 리더와 이 값이 같지만 그렇지 않을때도 있다.
Object = formLeader unitName
  • 사망시에는 objNull이 리턴된다.



formationLeader

포메이션 리더를 리턴한다.
Object = formationLeader unitName




isFormationLeader

해당 유닛이 포메이션 리더인지 여부를 리턴한다.
isLeader = isFormationLeader unit



setFormation

해당그룹의 포메이션을 설정한다.
group setFormation formation
  • "COLUMN"
  • "STAG COLUMN"
  • "WEDGE"
  • "ECH LEFT"
  • "ECH RIGHT"
  • "VEE"
  • "LINE"
  • "FILE"
  • "DIAMOND"
player addAction ["COLUMN", "group1 setFormation 'COLUMN'"];
player addAction ["STAG COLUMN", "group1 setFormation 'STAG COLUMN'"];
player addAction ["WEDGE", "group1 setFormation 'WEDGE'"];
player addAction ["ECH LEFT", "group1 setFormation 'ECH LEFT'"];
player addAction ["ECH RIGHT", "group1 setFormation 'ECH RIGHT'"];
player addAction ["VEE", "group1 setFormation 'VEE'"];
player addAction ["LINE", "group1 setFormation 'LINE'"];
player addAction ["FILE", "group1 setFormation 'FILE'"];
player addAction ["DIAMOND", "group1 setFormation 'DIAMOND'"];



formation

해당그룹의 포메이션명을 리턴.
String = formation grp




formationDirection

해당유닛의 포메이션이 보고 있는 방향을 리턴.
Number = formationDirection unitName




formationMembers

해당 유닛이 속해있는 포메이션의 전체 유닛들을 목록으로 리턴.
Array = formationMembers person




formationPosition

해당 유닛이 속해있는 포메이션의 포지션을 리턴.
Array = formationPosition person




addSwitchableUnit

생성된 유닛중 플레이가 가능한 유닛으로 지정한다.selectPlayer를 통해서 유닛의 전환이 가능하지만 몇가지 제역사항이 있다.
addSwitchableUnit unitName
group1 = createGroup west;
group1 createUnit ["B_Soldier_F",(position this), [],2,"FORM"];
group1 createUnit ["B_Soldier_02_f",(position this), [],2,"FORM"];   
group1 createUnit ["B_Soldier_03_f",(position this), [],2,"FORM"];   
group1 createUnit ["B_Soldier_lite_F",(position this), [],2,"FORM"];
switch1 = ((units group1) select 0);
addSwitchableUnit switch1;
selectPlayer switch1;

removeSwitchableUnit unitName



Array = switchableUnits

  • enableTeamSwitch
    스위치 가능 여부를 설정한다.
    enableTeamSwitch enable



commandTarget

라디오를 통해서 타겟을 지정한다.
unitName commandTarget target
  • doTarget : 타겟 지정을 라디오를 통한 명령없이 한다.
    • unit(s) doTarget target
  • assignedTarget : 해당 유닛에게 지정된 타겟을 리턴한다
    • Object = assignedTarget vehicleName 




commandFire

라디오를 통해서 공격명령을 내린다. 만약 타겟이 사라지거나 objNull을 지정하면 doTarget이나 CommandTarget으로 지정한 현재의 타겟을 공격한다. 강제성이 있어서 아군 유닛도 사살한다.사거리 내에 있지 않으면 발포하지 않는다.
unitName commandFire target
  • unitName : Object or Array
  • target : Object

  • doFire : 라디오로 명령하는 것이 아닌 직접 명령으로 발포명령을 내린다. 먼저 doTarget을 지정해놓는 편이 좋다고 한다.
    • unitName doFire target 
      • unitName : Object or Array
trigger1 = createTrigger["emptyDetector",getpos player];
trigger1 setTriggerActivation["ALPHA","PRESENT",true];
trigger1 setTriggerStatements["this", "(units (group player))commandTarget cursorTarget",""];
trigger2 = createTrigger["emptyDetector",getpos player];
trigger2 setTriggerActivation["BRAVO","PRESENT",true];
trigger2 setTriggerStatements["this", "(units (group player))commandFire objNull",""];
1 setRadioMsg "Target";
2 setRadioMsg "Fire";




commandFollow

라디오 명령으로 특정 유닛을 따라오도록 만듭니다.
unitName commandFollow followedunit
  • doFollow
    라디오 명령 없이 따라오도록 설정합니다.
    • unitName doFollow unitName2


trigger1 = createTrigger["emptyDetector",getpos player];
trigger1 setTriggerActivation["ALPHA","PRESENT",true];
trigger1 setTriggerStatements["this", "unit1 commandFollow player",""];
1 setRadioMsg "Follow Player";




commandFSM

라디오로 FSM 파일을 실행하도록 명령합니다.
unitName commandFSM [fsm name, position, target] 




commandGetOut

차량에서 내리도록 라디오로 명령한다. 라디오 없이는 doGetOut을 쓴다.
commandGetOut unitName




commandMove

특정지점으로 이동하도록 명령한다. 라디오 없이는 doMove를 사용한다.
unitName commandMove position





commandStop

행동을 멈추도록 라디오로 명령한다. 라디오 없이는 doStop을 쓴다.
commandStop unitName
  • stopped : 유닛이 멈췄는지 체크한다
  • stop : AI 유닛을 정지시킨다.





commandWatch

특정 지역이나 객체를 지켜보도록 설정한다. target에 objNull을 지정하면 주시하는 것을 멈추도록 명령하는 것이 된다.
unitName(s) commandWatch position
unitName(s) commandWatch target



assignTeam

해당 유닛을 정해진 팀으로 지정한다.
vehicleName assignTeam team
  • vehicleName : Object
  • team : String
    • "MAIN"
    • "RED"
    • "GREEN"
    • "BLUE"
    • "YELLOW"

assignedTeam

해당 유닛이 속해있는 팀의 색상을 리턴 
assignedTeam unitName




unassignTeam

해당 유닛에게 지정된 팀을 해제시킨다. "MAIN"으로 설정하는 것과 같다.
unassignTeam vehicleName




dissoveTeam

해당 색상의 팀을 없앤다. 해당 팀의 유닛들을 모두 "MAIN"으로 설정하는 것과 같다.
dissolveTeam teamColor

댓글 없음:

댓글 쓰기