후우. 간신히 완성했네 ㅇㅅㅇ;
아방스에 올라와있는 아이템 합성 스크립트는
제가 만든 상점 변환 식과 Mr.Bubble님의 택틱스 오우거 PSP 버전 두가지인데
제가 만든 상점 변환식은 좀 어설프고 Mr. Bubble님의 택틱스 오우거 PSP 버전을
애용하고 있었습니다.
(약간 손본 스크립트를 올려볼까 생각도 하고 있습니다.
원본은 멀티플레이가 아닌 이상 성공률이 의미 없다고 생각하셔서 무조건 성공인데
성공률을 추가하고 실패시 획득 아이템과 대성공 획득아이템을 설정한다든지 약간 손봤었습니다. )
그런데 이런 스크립트는 합성에 레시피가 필요합니다. 이는 장점이기도 하지만 제 생각에 단점인 측면도
있다고 생각했습니다. 이를 테면 자유도 같은 측면이지요. 좀더 정확히 말하자면 레시피가 없이 마구잡이로
섞어서 합성해보고 싶은 생각이 있었기에 단점으로 보였을 겁니다.
그래서 이 스크립트를 만들었습니다. 일명 노레시피 아이템 합성 스크립트 입니다.
사용법
1. 설정항목을 설정합니다.
module Imir_MixItem
Recipe = []
RecipeMax = 3
NildataID = 17
Vocab_Mix = "합성개시"
Vocab_Cancel = "그만하기"
Vocab_Conti = "계속하기"
Recipe[1] = {
:item => [1, 2],
:weapon => [],
:armor => [],
:object => [1, 3],
}
Recipe[2] = {
:item => [],
:weapon => [1, 2],
:armor => [],
:object => [2, 3],
}
Recipe[3] = {
:item => [1],
:weapon => [1],
:armor => [],
:object => [3, 3],
}
end
NildataID = 17 는 빈칸을 나타내는 아이템 id입니다. 예제를 보면 아시겠지만
17번 아이템은 내용은 없이 이름만 ----------입니다. 스샷에서 처럼 빈칸 대신 들어가게 됩니다.
Recipe[3] = { #<- 숫자는 순번을 나타내기 때문에 겹치지 않게 설정해주면 됩니다.
:item => [1], #<- 필요한 아이템의 id입니다. 여러개 설정할 수 있습니다.
:weapon => [1], # <- 필요한 무기의 id입니다.
:armor => [], # <- 필요한 방어구의 id입니다.
:object => [3, 3], #<- 합성 결과물의 배열입니다.
}
합성결과물은 앞이 종류 뒤가 id입니다. 1이 아이템, 2는 무기 3은 방어구입니다.
exa) 무기 23번, 룬블레이드를 습득하게 하고 싶다.
:object => [2, 23], # <- 이렇게 쓰시면 됩니다. 한번에 하나만 습득할 수 있습니다.
2. 이벤트의 스크립트에서
SceneManager.call(Scene_MixItem)
SceneManager.scene.prepare(3)
이렇게 써넣습니다. SceneManager.scene.prepare(3) 의 숫자는 빈칸의 개수입니다.
즉, 3이면 한번에 최대 3개의 아이템을 합성할 수 있고
5를 써넣으면 한번에 최대 5개의 아이템을 합성할 수 있게 됩니다.
3. !!주의!! 사용법이 조금 애매합니다;;;
이벤트를 열면 합성 창이 활성화 됩니다. 이를 선택하면 오른쪽에 카테고리 창이 활성화 되고
선택하면 아래 아이템 창이 활성화 됩니다. 여기서 선택하면
두번째 스샷처럼 왼쪽에 아이템이 자리잡게 됩니다.
합성창에 아이템들이 모두 자리잡게 되면 취소 버튼을 누릅니다.
그럼 왼쪽 위의 합성하기 커맨드가 활성화 됩니다.
여기서 합성하기를 선택하면 합성이 진행되고 그만하기를 누르면 이벤트에서 빠져나갈 수 있습니다.
유용하게 사용해주세요.
P.S 케에데 님의 제보로 버그를 발견, 수정했습니다.
일단 버그 수정 파일을 첨부파일로 갱신했으며
새로 예제를 받기 귀찮으신 분들은 Scene_MixItem ** 에서
#--------------------------------------------------------------------------
# ● 아이템 선택[결정]
#--------------------------------------------------------------------------
def on_item_ok
if @item_window.item == nil_item
if @list_window.item != nil_item
$game_party.gain_item(@list_window.item, 1, false)
end
@list_window.set(nil_item, @list_window.index)
else
if @list_window.item != nil_item
$game_party.gain_item(@list_window.item, 1, false)
end
$game_party.lose_item(@item_window.item, 1, false)
@list_window.set(@item_window.item, @list_window.index)
end
@list_window.activate
refresh
end
위와 같은 함수를 찾아 파란색 부분을 추가해주시면 됩니다.