ZEP Guidebook (KR)
Search
βŒƒK

Methods

μ†Œκ°œ

UI, μœ μ € 컨트둀, μ‚¬μš΄λ“œ λ“± ZEPμ—μ„œ 일어날 수 μžˆλŠ” μ „λ°˜μ μΈ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
ν”Œλ ˆμ΄μ–΄ 개인 화면에 UIλ₯Ό ν‘œμ‹œ, ν”Œλ ˆμ΄μ–΄λ₯Ό 이동, ν”Œλ ˆμ΄μ–΄ κ°œμΈμ—κ²Œ μ‚¬μš΄λ“œ μž¬μƒ λ“± νŽΈλ¦¬ν•œ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

UI

이름
μ„€λͺ…
showCenterLabel
ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ§€μ •λœ μœ„μΉ˜μ— textλ₯Ό 3μ΄ˆκ°„ ν‘œμ‹œν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
showCustomLabel
ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ§€μ •λœ μœ„μΉ˜μ— textλ₯Ό 3μ΄ˆκ°„ ν‘œμ‹œν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€. text 뢀뢄에 span νƒœκ·Έλ₯Ό λ„£μ–΄ ν…μŠ€νŠΈλ₯Ό κΎΈλ°€ 수 μžˆμŠ΅λ‹ˆλ‹€.
showWidget
ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ§€μ •λœ μœ„μΉ˜μ— μœ„μ ―μ„ λΆˆλŸ¬μ˜€λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
showBuyAlert
ν”Œλ ˆμ΄μ–΄μ—κ²Œ ꡬ맀 μœ„μ ―μ„ ν‘œμ‹œν•˜κ³ , ꡬ맀 ν›„ λ™μž‘ν•˜λŠ” μ½œλ°±ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
hideBuyAlert
ν”Œλ ˆμ΄μ–΄μ˜λ§€κ΅¬ μœ„μ ―μ„ μˆ¨κΉλ‹ˆλ‹€.
sendMessage
μœ μ € κ°œμΈμ—κ²Œ μ±„νŒ… λ©”μ‹œμ§€λ₯Ό λ³΄λƒ…λ‹ˆλ‹€.
showPrompt
ν”Œλ ˆμ΄μ–΄μ—κ²Œ μž…λ ₯창을 보여주고, ν”Œλ ˆμ΄μ–΄μ˜ 응닡에 따라 λ™μž‘ν•˜λŠ” callback ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
showConfirm
ν”Œλ ˆμ΄μ–΄μ—κ²Œ 확인창을 보여주고, ν”Œλ ˆμ΄μ–΄κ°€ OKλ₯Ό λˆŒλ €μ„ λ•Œ λ™μž‘ν•˜λŠ” μ½œλ°±ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
showAlert
ν”Œλ ˆμ΄μ–΄μ—κ²Œ 경고창을 보여주고, ν”Œλ ˆμ΄μ–΄κ°€ OKλ₯Ό λˆŒλ €μ„ λ•Œ λ™μž‘ν•˜λŠ” callback ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
showWidgetResponsive
μœ„μ ―μ˜ 상/ν•˜/쒌/우 여백을 ν™”λ©΄ 크기에 λŒ€ν•œ %λΉ„μœ¨λ‘œ μ •μ˜ν•˜μ—¬ μœ„μ ―μ„ ν‘œμ‹œν•©λ‹ˆλ‹€.
openWebLink
ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ›Ή URL을 μƒˆ μ°½μ΄λ‚˜ νŒμ—… 창으둜 μ—΄μ–΄ λ³΄μ—¬μ€λ‹ˆλ‹€.

Data Load

이름
μ„€λͺ…
isEmail
ν”Œλ ˆμ΄μ–΄μ˜ 이메일을 λΉ„κ΅ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
getLocationName
ν”Œλ ˆμ΄μ–΄κ°€ μ„œμžˆλŠ” 지정 μ˜μ—­μ˜ 이름을 좜λ ₯ν•©λ‹ˆλ‹€.

User Control

이름
μ„€λͺ…
spawnAt
ν”Œλ ˆμ΄μ–΄μ˜ 캐릭터λ₯Ό μ§€μ •ν•œ μ’Œν‘œλ‘œ μ΄λ™μ‹œν‚€λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
spawnAtLocation
ν”Œλ ˆμ΄μ–΄μ˜ 캐릭터λ₯Ό 지정 μ˜μ—­μœΌλ‘œ μ΄λ™μ‹œν‚€λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
spawnAtMap
ν”Œλ ˆμ΄μ–΄λ₯Ό λ‹€λ₯Έ 슀페이슀 λ˜λŠ” 맡으둜 μ΄λ™μ‹œν‚€λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

Sound

