API Summary

ZEP-Script API 한눈에 보기

🔍Ctrl + F를 이용해 원하는 API를 찾아보세요!

═════════════════════

🕹️ ScriptApp

═════════════════════

♻️ Lifecycle

App.onInit.Add(function(){})

App이 최초로 시작될 때 한 번 호출됩니다.

App.onJoinPlayer.Add(function(player){})

onInit이 호출된 후, 접속해 있는 모든 플레이어를 해당 이벤트를 통해 입장시키고, 이후 입장하는 플레이어가 있을 때 마다 동작합니다.

App.onStart.Add(function(){})

모든 플레이어가 onJoinPlayer를 통해 입장한 후 한 번 호출 됩니다.

App.onUpdate.Add(function(dt){})

약 20ms 마다 주기적으로 실행되는 함수입니다.

App.onLeavePlayer.Add(function(player){})

퇴장하는 플레이어가 있을 때 마다 동작합니다. 이후, 다른 App이 실행되거나 설치한 Game Block이 파괴될 때 모든 플레이어를 이 함수를 통해 퇴장시킵니다.

App.onDestroy.Add(function(){})

다른 App이 실행되거나, 설치한 Game Block이 파괴될 때 동작합니다.

🗃️ Field

App.spaceHashID: String App.mapHashID: String

앱이 설치된 스페이스의 spaceHashID와 mapHashID를 가져옵니다. (스페이스와 맵 이해하기)

App.creatorID

App을 실행한 플레이어의 ID 값을 가져옵니다.

App.players: ScriptPlayer[]

맵에 있는 모든 플레이어 리스트를 배열로 가져옵니다.

App.playerCount: Number

앱이 설치된 맵에 있는 플레이어의 수를 가져옵니다.

App.cameraEffect: NONE = 0, SPOTLIGHT = 1 App.cameraEffectParam1: Number

App.cameraEffect: 카메라 이펙트의 종류를 셋팅할 변수 값

App.cameraEffectParam1: 카메라 이펙트 효과의 범위 값

App.displayRatio

화면의 줌을 컨트롤 하는 값 (기본 값: 1)

App.storage: String

스페이스 내의 App 데이터의 저장공간 입니다. (스페이스 한정) Storage 페이지를 참고해주세요.

App.followPlayer: Boolean

App의 따라가기 기능 활성화 여부 값 입니다. (기본 값 : false)

App.showName: Boolean

플레이어의닉네임 숨김여부 값 입니다. (기본 값: true)

App.appHashID: String

앱의 HashID를 가져옵니다.

️💾 Storage

App.setStorage(string) / App.getStorage(function())

App.setStorage 함수로 App storage를 저장하고, 앱을 사용중인 다른 맵의 App storage 변경사항이 있을 경우 App.getStorage 함수로 App storage를 동기화 할 수 있습니다.

App.getStorage 함수는 비동기 함수이기 때문에 App.getStorage 함수 다음 라인에 App.storage를 사용하는 코드를 작성할 경우 동기화를 보장할 수 없습니다.

🛰️ EventListeners

App.onSay.Add(function(player, text){});

플레이어가 채팅을 입력할 때 동작합니다.

App.onPlayerTouched.Add(function(sender, target, x, y){});

캐릭터들끼리 충돌할 때 동작합니다.

App.onObjectTouched.Add(function(sender, x, y, tileID, obj){});

캐릭터가 오브젝트와 충돌할 때 동작합니다.

App.onAppObjectTouched.Add(function(sender, key, x, y ){});

️ 캐릭터가 키 값을 가진 오브젝트와 충돌할 때 동작합니다.

App.onUnitAttacked.Add(function(sender, x, y, target){});

플레이어가 공격 키(Z)로 다른 캐릭터를 공격할 때 동작합니다.

App.onObjectAttacked.Add(function(sender, x, y){});

플레이어가 공격 키(Z)로 오브젝트를 공격할 때 동작합니다.

App.onSidebarTouched.Add(function(player){});

플레이어가 사이드바 앱을 클릭(터치) 할 때 동작합니다.

App.onTriggerObject.Add(function(player, layerID, x, y){});

오브젝트와 F 상호작용 시 동작하는 함수입니다.

App.onAppObjectAttacked.Add(function (sender, x, y, layer, key) {});

