아이템

VXAce 아이템 채집 스크립트

by 아이미르 posted Nov 23, 2012
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

VXAce 아이템 채집 스크립트 1.JPG VXAce 아이템 채집 스크립트 2.JPG VXAce 아이템 채집 스크립트 3.JPG

 

이번에 만든 스크립트는 아이템 채집 스크립트 입니다.

 

허걱님의 VX 셀프변수 스크립트를 어떻게 ACE용으로 바꿔서 아이템 채집을 구현해보려고 했는 데

 

단지 데이터 저장만 VX식에서 ACE식으로 바꾸는 걸로 좀 부족하더라고요.

 

그래서 아예 내친김에 채집 전용 Scene을 만들었습니다 oTz

 

 

 

사용법.

 

1. 모듈에 채집 타입을 설정한다.

 

module Imir_GatherItem
 
  GatherItem = []
  GatherSE = []
 
  GatherTypeMax = 2    # 채집 타입의 최대값
  UseTool       = false # 채집도구를 소모할까?
                        # true : 소모, false : 소모하지 않음
 
  for i in 1..GatherTypeMax
    GatherItem[i] = []
    GatherItem[i][1] = 0  # 채집도구 아이템 id
    GatherItem[i][2] = 0  # 시도가능 횟수
    GatherItem[i][3] = 0  # 시도가능 횟수 충전 term
    GatherItem[i][4] = [] # 채집물 아이템 배열
    GatherItem[i][5] = [] # 채집물 아이템 획득 확률 %
   
    GatherSE[i] = ["Bell2", 80, 100]
                #파일이름, 볼륨, 피치
  end
 
  GatherItem[1] = []
  GatherItem[1][1] = 20        # 채집도구 아이템 id
  GatherItem[1][2] = 3         # 시도가능 횟수
  GatherItem[1][3] = 60       # 시도가능 횟수 충전 term
  GatherItem[1][4] = [19, 21]  # 채집물 아이템 배열
  GatherItem[1][5] = [50, 100] # 채집물 아이템 획득 확률 %

 

end

 

 UseTool에서 채집 도구의 소모가능을 설정하고, GatherItem 배열을 설정합니다.

 

옆에 잘 써두긴 했습니다만 다시 살펴보면

 

GatherItem[type][id] type은 채집 타입입니다. 구분하기 위한 키입니다.

 

GatherItem[type][1] 은 채집도구의 id입니다. 아이템id 입니다. GatherItem[1][1] = 20는

 

1번 채집타입은 20번아이템을 필요로 한다는 뜻입니다.

 

GatherItem[type][2] 는 채집가능 최대횟수입니다. GatherItem[1][2] = 3는

 

1번 채집타입은 3회 채집가능하다는 뜻입니다. 3회 채집을 다하고 나면

 

다시 채워질때까지 위의 스샷처럼 채집 불가라고 뜹니다.

 

GatherItem[type][3] 은 횟수가 채워지는 딜레이입니다. 단위는 초sec입니다.

 

GatherItem[1][3] = 60 는 1번 채집타입은 1회 채워지는 데 60초 걸린다는 뜻입니다.

 

GatherItem[type][4] 는 채집시도시 습득가능한 아이템id의 배열입니다.

 

GatherItem[1][4] = [19, 21]는 1번 채집타입은 19번아이템과 21번 아이템을 습득할 수 있다는 겁니다.

 

GatherItem[type][5] 은 습득가능 확률입니다. 정수이며 퍼센트입니다. 위의 아이템 배열과 같은 순서를 따릅니다.

 

GatherItem[1][5] = [50, 100] 은 19번 아이템은 습득확률이 50%이고 21번 아이템은 습득확률이 100%라는 뜻입니다.

 

 

 

2. 맵의 이벤트, 스크립트에서

 

$game_gatheritem.setup_gatherset(map_id, event_id, gather_type)를 설정해줍니다.

 

사실 map_id와 event_id에 다른 값을 넣어도 상관없습니다만 헷갈리기 쉬운 관계로

 

(채집 이벤트를 많이 배치하면 할수록 헷갈리기 쉬워지겠지요;;;)

 

찾기 쉬운 키값으로 맵id와 이벤트id를 넣어주시는 게 편합니다.

 

예를 들어,

 

채집 이벤트를 1번맵에 2번이벤트에 채집타입 1번을 배치하려고 한다.

 

면 $game_gatheritem.setup_gatherset(1, 2, 1)을 미리 실행시킵니다.

 

예제에서는 왼쪽 상단부에 자동실행 이벤트에 스크립트로 실행하도록 이벤트를 작성했습니다.

 

 

 

3. 채집 이벤트를 배치합니다.

 

위의 예를 들어

 

1번 맵에 2번 이벤트를 적당한 위치에 배치한뒤

 

스크립트 란에

 

SceneManager.call(Scene_Gather)
SceneManager.scene.prepare(1,2)

 

를 기입해 줍니다.

 

여기서 위에 목표로한 키값과 일치하도록 잘 설정해주세요.

 

예제에서는 힌트를 주기 위해 이벤트를 하나 더 배치하고 아이템 습득을 이벤트 기동조건으로

 

설정했습니다만, 실은 채집도구 아이템을 갖고 있지 않으면

 

위의 스샷처럼 채집불가 라고 뜨게 되어 있습니다.

 

 

4. !!주의!!

 

채집결과 윈도우의 사이즈 한계상 한번에 3개이상 아이템 채집을 성공할 경우

 

 윈도우에 표시되지 않을 수 있습니다. 주의해주세요.

 

 

 

 

Who's 아이미르

?

허루쿠... 임용고시 공부해야되는데 이러고 있다....

 

알만툴의 중독성은 쩔어준다는;;;