이름
μ„€λͺ…
playSound
ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ‚¬μš΄λ“œ νŒŒμΌμ„ μž¬μƒν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
playSoundLink
ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ‚¬μš΄λ“œ URL을 μž¬μƒν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

곡톡

이름
μ„€λͺ…
sendUpdated
Player κ΄€λ ¨ ν•„λ“œ 값이 λ³€κ²½λ˜λ©΄ λ³€κ²½ 값을 μ μš©ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
save
Player storage 값이 λ³€κ²½λ˜λ©΄ λ³€κ²½ 값을 μ μš©ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
​

πŸ“š API μ„€λͺ… 및 예제

🎨 UI Methods

UI ν•¨μˆ˜ ν•œ λˆˆμ— 보기
// ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ§€μ •λœ μœ„μΉ˜μ— ν•΄λ‹Ή textλ₯Ό 3μ΄ˆκ°„ ν‘œμ‹œ
player.showCenterLabel(text: string, color: uint = 0xFFFFFF, bgColor: uint = 0x000000, offset: int = 0, time: int = 3000)
​
// λͺ¨λ“  ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ§€μ •λœ μœ„μΉ˜μ— ν•΄λ‹Ή textλ₯Ό 3μ΄ˆκ°„ ν‘œμ‹œ, μ»€μŠ€ν„°λ§ˆμ΄μ§• κ°€λŠ₯
player.showCustomLabel(text: string, color: number = 0xFFFFFF, bgColor: number = 0x000000, offset: number = 0, width = 100, opacity = 0.6, time: int = 3000);
​
// ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ§€μ •λœ align의 μœ„μΉ˜μ— ν•΄λ‹Ή htmlνŒŒμΌμ„ μœ„μ ―μœΌλ‘œ 뢈러옴
player.showWidget(fileName: string, align: string, width: number, height: number): ScriptWidget
​
// ν”Œλ ˆμ΄μ–΄μ—κ²Œ ꡬ맀 μœ„μ ―μ„ ν‘œμ‹œν•˜κ³ , ꡬ맀 ν›„ λ™μž‘ν•˜λŠ” μ½œλ°±ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
player.showBuyAlert(itemName: string, price: number, callback: function);
​
// ν”Œλ ˆμ΄μ–΄μ˜ ꡬ맀 μœ„μ ―μ„ λ‹«μŠ΅λ‹ˆλ‹€.
player.hideBuyAlert();
​
// ν”Œλ ˆμ΄μ–΄ κ°œμΈμ—κ²Œ μ±„νŒ… λ©”μ‹œμ§€λ₯Ό λ³΄λƒ…λ‹ˆλ‹€.
player.sendMessage(message: string, color: number = 0xFFFFFF)
​
// ν”Œλ ˆμ΄μ–΄μ—κ²Œ μž…λ ₯창을 보여주고, ν”Œλ ˆμ΄μ–΄μ˜ 응닡에 따라 λ™μž‘ν•˜λŠ” callback ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
player.showPrompt(text: string, function(inputText))
​
// ν”Œλ ˆμ΄μ–΄μ—κ²Œ 확인창을 보여주고, ν”Œλ ˆμ΄μ–΄κ°€ OKλ₯Ό λˆŒλ €μ„ λ•Œ λ™μž‘ν•˜λŠ” μ½œλ°±ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
player.showConfirm(text: string, function(result))
​
// ν”Œλ ˆμ΄μ–΄μ—κ²Œ 경고창을 보여주고, ν”Œλ ˆμ΄μ–΄κ°€ OKλ₯Ό λˆŒλ €μ„ λ•Œ λ™μž‘ν•˜λŠ” callback ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
player.showAlert(text: string, function())
​
// μœ„μ ―μ˜ 상/ν•˜/쒌/우 여백을 ν™”λ©΄ 크기에 λŒ€ν•œ % λΉ„μœ¨λ‘œ μ •μ˜ν•˜μ—¬ μœ„μ ―μ„ ν‘œμ‹œν•©λ‹ˆλ‹€.
player.showWidgetResponsive(fileName:string, marginTop:number, marginRight:number, marginBottom:number, marginLeft:number)
​
//ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ›Ή URL을 μƒˆ μ°½μ΄λ‚˜ νŒμ—… 창으둜 ν‘œμ‹œν•©λ‹ˆλ‹€.
player.openWebLink(url:string, popup:boolean);
​

showCenterLabel

