Ace 스크립트

버그를 수정한 예제와 텍스트 파일을 올립니다.

 

비율관련 수치 들이 적용이 안되던 버그를 수정했습니다.

 

================================================

 

KGC VX 패시브 스킬 스크립트를 기초로 작성한 ACE 패시브 스킬 스크립트입니다.

 

업데이트 되었습니다. 파라메터 이외에  특징 부분이 추가되었습니다. 액터, 직업, 장비란에

특징을 삽입하는 부분을 구현하는 겁니다.

단지, 특징의 '그외'란은 구현하지 못했네요... feature 구조가 어떻게 생겨먹은건지 ;;;;

사용법은

 

<패시브>

관련문구

</패시브>

 

이런 식으로 작성하면 됩니다. 필요한 수치들에 따라

문법은 세가지로 구별됩니다.

 

1) 먼저 스탯관련입니다.

스탯관련 관련 문구는

 

스탯이름 +숫자%

스탯이름 -숫자%

스탯이름 +숫자

스탯이름 -숫자

 

입니다. %는 기본파라메터의 비율증감에 필요합니다. 추가능력치와 특수능력치는 써넣어

봤자 미구현이니까 자제해주세요.

스탯이름은 대문자로 구성되어 있으며

 

기본 스탯으로 MHP, MMP, ATK, DEF, MAT, MDF, AGI, LUK

추가 스탯으로 HIT, EVA, CRI, CEV, MEV, MRF,CNT,HRG,MRG,TRG,

특수 스탯으로 TGR,GRD,REC,PHA,MCR,TCR,PDR,MDR,FDR,EXR,

입니다. 순서대로에요. 각각 무슨뜻인지 확실하게 알고 씁니다.

 

2) 속성, 상태와 관련된 부분입니다.  이부분 관련 문구는

 

문구 숫자 +숫자

문구 숫자 -숫자

 

입니다. 관련 문구를 기입하실때는 필요없는 부분이라고 생략하시면 안됩니다.

생략하면 기능이 무시되더라고요;;; 아마 인식이 안되는 거 같습니다.

 

문구에 따라 숫자에 들어갈 부분이 조금씩 다르니 살펴봅시다. 첫번째 숫자를 n,

두번째 숫자를 m으로 통칭하겠습니다. 기입시에는 ""내부의 문구중 좌우 어느 하나만

넣는 겁니다;;

 

"ELRE|속성유효" 의 경우 n은 속성id를 나타냅니다. 용어 부분에 속성이름 부분을 보시면

이름 왼쪽에 숫자입니다. m은 %입니다. 

 

예를 들어 ELRE 1 +100 이라고 기입하면 1번속성의 유효도를 100증가시키는 겁니다.

  단, 유효도가 높을 수록 해당 속성에 약하다는 군요


 "BFRE|약화유효" 의 경우 n은 기본능력치 번호입니다. 0은 MHP, 1은 MMP로 해서 LUK이 7입니다.

 뒤의 m은 유효도로 역시 높을 수록 해당능력치 약화에 잘걸린다는 군요.


"STRE|상태유효" 의 경우 n은 상태id입니다. 상태란에 이름 옆의 숫자를 말합니다.

마찬가지로 뒤의 m은 유효도입니다.


"STNO|상태무효화"의 경우 n은 상태id입니다만 m은 잉여입니다;;; 이게 같은 탭에 있어서 같이 넣었지만

필요한 변수가 적어서 m은 적당히 +0 정도로 써주면 됩니다.


"ATEL|공격속성"의 경우 n은 속성id, m에는 +0을 써주세요. ( +20이라도 상관은 없습니다)

 

"ATST|공격상태"의 경우 n은 상태id, m은 +0입니다.

 

"ATSP|공격속도"의 경우는 n이 잉여입니다.. 속도의 증감을 표현해야되기때문에 n의 자리는 적당히 0을

넣어주시고 뒤의 m자리에 증감되는 속도를 +, -와 함께 써주세요.


"ATNU|공격횟수"의 경우 n은 0, m이 증감될 횟수입니다. 너무 많이 쓰면 원맨쇼가 되서 재미없다는 거

잊지마세요;;;;
  
  3) 스킬, 장비 타입입니다. 이부분 관련 문구는

 

문구 숫자

 

입니다. 숫자에 +, - 같은게 들어가면 안됩니다;; 주의해주세요;

 

"SKTY|스킬타입"의 경우, 숫자는 스킬타입id입니다 용어란을 참조해주세요

  

"SKTS|스킬타입봉인"의 경우도 숫자는 스킬타입id입니다만 봉인의 구현이 미묘합니다.

처음에 스킬타입봉인이면 스킬란에서 사라진다든가 전투시에 활성화되지 않는 연출을 기대했습니다만

확인결과 전투시 스킬이름은 메뉴에 있지만 내부가 비활성화되는 거 같습니다.


"SKPL|스킬추가"의 경우 숫자는 스킬id입니다 스킬란을 참조해주세요

 

"SKSE|스킬봉인"의 경우도 숫자는 스킬id입니다. 봉인된 스킬은 메뉴에서든 전투에서든 비활성화됩니다.

 