플레이어가 공격 키(Z)로 키 값을 가진 오브젝트를 공격할 때 동작합니다.

☎️ Callbacks

App.runLater(function(){}, time: number);

time(초) 후에 callback 함수를 실행합니다.

App.addOnTileTouched(x:number, y: number, function(player){})

지정한 x, y좌표에 플레이어가 도착할 경우 callback 함수를 실행합니다.

App.addOnLocationTouched(name: string, function(player){})

플레이어가 맵에디터에서 지정한 ‘지정영역’에 도착했을 때 callback 함수를 실행합니다.

App.addOnKeyDown(keycode : number, function(player){});

플레이어가 지정된 키를 눌렀을 때 callback 함수를 실행합니다.

setTimeout(function(){}, time: number);

time(ms) 후에 callback 함수를 실행합니다.

setInterval(function(){}, time: number);

time(ms) 간격으로 callback 함수를 실행합니다.

App.addMobileButton( anchor: number, posX: number, posY: number, function(player){} )

모바일 환경에서 커스텀 모바일 버튼을 추가하고, 버튼을 눌렀을 때 동작하는 함수를 지정합니다.

App.putMobilePunch(enable: boolean = true)

enable이 true이면 모바일 환경에서 펀치 버튼이 추가됩니다.

App.putMobilePunchWithIcon(icon: ScriptDynamicResource)

로드한 이미지로 펀치 버튼을 만들어 추가합니다.

💠 Methods

App.loadSpritesheet(fileName: string, frameWidth: number, frameHeight: number, anims: array, frameRate: number): ScriptDynamicResource

스프라이트 시트 그림 파일을 읽어 객체화하는 함수입니다.

App.showCenterLabel(text: string, color: uint = 0xFFFFFF, bgColor: uint = 0x000000, offset: number = 0, time: number = 3000)

모든 플레이어에게 지정된 위치에 text를 3초간 표시하는 함수입니다.

App.showCustomLabel(text: string, color: number = 0xFFFFFF, bgColor: number = 0x000000, offset: number = 0, width = 100, opacity = 0.6, time: number = 3000);

모든 플레이어에게 지정된 위치에 text를 3초간 표시하는 함수입니다.

text 부분에 span 태그를 넣어 텍스트를 꾸밀 수 있습니다.

App.sayToAll(text: string, color: uint = 0xFFFFFF)

채팅창에 text 내용을 출력합니다.

App.sayToStaffs(text: string, color: uint = 0xFFFFFF)

Staff이상 권한의 유저 채팅창에 text 내용을 출력합니다.

App.showWidget(fileName: string, align: string, width: number, height: number): ScriptWidget

모든 플레이어에게 지정된 align의 위치에 해당 html파일을 위젯으로 불러오는 함수입니다.

App.showYoutubeWidget(link: string, align: string, width: number, height: number): ScriptWidget

링크에 해당하는 Youtube 컨텐츠를 위젯으로 불러옵니다.

App.spawnPlayer(playeID: string, tileX: number, tileY: number)

playerID 에 해당하는 플레이어를 tileX, tileY 좌표로 이동시키는 함수입니다.

App.kickPlayer(playerID: string)

playerID 에 해당하는 플레이어를 추방하는 함수입니다.

App.forceDestroy();

미니게임 앱을 강제 종료하는 함수입니다.

App.clearChat();

모든 채팅 내용을 삭제하는 함수입니다.

App.getPlayerByID(playerID: string);

id 에 해당하는 플레이어를 반환하는 함수입니다.

App.playSound(fileName: string, loop: boolean = false, overlap: boolean = false)

모든 플레이어에게 사운드를 재생하는 함수입니다.

App.playSoundLink(link: string, loop: boolean = false)

모든 플레이어에게 사운드를 재생하는 함수입니다.

App.stopSound();

재생되고 있는 사운드를 멈추는 함수입니다.

App.httpGet(url: string, headers: object, function(res: string){})

http get 요청을 보내는 함수입니다.

App.httpPost(url: string, headers: object, body: object, function(res: string))

Form-Data 형태의 http post 요청을 보내는 함수 입니다.

App.httpPostJson(url: string, headers: object, body: object, function(res: string))

Json 형태의 http post 요청을 보내는 함수 입니다.

