(스페스페로 대충 만든 부대챗 읽어주는 알림과 부대원 접속 알림)


두번째 글 매칭키워드편 : http://www.inven.co.kr/board/ff14/4953/2652


사실은 저도 정규식에 대해 잘 모릅니다. 그렇지만 스페스페에 쓸 정도만큼은 알고 있습니다.

이번 글은 정규식과 스페스페 전용 대체식에 관해 알려드리겠습니다.


정규식(정규표현식)은 프로그래밍에서 문자열을 다룰때 사용하는 형식 언어입니다.

https://namu.wiki/w/정규표현식

조금이라도 관심이 있으시다면 우리의 친구 나무위키의 해당 문서를 봅시다.

정말 쉽지않은 분야지만, 우리가 스페스페에 쓸 정도만큼은 쉽게 익힐 수 있습니다.


정규식에서
쓰이는 문자
의미
.임의의 한 문자
|or, 또는을 의미
+앞 문자가 하나 이상임우리가 스페스페에 쓰는
정도의 수준에서는
사실상 똑같음
*앞 문자가 0개 이상임
 
|는 쉬프트를 누른 채로 백스페이스 키 옆에 있는
 
이 키를 눌러서 입력하는 문자입니다.

딱 이 네종류(사실상 3종류?)만 알면 스페스페를 만드는데 다양하게 활용할 수 있을 거라 생각했습니다. 추가로 대괄호[]로 묶어서 쓰는 문자클래스나 탐욕적, 게으른 수량자까지도 알면 좋습니다.


스펠 이름자각몽
매칭 키워드빙슈가 자각몽을 시전했습니다.
정규식 사용X
 
자각몽 알림을 바꿔봅시다. 지금은 빙슈가 자각몽을 시전했습니다. 인데, 한글 맞춤법에 따라 이 문구는 사람에 따라 달라지는 부분이 있습니다. 예를 들어

빙슈 자각몽을 시전했습니다.
설빙 자각몽을 시전했습니다.

이제 정규식을 써서 이걸 한번에 해결할 수 있습니다.


스펠 이름자각몽
매칭 키워드(빙슈|설빙)(이|가) 자각몽을 시전했습니다.
또는
(빙슈|설빙). 자각몽을 시전했습니다.
정규식 사용O
 
또는|을 쓸땐 괄호()로 묶어서 씁니다. 여기서는 이or가를 (이|가), 아니면 임의의 문자를 뜻하는 .으로 해결했습니다.



스페스페는 정규식 뿐만 아니라 스페스페에서만 지원하는 전용 대체식도 있습니다. 

대체식은 정규식 사용이 필요없다고 적어둔 것 외에는 모두 정규식 사용에 체크해야 합니다.


대체식의미비고
<me>내 캐릭터의 이름정규식 사용 필요없음
<mex>내 캐릭터의 이름한국서버에서는 <me>와 <mex>가 사실상 같습니다.
글로벌 서버에서는 <me>는 이름을 이니셜로 표기할 경우
인식하지 못합니다. <mex>는 이니셜로 표기되는
모든 경우를 인식합니다.

예) Naoki Yosida를 <mex>로 하면
Naoki Yosida, N. Yosida, Naoki Y., N. Y. 네 가지를 모두 인식합니다.
<nex>나를 제외한 파티원
<pc>나를 포함한 파티원
 
위의 4개와 아래에 설명할 직업별 대체식이 가장 많이 쓰게 될 대체식입니다.

이제 대체식을 포함해서 자각몽 알림을 만들어봅시다.

스펠 이름자각몽
매칭 키워드<mex>(이|가) 자각몽을 시전했습니다.
또는
:<mex>:1D89:
정규식 사용O
 
이렇게 해서 어떤 캐릭터로 접속해도 작동하는 자각몽 알림을 만들게 되었습니다.


위의 것 외에 다른 대체식입니다. 이것들은 스페스페 옵션 - 트리거 - 파티원 대체식 사용에 체크해야 합니다. (대부분의 사람들은 다 체크되어 있음)

대체식의미비고
<2> ~ <8>2번째 파티원 ~
8번째 파티원
정규식 사용 필요없음
<2ex> ~ <8ex>2번째 파티원 ~
8번째 파티원
<me>와 <mex>의 차이와 똑같습니다.
<JOB>
<JOB1> ~
특정 직업을 인식합니다.

<PLD> 나이트
<WAR> 전사
<DRK> 암흑기사

<WHM> 백마도사
<SCH> 학자
<AST> 점성술사

<SAM> 사무라이
<MNK> 몽크
<DRG> 용기사
<NIN> 닌자

<BRD> 음유시안
<MCH> 기공사

<BLM> 흑마도사
<SMN> 소환사
<RDM> 적마도사

<BLU> 청마도사

-미출시-
<GNB> 건브레이커
<DNC> 댄서
혹시나 해서 그러는데,
<JOB>이라고 그대로 적으면 안됩니다.

<PLD1>, <PLD2>처럼 파티의 1번째, 2번째
해당 직업을 골라서 인식할 수 있습니다.

소울크리스탈을 착용하지 않은 클래스,
채집, 제작 직업도 모두 대체식이 있습니다.
<ROLE>
<ROLE1> ~
특정 역할군의 플레이어를
인식합니다.

