(스페스페로 대충 만든 부대챗 읽어주는 알림과 부대원 접속 알림)
사실은 저도 정규식에 대해 잘 모릅니다. 그렇지만 스페스페에 쓸 정도만큼은 알고 있습니다.
이번 글은 정규식과 스페스페 전용 대체식에 관해 알려드리겠습니다.
정규식(정규표현식)은 프로그래밍에서 문자열을 다룰때 사용하는 형식 언어입니다.
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:채팅내용 처럼 나옵니다. 이걸로 맨 처음의 예시처럼 스펠 알림을 만들 수 있습니다.