"WETY|무기타입"의 경우 숫자는 무기타입id입니다. 용어란을 참조해주세요.

 

"ARTY|방어구타입"의 경우, 숫자는 방어구타입 id입니다. 마찬가지로 용어란을 참조해주세요.


"EQFX|장비고정" 의 경우 숫자는 0은 무기, 1은 방패 이런 식으로 ACE디폴트 수치만 정해져있습니다.

따라서 아방스님이 올려주신 사용자 장비확장과는 연계가 안됩니다...

장비고정의 경우는 해당 부위의 장비를 변경하는 것이 불가능해지는 겁니다. 

 

"EQSE|장비봉인"의 경우도 디폴트 장비위치id라고 할까요... 위에서 설명한 것과 마찬가지 입니다.

장비봉인은 해당부위를 장비하는 것이 불가능해지는 겁니다. 단, 약간의 버그로서 장비봉인은

이미 장비한 물품은 변경되지 않고 그 다음부터 변경이 불가능해집니다. 

 

무슨 뜻이냐면 제가 방패를 차고, 방패 장비봉인 패시브 스킬을 익히면 방패가 해제되는 것은 아니라는

겁니다. 단, 이후에 최강장비나 전부해제를 누르면 그 방패는 해제됩니다.

 

"DBWP|이도류"의 경우 숫자는 덤입니다. 적당히 0을 넣어주시면 됩니다.

 

"WPM|웨폰마스터리"의 경우 숫자는 무기 타입 id입니다. 용어란에서 확인해주세요. 이를 설정한 경우

패시브 스킬의 수치가 적용되는 것은 무기 타입id 와 같은 것을 장착했을 때 뿐입니다. 그러니 웨폰마스터리는

스킬 당 한번만 설정해주세요. 두 번 설정하면 에러납니다;;

 

"ARM|아머마스터리"의 경우 숫자는 방어구 타입 id입니다. 역시 용어란에서 확인해주세요. 웨폰마스터리와

마찬가지로 스킬에 이를 설정하면 설정된 방어구 타입을 장착했을 때만 패시브 스킬의 수치가 적용됩니다.

역시 스킬당 한번만 설정해주세요.

 

원래는 스크립트 본문을 넣으려고 했으나 제가 최적화따위는 모르는 초짜인지라

특징의 그외 탭이 미구현임에도 불구하고 1300줄 가까이 되더군요;;;

그래서 그냥 텍스트 파일을 첨부했습니다.

Who's 아이미르