App.sendUpdated()

App 관련 필드 값이 변경되면 변경 값을 적용하는 함수입니다.

App.changeAttackSound(fileName:string)

찌르기(Z키) 공격 효과음을 변경하는 함수입니다.

═════════════════════

🗺️ ScriptMap

═════════════════════

🗃️ Field

Map.width : Number Map.height : Number

맵의 너비와 높이 값을 가져옵니다.

💠 Methods

Map.putTileEffect(x: number, y: number, tileID: TileEffectType)

지정한 좌표에 타일 효과를 적용하는 함수입니다.

Map.putObject(x: number, y: number, dynamicResource: ScriptDynamicResource, option: JsValue)

지정한 좌표에 오브젝트를 놓는 함수입니다. (기준 좌표: Left Top) → 기준 좌표란?

Map.putObjectMultiple(tileArray: array, type: PutObjectType, dynamicResource: ScriptDynamicResource);

오브젝트를 배치할 좌표들을 2차원 배열로 입력하여 한 번에 오브젝트를 설치하는 기능입니다. 이 기능을 사용하면 한 번에 많은 오브젝트를 설치할 경우 부하를 줄이는 효과를 얻을 수 있습니다.

Map.putObjectWithKey(x: number, y: number, dynamicResource: ScriptDynamicResource, option: JsValue)

지정한 좌표에 키 값을 가진 오브젝트를 놓는 함수입니다. (기준 좌표: Left Top)

Map.getObjectWithKey(key: String)

해당 키 값을 가지고 있는 오브젝트의 정보를 가져옵니다.

Map.playObjectAnimation(x: number, y: number, name: string)

해당 좌표에 있는 오브젝트의 스프라이트 애니메이션을 실행시키는 함수입니다.

해당 좌표 지점에 Map.putObject 함수가 선행되어야합니다.

Map.playObjectAnimation(key: string, animName: string, repeatCount: number)

key 값이 일치하는 오브젝트의 스프라이트 애니메이션을 실행시키는 함수입니다.

Map.moveObject(x: number, y: number, targetX: number, targetY: number, time: number)

x, y 좌표에 위치한 오브젝트를 targetX, targetY로 time 초 동안 움직이는 함수입니다.

해당 좌표 지점에 Map.putObject 함수가 선행되어야합니다.

Map.moveObjectWithKey(key: string, targetX: number, targetY: number, path:boolean = true)

key 값을 가진 오브젝트를 targetX, targetY로 움직이는 함수입니다.

Map.clearAllObjects()

ZEP 스크립트로 생성된 모든 오브젝트를 제거하는 함수입니다.

Map.getTile(layer: number, x: number, y: number): number

해당하는 레이어의 x, y 좌표에 있는 타일의 타입 값을 리턴, 타일이 없으면 -1을 리턴합니다.

Map.getLocation(locationName: string)

파라미터로 전달한 로케이션이 존재하는 경우, 로케이션 설치 좌표를 리턴합니다.

Map.getLocationRandom(locationName: string)

파라미터로 전달한 로케이션이 2개이상 존재하는 경우, 무작위로 선택하여 로케이션 설치 좌표를 리턴합니다.

Map.hasLocation(locationName: String): Boolean

맵에 해당 로케이션이 있는지 체크하여 true/false 값을 리턴합니다.

Map.getObjectsByType(type: numer) : array

Type에 해당하는 오브젝트들을 리턴하는 함수입니다.

Map.getTopObjectsByType(type: numer) : array

Type에 해당하는 상단오브젝트들을 리턴하는 함수입니다.

Map.sayObjectWithKey( key: string, message: string )

key 값을 가진 오브젝트 위에 말풍선을 표시하는 함수입니다.

═════════════════════

👥 ScriptPlayer

═════════════════════

🗃️ Field

player.id : Number player.name : String

플레이어의 id, 닉네임 값을 가져옵니다.

player.title : String

title은 캐릭터 닉네임 위에 노란색으로 노출되는 텍스트입니다.

player.role : Number

role은 플레이어의 권한을 나타내는 숫자 값 입니다. 플레이어의 role에 따라 다음과 같은 값을 출력합니다.

게스트

-1

스태프

2000

0

관리자

3000

에디터

1000

맵소유자

3001

player.tileX: Number player.tileY: Number

