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 에 쿠폰 번호를 입력하면, 해당 쿠폰을 사용하도록 처리하는 스크립트 예시에요.

  1. 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) --버튼 클릭 이벤트

  2. 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 함수를 이용해서, 남아있는 쿠폰 중 하나를 사용하도록 할 수 있어요.

    1. 플레이어에게 쿠폰을 사용 처리할 수 있도록, ClientScript 에서 Server 함수를 호출해요.

      local function ClearGame()
          Game:SendEventToServer("UseCoupon", "ClearReward")
      end
      
      ClearGame()
    2. 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 함수를 이용해서, 남아있는 쿠폰의 수량을 확인할 수 있어요.

    1. 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)
    2. 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에서 이벤트 키 연동하기

  1. 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