?

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

 

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

  • ?
    Bluesky(新) 2012.03.09 21:59

    오오.. 이로써 능력치 상승과 % 상승. 하락과 % 하락의 기능을..!!

  • ?
    아이미르 2012.03.09 22:20
    지금 나머지 액터나 장비,직업 에서 추가할 수 있는 특징들을 패시브 스킬에서 구현하는 중입니다 '그외' 파트만 구현하면 일단락 될 거 같네요 ㅎ
  • ?
    구르는똥 2012.03.10 13:30
    감사합니다.ㅇㅇ
  • ?
    구르는똥 2012.03.10 13:30
    ㅇㅗㅇ
  • ?
    minibalrog 2012.04.01 06:01

    감사합니다.

  • ?
    NAME 2012.04.01 19:25

    오오 좋네요~

  • profile
    DevilEx 2012.06.02 15:50
    오오~ 패시브 ㄳㄳ
  • ?
    시옷청룡 2012.07.08 11:59
    패시브까지...ㄷ
  • ?
    로브남 2012.08.20 17:32
    이거 제대로 실행 되시는분? 전 적용이 안되네요.
    스킬하나 만들고 노트태그란에
    <패시브>
    스탯 + n
    </패시브>
    이리써도 안되네요.
  • ?
    아이미르 2012.08.20 18:09
    http://db.tt/mkE8fH2R
    이 스크립트를 만들기 위해 테스트 하던 예제입니다. 살펴보시면 사용법을 알 수 있을 거라 생각합니다
  • ?
    로브남 2012.08.20 19:02
    테스트 맵에서 하니까 되긴되는데, 제작중인 본겜에서 실행하면 다른스크립트하고 충돌하는지 (적용이)먹히질 않네요 ;; 아무튼 빠른답변 감사합니다.
  • ?
    vx-scroll 2012.08.28 23:06
    패시브 스킬 구현가능하겠네 ㅠ
  • ?
    뷔버 2013.01.29 09:55
    <패시브>
    MHP +10%
    </패시브>

    라고 주면 체력변화가 없는데 무슨 문제가 있는거죠?

    제가 줄려고하는 효과가 이 패시브 스킬을 습득하면 전체체력 10%가 늘어난다. <<
    라는 조건을 주고 효과를 준겁니다.

    이건 안되는데

    <패시브>
    MHP +100%
    </패시브>

    를 주어보니 전체체력에 +100%를 더한 450+450=>900 이 되더군요.
    퍼센트 다루는법좀 가르켜주세요 ㅠㅠ
  • ?
    뷔버 2013.01.29 10:07
    그냥 스킬을 퍼센트로 주지않고 +만 해서 납뒀습니다.
    답글은 안해주셔도됩니다.
  • ?
    환장 2015.08.22 19:46
    100%면 당연히 2배가되죠..
  • profile
    뿌잉뿌잉쨔응 2013.06.25 15:55

    스크립트가 적용이 되지 않는데 따로 필요한 스크립트라도 있나요?

  • ?
    아이미르 2013.06.25 20:06
    딱히 필요한 스크립트는 없습니다. 예제를 참조해주세요.
  • profile
    뿌잉뿌잉쨔응 2013.06.25 21:47

    저기 죄송한데 하나만 더 질문 드려도 될까요?

    예제에서 필요한 HRG수치를 바꿔봤는데. 100 이라는 정수 말고는 다른 숫자를 써넣었을때. 아무 반응이 없어요

    100 인 상태에선 예제에서 스킬 습득시 만약에 체력 재생율 표시가 100%로 뜨는 반면에 100말고 다른 숫자를

    집어 넣었을시 무조건 0%으로 나오네요.

    제가 아직 모르는것도 많고 알만툴 만진게 3일이 되서 그런데. 아직 제가 모르는게 있는 건가요.

    아니면 이게 원레 그러는건가요.

  • ?
    아이미르 2013.06.25 23:55
    요즘 공부한다고 바빠서 이쪽에 신경을 못썼더니 버그가 있었네요;;;

    나중에 텍스트 파일을 버그 수정본으로 고쳐두겠습니다... 예제도요...

    지금 상태에서 버그를 수정하는 법은 스크립트에서

    #--------------------------------------------------------------------------
    # ● 패시브 param 비율의 취득
    #--------------------------------------------------------------------------
    def passive_param_rate_base(param_id)
    n = 100
    case param_id
    when 0; n += passive_params_rate[:mhp]
    when 1; n += passive_params_rate[:mmp]
    when 2; n += passive_params_rate[:atk]
    when 3; n += passive_params_rate[:def]
    when 4; n += passive_params_rate[:mat]
    when 5; n += passive_params_rate[:mdf]
    when 6; n += passive_params_rate[:agi]
    when 7; n += passive_params_rate[:luk]
    end
    return n/100.to_f #<--- 이 부분
    end
    #--------------------------------------------------------------------------
    # ● 패시브 xparam의 취득
    #--------------------------------------------------------------------------
    def passive_xparam_base(xparam_id)
    n = 0
    case xparam_id
    when 0; n += passive_xparams[:hit]
    when 1; n += passive_xparams[:eva]
    when 2; n += passive_xparams[:cri]
    when 3; n += passive_xparams[:cev]
    when 4; n += passive_xparams[:mev]
    when 5; n += passive_xparams[:mrf]
    when 6; n += passive_xparams[:cnt]
    when 7; n += passive_xparams[:hrg]
    when 8; n += passive_xparams[:mrg]
    when 9; n += passive_xparams[:trg]
    end
    return n.to_f # <--- 이 부분
    end
    #--------------------------------------------------------------------------
    # ● 패시브 sparam의 취득
    #--------------------------------------------------------------------------
    def passive_sparam_base(sparam_id)
    n = 0
    case sparam_id
    when 0; n += passive_sparams[:tgr]
    when 1; n += passive_sparams[:grd]
    when 2; n += passive_sparams[:rec]
    when 3; n += passive_sparams[:pha]
    when 4; n += passive_sparams[:mcr]
    when 5; n += passive_sparams[:tcr]
    when 6; n += passive_sparams[:pdr]
    when 7; n += passive_sparams[:mdr]
    when 8; n += passive_sparams[:fdr]
    when 9; n += passive_sparams[:exr]
    end
    return n.to_f # <---- 이 부분
    end

    이 부분을 찾아서 고치는 겁니다. 각각 함수 이름을 긁어서 Ctrl+F 로 찾아서 수정해주면 됩니다.

    위에 주석으로 이부분이라고 되어 있는 부분이 지금 스크립트에는

    return n 이렇게 .to_f 부분이 안써져 있을 겁니다.

    그걸 다 붙여주면 됩니다.



    사족. 그러니까 문제가 뭐였나면... 변수 타입이 달랐다고나 할까;;; 다 보면 나중에 100으로 나누는데

    플로트 타입이 아니면 나누기 100 하면 20이나 35 이런건 다 0으로 처리해버려서 생긴 문제일 겁니다;;)
  • profile
    뿌잉뿌잉쨔응 2013.06.26 00:47
    진짜 너무 감사드려요. 이거 떄문에 지향하던 게임 스타일을 포기할까 했는데 덕분에 살았네요
    그리고 버그 하나가 더있긴 한데. http://avangs.info/kin/1065446 제가 질문겟에 올린겁니다.
    지금 뉴클리어라는 기본으로 준 스킬을 맞으면 저런 오류가 뜨던데 공부 열심히 하시고 남은 시간에 한번 보세영.
  • profile
    크리펄 2013.06.30 22:51
    이젠 패시브까지 나오는군요.
    세상 좋아졌습니다.ㅎㅎ