player.showCenterLabel(text: string, color: uint = 0xFFFFFF, bgColor: uint = 0x000000, offset: number = 0, time: number = 3000)
ν•΄λ‹Ή ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ§€μ •λœ μœ„μΉ˜μ— textλ₯Ό 3μ΄ˆκ°„ ν‘œμ‹œν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
text
String
라벨에 좜λ ₯ν•  ν…μŠ€νŠΈ
color
Uint
좜λ ₯ν•  κΈ€μ”¨μ˜ 색을 μ§€μ •ν•©λ‹ˆλ‹€. (HexCode) 값을 μž…λ ₯ν•˜μ§€ μ•Šμ„ 경우, 흰색(0xFFFFFF)으둜 μ μš©λ©λ‹ˆλ‹€. βž‘οΈκ΅¬κΈ€ 색상 선택 도ꡬ​
bgColor
Uint
λ©”μ‹œμ§€κ°€ 좜λ ₯λ˜λŠ” 라벨의 배경색을 μ§€μ •ν•©λ‹ˆλ‹€. 값을 μž…λ ₯ν•˜μ§€ μ•Šμ„ 경우, 검은색(0x000000)으둜 μ μš©λ©λ‹ˆλ‹€.
offset
number
offset 값이 클수둝 ν‘œμ‹œλ˜λŠ” μœ„μΉ˜κ°€ ν™”λ©΄ μ•„λž˜μͺ½ λ°©ν–₯으둜 κ°€κΉŒμ›Œμ§‘λ‹ˆλ‹€. 값을 μž…λ ₯ν•˜μ§€ μ•Šμ„ 경우, 0으둜 μ§€μ •λ©λ‹ˆλ‹€.
time
number
라벨 ν‘œμ‹œ μ‹œκ°„ (ms), κΈ°λ³Έ κ°’ 3000 ( 3초 )
예제
λ…Έλž€μƒ‰ 라벨을 2μ΄ˆκ°„ 좜λ ₯해보기
App.onJoinPlayer.Add(function(player){
player.showCenterLabel(`${player.name}λ‹˜ ν™˜μ˜ν•©λ‹ˆλ‹€.`, 0x000000, 0xFFFF00, 500, 2000); // λ…Έλž€μƒ‰ λ°°κ²½, 검정색 κΈ€μ”¨λ‘œ ν‘œμ‹œν•˜κΈ°
});
​

showCustomLabel

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 νƒœκ·Έλ₯Ό λ„£μ–΄ ν…μŠ€νŠΈλ₯Ό κΎΈλ°€ 수 μžˆμŠ΅λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
text
String
라벨에 좜λ ₯ν•  ν…μŠ€νŠΈ ( span νƒœκ·Έ ν—ˆμš© )
color
Uint
좜λ ₯ν•  κΈ€μ”¨μ˜ 색 (HexCode) 값을 μž…λ ₯ν•˜μ§€ μ•Šμ„ 경우, 흰색(0xFFFFFF)으둜 μ μš©λ©λ‹ˆλ‹€. βž‘οΈκ΅¬κΈ€ 색상 선택 도ꡬ​
bgColor
Uint
λ©”μ‹œμ§€κ°€ 좜λ ₯λ˜λŠ” 라벨의 배경색 값을 μž…λ ₯ν•˜μ§€ μ•Šμ„ 경우, 검은색(0x000000)으둜 μ μš©λ©λ‹ˆλ‹€.
offset
number
offset 값이 클수둝 ν‘œμ‹œλ˜λŠ” μœ„μΉ˜κ°€ ν™”λ©΄ μ•„λž˜μͺ½ λ°©ν–₯으둜 κ°€κΉŒμ›Œμ§‘λ‹ˆλ‹€. 값을 μž…λ ₯ν•˜μ§€ μ•Šμ„ 경우, 0으둜 μ§€μ •λ©λ‹ˆλ‹€.
width
number
라벨의 λ„ˆλΉ„λ₯Ό n%둜 μ„€μ •ν•˜λŠ” κ°’ μž…λ‹ˆλ‹€. (κΈ°λ³Έ κ°’ 100)
opacity
number
라벨의 λ°°κ²½ 투λͺ…도λ₯Ό μ„€μ •ν•˜λŠ” κ°’ μž…λ‹ˆλ‹€. (κΈ°λ³Έ κ°’ 0.6, λ²”μœ„ 0 ~ 1)
time
number
라벨 ν‘œμ‹œ μ‹œκ°„ (ms), κΈ°λ³Έ κ°’ 3000 ( 3초 )
예제
HTML νƒœκ·Έλ₯Ό λ„£μ–΄ 라벨 꾸며보기
// xλ₯Ό λˆŒλ €μ„λ•Œ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.addOnKeyDown(88, function (player) {
// x λ₯Ό 넣을 흰색 λ°•μŠ€ μŠ€νƒ€μΌ
let style =
"display: inline-block; text-align: center; width:1.2em; height:1.2em; line-height: 1.2em; color: black; background-color: white; font-size: 1.2em; border-radius:3px";
player.showCustomLabel(
`<span style="${style}">X</span> λ²„νŠΌμ„ 눌러 예제λ₯Ό μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€`,
0xffffff, // 흰색글씨
0, // 검은색 λ°°κ²½
300, // μ˜€ν”„μ…‹ 300
20, // λ„ˆλΉ„ 20%
1, // 투λͺ…도 1 -> 뢈투λͺ…
5000 // ν‘œμ‹œ μ‹œκ°„ 5000 -> 5μ΄ˆκ°„ ν‘œμ‹œ
);
});

