Ace 스크립트

질문란에 올라온 걸 보고 패시브 스크립트를 응용해서 고심해서

 

만들어봤습니다.

 

딱히 셋트 장비를 장착한 걸 직접적인 효과 이외에 보여주는 장치는 마련하지 못한 관계로

 

이번엔 스크린 샷이 없네요;;

 

바로 사용법으로 들어갑니다.

 

 

 

 

 

!! 사용법 !!

 

1. 설정항목을 잘 설정한다.

 

module Imir_SetEffect
 
  EquipSet = []
 
  EquipSetMax   = 3   # 설정할 셋트의 최대치
  ElementsMax   = 10  # 용어 - 속성 의 최대치
  StatesMax     = 27  # 상태 의 최대치
  SkillTypeMax  = 2   # 용어 - 스킬타입 의 최대치
  SkillMax      = 128 # 스킬 의 최대치
  WeaponTypeMax = 10  # 용어 - 무기타입 의 최대치
  ArmorTypeMax  = 6   # 용어 - 방어구타입 의 최대치
 
  #==================================================================
  # 기본 데이터 셋팅
  #==================================================================
 
  for i in 1..EquipSetMax
    EquipSet[i] = {}
    EquipSet[i][:weapons] = []
    EquipSet[i][:armors] = []
   
    EquipSet[i][:param] = []
    EquipSet[i][:paramrate] = []
    EquipSet[i][:bfre] = []
    for param_id in 0..7
      # 0:mhp, 1:mmp, 2:atk, 3:def, 4:mat, 5:mdf, 6:agi, 7:luk
      EquipSet[i][:param][param_id] = 0     # 스텟증감
      EquipSet[i][:paramrate][param_id] = 0 # 스텟비율증감
      EquipSet[i][:bfre][param_id] = 0      # 약화내성
    end
   
    EquipSet[i][:xparam] = []
    EquipSet[i][:sparam] = []
    for param_id in 0..9
      # xparam
      # 0:hit, 1:eva, 2:cri, 3:cev, 4:mev, 5:mrf, 6:cnt, 7:hrg, 8:mrg, 9:trg
      # sparam
      # 0:tgr, 1:grd, 2:rec, 3:pha, 4:mcr, 5:tcr, 6:pdr, 7:mdr, 8:fdr, 9:exr
      EquipSet[i][:xparam][param_id] = 0
      EquipSet[i][:sparam][param_id] = 0
    end
   
    EquipSet[i][:elre] = []
    EquipSet[i][:atel] = []
    for element_id in 1..ElementsMax
      EquipSet[i][:elre][element_id] = 0 # 속성내성
      EquipSet[i][:atel][element_id] = 0 # 공격속성 
    end
   
    EquipSet[i][:stre] = []
    EquipSet[i][:stno] = []
    EquipSet[i][:atst] = []
    for state_id in 1..StatesMax
      EquipSet[i][:stre][state_id] = 0 # 상태내성
      EquipSet[i][:stno][state_id] = 0 # 상태무효
      EquipSet[i][:atst][state_id] = 0 # 공격상태
    end
   
    EquipSet[i][:atsp] = 0 # 공격속도
    EquipSet[i][:atnu] = 0 # 공격횟수
   
    EquipSet[i][:skty] = []
    EquipSet[i][:skts] = []
    for skilltype_id in 1..SkillTypeMax
      EquipSet[i][:skty][skilltype_id] = 0 # 스킬타입 추가
      EquipSet[i][:skts][skilltype_id] = 0 # 스킬타입 봉인
    end
   
    EquipSet[i][:skpl] = []
    EquipSet[i][:skse] = []    
    for skill_id in 1..SkillMax
      EquipSet[i][:skpl][skill_id] = 0 # 스킬 추가
      EquipSet[i][:skse][skill_id] = 0 # 스킬 봉인
    end
   
    EquipSet[i][:wety] = []    
    for wtype_id in 1..WeaponTypeMax
      EquipSet[i][:wety][wtype_id] = 0 # 무기타입 추가
    end
   
    EquipSet[i][:arty] = []    
    for atype_id in 1..ArmorTypeMax
      EquipSet[i][:arty][atype_id] = 0 # 방어구타입 추가
    end
   
    EquipSet[i][:eqfx] = []    
    EquipSet[i][:eqse] = []    
    for equip_id in 0..4 #.equip_slots.size
      EquipSet[i][:eqfx][equip_id] = 0 # 장비고정   
      EquipSet[i][:eqse][equip_id] = 0 # 장비봉인   
    end

    EquipSet[i][:dbwp] = 0 # 이도류
   
  end
 
  #==================================================================
  # 세트 장비 설정
  #==================================================================
 
  EquipSet[1][:weapons] = [1]
  EquipSet[1][:armors] = [1]
  EquipSet[1][:param][0] = 1000
  EquipSet[1][:paramrate][1] = 10
  EquipSet[1][:xparam][2] = 100
  EquipSet[1][:sparam][3] = 100
 
  EquipSet[2][:armors] = [1, 51]
  EquipSet[2][:param][0] = -500
  EquipSet[2][:elre][3] = 100
  EquipSet[2][:stno][7] = 1
 
  EquipSet[3][:weapons] = [12]
  EquipSet[3][:armors] = [1]
  EquipSet[3][:atst][8] = 100
  EquipSet[3][:atnu] = 10
  EquipSet[3][:skts][1] = 1
  EquipSet[3][:skty][2] = 1
  EquipSet[3][:skpl][74] = 1
