이번에 작성한 스크립트는 예전에 아방스님이 올려주셨던 장비 확장 스크립트를 울궈먹었던
장비장착을 통한 스킬 습득 및 삭제 스크립트를 독립적으로 제작해보았습니다.
그 결과, 장비 장착 쪽이 잘 안되서 아예 메뉴란에 새로 등록해서 아이템을 장착하는 방향으로
가닥을 잡았습니다.
이 아이템들은 메모란을 통해서 속성치를 작성할 수 있으며 이 속성치에 따라 액터의 속성치 (스크린 샷
에서 얼굴 밑에 써있는 것들...)가 변하며 이를 통해 스킬이 습득되거나 삭제되는 스크립트 입니다.
사용법
1. 설정항목을 잘 설정한다;;;;
사실상 모든 스크립트가 그렇듯이 설정항목을 잘 설정하고 넘어갑니다.
module Imir_ExtraSkills
ExtraSkills = []
ActorEquips = []
SkillMax = 8
ActorMax = 10
VOCAB = "아츠 장착"
Vocab_Equip = "장비하기"
Vocab_Unequip= "해제하기"
Vocab_Cancel = "그만하기"
DISPLAYED_ELEMENTS = [1,2,3,4,5,6,7,8,9,10]
def self.element_icon(element_id)
case element_id
when 1; 116 # 물리
when 2; 113 # 흡수
when 3; 96 # 불꽃
when 4; 97 # 얼음
when 5; 98 # 번개
when 6; 99 # 물
when 7; 100 # 땅
when 8; 101 # 바람
when 9; 102 # 빛
when 10; 103 # 어둠
end
end
def self.element_name(element_id)
case element_id
when 1; "물리"
when 2; "흡수"
when 3; "불꽃"
when 4; "얼음"
when 5; "번개"
when 6; "물"
when 7; "땅"
when 8; "바람"
when 9; "빛"
when 10; "어둠"
end
end
for i in 1..ActorMax
ActorEquips[i] = [0, 0, 0, 0, 0, 0]
end
ActorEquips[1] = [1, 0, 0, 0, 0, 0]
for i in 1..SkillMax
ExtraSkills[i] = [nil, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
end
ExtraSkills[1] = [nil, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 76]
# 물리 1, 불꽃 1 => 76. 파이어 웨폰. 특기 계열.
ExtraSkills[2] = [nil, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 49]
# 흡수 2 => 49. 라이프 드레인. 마법 계열.
ExtraSkills[3] = [nil, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 53]
# 불꽃 3 => 53. 플레임. 마법 계열
ExtraSkills[4] = [nil, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 57]
# 얼음 4 => 57. 블리자드. 마법계열
ExtraSkills[5] = [nil, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 61]
# 번개 5 => 61. 스파크. 마법계열
ExtraSkills[6] = [nil, 3, 0, 0, 0, 0, 0, 0, 0, 0, 2, 73]
# 물리 3, 어둠 2 => 73. 버스트. 마법계열
ExtraSkills[7] = [nil, 5, 0, 0, 0, 0, 0, 0, 0, 0, 5, 74]
# 물리 5, 어둠 5 => 74. 뉴클리어. 마법계열
ExtraSkills[8] = [nil, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 72]
# 어둠 4 => 72. 다크니스. 마법계열
end
이 설정항목을 자세히 살펴보면
SkillMax = 8
이건 이 스크립트로 습득가능한 스킬의 최대치를 설정하고,
ActorMax = 10
이건 작성중인 프로젝트의 등장 액터 수를 써넣는 겁니다. ( 실제 액터 수와 일치해야합니다. )
DISPLAYED_ELEMENTS = [1,2,3,4,5,6,7,8,9,10]
이 부분들은 프로젝트에서 사용할 속성치의 설정입니다.
예제에서는 1부터 10까지 총 10개를 사용합니다.
def self.element_icon(element_id)
case element_id
when 1; 116 # 물리
when 2; 113 # 흡수
when 3; 96 # 불꽃
when 4; 97 # 얼음
when 5; 98 # 번개
when 6; 99 # 물
when 7; 100 # 땅
when 8; 101 # 바람
when 9; 102 # 빛
when 10; 103 # 어둠
end
end
각 속성에 맞는 아이콘 번호입니다. 아이콘 셋이 다르다거나 다른 모양으로 하고 싶으신분들은
다시 설정해주세요.
def self.element_name(element_id)
case element_id
when 1; "물리"
when 2; "흡수"
when 3; "불꽃"
when 4; "얼음"
when 5; "번개"
when 6; "물"
when 7; "땅"
when 8; "바람"
when 9; "빛"
when 10; "어둠"
end
end
각 속성들 이름입니다. 적당히 알아서 붙여주시면 됩니다.
for i in 1..ActorMax
ActorEquips[i] = [0, 0, 0, 0, 0, 0]
end
ActorEquips[1] = [1, 0, 0, 0, 0, 0]
이 부분은 액터가 초기 장비로 장착하고 나오는 아이템을 설정하는 부분입니다.
예제에서는 최대 장비수치를 여섯개로 잡았기 때문에 0이 여섯개 들어있는 배열이며
1번액터는 1번 아이템을 장착하고 있네요. 0은 빈칸입니다.
for i in 1..SkillMax
ExtraSkills[i] = [nil, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
end
ExtraSkills[1] = [nil, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 76]
# 물리 1, 불꽃 1 => 76. 파이어 웨폰. 특기 계열.
이 부분은 이 스크립트를 사용해 습득 가능한 스킬들의 습득 조건과 습득 스킬을 설정하는 부분입니다.
위에서 본 것처럼 10개의 속성치를 사용하기 때문에 배열이 12칸입니다. (0번은 nil이고 11번이 스킬ID )
ExtraSkills[1]의 숫자는 이 장부의 순서입니다. 딱히 중요하지는 않으니까 연속적이고 겹치지
않게 차분히 나열하면 됩니다.
예제에 따르면 1번은 1번 속성치 1이상, 3번 속성치 1이상일 때 76번 스킬을 습득할 수 있다고 설정되어 있습니다.
밑에 주석을 달아두면 해석하기 용이하겠지요.
2. 액터, 직업, 아이템의 메모란에 기입한다.
<element:A,B>
A는 속성치 순번이고, B는 수치량입니다.
EXA) 액터의 초기 속성 수치를 3번 속성을 5, 4번 속성을 3으로 설정하고 싶다.
액터의 메모란에 가서
<element:3,5><element:4,3>
이렇게 기입하면 됩니다.
기입 가능한 장소는 액터의 메모란, 직업의 메모란, 아이템의 메모란입니다. 무기나 방어구는
사용하지 않습니다.
!!주의사항!!
이 스크립트를 사용할 시, 스크립트로 습득할 스킬들은 액터가 레벨업이나 특정이벤트를 통해 습득하는
스킬들과는 다르게 설정해 주는 게 중요합니다.
이 스크립트는 스크립트 작성 취지에 맞게, 장비를 장착해서 속성치가 조건에 만족하면 스킬을 습득하지만
만족하지 못하면 다시 스킬이 삭제되는 구조를 가지고 있습니다.
즉, 장비장착으로 습득한 스킬과 ( 레벨업 혹은 특정 이벤트) 를 통해 습득하는 스킬이 같다면
장비를 장착하면서 없어질 수 있습니다.
주의해주세요.