플레이어의 캐릭터가 서있는 X 좌표 값과 Y 좌표 값입니다.

player.dir : Number

플레이어의 캐릭터가 바라보고 있는 방향입니다.

캐릭터가 바라보고 있는 방향에 따라 다음과 같은 값을 출력합니다.

player.moveSpeed : Number

플레이어의 이동속도 값입니다. (기본 값: 80)

player.sprite : ScriptDynamicResource

플레이어 캐릭터의 스프라이트 이미지입니다. (null 입력 시 기본 아바타 이미지로 초기화)

player.tag: Any

tag를 사용해 플레이어에게 필요한 속성 값을 부여 할 수 있습니다.

player.hidden: Boolean

hidden 값이 true 이면, 해당 플레이어는 다른 플레이어에게 보이지 않습니다.

player.spotlight: Boolean

플레이어의 스팟 라이트 기능 활성화 여부입니다.

player.disableVideo : Boolean player.disableAudio : Boolean

플레이어의 비디오/오디오 가능 여부입니다.

player.attackType : Number

플레이어의 공격(Z키) 타입입니다. (기본: 0)

player.attackParam1: Number

공격(Z키) 이미지가 날아가는 거리 속성입니다. 공격 가능 거리는 늘어나지 않습니다.

player.attackParam2: Number

공격 가능 거리 속성입니다. attackType이 원거리 공격으로 설정 된 경우에만 유효합니다.

player.attackSprite : ScriptDynamicResource

공격(Z키) 이미지 속성입니다.

player.walletAddress : String

플레이어의 전자지갑 주소입니다.

player.storage : String

스페이스 내의 Player 값 저장 공간 입니다 (스페이스 한정)

player.isMobile : Boolean

플레이어의 모바일 접속 여부를 true/false 로 출력합니다.

player.isMoving : Boolean

플레이어가 움직이고 있으면 True, 아니면 False를 반환합니다.

player.isJumping : Boolean

플레이어가 점프하고 있으면 True, 아니면 False를 반환합니다.

player.customData : String

URL 쿼리스트링으로 전달 받은 값을 저장하는 필드입니다. 🔥 URL 쿼리스트링 활용하기

player.displayRatio: number

플레이어화면의 줌을 컨트롤 하는 값 ( 기본 값: 1 )

player.titleColor: number

플레이어의 타이틀 색상을 읽거나 수정 할 수 있습니다.

player.emailHash

플레이어의 이메일 Hash 값을 가져옵니다.

player.isGuest

비로그인 플레이어인 경우 true 값을 가집니다.

player.away

5분 이상 비활성화된 유저인 경우 true값을 가집니다.

💠 Methods

player.showCenterLabel(text: string, color: uint = 0xFFFFFF, bgColor: uint = 0x000000, offset: number = 0, time: number = 3000)

해당 플레이어에게 지정된 위치에 text를 3초간 표시하는 함수입니다.

player.showCustomLabel(text: string, color: number = 0xFFFFFF, bgColor: number = 0x000000, offset: number = 0, width = 100, opacity = 0.6, time: number = 3000);

모든 플레이어에게 지정된 위치에 text를 3초간 표시하는 함수입니다.

text 부분에 span 태그를 넣어 텍스트를 꾸밀 수 있습니다.

player.showWidget(fileName: string, align: string, width: number, height: number): ScriptWidget

해당 플레이어에게 지정된 align의 위치에 해당 html파일을 위젯으로 불러오는 함수입니다.

player.showBuyAlert(itemName: string, price: number, callback: function, payToSpaceOwner: boolean = false)

플레이어에게 구매 위젯을 표시하고, 구매 후 동작하는 콜백함수를 작성할 수 있습니다. payToSpaceOwner 옵션이 false인 경우 앱 소유자에게 수익이 전달되며, true인 경우에는 앱이 설치된 맵의 소유자에게 수익이 전달됩니다.

player.hideBuyAlert()

플레이어의 구매 위젯을 닫습니다.

player.sendMessage(text: string, color: uint = 0xFFFFFF)

유저 개인에게 채팅 메시지를 보내는 함수입니다.

player.showPrompt(text: string, function(inputText), option = {})

플레이어에게 입력창을 보여주고, 플레이어의 응답에 따라 동작하는 callback 함수를 작성할 수 있습니다.

