Coupon / Event Key
쿠폰 및 이벤트 키에 대한 메뉴얼이에요.
1) 쿠폰 생성하기
1. 월드 관리 페이지의 우측 상단 리스트메뉴에서 쿠폰 설정 클릭

2. 쿠폰 설정 페이지는 아래와 같이 구성되어 있어요.

1
등록하기 버튼
등록하기 버튼을 눌러 쿠폰을 등록할 수 있어요.
2
쿠폰 정보
등록된 쿠폰이 표시돼요.
3
쿠폰 사용 리스트
쿠폰을 사용한 플레이어 목록이 표시돼요.
2.1 등록된 쿠폰의 상태는 발급 기간에 따라 달라져요.

1
대기
발급기간 이전일 때의 상태에요.
2
진행
발급기간 일 때의 상태에요.
3
종료
발급기간 이후일 때의 상태에요.
4
중지
관리자의 비활성 설정했을 때의 상태에요.
2.2 쿠폰 상세 페이지에서는 아래 기능들을 이용할 수 있어요.

① : 쿠폰 복제
② : (상태 별) 쿠폰 발급 기간 수정 혹은 쿠폰 사용 중지
2.3 쿠폰을 사용한 유저들을 편리하게 구분하여 확인할 수 있어요.

1
쿠폰 종류
원하는 종류의 쿠폰 사용자들을 확인할 수 있어요.
2
검색 기준
쿠폰 사용자들의 ID, 쿠폰 중 선택하여 검색할 수 있어요.
3. 쿠폰 등록 화면은 아래와 같이 구성되어 있어요.

1
쿠폰
쿠폰의 이름 (영문, 숫자 20자 이내로 입력해요)
2
쿠폰 타입
쿠폰을 사용했을 때 어떤 보상을 줄지 정할 수 있어요.
3
쿠폰 수량
발급할 쿠폰 번호의 수량이에요. (쿠폰 번호는 난수로 자동 생성됩니다)
4
참여 인원
쿠폰 수량이 1일 때 선택할 수 있어요. (제한이 없으면 무제한 쿠폰이며, 숫자를 입력하면 정해진 인원 수만큼 사용할 수 있어요)
5
발급(사용)기간
쿠폰을 사용할 수 있는 기간이에요. (시작 기간이 되어야 사용할 수 있으며, 종료 기간이 되면 사용할 수 없게 됩니다)
3.1 쿠폰 타입 항목에서, 쿠폰 사용 시 지급할 보상의 이름을 추가하고 선택할 수 있어요.

3.2 위에서 선택한 쿠폰 타입은 스크립트에서 보상 지급을 처리하는데 이용됩니다.
4. 쿠폰 수량과 참여 인원을 어떻게 설정하느냐에 따라 아래와 같이 활용할 수 있어요.
1
제한없음
동일한 번호로 누구나 사용할 수 있는 쿠폰
오픈 기념 쿠폰
1
n명
번호 1개를 n명까지 사용할 수 있는 선착순 쿠폰
선착순 쿠폰
n개
-
각각의 번호로 사용하는 선착순 쿠폰
선착순 쿠폰
2) 쿠폰 번호 배포하기
1. 쿠폰 정보 목록에서 쿠폰 수량 글자를 클릭해요.

2. 쿠폰 리스트 팝업에서 번호를 확인할 수 있어요. CSV 다운로드 버튼을 클릭하면 엑셀로 확인하는 것도 가능해요.


