lklslel2016.12.17 15:09

프로그래밍 언어마다 구문을 구분하는 괄호가

없는 경우도 있다는 점은 참고하시기 바랍니다.


몽롱하다님께서 말씀하신 부분은 속도적인 측면에서

직관적인 부분을 콕 집어내셨다고 할 수 있습니다.


for문을 일일이 실행하면서 1개의 값을

더하는 과정은 속도 저하로 이루어집니다.


몽롱하다님께서 쓰시려는 플러그인이 HIME_SelfVariables.js

인듯해서 스크립트를 받아서 쓰시려는 부분에 대해서 찾아보았습니다.

this.set_self_variable(NAME, VALUE, EVENT_ID)
this.get_self_variable(NAME, EVENTID)

쓰시는 부분이 eventID에 저장된 변수의

값을 더하는 부분인 듯하여 더 필요한

정보를 정리를 해보았습니다.



get / set_self_variable 함수는

각종 Interpreter 객체
Game_Player 객체
Game_Follower 객체
Game_Vehicle 객체
Game_Event 객체

의 인스턴스에서만 사용하실 수

있다는 점을 잊으시면 안됩니다.



다음은 사용하는 것이 가능한

변수들의 모음입니다.



$gamePlayer



$gamePlayer._followers._data[팔로워인덱스]

팔로워인덱스

팔로워중에 데이터를 처리할 팔로워의 인덱스번호



$gameMap._vehicles[차량타입]

차량타입

0 = 보트
1 = 배
2 = 비행선



$gameMap._interpreter



$gameMap._events[이벤트Id]

이벤트Id

맵에서 발생하는 각종 이벤트의 Id



위에 제가 정리해드린 부분과 각종 interpreter관련

변수들에서는 사용하실 수 있지만 이외에는 불가합니다.

현재 당장 생각하셔야 할 점은 다음과 같습니다.

1. 값을 찾기 원하는 변수명

2. 찾기 시작하는 변수의 인덱스 번호

3. 마지막으로 찾을 변수의 인덱스 번호

4. 원하는 기능을 구현하는 방법



을 생각하시고 나서 즉각적으로 쓰려고 하면

다음과 같이 작성하는 것이 제일 단순할 겁니다.

.setValue(146, this.get_self_variable("병렬처리대상", 1) + .................... + this.get_self_variable("병렬처리대상", 100))



이처럼 작성하실 수도 있지만 좀 더 간편하게

사용할 함수로 만들어보도록 하겠습니다.



function range_sum(object , variable_name , start_index , last_index){
var i, j, k, l,reg;
switch(true){
case (start_index != NaN && typeof start_index === "number" && last_index != NaN && typeof last_index != "number"):
//시작 인덱스 데이터가 숫자이고
//끝 인덱스 데이터가 숫자가 아니면
//끝 인덱스 데이터는 시작 인덱스 데이터와 같도록 설정합니다.
last_index = start_index;
break;
case (start_index != NaN && typeof start_index != "number" && last_index != NaN && typeof last_index != "number"):
//시작 인덱스와 끝 인덱스가 숫자가 아니면
//에러문을 찍어주고 강제로 종료합니다.
throw new Error('range_sum\'s\nparameter is incorrect.');
return false;
}
//j 는 합을 저장할 임시 변수입니다.
j = 0;
//k 는 단위 처리 갯수 변수입니다.
k = 10;
//l 은 전체 갯수를 k로 나누었을 때 발생한 나머지 값 변수입니다.
l = (last_index - start_index) % k;
switch(true){
case (last_index >= start_index):
//끝 인덱스가 시작 인덱스보다 클 때
for(i = start_index;i < (last_index - l) + 1;i += k){
j += object.get_self_variable(variable_name,i) + object.get_self_variable(variable_name,i + 1) + object.get_self_variable(variable_name,i + 2) + object.get_self_variable(variable_name,i + 3) + object.get_self_variable(variable_name,i + 4) + object.get_self_variable(variable_name,i + 5) + object.get_self_variable(variable_name,i + 6) + object.get_self_variable(variable_name,i + 7) + object.get_self_variable(variable_name,i + 8) + object.get_self_variable(variable_name,i + 9);
}
for(;i < last_index;i++){
j += object.get_self_variable(variable_name,i);
}
break;
case (last_index < start_index):
//끝 인덱스가 시작 인덱스보다 작을 때
for(i = last_index;i > (start_index + l) - 1;i -= k){
j += object.get_self_variable(variable_name,i) + object.get_self_variable(variable_name,i - 1) + object.get_self_variable(variable_name,i - 2) + object.get_self_variable(variable_name,i - 3) + object.get_self_variable(variable_name,i - 4) + object.get_self_variable(variable_name,i - 5) + object.get_self_variable(variable_name,i - 6) + object.get_self_variable(variable_name,i - 7) + object.get_self_variable(variable_name,i - 8) + object.get_self_variable(variable_name,i - 9);
}
for(;i > start_index - 1;i--){
j += object.get_self_variable(variable_name,i);
}
break;
}
return j;
};



사용방법의 예는 다음과 같습니다.

$gameVariables.setValue(146,range_sum($gamePlayer,"병렬처리대상",1,100));

 

※ $gamePlayer 는 다른 변수로 대체될 수 있습니다. ※




range_sum함수는 HIME_SelfVariables.js에

추가하시기 보다는 작성한 함수를 등록하는

플러그인을 하나 만드시면 되겠습니다.


그렇게까지는 못하시겠다면 다른 플러그인의

주석 부분 바로 뒤쪽에 붙여넣기 하시면 됩니다.


HIME_SelfVariables.js를 예로 들자면


Which will return true or false depending on what the value of the variable is.

-------------------------------------------------------------------------------
*/

//바로 여기에

var Imported = Imported || {} ;
var TH = TH || {};

파일 첨부

여기에 파일을 끌어 놓거나 파일 첨부 버튼을 클릭하세요.

파일 크기 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)