​

showWidget

player.showWidget(fileName: string, align: string, width: number, height: number): ScriptWidget
ν•΄λ‹Ή ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ§€μ •λœ align의 μœ„μΉ˜μ— ν•΄λ‹Ή htmlνŒŒμΌμ„ μœ„μ ―μœΌλ‘œ λΆˆλŸ¬μ˜€λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
fileName
String
뢈러올 파일의 이름
align
String
μœ„μ ―μ„ ν‘œμ‹œν•  μœ„μΉ˜ ’popup’, β€˜sidebar’, β€˜top’, β€˜topleft’, β€˜topright’, β€˜middle’, β€˜middleleft’, β€˜middleright’, β€˜bottom’, β€˜bottomleft’, β€˜bottomright’
width height
number
μœ„μ ―μ„ ν‘œμ‹œν•  μ˜μ—­μ˜ κ°€λ‘œ, μ„Έλ‘œ 크기(px)
예제
μ΄ˆμ„±ν€΄μ¦ˆ μœ„μ ― 따라해보기
예제_showWidget(player).zip
1KB
Binary
let _widget = null;
// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ μ‹€ν–‰
App.onJoinPlayer.Add(function (player) {
_widget = player.showWidget("widget.html", "top", 200, 300); // ν™”λ©΄ 상단, 200x300 μ˜μ—­μ— μœ„μ ―μ„ λ³΄μ—¬μ€Œ
_widget.sendMessage({
timer: 15,
answer: "ㅅㅍㅋ",
});
});
​
​

showBuyAlert

player.showBuyAlert(itemName: string, price: number, callback: function, payToSpaceOwner: Boolean)
ν”Œλ ˆμ΄μ–΄μ—κ²Œ ꡬ맀 μœ„μ ―μ„ ν‘œμ‹œν•˜κ³ , ꡬ맀 ν›„ λ™μž‘ν•˜λŠ” μ½œλ°±ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ†Œλͺ¨λœ ZEM은 μ•± μ œμž‘μžμ—κ²Œ λŒμ•„κ°€λ©°, λ‚΄ 후원 λ‚΄μ—­ νŽ˜μ΄μ§€μ—μ„œ 내역을 확인 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
ZEM μ •μ‚° κ΄€λ ¨ λ‚΄μš©μ€ μ •μ‚°κ°€μ΄λ“œ νŽ˜μ΄μ§€μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
itemName
String
ꡬ맀창에 ν‘œμ‹œν•  μ•„μ΄ν…œμ˜ 이름
price
number
μ•„μ΄ν…œμ˜ 가격 (ν™”νλ‹¨μœ„: ZEM)
callback
function
ꡬ맀 μ„±κ³΅μ‹œ λ™μž‘ν•  μ½œλ°±ν•¨μˆ˜
payToSpaceOwner
Boolean
κΈ°λ³Έ 값은 false둜 μ„€μ •λ˜λ©° false인 경우 μ•± μ†Œμœ μžμ—κ²Œ 수읡이 μ „λ‹¬λ˜κ³ ,
true인 경우 맡 μ†Œμœ μžμ—κ²Œ 수읡이 μ „λ‹¬λ©λ‹ˆλ‹€.
예제
μ•„μ΄ν…œμ„ κ΅¬λ§€ν•˜κ³  player.storage에 ꡬ맀정보 μ €μž₯ν•˜κΈ°
// qλ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.addOnKeyDown(81, function (player) {
let pStorage = JSON.parse(player.storage);
let itemName = "μ•„μ΄ν…œ";
if (pStorage == null) {
pStorage = {};
}
//이미 μ•„μ΄ν…œμ„ κ΅¬λ§€ν–ˆλ‹€λ©΄ λ©”μ‹œμ§€ 좜λ ₯
if (pStorage[itemName]) {
player.showCenterLabel(`${itemName}을 이미 κ΅¬λ§€ν–ˆμŠ΅λ‹ˆλ‹€.`);
} else {
player.showBuyAlert(itemName, 0, function () {
App.sayToAll(`[정보] ${player.name}λ‹˜μ΄ ${itemName}을 κ΅¬λ§€ν–ˆμŠ΅λ‹ˆλ‹€!`);
pStorage[itemName] = true;
player.storage = JSON.stringify(pStorage);
player.save();
}, false);
}
});
​
κ΅¬λ§€μœ„μ ― μ˜ˆμ‹œ
ꡬ맀에 μ„±κ³΅ν•œ 경우
​

