2013년 5월 7일 화요일

ARMA 커맨드 그룹 Briefing

미션 브리핑과 관련된 스크립트들로 현재 26종류이고 ARMA 2의 내용을 근간으로 ARMA 3를 기반으로 작성했다.

지난번과 마찬가지로 본문의 간혈적인 번역과 내 별거없는 저차원적인 예제들이 담겨있는 필기정리정도의 글이다.




기본적인 형태의 Task


미션에디터를 사용해서 task를 지정할 경우, 크게 3가지 요소를 활용하게 되는데 첫번째는 Unit(F1)이고, 두번째는 Modules(F7), 세번째는 Trigger(F3)이다.

유닛의 배치가 끝나면 모듈의 Create Task를 통해서임무의 기본적인 사항인 Task ID를 지정해주고 표시될 제목을 설정, 유저가 판단할 수 있는 간단한 설명과 마커를 설정한다.

그 뒤에 Set Task State로 각 상황, 그러니까 임무 성공, 실패 등을 생성해서 그 상황과 트리거등을 연결한뒤 그 다음 상황으로 연결될 수 있도록 링크(F5)해준다.
(유닛과 트리거는 그룹으로 연결하면 트리거에서 그 유닛에 특정된 Activation 메뉴를 사용할 수 있어서 편하다)

기본적으로 한 Task당 최소한의 모듈은 createTask, set Task State : Assigned, set Task State : Succeeded로 보인다.



http://community.bistudio.com/wiki/Category:Command_Group:_Briefing

createDiaryRecord

unitName createDiaryRecord parameters
unitName: Object
parameters: Array.
can be [subject, text(, task(, state))]
or [subject, [title, text](, task(, state))]
 
nul = this createDiaryRecord ["Diary", ["Text1", "Text2"]];
지도에서 볼 수 있는 항목에 세부 내용을 추가할 수 있다. Subject 부분이 Diary면 Briefing 부분에 추가된다.


createDiarySubject

person createDiarySubject [subject,display name] or [subject,display name,picture]
nul = this createDiarySubject ["Text1", "text2"];
지도 상의 목록에 새로운 항목을 만든다.


nul = this createDiarySubject ["Text1", "text2"];
nul = this createDiaryRecord ["Text1", ["Title", "Description"]];
이런식으로 새로 만들어진 항목에 createDiaryRecord를 활용해서 내용을 추가할 수도 있다.


createSimpleTask

Task = Object createSimpleTask Array
  • Array : ["임무"], ["임무", 상위임무 변수명]
task1 = this createSimpleTask ["Task1"];
task2 = this createSimpleTask ["Task2"];
task11 = this createSimpleTask ["Task1-1",task1];




자동으로 Task라는 항목이 생성되면서 지정한 이름으로 하위 항목이 생기고, 그 변수명을 사용해서 또 다시 하위 항목을 생성할 수 있다.


  • removeSimpleTask :  이 스크립트를 통해서 제거할 수 있다.
    person removeSimpleTask task 



  • taskParent : 상위 임무를 리턴한다.
    taskParent task
  • taskChildren : 하위 임무의 목록을 리턴한다
    taskChildren task
  • simpleTasks : 대상의 모든 임무를 배열로 리턴한다.
    simpleTasks person
    Return Value : Array

 


setCurrentTask

Object setCurrentTask Task
Object의 임무중 하나를 현재 활성화된 임무로 만든다.

  • currentTask : 현재 활성화된 임무를 리턴한다.
    currentTask person

task1 = this createSimpleTask ["TASK1"];
this setCurrentTask task1;
hint format["%1",currentTask this];

 

 

setSimpleTaskDestination

 task setSimpleTaskDestination position
임무의 목적지를 설정한다.

task1 = this createSimpleTask ["TASK1"];
task1 setSimpleTaskDestination getPos s1;
this setCurrentTask task1;

s1은 앞에 있는 병사의 변수명이다.
getPos는 물체의 위치값을 리턴받는다.
  • taskDestination task : 좌표값을 리턴 받는다.

    task1 = player createSimpleTask ["TASK"];
    task1 setSimpleTaskDestination getPos destination;
    getPos destination;
    taskDestination task1;


setSimpleTaskDescription

task setSimpleTaskDescription array 
  •  Array : [세부 설명,제목, 화면과 지도상에 간략히 표시되는 내용]

task1 = this createSimpleTask ["TASK1"];
task1 setSimpleTaskDestination getPos s1;
this setCurrentTask task1;
task1 setSimpleTaskDescription ["Description","Task Title","HUD"];
  • taskDescription : 위와 같은 Array로 해당 임무의 내용을 리턴받는다
    taskDescription task

 

setSimpleTaskTarget

task setSimpleTaskTarget [target, precisePosition]
  • precisePosition
    • true : 온전히 타겟의 위치가 나타남
    • false : 대상에 대한 파악정도에 따라 다름


task1 = this createSimpleTask ["TASK1"];
this setCurrentTask task1;
task1 setSimpleTaskDescription ["Description","Task Title","HUD"];
task1 setSimpleTaskTarget [s1, true];
  

setTaskState

 task setTaskState state
  • state
    • "Succeeded"
    • "Failed"
    • "Canceled"
    • "Created"
    • "Assigned"

    임무의 상태를 지정해주는 스크립트

    task1 = this createSimpleTask ["TASK1"];
    task1 setTaskState "Assigned";
  • taskState : 위 내용을 리턴합니다.
    taskState Task

 

 

setTaskResult

task setTaskResult [state,result] 
  • result : 스크립트등을 수행한다.

task1 = player createSimpleTask ["TASK"];
task1 setTaskResult ["Succeeded", hint "Clear"];
  • sendTaskResult : AI에게 명령을 하달한 뒤 그 결과를 반송한다
    task sendTaskResult [state,result,sentence]

 

currentTasks

 Array = currentTasks member
완료되지 않은 임무들의 목록이 리턴된다.



priority

priority task
임무의 우선순위를 리턴한다.


registerTask

새로운 임무 형태를 등록합니다. 세부사항들은 CfgTasks의 하위값으로 정의됩니다.
teamMember registerTask entry name

 

 

registeredTasks

해당유닛에게 등록된 모든 임무 타입들의 목록을 리턴합니다.
registeredTasks teamMember




createTask

새로운 AI용 임무를 만듭니다. Type은 등록된 임무 타입명이어야합니다.

teamMember createTask [[type] or [type, parentTask], priority, name1, value1, name2, value2, ...]


taskCompleted

임무 성공여부를 확인합니다.
taskCompleted task
  • Return Value : Boolean

 

taskHint

임무에 대한 기존방식의 알림이지만 ARMA 3형식을 유지하기 위해선 BIS_fnc_showNotification을 사용하길 권고하고 있다.

taskHint [hintText, [r,g,b,a], icon]

  • [r,g,b,a] : 색상
  • icon : taskNew, TaskDone, taskFailed, taskCurrent
taskhint ["Succeeded",[0,0,0,0],"taskDone"]

BIS_fnc_showNotification

ARMA 3의taskHint형태


[template,(arguments)] spawn BIS_fnc_showNotification;
  • template : CfgNotification (Ctrl + G)
  • arguments : Array
["ScoreAdded",["Added",5]] call BIS_fnc_showNotification;

unregisterTask

임무 형태를 등록해제시킵니다.

teamMember unregisterTask name



댓글 없음:

댓글 쓰기