end

 

먼저

 

  EquipSetMax   = 3   # 설정할 셋트의 최대치
  ElementsMax   = 10  # 용어 - 속성 의 최대치
  StatesMax     = 27  # 상태 의 최대치
  SkillTypeMax  = 2   # 용어 - 스킬타입 의 최대치
  SkillMax      = 128 # 스킬 의 최대치
  WeaponTypeMax = 10  # 용어 - 무기타입 의 최대치
  ArmorTypeMax  = 6   # 용어 - 방어구타입 의 최대치

이 부분을 자신의 프로젝트에 맞게 잘 써넣어 줍시다.

 

( 잘 모르겠는 데 모듈 부분에서 $data_states.size 같은 문구를 쓰면 nil 데이터라면서 에러가 나더군요;;

 

모듈이 클래스보다 우선해서 작업하기 때문인가... 하고 추측해봅니다. )

 

바로 아래 있는 기초데이터 셋팅에서 노가다를 방지하기 위해서 쓰이는 부분이니 만큼 잘 써넣어 줍시다.

 

 

그 다음에는 문구에 대한 해석입니다.

 

    EquipSet[i][:weapons] = []
    EquipSet[i][:armors] = []

이 부분은 셋트 장비를 ID로 써넣을 부분입니다. 

 

7번 셋트를 1번 무기. 핸드액스와 2번 방어구. 가죽베스트로 하고 싶다. 라면

 

    EquipSet[7][:weapons] = [1]
    EquipSet[7][:armors] = [2]

 이런식으로 써넣으면 됩니다. 여러 개도 가능합니다( 그래야 셋트로써 의미가 있겠지요;;)

 

그 아래로는 엄청 긴게 전부 셋트 효과를 나타내는 겁니다... 아... 징하게 길다;;

 

   EquipSet[i][:param] = []
    EquipSet[i][:paramrate] = []
    EquipSet[i][:bfre] = []

 

이 세 개는 기본 파라미터와 관련 있습니다. :param은 수치로 더하는 거. 그 밑에 rate 붙은 건 비율로 더하는 거

 

(정확히는 더한다라기 보다는 증감입니다) 그 밑의 bfre는 약화내성 수치입니다.

 

0:mhp, 1:mmp, 2:atk, 3:def, 4:mat, 5:mdf, 6:agi, 7:luk이므로

 

2번 셋트를 장착했을 때 최대체력을 1000더하고 최대마력을 50% 감소하고 공격력 약화내성을 50% 줄이고 싶다... 면

 

   EquipSet[2][:param][0] = 1000
   EquipSet[2][:paramrate][1] = -50 
   EquipSet[2][:bfre][2] = -50

 

이렇게 써주면 됩니다. 이건 나중에 몰아서 써넣는 게 관리하기 편하실 겁니다.

 

    EquipSet[i][:xparam] = []
    EquipSet[i][:sparam] = []

 

이 부분은 특수능력치와 추가능력치네요 각각 넘버링은

 

      # xparam
      # 0:hit, 1:eva, 2:cri, 3:cev, 4:mev, 5:mrf, 6:cnt, 7:hrg, 8:mrg, 9:trg
      # sparam
      # 0:tgr, 1:grd, 2:rec, 3:pha, 4:mcr, 5:tcr, 6:pdr, 7:mdr, 8:fdr, 9:exr

 

이렇게 됩니다. 이건 제가 임의로 정한게 아니라 VXAce 디폴트 설정입니다..

 

    EquipSet[i][:elre] = []
    EquipSet[i][:atel] = []

 

elre는 속성내성, atel은 공격 속성입니다. 모두 용어의 속성이름 옆의 ID를 참고해주세요.

 