hideBuyAlert

player.hideBuyAlert()
ν”Œλ ˆμ΄μ–΄μ˜ ꡬ맀 μœ„μ ―μ„ λ‹«μŠ΅λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
μ—†μŒ
​

sendMessage

player.sendMessage(text: string, color: uint = 0xFFFFFF)
μœ μ € κ°œμΈμ—κ²Œ μ±„νŒ… λ©”μ‹œμ§€λ₯Ό λ³΄λ‚΄λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
text
String
라벨에 좜λ ₯ν•  ν…μŠ€νŠΈ
color
Uint
좜λ ₯ν•  κΈ€μ”¨μ˜ 색을 μ§€μ •ν•©λ‹ˆλ‹€. (HexCode) 값을 μž…λ ₯ν•˜μ§€ μ•Šμ„ 경우, 흰색(0xFFFFFF)으둜 μ μš©λ©λ‹ˆλ‹€. βž‘οΈκ΅¬κΈ€ 색상 선택 도ꡬ​
예제
ν”Œλ ˆμ΄μ–΄ κ°œμΈμ—κ²Œλ§Œ λ³΄μ΄λŠ” ν™˜μ˜λ©”μ‹œμ§€ 좜λ ₯ν•˜κΈ°.
​
App.onJoinPlayer.Add(function(player){
player.sendMessage(`${player.name}λ‹˜ μ–΄μ„œμ˜€μ„Έμš”!\nhttps://docs-kr.zep.us/ 링크 ν΄λ¦­μ‹œ κ°€μ΄λ“œλ‘œ μ—°κ²°λ©λ‹ˆλ‹€.`,0xffffff);
});
​

​

showPrompt

player.showPrompt(text: string, function(inputText))
ν”Œλ ˆμ΄μ–΄μ—κ²Œ μž…λ ₯창을 보여주고, ν”Œλ ˆμ΄μ–΄μ˜ 응닡에 따라 λ™μž‘ν•˜λŠ” callback ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
text
String
μž…λ ₯창에 좜λ ₯ν•  ν…μŠ€νŠΈ
inputText
String
ν”Œλ ˆμ΄μ–΄κ°€ μž…λ ₯ν•œ ν…μŠ€νŠΈ
예제
"1234"λ₯Ό μž…λ ₯ν•˜λŠ” 경우 "Correct" λ©”μ‹œμ§€ 좜λ ₯해보기
// Q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.addOnKeyDown(81, function (player) {
player.showPrompt("πŸ” Please enter a password", function (inputText) {
if (inputText == "1234") {
player.showCenterLabel("Correct");
} else {
player.showCenterLabel("Incorrect");
}
});
});
​

showConfirm

player.showConfirm(text: string, function(result))
ν”Œλ ˆμ΄μ–΄μ—κ²Œ 확인창을 보여주고, ν”Œλ ˆμ΄μ–΄κ°€ OKλ₯Ό λˆŒλ €μ„ λ•Œ λ™μž‘ν•˜λŠ” callback ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. cancel을 λˆ„λ₯Ό κ²½μš°μ—λŠ” callback ν•¨μˆ˜κ°€ λ™μž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
text
String
확인창에 좜λ ₯ν•  ν…μŠ€νŠΈ
result
Boolean
ν”Œλ ˆμ΄μ–΄κ°€ OKλ₯Ό λˆ„λ₯΄λŠ” 경우 true
예제
OKλ₯Ό λˆ„λ₯Έ 경우 μ±„νŒ…μ°½μ— ν…μŠ€νŠΈ 좜λ ₯ν•˜κΈ°
// Q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.addOnKeyDown(81, function (player) {
player.showConfirm("confirm", (result) => {
App.sayToAll(result);
});
});
​

showAlert

player.showAlert(text: string, function())
ν”Œλ ˆμ΄μ–΄μ—κ²Œ 경고창을 보여주고, ν”Œλ ˆμ΄μ–΄κ°€ OKλ₯Ό λˆŒλ €μ„ λ•Œ λ™μž‘ν•˜λŠ” callback ν•¨μˆ˜λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
text
String
경고창에 좜λ ₯ν•  ν…μŠ€νŠΈ
예제
OKλ₯Ό λˆ„λ₯Έ 경우 μ±„νŒ…μ°½μ— ν…μŠ€νŠΈ 좜λ ₯ν•˜κΈ°
​
​
// Q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.addOnKeyDown(81, function (player) {
player.showAlert("alert", () => {
App.sayToAll(player.name + " show alert.");
});
});
​