<TANK> 탱커
<HEALER> 힐러
<DPS> 딜러
<MELEE> 근딜
<RANGE> 원거리 물리
<MAGIC> 마딜
<TANK1>, <DPS2>, <MELEE1> 처럼
해당 역할군의 몇번째 플레이어를
골라서 인식할 수 있습니다.
 
<2> ~ <8>이나 <TANK2>로 인식하는 파티원의 순서는 게임 내에서 보이는것과 다를 수 있습니다(중요).

해당 순서는 호조링이 설치된 폴더의 resources폴더, 베이직팩 기준
C:\Advanced Combat Tracker\Plugins\06.ACT.Hojoring\resources
여기에, PCOrder.txt 문서를 직접 만들어서 순서를 정할 수 있습니다. 해당 폴더 내에 PCOrder.sample.txt가 있으니 이걸 수정해서 만들면 됩니다.


스페스페 대체식은 오직 파티원만 인식합니다. (연합파티, 서버초월파티 안됨)

예를들어 매칭 키워드를
:8D2:속임수 공격:
으로 하면

마물을 잡으러 갔는데, 마침 닌자가 100명이 있어서 100명이 모두 속공을 쓰면 스페스페 알림이 100번 뜨게 됩니다.(내 미터기 분석 설정에 Parse Filter를 None으로 했을때 한정)

하지만
<NIN>:8D2:속임수 공격:
으로 했을 경우에는 오직 파티원 닌자가 쓴 속공만 인식하게 됩니다.



 

예전에 이 게시판에 올린 적 있는 신속마 알림입니다. 비록 움짤엔 저 혼자뿐이긴 하지만 이 알림은 쓴 사람의 직업과 이름까지 화면에 띄워줍니다.
이때까지의 내용은 모두 매칭 키워드를 어떻게 적을 지에 대한 것이었습니다. 이제부터의 내용은 화면에 보이게 될 스펠 이름에 매칭 키워드에 적어넣었던 정규식이나 대체식이 인식되게 하는 것입니다.


매칭 키워드로 쓴 아무 문자를

(?<아무말>화면에 보여줄 문자)

이렇게 괄호로 감싸고 ?<아무말>을 앞에 붙이면 감싼 부분을 스펠 이름에서 불러 올 수 있습니다. 스
펠 이름에 ${아무말} 처럼 적으면 됩니다. 깃헙의 호조링 위키에서는 이걸 그룹짓는다고 하니 저도 그룹을 짓는다고 하겠습니다.   
스펠 이름신속한 마법,${asdf}
인스턴스화O
매칭 키워드:(?<asdf>.+):1D89:
정규식 사용O
재사용59초
 
사실 저번 글을 쓸때 잊어먹고 알려드리지 않은 것이 있습니다.
첫째, 스펠 이름에 ,를 넣으면 엔터를 친 것 처럼 줄이 바뀝니다.
둘째, 

 
인스턴스화는 스펠 이름 바로 밑에 있는 저걸 말하는건데,
이미 매칭 키워드를 인식해서 스페스페 알림이 돌아가고 있는데 또 매칭 키워드를 인식했을 때
인스턴스화가 체크가 안되어 있으면, 먼저 있던걸 덮어씌우고 새걸로 바뀝니다.
인스턴스화가 체크가 되어 있으면, 알림을 화면에 하나 더 보여줍니다.

그룹을 짓는건 제가 예시에 ?<asdf>라고 한 것 처럼 정말 아무 말이나 쓰셔도 됩니다. 한글도 됩니다.

스페스페 대체식을 썼을 경우 따로 그룹지을 필요 없이 바로 스펠 이름에 쓸 수 있습니다.

스펠 이름신속한 마법,${_pc}
인스턴스화O
매칭 키워드:<pc>:1D89:
정규식 사용O
 
스펠 이름신속한 마법,${_WHM}
인스턴스화O
매칭 키워드:<WHM>:1D89:
정규식 사용O
 
예시처럼, 매칭 키워드 <>안에 들어간 문구를 그대로 앞에 밑줄 하나 붙여서 ${_ }로 쓰면 됩니다.



정규식과 대체식과 그룹짓기를 활용하면, 스펠 패널 단 하나로 많은 스킬을 한번에 담을 수 있습니다.


스펠 이름${시너지}, ⬅ ${시전자}
인스턴스화O
매칭 키워드<mex> gains the effect of (?<시너지>도원결의|용의 왼눈|전장의 노래|전투 기도|에기의 가호|성원|요정의 바람|아제마의 균형|오쉬온의 화살|할로네의 창) from (?<시전자>.+?) for
정규식 사용O

이처럼 나한테 오는 시너지를 하나에 몰아 넣을 수 있고 (각각의 지속시간을 다르게 하는건 안됩니다)

아니면 속임수 공격, 악화, 연환계, 정신교란, 견제, 앙갚음 등 적에게 가하는 기술을 하나에 넣을 수도 있습니다.


부대채팅은 미터기에 00:0018:채팅내용 처럼 나옵니다. 이걸로 맨 처음의 예시처럼 스펠 알림을 만들 수 있습니다.