3) Script에서 쿠폰 연동하기
3-1) 쿠폰 번호 입력해서 사용
플레이어가 UI 에 쿠폰 번호를 입력하면, 해당 쿠폰을 사용하도록 처리하는 스크립트 예시에요.
ClientScript에서 버튼 클릭시, TextBox의 입력 내용을 서버의 UseCoupon함수로 전달하는 처리를 아래와 같이 구현해요.
local CouponUI = Workspace.CouponUI local function InputCoupon() local couponID = CouponUI.Frame.TextBox:GetText() --TextBox의 입력 내용이에요. Game:SendEventToServer("UseCoupon", **couponID**) --서버의 함수를 호출해요. end CouponUI.Frame.UseButton.OnUpEvent:Connect(InputCoupon) --버튼 클릭 이벤트
ServerScript에서 쿠폰의 처리를 아래와 같이 구현해요.
--2. player:UseCoupon 함수에 연결되는 함수에요. local function DoUseCoupon(player, couponReturnData) local state = couponReturnData.State --쿠폰의 상태 local couponType = couponReturnData.CouponType --쿠폰의 보상 종류 local result = couponReturnData.Result --쿠폰 사용 결과 --쿠폰 상태 및 보상 if state == Enum.CouponState.Wait then print("쿠폰 상태 : 대기") elseif state == Enum.CouponState.Doing then print("쿠폰 상태 : 진행") elseif state == Enum.CouponState.Stop then print("쿠폰 상태 : 중지") elseif state == Enum.CouponState.End then print("쿠폰 상태 : 종료") end print("쿠폰 보상 타입 : ", couponType) --쿠폰 사용 결과가 Success이면 if result == Enum.CouponResult.Success then print("쿠폰을 사용했습니다!") if couponType == "Gold" then player.Gold = player.Gold + 1000 end --쿠폰 사용 결과가 Exist이면 elseif result == Enum.CouponResult.Exist then print("이미 사용한 쿠폰입니다!") --이외에는 else print("유효하지 않은 쿠폰입니다!") end end --1. ClientScript의 버튼 이벤트에서 호출되는 함수에요. local function UseCoupon(player, coupon) --플레이어에게 해당 쿠폰을 사용 처리해요. --(쿠폰 번호, 쿠폰 사용 처리 함수) player:UseCoupon(coupon, DoUseCoupon) end Game:ConnectEventFunction("UseCoupon", UseCoupon)
3-2) 남아 있는 쿠폰 중 하나를 사용
특정 타입의 쿠폰 중 남아있는 쿠폰이 있다면, 플레이어에게 사용 처리되도록 하는스크립트 예시에요.
UseRemainCoupon 함수를 이용해서, 남아있는 쿠폰 중 하나를 사용하도록 할 수 있어요.
플레이어에게 쿠폰을 사용 처리할 수 있도록, ClientScript 에서 Server 함수를 호출해요.
local function ClearGame() Game:SendEventToServer("UseCoupon", "ClearReward") end ClearGame()
ServerScript에서 쿠폰의 처리를 아래와 같이 구현해요.
--2. player:UseRemainCoupon 함수에 연결되는 함수에요. -- (3-1 샘플 코드 중, DoUseCoupon 함수와 동일한 방식으로 사용할 수 있어요) local function DoUseCoupon(player, couponReturnData) ... end --1. 특정 상황일 때 ClientScript 에서 호출되는 함수에요. local function UseCoupon(player, couponType) --남아 있는 쿠폰 중 하나를 플레이어에게 사용 처리해요. --(남은 쿠폰을 찾을 쿠폰 타입, 남은 쿠폰 사용 처리 함수) player:UseRemainCoupon(couponType, DoUseCoupon) end Game:ConnectEventFunction("UseCoupon", UseCoupon)
GetRemainCouponCount 함수를 이용해서, 남아있는 쿠폰의 수량을 확인할 수 있어요.
ClientScript 에서 Server 함수를 호출하고, Server 에서 처리된 정보를 받아와요.
local CouponUI = Workspace.ScreenUI -- 1. ClientScript 에서 Server 함수를 호출해요. local function Refresh_CouponCountUI() Game:SendEventToServer("ConfirmRemainCouponCount", "ClearReward") end Refresh_CouponCountUI() -- 4. Server 에서 받은 수량 정보로, UI 를 갱신해요. local function DoRefresh_CouponCountUI(count) CouponUI.Text:SetText(count) end Game:ConnectEventFunction("DoRefresh_CouponCountUI", DoRefresh_CouponCountUI)
ServerScript 에서 남아있는 쿠폰의 수량 정보와 함께 Client 함수를 호출해요.
--3. player:GetRemainCouponCount 함수에 연결되는 함수에요. local function DoGetRemainCouponCount(player, count) local playerID = player:GetPlayerID() Game:SendEventToClient(playerID , "DoRefresh_CouponCountUI", count) end --2. 특정 상황일 때 ClientScript 에서 호출되는 함수에요. local function ConfirmRemainCouponCount(player, couponType) --남아있는 쿠폰의 수량을 확인해요. --(확인할 쿠폰 타입, 남은 쿠폰 확인 처리 함수) player:GetRemainCouponCount(couponType, DoGetRemainCouponCount) end Game:ConnectEventFunction("ConfirmRemainCouponCount", ConfirmRemainCouponCount)
이벤트 키 사용법
1) 이벤트 키 생성하기
1. 월드 관리 페이지의 우측 상단 리스트 메뉴에서 이벤트 키 설정 클릭해요.

