메뉴 건너뛰기

창조도시 기록보관소

RPG2K 맵상 랜덤엔카운트 제어 이벤트

2008.01.12 23:32

Evangelista 조회 수:760 추천:8

2K, XP 범용으로 사용가능합니다.


아마 VX에서도 사용할 수 있을 겁니다.


 


이하의 구문을 사용하시면 랜덤엔카운트를 맵DB로 설정하지 않고도 사용할 수 있습니다.


...근데 200x에 보수 변수 사용 가능하죠? 기억이 안나네...


하여간 이 테크닉의 장점은 스위치에 따라 맵에 등장하는 적을 다르게 할 수 있다는 것입니다.


 


이벤트 = 병렬처리


변수의 조작 : [000x : 변수A] = 보수


커먼 이벤트 : 이동판정할 커먼이벤트


조건분기 : 변수 [000y : 변수 B] < 변수 [000x : 변수A]


  변수의 조작 : [000z : 변수 C] = 난수 (확률값)


  조건분기 : 변수 [000z : 변수 C] == v(n1)


    조건분기 : 변수 [000w : 변수 D] == 1


      전투의 처리 : 랜덤 에너미 트루프


      변수의 조작 : [000y : 변수 B] = 보수


      변수의 조작 : [000y : 변수 B] += 임의의 숫자


    분기 종료


  분기 종료


  조건분기 : 변수 [000z : 변수 C] == v(n2)


이하는 해당 맵에 등장시킬 에너미 트루프 숫자만큼 추가


  분기종료


  대기 : 5프레임


그 외의 경우


  대기 : 5프레임


분기종료


 


사용법


변수 A : (마지막 엔카운트의 보수 + 엔카운트를 몇 보 후에 할 것인가)와 비교하여 엔카운트 확률 계산 가부를 판정하는 변수


변수 B : 마지막 엔카운트 보수 + 엔카운트를 몇 보 후에 할 것인가


변수 C : 보수 조건을 충족했을 때 엔카운트의 확률을 실시간으로 계산


변수 D : 이동판정플래그. 아래에서 설명


난수(확률값) : 엔카운트 확률계산. 확률은 (등장 에너미 트루프 숫자 / 확률값)


랜덤 에너미 트루프 : 변수C에 조건을 충족하였을 때 각각 등장할 에너미 그룹


변수B에 들어가는 임의의 숫자 : 몇 보 후부터 엔카운트 확률계산을 시작할 것인가


이후 붉은 부분을 해당 맵에 등장할 에너미 트루프 수만큼 추가.


당연히 v(n1)의 숫자는 서로 다르게 해야 계산이 가능. v(n1)은 난수값 범위 내에서 하여야 계산됨.


 


커먼이벤트로 이동플래그 제어


커먼이벤트 (시작조건 없음)


조건분기 : 버튼 아래가 눌려져 있다


  변수의 조작 : [000w : 변수D] == 1


  그 외의 경우


    조건분기 : 버튼 왼쪽이 눌려져 있다


    변수의 조작 : [000w : 변수D] == 1


    그 외의 경우


      조건분기 : 버튼 오른쪽이 눌려져 있다


      변수의 조작 : [000w : 변수D] == 1


      그 외의 경우


        조건분기 : 버튼 위가 눌려져 있다


        변수의 조작 : [000w : 변수D] == 1


        그 외의 경우


          변수의 조작 : [000w : 변수D] == 0


      분기 종료


    분기 종료


  분기 종료


분기 종료


 


알고리즘


이동시에는 변수D값에 1을, 이동시가 아닐 때에는 변수D값에 0을 넣습니다.


맵상 랜덤엔카운트를 실행할 때에만 호출하므로 병렬처리하지 않습니다.


 


 


 


전체알고리즘


현재 이동중일 때 상기한 이벤트를 병렬처리시켜 보수와 확률을 계산하여 지정한 에너미 트루프와 랜덤엔카운트하게 합니다. 이동하지 않을 때에는 엔카운트하지 않습니다.


 


 


 


기본이벤트 (병렬처리)



 


커먼이벤트 : 실행조건없음(호출로만 실행)



 


 


2K라서 보수를 계산할 수 없는 경우













변수값을 E,F,G세 개 만든 후 현재 X좌표와 Y좌표를 각각 하나씩에 대입한 후


E, F변수에 병렬처리로 계속 X, Y를 집어넣습니다.


변수값 H, I를 만든 후 배틀 직후에만 계산되도록 H와, I값에 배틀 직후 X좌표, Y좌표를 집어넣습니다.


E변수와 H변수를 비교


F변수와 I변수를 비교.


조건분기로,


변수E가 1개 변동했을 때 남은 변수값 G에 +1


변수F가 1개 변동했을 때 남은 변수값 G에 +1


 


변동했다는 것은 +1이건 -1이건 하여간 변했다는 뜻입니다.


논리값 '이외'를 사용하면 될 겁니다. 아마도...


 


이런 식으로 사용하변 됩니다.


그럼 랜덤엔카운트 제어에 사용했던 보수 대입 변수값을 변수 G로 사용할 수 있습니다.


여기엔 E와 F는 병렬처리로 돌려주고


H와 I는 본 이벤트의 G변수값 처리 직전에 처리해야 합니다.