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 상호작용 시 동작하는 함수입니다.
플레이어가 공격 키(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.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