공격 속성의 경우 값이 0이 아니면 공격 속성으로 추가됩니다.

 

    EquipSet[i][:stre] = []
    EquipSet[i][:stno] = []
    EquipSet[i][:atst] = []

 

순서대로 상태내성, 상태무효, 공격상태입니다. 상태란의 이름 옆의 ID를 참고해주세요

 

상태무효도 값이 0이 아니면 무효화 상태로 등록이 되며 공격상태의 경우 값이 확률입니다.

 

    EquipSet[i][:atsp] = 0 # 공격속도
    EquipSet[i][:atnu] = 0 # 공격횟수

 

옆의 주석대로 공격속도와 공격횟수입니다. 적당히 더하고 빼주시면 됩니다.

 

    EquipSet[i][:skty] = []
    EquipSet[i][:skts] = []

 

순서대로 스킬타입 추가와 스킬타입 봉인입니다. 값이 0이 아니면 추가되고 봉인됩니다.

 

    EquipSet[i][:skpl] = []
    EquipSet[i][:skse] = [] 

 

순서대로 스킬 추가 , 스킬 봉인입니다. 값이 0이 아니면 적용됩니다.

 

EquipSet[i][:wety] = []

EquipSet[i][:arty] = [] 

 

순서대로 무기타입 추가와 방어구타입 추가입니다. 역시 값이 0이 아니면 추가됩니다.

 

    EquipSet[i][:eqfx] = []    
    EquipSet[i][:eqse] = []  

 

순서대로 장비고정과 장비봉인입니다. 역시 값이 0이 아니면 그 위치의 장비가 고정되고 봉인됩니다.

 

무기부터 순서대로 0, 1, 2, 3, 4입니다. ( 즉, 아방스님이 올리신 사용자 추가장비 스크립트와는

 

연동되지 않습니다 주의해주세요)

 

 

 

2.

 

이제 잘 살펴보셨으면 설정항목 아래 쪽에 제가 주석줄로 구분해둔 공간이 있는 게 보이실 겁니다.

 

  #==================================================================
  # 세트 장비 설정
  #==================================================================
 
  EquipSet[1][:weapons] = [1]
  EquipSet[1][:armors] = [1]
  EquipSet[1][:param][0] = 1000
  EquipSet[1][:paramrate][1] = 10
  EquipSet[1][:xparam][2] = 100
  EquipSet[1][:sparam][3] = 100
 
  EquipSet[2][:armors] = [1, 51]
  EquipSet[2][:param][0] = -500
  EquipSet[2][:elre][3] = 100
  EquipSet[2][:stno][7] = 1
 
  EquipSet[3][:weapons] = [12]
  EquipSet[3][:armors] = [1]
  EquipSet[3][:atst][8] = 100
  EquipSet[3][:atnu] = 10
  EquipSet[3][:skts][1] = 1
  EquipSet[3][:skty][2] = 1
  EquipSet[3][:skpl][74] = 1

 

이 부분 이야기 하는 겁니다. 이걸 잘 해석할 수 있으면 잘 적용할 수 있을 겁니다.

 

예제를 해석해보자면

 

 

 

1번 셋트 장비는 1번 무기와 1번 방어구를 착용하고 있으면 적용 되며

 

0번 파라미터, 즉 최대체력이 1000 증가하고 1번 파라미터 즉 최대마력이 10% 증가합니다.

 

2번 추가능력치 치명타율이 100 증가하고 3번 특수능력치 약의 지식이 100증가합니다.

 

 

 

2번 셋트 장비는 1번 방어구와 51번 방어구를 착용하고 있으면 적용되며

 

0번 파라미터, 즉 최대체력이 500감소되며 3번 속성저항이 100증가합니다.

 

또한 7번 상태는 무효화되는 군요.

 

 

 

3번 셋트 장비는 12번 무기와 1번 방어구를 착용하고 있으면 적용되며

 

공격시 8번 상태가 100%확률로 적용됩니다. 또한 공격회수가 10 증가하고

 

스킬타입 1번이 봉인되고 스킬타입 2번이 추가되며 74번 스킬이 추가됩니다.

 

 

 

어제오늘 이틀동안 급조하느라 버그가 있을 수 있습니다. 아무쪼록 프로젝트 제작에 도움이 되었으면 합니다.

 

잘 사용해주세요.

 

 

Who's 아이미르