showWidgetResponsive

player.showWidgetResponsive(fileName:string, marginTop:number, marginRight:number, marginBottom:number, marginLeft:number)
μœ„μ ―μ˜ 상/ν•˜/쒌/우 여백을 ν™”λ©΄ 크기에 λŒ€ν•œ %λΉ„μœ¨λ‘œ μ •μ˜ν•˜μ—¬ μœ„μ ―μ„ ν‘œμ‹œν•©λ‹ˆλ‹€.
ν™”λ©΄μ˜ 크기가 여백을 ν¬ν•¨ν•œ μœ„μ ― μ˜μ—­λ³΄λ‹€ μž‘μ•„μ§ˆ 경우, μœ„μ ―μ˜ 크기가 λΉ„λ‘€ν•˜μ—¬ μž‘μ•„μ§‘λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
fileName
String
뢈러올 파일의 이름
margin top/left/right/bottom
String
상/ν•˜/쒌/우 μ—¬λ°±μ˜ % κ°’
예제
ν™”λ©΄ 크기λ₯Ό μ€„μ΄λŠ” 경우 μœ„μ ―μ˜ 크기 λ³€ν™”
showWidgetResponsive.zip
16KB
Binary
App.onJoinPlayer.Add(function (player) {
player.tag = {};
});
​
// Q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.addOnKeyDown(81, function (player) {
player.tag.widget = player.showWidgetResponsive("result.html", 15, 15, 15, 15);
player.tag.widget.onMessage.Add(function (player, data) {
if (data.type == "close") {
player.tag.widget.destroy();
player.tag.widget = null;
}
});
});
​
player.openWebLink(url:string, popup:boolean=false)
ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ›Ή URL을 μƒˆ μ°½μ΄λ‚˜ νŒμ—… 창으둜 ν‘œμ‹œν•©λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
url
String
μ—°κ²°ν•  μ›Ή url μ£Όμ†Œ
popup
boolean
true 인 경우, url 창을 νŒμ—… ν˜•νƒœλ‘œ ν‘œμ‹œν•©λ‹ˆλ‹€.
예제
openWebLink νŒμ—…μœΌλ‘œ μ—¬λŠ” 경우
// Q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.addOnKeyDown(81, function (player) {
player.openWebLink("https://zep.us", true);
});
νŒμ—…μœΌλ‘œ url 창을 ν‘œμ‹œ
​

πŸ’» Data Load Methods

Data Load Methods ν•¨μˆ˜ ν•œ λˆˆμ— 보기
// μ§€μ •ν•œ 이메일과 ν”Œλ ˆμ΄μ–΄μ˜ 이메일을 비ꡐ
player.isEmail(email: string): boolean
​
// ν”Œλ ˆμ΄μ–΄κ°€ μ„œμžˆλŠ” ꡬ역이름을 호좜
player.getLocationName(): string

isEmail

player.isEmail(email: string): boolean
ν•΄λ‹Ή ν”Œλ ˆμ΄μ–΄μ˜ 이메일이 νŒŒλΌλ―Έν„° κ°’κ³Ό κ°™λ‹€λ©΄ true, μ•„λ‹ˆλ©΄ falseλ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
email
String
비ꡐ할 이메일 ν…μŠ€νŠΈ
예제
ν”Œλ ˆμ΄μ–΄μ˜ 이메일이 μ§€μ •ν•œ ν…μŠ€νŠΈμ™€ 같은지 비ꡐ해보기
// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
let check = player.isEmail("[email protected]");
App.sayToAll(`이메일 일치 μ—¬λΆ€: ${check}`)
})
​

getLocationName

player.getLocationName : string
ν”Œλ ˆμ΄μ–΄κ°€ μ„œμžˆλŠ” 지정 μ˜μ—­μ˜ 이름을 좜λ ₯ν•©λ‹ˆλ‹€.
지정 μ˜μ—­μ€ β€˜λ§΅μ—λ””ν„° > νƒ€μΌνš¨κ³Όβ€™ μ—μ„œ μ„€μ • ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
  • μ—†μŒ
예제
캐릭터가 μ„œμžˆλŠ” νƒ€μΌμ˜ μ˜μ—­μ΄λ¦„ 좜λ ₯해보기
β†’ 지정 μ˜μ—­ 섀정이 μ•ˆλ˜μžˆλ‹€λ©΄ 곡백으둜 좜λ ₯λ©λ‹ˆλ‹€
// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81,function(player){
App.sayToAll(`ν˜„μž¬ μ„œμžˆλŠ” ꡬ역: ${player.getLocationName()}`)
})

​

πŸ™β€β™‚οΈ User Control