2. 이벤트 키 설정 페이지는 아래와 같이 구성되어 있어요.

1
등록하기 버튼
등록하기 버튼을 눌러 이벤트 키를 등록할 수 있어요.
2
이벤트 키 정보
등록된 이벤트 키 정보가 표시돼요.
3
이벤트 키 참여 리스트
이벤트 키 참여 유저 리스트가 표시돼요.
2.1 등록된 이벤트 키의 상태는 유효 기간에 따라 달라져요.

1
대기
유효기간 이전일 때의 상태에요.
2
진행
유효기간 일 때의 상태에요.
3
종료
유효기간 이후일 때의 상태에요.
4
중지
관리자의 비활성 설정했을 때의 상태에요.
2.2 이벤트 키 상세 페이지에서는 아래 기능들을 이용할 수 있어요.

① : 이벤트 키 복제
② : (상태 별) 이벤트 키 유효 기간 수정, 이벤트 키 진행 중지
2.3 이벤트에 참여한 유저들을 편리하게 구분하여 확인할 수 있어요.

1
이벤트 키 종류
원하는 종류의 이벤트 키 참여 유저들을 확인할 수 있어요.
2
검색 기준
이벤트 키 참여 유저들의 ID, 쿠폰 중 선택하여 검색할 수 있어요.
3. 이벤트 키 등록 화면은 아래와 같이 구성되어 있어요.

1
이벤트 키
이벤트 키의 이름 (영문, 숫자 20자 이내로 입력해요)
2
참여 수
이벤트에 참여할 유저의 수에요. (제한이 없으면 모든 유저가 참여 가능하고, 숫자를 입력하면 정해진 인원 수만큼 참여할 수 있어요)
3
유효 기간
이벤트에 참여할 수 있는 기간이에요. (시작 기간이 되어야 사용할 수 있으며, 종료 기간이 되면 사용할 수 없게 됩니다)
4
설명
해당 이벤트 키에 대한 설명이에요. (생략 가능합니다)
2) Script에서 이벤트 키 연동하기
ServerScript에서 이벤트 키의 처리를 아래와 같이 구현해요.
--2. player:AddEventKey 함수에 연결되는 함수에요. local function DoEventKey(player, eventKeyReturnData) wait(1) local state = eventKeyReturnData.State --이벤트키의 상태 local maxCount = eventKeyReturnData.MaxCount --이벤트키의 최대 인원 local useCount = eventKeyReturnData.UseCount --이벤트키의 참여자 수 local result = eventKeyReturnData.Result --이벤트키 등록 결과 --이벤트키 상태 및 등록 수 if state == Enum.EventKeyState.Wait then print("이벤트키 상태 : 대기") elseif state == Enum.EventKeyState.Doing then print("이벤트키 상태 : 진행") elseif state == Enum.EventKeyState.Stop then print("이벤트키 상태 : 중지") elseif state == Enum.EventKeyState.End then print("이벤트키 상태 : 종료") end print("이벤트키 등록 수 : ", useCount, " / ", maxCount) --이벤트키 등록 결과가 Success이면 if result == Enum.EventKeyResult.Success then print("이벤트키를 등록했습니다!") --이벤트키 사용 결과가 Exist이면 elseif result == Enum.EventKeyResult.Exist then print("이미 등록한 이벤트키입니다!") --이외에는 else print("유효하지 않은 이벤트키입니다!") end end --------------------------------------------------------------------- --1. 콜라이더 충돌시 호출되는 함수에요. local function EnterTrigger(self, target) if target == nil or not target:IsCharacter() then return end local player = target:GetPlayer() --이벤트키에 플레이어를 등록 처리해요. --(이벤트키 이름, 이벤트키 등록 처리 함수) player:AddEventKey("EventKeyName", DoEventKey) end BoxCollider.Collision.OnBeginOverlapEvent:Connect(EnterTrigger)
Last updated
Was this helpful?