player.showConfirm(text: string, function(result), option = {})

플레이어에게 확인창을 보여주고, 플레이어가 OK를 눌렀을 때 동작하는 callback 함수를 작성할 수 있습니다. cancel을 누를 경우에는 callback 함수가 동작하지 않습니다.

player.showAlert(text: string, function(), option = {})

플레이어에게 경고창을 보여주고, 플레이어가 OK를 눌렀을 때 동작하는 callback 함수를 작성할 수 있습니다.

player.showWidgetResponsive(fileName:string, marginTop:number, marginRight:number, marginBottom:number, marginLeft:number)

위젯의 상/하/좌/우 여백을 화면 크기에 대한 %비율로 정의 하여 위젯을 표시합니다.

화면의 크기가 여백을 포함한 위젯 영역보다 작아질 경우, 위젯의 크기가 비례하여 작아집니다

player.openWebLink(url:string, popup:boolean=false)

플레이어에게 웹 URL을 새 창이나 팝업 창으로 표시합니다.

player.showWidget(url: string, align: string, width: number, height: number, hasBackdrop: boolean = true)

해당 플레이어에게 지정된 align의 위치에 url 임베드 화면을 표시하는 함수입니다.

player.showImage(url: string)

플레이어에게 입력한 이미지 주소에 해당하는 이미지를 표시합니다.

player.showNoteModal(text: string)

플레이어에게 텍스트 창을 보여주는 함수입니다.

player.isEmail(email: string): boolean

해당 플레이어의 이메일이 파라미터 값과 같다면 true, 아니면 false를 리턴합니다.

player.getLocationName : string

플레이어가 서있는 지정영역의 이름을 출력합니다.

player.spawnAt(tileX: int ,tileY: int, dir: int = 0)

플레이어의 캐릭터를 tileX, tileY 좌표로 지정한 방향을 바라보게 이동시킵니다.

player.spawnAtLocation(name: string, dir:int = 0)

플레이어의 캐릭터를 name에 해당하는 지정 영역으로 지정한 방향을 바라보게 이동시킵니다.

player.spawnAtMap(spaceHashID string, mapHashID:string = null)

플레이어를 해당 스페이스 해당 맵으로 이동시킵니다.

[1] player.setCameraTarget( tileX: Number, tileY: Number, time: Number )

[2] player.setCameraTarget( key: String, time: Number )

[1] 플레이어의 시점을 지정된 좌표로 중심 이동시킵니다.

[2] 플레이어의 시점을 특정 오브젝트로 중심 이동시킵니다.

player.setEffectSprite(resource: ScriptDynamicResource, offsetX: Number, offsetY: Number, type: Number)

플레이어의 배경 또는 전경 이미지를 설정 할 수 있습니다.

Player.playSound(fileName: string, loop: boolean = false, overlap: boolean = false)

해당 플레이어에게 사운드를 재생하는 함수입니다.

player.playSoundLink(link: string, loop: boolean = false)

모든 플레이어에게 사운드를 재생하는 함수입니다.

player.sendUpdated()

App, Player 관련 필드 값이 변경되면 변경 값을 적용하는 함수입니다.

player.save()

App, Player storage 값이 변경되면 변경 값을 적용하는 함수입니다.

═════════════════════

🧙‍♂️ ScriptWidget

═════════════════════

🗃️ Field

widget.id

위젯의 아이디 값을 가져옵니다.

🛰️ EventListeners

widget.onMessage.Add(function(player, data: any){});

위젯에서 App으로 메시지를 보내면 callback 함수가 동작합니다.

💠 Methods

widget.sendMessage(object: any)

App에서 위젯으로 데이터를 보냅니다.

widget.destroy()

위젯을 삭제하는 함수입니다.

═════════════════════

🔩 Utility Class

═════════════════════

⏳ Time

Time.getTime()

ZEP 서버의 현재 시간을 milliseconds 단위의 값으로 리턴합니다.

Time.getUtcTime()

현재 UTC 시간을 milliseconds 단위의 값으로 리턴합니다.

Time.getTimeInterval(timeA: number, timeB: number, returnType: DateType)

timeB - timeA를 계산하고, 그 결과를 지정한 returnType으로 반환합니다.

Last updated