BadgeService

유저가 배지를 획득할 수 있게 하거나 배지 정보를 조회하는 기능을 제공합니다.

# Methods

[{"index":"boolean AwardBadgeAndWait(string userId, string badgeId) (ServerOnly) (Yield)","0":"유저에게 배지를 지급하고 지급 성공 여부를 반환합니다. 수행하는 동안 스크립트 실행을 중단합니다. 메이커 환경에서는 지급 받을 수 없는 상태의 배지도 테스트를 위해 지급 받을 수 있습니다."}]

[{"index":"BadgeInfo GetBadgeInfoAndWait(string badgeId) (Yield)","0":"배지의 정보를 얻습니다. 수행하는 동안 스크립트 실행을 중단합니다. 출시된 월드에서는 Waiting, Ing, End 상태의 배지의 정보를 얻을 수 있고, 제작 중인 월드에서는 Register, Waiting, Ing, End 상태의 배지의 정보를 얻을 수 있습니다."}]

[{"index":"void GetBadgeInfoAsync(string badgeId, func callback)","0":"배지의 정보를 얻습니다. 이 작업은 비동기로 수행되며, 지정한 callback으로 결과를 받아볼 수 있습니다. callback의 첫 번째 매개 변수는 배지의 Id, 두 번째는 배지의 정보입니다. 출시된 월드에서는 Waiting, Ing, End 상태의 배지의 정보를 얻을 수 있고, 제작 중인 월드에서는 Register, Waiting, Ing, End 상태의 배지의 정보를 얻을 수 있습니다."}]

[{"index":"BadgeInfoPages GetBadgeInfosAndWait(table badgeGrades, BadgeStatus badgeStatus) (Yield)","0":"검색 조건에 부합하는 배지들의 정보를 확인할 수 있는 객체를 얻습니다. 수행하는 동안 스크립트 실행을 중단합니다. badgeGrades에 nil 지정 시 모든 등급의 배지를 검색하고, badgeStatus에 nil 지정 시 검색 가능한 모든 상태의 배지가 검색됩니다. 출시된 월드에서는Waiting, Ing, End 상태의 배지만 검색 가능하고, 제작 중인 월드에서는 Register, Waiting, Ing, End 상태의 배지가 검색 가능합니다."}]

[{"index":"boolean UserHasBadgeAndWait(string userId, string badgeId) (Yield)","0":"유저가 배지를 가지고 있는지 확인합니다. 수행하는 동안 스크립트 실행을 중단합니다. 제작 중인 월드에서는 배지를 하나도 가지지 않은 채로 시작합니다."}]

[{"index":"void UserHasBadgeAsync(string userId, string badgeId, func callback)","0":"유저가 배지를 가지고 있는지 확인합니다. 이 작업은 비동기로 수행되며, 지정한 callback으로 결과를 받아볼 수 있습니다. 첫 번째 매개 변수는 유저의 Id이고, 두 번째는 배지의 Id, 세 번째는 배지를 가지고 있는지 여부입니다. 제작 중인 월드에서는 배지가 없는 상태로 시작합니다."}]

##### inherited from Service:

[{"index":"EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"boolean DisconnectEvent(string key, EventHandlerBase eventHandler)","0":"타입의 이름이 key인 이벤트와 핸들러와의 이벤트 연결을 끊습니다."}]

[{"index":"boolean DisconnectEvent(Type eventType, EventHandlerBase eventHandler)","0":"타입이 eventType인 이벤트와 핸들러와의 연결을 끊습니다."}]

[{"index":"void SendEvent(EventType sendEvent)","0":"이벤트를 발생시킵니다."}]

# Examples

#### GetBadgeInfosAndWait

조건에 해당하는 배지들을 검색할 수 있습니다. 이 함수가 리턴하는 BadgeInfoPages 타입의 객체는 검색된 결과가 많을 경우 결과를 페이지 단위로 나눠 구할 수 있게 해줍니다.
    
    
    @Component
    script AvailableNormalRareBadgeFinder extends Component
        method void SearchAvailableNormalRareBadges()
        -- 노멀, 레어 등급이고 획득 가능 상태인 배지를 검색합니다.
        local pages = _BadgeService:GetBadgeInfosAndWait({BadgeGrade.Normal, BadgeGrade.Rare}, BadgeStatus.Ing)
    
        while true do
        	local pageDatas = pages:GetCurrentPageDatas()
    
        	for _, badge in ipairs(pageDatas) do
        		-- 검색된 배지의 정보
        		log("Badge Id: " .. badge.Id .. " Name: " .. badge.Name .. " Grade: " .. tostring(badge.Grade))
        	end
    
        	if pages.IsLastPage then
        		break
        	end
    
        	pages:MoveToNextPageAndWait()
        end
        end
    end
    

# SeeAlso

  * [배지 관리하기](/docs?postId=663)
  * [배지 등록하기](/docs?postId=656)
  * [배지 서비스 활용하기](/docs?postId=664)