디스코드 역극 서버의 상점, 재고, 은행 관리하는 법 (D&D, DayZ, GTA RP)
D&D나 역극 서버라면 CordBase 테이블 하나는 플레이어 소지품용(아이템 하나당 한 행, 소유자 포함), 하나는 상점 재고용(아이템 하나당 한 행, 수량 포함)으로 두세요. 플레이어는 슬래시 명령어로 찾아보고, 스태프는 /shop update ... _mode:Decrement로 수량을 바꿔요. CordBase는 재고를 기록할 뿐, 상점을 운영하지는 않아요.
대부분의 서버는 고정 메시지, 스프레드시트, 경제 봇으로 시작해요. 고정 메시지는 두 사람이 동시에 고치면 꼬이고, 스프레드시트는 Discord 밖에 있고, 경제 봇은 포인트로 물건을 사는 구조로 만들어져 있어요. 이 가이드는 대신 저희가 만드는 CordBase로 Discord 안에 단순한 기록을 만들어요. 소지품과 상점은 10분 정도 걸려요.
플레이어에게 캐릭터 시트도 필요하다면, 무료 캐릭터 시트 양식이 D&D 5e, 롤플레이, 판타지, SF용 복사·붙여 넣기 시트를 만들어 줘요.
완성하면 이렇게 돼요
- 캐릭터마다 가진 것을 담는
/inventory명령어(add,query,view,update,delete,leaderboard). - 상인이 가진 재고와 가격을 담는
/shop명령어. - 필요하다면 멤버별 예금과 대출을 숫자로 담는
/bank명령어. - 플레이어는 찾아보기만 하고 수량은 스태프만 바꿀 수 있는 역할 권한.
1단계: 캐릭터별 소지품 설정하기
소지품 부분은 길드 창고 가이드와 같은 방식으로 설정해요. 아이템 보관함 템플릿(item, quantity, owner, rarity, notes)을 설치하고, 슬러그를 inventory로 바꾸고, 플레이어에게 읽기, GM이나 스태프 역할에 쓰기 권한을 줘요. 역극 서버에서는 길드 창고보다 중요한 점이 두 가지 있어요.
첫째, update와 view 같은 명령어는 테이블의 첫 번째 텍스트 열만 보여 주는 목록에서 행을 고르게 해요. Mara와 Joss가 둘 다 Healing Potion을 갖고 있으면 똑같은 줄이 두 개 나오니, 아이템 이름에 가진 사람을 넣으세요. Healing Potion (Mara)처럼요. owner 열로는 여전히 멤버별로 필터할 수 있어요.
둘째, 쓰기 권한은 플레이어 자기 행만이 아니라 모든 행에 적용되기 때문에, 쓰기 권한이 있는 플레이어는 누구의 소지품이든 수정할 수 있어요. 쓰기 권한은 스태프에게만 주고 플레이어에게는 읽기 권한을 주세요.
/inventory add item:Healing Potion (Mara) quantity:3 owner:@Mara rarity:Common
/inventory update row:Healing Potion (Mara) quantity:1 _mode:Decrement
/inventory query owner:@Mara는 Mara가 가진 모든 것을 보여 줘요. query는 최신 행부터(기본 10개, limit으로 최대 25개) 앞의 네 열만 보여 주니, 중요한 열을 앞에 두세요. 증가는 더하고, 감소는 빼고, 기본값인 설정은 값을 바꿔 넣어요.
2단계: 상점 재고 테이블 추가하기
Free 플랜에는 테이블 2개가 포함되어 있어서 소지품과 상점이 딱 맞아요. 대시보드에서 Shop이라는 테이블을 만들고 다음 열을 넣어요. item(텍스트, 필수), stock(숫자, 필수), price(숫자), category(선택지. Weapons, Ammo, Medical처럼 직접 정한 옵션), notes(텍스트). 열 유형은 만든 뒤에 바꿀 수 없으니 수량과 가격은 숫자로 만드세요.
/shop add item:Bandage stock:40 price:25 category:Medical/shop update row:Bandage stock:1 _mode:Decrement는 판매 한 건을 기록해요. 역극에서 판매가 일어나면 스태프가 실행해요./shop update row:Bandage stock:20 _mode:Increment는 재입고를 기록해요./shop update row:Bandage price:30은 가격을 바꿔요./shop query stock:0은 품절된 아이템을 보여 줘요("미만"이 아니라 정확히 일치하는 값이에요).
_mode는 명령어 하나에 넣은 모든 숫자에 적용돼요. stock과 price를 감소와 함께 보내면 둘 다 줄어요. 따로따로 명령어를 실행하세요.
차량 대리점이라면 같은 구조에 vehicle, stock, price, dealer 열(멤버 유형)을 넣으면, /shop query dealer:@Kade로 딜러 한 명의 매물을 볼 수 있어요.
재고는 0 아래로 내려갈 수 있어요. 0에서 감소를 막는 기능이 없으니, 신경 쓰인다면 수량을 확인하세요.
3단계: 은행과 대출을 단순 기록으로 관리하기(선택)
Bank라는 테이블을 만들고 account(텍스트, 필수. 행 선택 목록에 보이도록 맨 앞에), member(멤버), balance(숫자), loan_owed(숫자), notes(텍스트) 열을 넣어요. 소지품과 상점이 이미 무료 테이블 2개를 쓰고 있으니, 세 번째 테이블에는 Pro 플랜이 필요해요.
/bank add account:Mara member:@Mara balance:500 loan_owed:0/bank update row:Mara balance:200 _mode:Increment는 입금을 기록해요./bank update row:Mara loan_owed:100 _mode:Decrement는 상환을 기록해요./bank leaderboard column:loan_owed는 빚이 큰 순으로 순위를 매겨요.
이자, 상환 기한, 자동 이체는 없어요. 숫자는 스태프가 입력해요. 변경 내역도 없어요. view는 행을 누가 만들었고 언제 마지막으로 바뀌었는지 보여 줄 뿐, 예전 값은 보여 주지 않아요. 내역이 필요하다면 Transactions 테이블(account, amount, kind, date)을 추가하고 움직임이 있을 때마다 한 행씩 추가하세요. 길드 공용 자금이라면 길드 창고 가이드를 참고하세요.
다른 도구가 더 잘 맞는 경우
CordBase에는 상점 결제, 플레이어가 벌고 쓰는 화폐, 멤버 간 송금이 없어요. 명령어는 항상 테이블 이름과 정해진 작업 중 하나라서 /withdraw 같은 맞춤 명령어를 만들 수 없어요. 메시지를 읽지 않기 때문에 채팅에 "-100 화살"이라고 써도 아무 일도 일어나지 않아요. 멤버가 코인을 벌어 상점에서 사는 가상 경제를 원한다면 UnbelievaBoat 같은 경제 봇을 쓰세요. 규칙과 주사위가 필요하다면 Avrae 같은 TRPG 봇을 쓰세요(캐릭터 시트 가이드 참고). 수식이 필요하다면 스프레드시트가 더 나아요.
알아 두면 좋은 한도
자주 묻는 질문
/withdraw 명령어를 만들거나 플레이어가 직접 아이템을 사게 할 수 있나요?
아니요. 테이블마다 자기 이름 아래에 add, query, view, update, delete, leaderboard라는 정해진 작업이 생겨요. 가장 가까운 방법은 /shop update row:... stock:1 _mode:Decrement이고, 쓰기 권한이 있는 사람이면 누구든 실행할 수 있어요. 플레이어에게 비용이 청구되거나 화폐가 오가지는 않아요.
플레이어마다 자기 소지품만 보거나 수정하게 할 수 있나요?
권한으로는 안 돼요. 읽기 권한이 있으면 테이블 전체를 검색할 수 있고, 쓰기 권한이 있으면 모든 행을 바꿀 수 있어요. 멤버는 /inventory query owner:@yourname으로 자기 아이템만 걸러 볼 수 있어요.
무료 플랜으로 충분한가요?
소지품 테이블과 상점 테이블은 충분해요. Free 플랜은 테이블 2개, 테이블당 행 100개예요. 은행 같은 세 번째 테이블에는 월 $8인 Pro 플랜이 필요해요.