User Control ν•¨μˆ˜ ν•œ λˆˆμ— 보기
// ν”Œλ ˆμ΄μ–΄λ₯Ό ν•΄λ‹Ή μ’Œν‘œλ‘œ μ†Œν™˜
player.spawnAt(tileX: int ,tileY: int, dir: int = 0)
​
// ν”Œλ ˆμ΄μ–΄λ₯Ό ν•΄λ‹Ή κ΅¬μ—­μœΌλ‘œ μ†Œν™˜
player.spawnAtLocation(name: string ,dir:int = 0)
​
// ν”Œλ ˆμ΄μ–΄λ₯Ό ν•΄λ‹Ή 슀페이슀 ν•΄λ‹Ή 맡으둜 μ΄λ™μ‹œν‚€κΈ°
player.spawnAtMap(spaceHashID string, mapHashID:string = null)
​

spawnAt

player.spawnAt(tileX: int ,tileY: int, dir: int = 0)
ν”Œλ ˆμ΄μ–΄μ˜ 캐릭터λ₯Ό tileX, tileY μ’Œν‘œλ‘œ μ§€μ •ν•œ λ°©ν–₯을 λ°”λΌλ³΄κ²Œ μ΄λ™μ‹œν‚΅λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
tileX tileY
number
ν”Œλ ˆμ΄μ–΄λ₯Ό μ΄λ™μ‹œν‚¬ x, y μ’Œν‘œ κ°’
dir
number
- 캐릭터가 바라볼 λ°©ν–₯ β€’ μ™Όμͺ½ : 1 β€’ μœ„μͺ½ : 2 β€’ 였λ₯Έμͺ½ : 3 β€’ μ•„λž˜μͺ½ : 4 β€’ μ™Όμͺ½μœ„ : 5 β€’ μ™Όμͺ½μ•„λž˜ : 6 β€’ 였λ₯Έμͺ½μœ„: 7 β€’ 였λ₯Έμͺ½μ•„λž˜: 8
예제
μž…μž₯ν•˜λŠ” ν”Œλ ˆμ΄μ–΄λ₯Ό μ§€μ •ν•œ μ’Œν‘œλ‘œ μ΄λ™μ‹œν‚€κΈ°
// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ μ‹€ν–‰
App.onJoinPlayer.Add(function (player) {
player.spawnAt(5, 5, 1); // ν”Œλ ˆμ΄μ–΄λ₯Ό 5,5 μœ„μΉ˜λ‘œ μ™Όμͺ½ λ°©ν–₯을 λ°”λΌλ³΄κ²Œ μ΄λ™μ‹œν‚€κΈ°
});
​

spawnAtLocation

player.spawnAtLocation(name: string, dir:int = 0)
ν”Œλ ˆμ΄μ–΄μ˜ 캐릭터λ₯Ό name에 ν•΄λ‹Ήν•˜λŠ” 지정 μ˜μ—­μœΌλ‘œ μ§€μ •ν•œ λ°©ν–₯을 λ°”λΌλ³΄κ²Œ μ΄λ™μ‹œν‚΅λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
name
String
ν”Œλ ˆμ΄μ–΄λ₯Ό μ΄λ™μ‹œν‚¬ 지정 μ˜μ—­μ˜ 이름
dir
number
- 캐릭터가 바라볼 λ°©ν–₯ β€’ μ™Όμͺ½ : 1 β€’ μœ„μͺ½ : 2 β€’ 였λ₯Έμͺ½ : 3 β€’ μ•„λž˜μͺ½ : 4 β€’ μ™Όμͺ½μœ„ : 5 β€’ μ™Όμͺ½μ•„λž˜ : 6 β€’ 였λ₯Έμͺ½μœ„: 7 β€’ 였λ₯Έμͺ½μ•„λž˜: 8
예제
μž…μž₯ν•˜λŠ” ν”Œλ ˆμ΄μ–΄λ₯Ό 지정 μ˜μ—­μœΌλ‘œ μ΄λ™μ‹œν‚€κΈ°
​
⚠
같은 μ΄λ¦„μ˜ 지정 μ˜μ—­μ΄ μ—¬λŸ¬ κ³³ μžˆλ‹€λ©΄ ν•΄λ‹Ή μ˜μ—­λ“€ 쀑 ν•œ 곳으둜 랜덀 μ΄λ™ν•©λ‹ˆλ‹€.
// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ μ‹€ν–‰
App.onJoinPlayer.Add(function (player) {
// ν”Œλ ˆμ΄μ–΄λ₯Ό "test"λΌλŠ” μ΄λ¦„μ˜ μ§€μ •μ˜μ—­μœΌλ‘œ μ™Όμͺ½ λ°©ν–₯을 λ°”λΌλ³΄κ²Œ μ†Œν™˜ν•˜κΈ°
player.spawnAtLocation("test", 1);
});
​