?

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

 

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

  • ?
    허걱 2013.03.08 21:23

    딴 소리지만...
    모듈이 클래스보다 우선해서 작업한다기 보다는...
    $data_states가 정의되어있지 않기 때문이 아닐까요..?
    각각의 파일을 불러서 읽어들이거나
    DataManager.load_normal_database
    을 먼저 실행해서 각각의 변수를 정의해 준 다음 실행한다면 될듯 합니다.

    참고로...
    용어 - 속성의 최대값 등도 알 수 있습니다.
    데이터베이스에서 시스템이나 용어등의 내용은 $data_system 으로 불려지게 되는데...
    예를들어 용어 - 속성의 최대값 같은 경우는
    ($data_system.elements.size - 1) 이라고 해주면 됩니다.
    -1을 하는 이유는... 배열의 0번째는 "" (빈 문자열) 이 저장되기 때문입니다.
    (이는 데이터베이스에 표시되는 숫자와 맞추기 위해서 쓰레기값을 넣은거죠;;)


     

    기본 도움말에서 RPG::System 섹션을 보면 확인할 수 있습니다.

    p $data_system
    등으로 확인해 볼 수도 있습니다.

  • ?
    로브남 2013.03.09 15:19
    사실 기대 안하고 커먼이벤트로 짤 생각하고 있었는데 만들어서 올려주실줄이야... 정말 고생하셨습니다.
    일단 올려두셨으니 사용해 보도록 할게요.
  • ?
    아이미르님은 어쩜 올리시는 것 마다 맘에듬 ㅋ.ㅋ.ㅋ.ㅋ.ㅋ.ㅋ
  • ?
    불청객 2013.04.05 07:51
    질문있습니다~
    장비 장착 제한, 아이템 도감, 셋트 장비, 장비 종류 추가를 쓰고있습니다.
    이렇게 해두고... 반지 라는 아이템 종류를 추가한뒤 2개의 반지가 세트효과를 갖게 만들고 게임에 들어가 재대로 작동하나 확인을 하려하는대...
    오루가 나네요. 셋트장비 #Game_Actor 153 : TypeError occurred. nill can't be coerced into Fixnum
    이라고 하는대...
    장비가 반지 반지 해서 2개의 반지를 낄 수 있는 구조인대 첫 번째 반지를 기면 문제가 없다 2번째 반지를 장착 하려는 순간 뜹니다... 왜그럴까요 ㅠㅠ 하나를 포기해야 하는 걸 까 요
  • ?
    아이미르 2013.04.05 08:37
    제가 작성한 장비장착제한이나 셋트장비 스크립트는 장비슬롯추가 스크립트와는 호환이 안됩니다 따라서 같이 사용하시려면 그 부분을 수정하셔야됩니다
  • ?
    불청객 2013.04.05 09:02

    어딜 어떻게 수정해야할지... 

    스크립트는 너무 어렵군요 .... 

  • ?
    시옷청룡 2013.07.11 12:42
    감사합니다~ 상태가 무효화가 된다는 것은, 셋트를 착용하고 있으면 그 상태에는 절대로 걸리지 않는다는 말이 맞나요?
  • ?
    아이미르 2013.07.25 08:39
    예. VXAce 장비의 특징란에 있는 상태 무효화의 구현입니다.
  • ?
    소나소나 2014.08.08 01:39
    Script '#Game_Actor' line 350:NomethodError Occurred.
    undefined method '[]' for nilclass
    가 뜨네요 ㅜㅜ 뭐지

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 5605
공지 RPG VX ACE 유용한 링크 모음 16 아방스 2012.01.03 29441
12 아이템 아이템 팝업 스크립트 15 스리아씨 2013.10.17 3273
» 아이템 VXAce 셋트장비 스크립트 9 file 아이미르 2013.03.08 3649
10 아이템 VXAce 보관함 스크립트 12 file 아이미르 2013.02.07 3745
9 아이템 Etude87_Item_Search ver.1.00 2 습작 2013.01.24 1683
8 아이템 VXAce No Recipe 아이템합성 스크립트(버그 수정) 11 file 아이미르 2013.01.07 3329
7 아이템 VXAce 아이템 도감 스크립트 7 file 아이미르 2012.12.31 3860
6 아이템 VXAce 아이템 채집 스크립트 23 file 아이미르 2012.11.23 4086
5 아이템 랜덤 아이템샵. 1 탐험가 2012.10.28 2323
4 아이템 Tactics Ogre PSP Crafting System by Mr.Bubble 6 Alkaid 2012.09.17 3079
3 아이템 VXAce 아이템 합성 스크립트 Ver 0.8 17 아이미르 2012.08.23 4029
2 아이템 양손무기 작착 스크립트 [Dual Wield -> Free Hands Version 1.0] 7 file 아방스 2012.01.31 4664
1 아이템 물품 이름 컬러 변경 14 까까까 2012.01.04 5668
Board Pagination Prev 1 Next
/ 1