글로벌 변수 일정수치이상이 아닌것만 골라내는방법?

Global.BARIHP[Index Of Array Value(Global.BARI, First Of(Filtered Array(Global.BARI, Distance Between(Position Of(Event Player),
Current Array Element) <= 5)))] += Event Player.REPAIRBARIHP;
이런식으로 자기 근처 5범위내 있으면 수리되게 해놨는데
이거를 만약 BARI라는 변수값이 최대치인 200이 되면 200짜리는 수리 안되는걸로 200미만인것들만 할수있는방법이 있나요? ㅠㅠ

좋아요 2개

Modify Global Variable In Index의 경우 Index안에 여러개의 값이 들어갈수 없습니다. For이나 Loop명령어를 사용해야지 변경이 가능합니다.

아 그러면 FOR를 써서 저번에 알려주신방법대로 하면되겠네요?

rule(“Rule 1”)
{
event
{
Ongoing - Global;
}

action
{
For Global Variable(B, 0, Count Of(Global.A), 1);
If(Global.A[Global.B] != 0);
Global.A[Global.B] += 1;
End;
End;
}
}
요런식으로여
그런데 이렇게하게되면 모든 인덱스값이 오를텐데 한값만 올릴순없나요

For을 약간 다르게 이해하신것같기도 한데, for같은 경우 for과 for을 닫는 end명령어가 나오기 전의 그 사이의 모든 명령어를 차례대로 수행하고 다시 for이 있는 곳으로 가는데,

통제할 변수(for명령어의 첫번째 input)가 특정값(for명령어의 세번째 input)과 같거나 높/낮(4번째 Input의 부호에 따라 다름)을때 end다음의 스크립트로 넘어갑니다.

제시하신 스크립트는 다음과 같습니다.

for을 통해 변수 B를 0으로 일단 맞추고 변수 A의 갯수가 될때까지 (for의 end에 도달할때마다 변수 B를) 1씩 증가하도록 한다.

변수 A의 B번째 인덱스의 값이 0이 아니라면, 변수 A의 B번째 인덱스의 값을 1 증가하도록 한다.
//바로 위의 코드가 for동안 실질적으로 실행될 명령어인데, 이 명령어에 따르면 변수 A가 배열(0, 3, 2, 0)일때, 최종적으로 변수 B → 3, A → 배열(0, 4, 3, 0)이 되는 결과가 됩니다.

네 친절한 답변 감사드려요… 그런데 제머리로는 이해가 안되네요 ㅋㅋ ㅠ

mapped array를 사용하면 반복문 없이 액션 하나만으로 본문의 내용을 충분히 실행시킬 수 있습니다.