spawnAtMap

player.spawnAtMap(spaceHashID string, mapHashID:string)
ν”Œλ ˆμ΄μ–΄λ₯Ό ν•΄λ‹Ή 슀페이슀 ν•΄λ‹Ή 맡으둜 μ΄λ™μ‹œν‚΅λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
spaceHashID
String
이동할 슀페이슀의 spaceHashID
mapHashID
String
이동할 맡의 mapHashID
예제
μž…μž₯ν•˜λŠ” ν”Œλ ˆμ΄μ–΄λ₯Ό ZEP νŠœν† λ¦¬μ–Ό 맡으둜 μ΄λ™μ‹œν‚€κΈ° ( μŠ€νŽ˜μ΄μŠ€μ™€ 맡 μ΄ν•΄ν•˜κΈ° )
// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ μ‹€ν–‰
App.onJoinPlayer.Add(function (player) {
// ν”Œλ ˆμ΄μ–΄λ₯Ό ZEP νŠœν† λ¦¬μ–Ό 맡으둜 μ΄λ™μ‹œν‚€κΈ°
player.spawnAtMap("65jeBA", "2YvXMJ");
});

​

πŸ”‰ Sound Methods

Sound Methods ν•¨μˆ˜ ν•œ λˆˆμ— 보기
// ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ‚¬μš΄λ“œλ₯Ό μž¬μƒ
player.playSound(fileName: string, loop: boolean = false)
​
// ν”Œλ ˆμ΄μ–΄μ—κ²Œ 링크에 ν•΄λ‹Ήν•˜λŠ” μ‚¬μš΄λ“œλ₯Ό μž¬μƒ
player.playSoundLink(link: string, loop: boolean = false)
​

playSound

Player.playSound(fileName: string, loop: boolean = false, overlap: boolean = false)
ν•΄λ‹Ή ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ‚¬μš΄λ“œλ₯Ό μž¬μƒν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
fileName
String
뢈러올 파일의 이름
loop
boolean
true: 반볡 μž¬μƒ false: 1회 μž¬μƒ
overlap
boolean
μ‚¬μš΄λ“œ μ˜€λ²„λž©(κ²ΉμΉ¨) μž¬μƒ κ°€λŠ₯ μ—¬λΆ€
예제
μž…μž₯음 섀정해보기(파일)
join.mp3
20KB
Binary
// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ μ‹€ν–‰
App.onJoinPlayer.Add(function (player) {
player.playSound("join.mp3",false, true);
});
​
player.playSoundLink(link: string, loop: boolean = false)
λͺ¨λ“  ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ‚¬μš΄λ“œλ₯Ό μž¬μƒν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
πŸ’‘ μ˜¬λ°”λ₯Έ 링크λ₯Ό μž…λ ₯ν–ˆλŠ”λ° μž¬μƒμ΄ λ˜μ§€ μ•ŠλŠ” 경우
CORS 정책을 μœ„λ°˜ν•œ 경우일 κ°€λŠ₯성이 λ†’μŠ΅λ‹ˆλ‹€. CORS 정책을 맞좜 수 μ—†λŠ” κ²½μš°μ—λŠ” playSoundLink λŒ€μ‹  μŒμ•… νŒŒμΌμ„ μ—…λ‘œλ“œ ν•˜μ—¬ playSound ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯ λ“œλ¦½λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
이름
νƒ€μž…
μ„€λͺ…
link
String
μ‚¬μš΄λ“œ url
loop
boolean
true: 반볡 μž¬μƒ false: 1회 μž¬μƒ
​
​
​
예제
μž…μž₯음 섀정해보기(μ‚¬μš΄λ“œ url)
// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ μ‹€ν–‰
App.onJoinPlayer.Add(function (player) {
player.playSoundLink("https://zep.us/assets/sounds/ring.mp3",false);
});

​

πŸ’  곡톡 Methods

곡톡 Methods ν•¨μˆ˜ ν•œ λˆˆμ— 보기
// ν”Œλ ˆμ΄μ–΄ ν•„λ“œκ°’μ„ μˆ˜μ •ν•œ ν›„ μ—…λ°μ΄νŠΈ
player.sendUpdated()
​
// ν”Œλ ˆμ΄μ–΄ μŠ€ν† λ¦¬μ§€κ°’μ„ μ €μž₯
player.save()

sendUpdated

player.sendUpdated()
App, Player κ΄€λ ¨ ν•„λ“œ 값이 λ³€κ²½λ˜λ©΄ λ³€κ²½ 값을 μ μš©ν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.
νŒŒλΌλ―Έν„°
  • μ—†μŒ
​