μκ°
UI, μ μ 컨νΈλ‘€, μ¬μ΄λ λ± ZEPμμ μΌμ΄λ μ μλ μ λ°μ μΈ κΈ°λ₯μ μ 곡νλ ν¨μμ
λλ€.
νλ μ΄μ΄ κ°μΈ νλ©΄μ UIλ₯Ό νμ, νλ μ΄μ΄λ₯Ό μ΄λ, νλ μ΄μ΄ κ°μΈμκ² μ¬μ΄λ μ¬μ λ± νΈλ¦¬ν κΈ°λ₯μ μ 곡ν©λλ€.
UI
Data Load
User Control
Sound
곡ν΅
π 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);
// μ§μ λ alignμ μμΉμ url μλ² λμ°½μ νμν©λλ€.
player.showEmbed(url: string, align: string, width: number, height: number, hasBackdrop: boolean = true)
showCenterLabel
player.showCenterLabel(text: string, color: uint = 0xFFFFFF, bgColor: uint = 0x000000, offset: number = 0, time: number = 3000)
ν΄λΉ νλ μ΄μ΄μκ² μ§μ λ μμΉμ textλ₯Ό 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, option: object = null);
λͺ¨λ νλ μ΄μ΄μκ² μ§μ λ μμΉμ textλ₯Ό 3μ΄κ° νμνλ ν¨μμ
λλ€.
text λΆλΆμ span
νκ·Έλ₯Ό λ£μ΄ ν
μ€νΈλ₯Ό κΎΈλ° μ μμ΅λλ€.
νλΌλ―Έν°
μ΅μ
μμ
컀μ€ν
λΌλ²¨ μμ μ½λ νμ΄μ§λ₯Ό μ°Έκ³ ν΄μ£ΌμΈμ
showWidget
player.showWidget(fileName: string, align: string, width: number, height: number): ScriptWidget
ν΄λΉ νλ μ΄μ΄μκ² μ§μ λ alignμ μμΉμ ν΄λΉ htmlνμΌμ μμ ―μΌλ‘ λΆλ¬μ€λ ν¨μμ
λλ€.
νλΌλ―Έν°
μμ
μ΄μ±ν΄μ¦ μμ ― λ°λΌν΄λ³΄κΈ°
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, option: object)
νλ μ΄μ΄μκ² κ΅¬λ§€ μμ ―μ νμνκ³ , ꡬ맀 ν λμνλ μ½λ°±ν¨μλ₯Ό μμ±ν μ μμ΅λλ€.
μλͺ¨λ ZEMμ μ± μ μμμκ² λμκ°λ©°, λ΄ νμ λ΄μ νμ΄μ§μμ λ΄μμ νμΈ ν μ μμ΅λλ€.
ZEM μ μ° κ΄λ ¨ λ΄μ©μ μ μ°κ°μ΄λ νμ΄μ§μμ νμΈνμ€ μ μμ΅λλ€.
νλΌλ―Έν°
μμ
ꡬ맀μ 보 μ μ₯ λ° νλΆ κΈ°λ₯ μμ
const itemName = "ITEM";
// Qλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ - μμ΄ν
μ ꡬ맀νκ³ player.storageμ ꡬ맀μ 보 μ μ₯νκΈ°
App.addOnKeyDown(81, function (player) {
let pStorage = JSON.parse(player.storage);
if (!player.tag) {
player.tag = {};
}
if (pStorage == null) {
pStorage = {};
}
//μ΄λ―Έ μμ΄ν
μ ꡬ맀νλ€λ©΄ λ©μμ§ μΆλ ₯
if (pStorage[itemName]) {
player.showCenterLabel(`${itemName}μ μ΄λ―Έ ꡬ맀νμ΅λλ€.`);
} else {
player.showBuyAlert(itemName, 0, function (success, buyAlertResult) {
if (success) {
App.sayToAll(`[μ 보] ${player.name}λμ΄ ${itemName}μ ꡬ맀νμ΅λλ€!`);
pStorage[itemName] = true;
player.tag.buyAlertResult = buyAlertResult
player.storage = JSON.stringify(pStorage);
player.save();
}
},
false,// false μΈ κ²½μ° μ± μμ μμκ² μμ΅μ λ¬, trueμ΄λ©΄ μ€νμ΄μ€ μμ μμκ² μμ΅ μ λ¬
{
message: `${itemName} custom message`,//messageμ itemNameμ ν΄λΉνλ textκ° μμ κ²½μ° κ°μ‘°λμ΄ νμλ¨
timer: 10000 // 10μ΄ - ꡬ맀창 νμμκ°(ms)
}
);
}
});
// Wλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ - νλΆ κΈ°λ₯
App.addOnKeyDown(87, function (player) {
let pStorage = JSON.parse(player.storage);
if( pStorage && player.tag.buyAlertResult )
{
if( player.tag.buyAlertResult.Refund() )
{
App.sayToAll("===== refund success!");
pStorage[itemName] = false;
}
else {
App.sayToAll("===== refund failed");
}
player.tag.buyAlertResult = null;
player.storage = JSON.stringify(pStorage);
player.save();
}
})
hideBuyAlert
νλ μ΄μ΄μ ꡬ맀 μμ ―μ λ«μ΅λλ€.
νλΌλ―Έν°
μμ
sendMessage
player.sendMessage(text: string, color: uint = 0xFFFFFF)
μ μ κ°μΈμκ² μ±ν
λ©μμ§λ₯Ό 보λ΄λ ν¨μμ
λλ€.
νλΌλ―Έν°
μμ
νλ μ΄μ΄ κ°μΈμκ²λ§ 보μ΄λ νμλ©μμ§ μΆλ ₯νκΈ°.
App.onJoinPlayer.Add(function(player){
player.sendMessage(`${player.name}λ μ΄μμ€μΈμ!\nhttps://docs-kr.zep.us/ λ§ν¬ ν΄λ¦μ κ°μ΄λλ‘ μ°κ²°λ©λλ€.`,0xffffff);
});
showPrompt
player.showPrompt(title: string, function(inputText), option = {})
νλ μ΄μ΄μκ² μ
λ ₯μ°½μ 보μ¬μ£Όκ³ , νλ μ΄μ΄μ μλ΅μ λ°λΌ λμνλ callback ν¨μλ₯Ό μμ±ν μ μμ΅λλ€.
νλΌλ―Έν°
μ΅μ
κ°μ μ
λ ₯νμ§ μμλ default κ°μ΄ μ μ©λ©λλ€.
μμ
"1234"λ₯Ό μ
λ ₯νλ κ²½μ° "Correct" λ©μμ§ μΆλ ₯ν΄λ³΄κΈ°
// Qν€λ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.q, function (player) {
player.showPrompt("Password", function (inputText) {
if (inputText == "1234") {
player.showCenterLabel("Correct");
} else {
player.showCenterLabel("Incorrect");
}
},
{
content: 'Description', // μ€λͺ
confirmVariant: 'primary', // νμΈ λ²νΌ μμ 'primary' | 'alert'
cancelText: 'custom cancel', // μ·¨μ λ²νΌ ν
μ€νΈ
confirmText: 'custom confirm',// νμΈ λ²νΌ ν
μ€νΈ
placeholder: 'Custom Placeholder',// μ
λ ₯μΉΈμ placeholder
textType: 'password' // μ
λ ₯ ν
μ€νΈμ νμ νμ 'text' | 'password'
}
);
});
showConfirm
player.showConfirm(text: string, function(result), option = {})
νλ μ΄μ΄μκ² νμΈμ°½μ 보μ¬μ£Όκ³ , νλ μ΄μ΄κ° νμΈ λ²νΌμ λλ μ λ λμνλ callback ν¨μλ₯Ό μμ±ν μ μμ΅λλ€. cancelμ λλ₯Ό κ²½μ°μλ callback ν¨μκ° λμνμ§ μμ΅λλ€.
νλΌλ―Έν°
μ΅μ
κ°μ μ
λ ₯νμ§ μμλ default κ°μ΄ μ μ©λ©λλ€.
μμ
νμΈ λ²νΌμ λλ₯Έ κ²½μ° μ±ν
μ°½μ ν
μ€νΈ μΆλ ₯νκΈ°
// Q ν€λ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.q, function (player) {
player.showConfirm("Confirm", function (result) {
if (result) {
App.sayToAll("ok");
}
},
{
content: 'Description', // μ€λͺ
confirmVariant: 'alert', // νμΈ λ²νΌ μμ 'primary' | 'alert';
cancelText: 'custom cancel', // μ·¨μ λ²νΌ ν
μ€νΈ
confirmText: 'custom confirm',// νμΈ λ²νΌ ν
μ€νΈ
}
);
});
showAlert
player.showAlert(text: string, function(), option = {})
νλ μ΄μ΄μκ² κ²½κ³ μ°½μ 보μ¬μ£Όκ³ , νλ μ΄μ΄κ° OKλ₯Ό λλ μ λ λμνλ callback ν¨μλ₯Ό μμ±ν μ μμ΅λλ€.
νλΌλ―Έν°
μ΅μ
κ°μ μ
λ ₯νμ§ μμλ default κ°μ΄ μ μ©λ©λλ€.
μμ
λ²νΌμ λλ₯Έ κ²½μ° μ±ν
μ°½μ ν
μ€νΈ μΆλ ₯νκΈ°
// Q ν€λ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(81, function (player) {
player.showAlert("Alert", function () {
App.sayToAll("ok");
},
{
content: 'Description', // μ€λͺ
confirmText: 'custom confirm',// νμΈ λ²νΌ ν
μ€νΈ
}
);
});
showWidgetResponsive
player.showWidgetResponsive(fileName:string, marginTop:number, marginRight:number, marginBottom:number, marginLeft:number)
μμ ―μ μ/ν/μ’/μ° μ¬λ°±μ νλ©΄ ν¬κΈ°μ λν %λΉμ¨λ‘ μ μνμ¬ μμ ―μ νμν©λλ€.
νλ©΄μ ν¬κΈ°κ° μ¬λ°±μ ν¬ν¨ν μμ ― μμλ³΄λ€ μμμ§ κ²½μ°, μμ ―μ ν¬κΈ°κ° λΉλ‘νμ¬ μμμ§λλ€.
νλΌλ―Έν°
μμ
νλ©΄ ν¬κΈ°λ₯Ό μ€μ΄λ κ²½μ° μμ ―μ ν¬κΈ° λ³ν
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;
}
});
});
openWebLink
player.openWebLink(url:string, popup:boolean=false)
νλ μ΄μ΄μκ² μΉ URLμ μ μ°½μ΄λ νμ
μ°½μΌλ‘ νμν©λλ€.
νλΌλ―Έν°
μμ
openWebLink νμ
μΌλ‘ μ¬λ κ²½μ°
// Q ν€λ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(81, function (player) {
player.openWebLink("https://docs-kr.zep.us", true);
});
showEmbed
player.showEmbed(url: string, align: string, width: number, height: number, hasBackdrop: boolean = true)
ν΄λΉ νλ μ΄μ΄μκ² μ§μ λ alignμ μμΉμ url μλ² λ νλ©΄μ νμνλ ν¨μμ
λλ€.
νλΌλ―Έν°
μμ
url μλ² λμ°½ νμνκΈ°
// Qλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(81, function (player) {
player.showEmbed("https://youtu.be/ztuTrpXJyks", "middle", 900, 600, true);
});
showImageModal
player.showImage(url: string)
νλ μ΄μ΄μκ² μ
λ ₯ν μ΄λ―Έμ§ μ£Όμμ ν΄λΉνλ μ΄λ―Έμ§λ₯Ό νμν©λλ€.
νλΌλ―Έν°
μμ
μ΄λ―Έμ§ λͺ¨λ¬μ°½ νμνκΈ°
// Qλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.Q, function (player) {
player.showImageModal("https://cdn-static.zep.us/static/images/thumbnail.png");
});
showNoteModal
player.showNoteModal(text: string)
νλ μ΄μ΄μκ² ν
μ€νΈ μ°½μ 보μ¬μ£Όλ ν¨μμ
λλ€.
νλΌλ―Έν°
μμ
ν
μ€νΈ μ°½ νμνκΈ°
// Qλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.Q, function (player) {
player.showNoteModal("Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptatibus autem nisi soluta commodi a eius distinctio facilis est ea ullam. Dolorum a quis, impedit nisi voluptates magni architecto odit amet.");
});
π» Data Load Methods
Data Load Methods ν¨μ ν λμ 보기
// μ§μ ν μ΄λ©μΌκ³Ό νλ μ΄μ΄μ μ΄λ©μΌμ λΉκ΅
player.isEmail(email: string): boolean
// νλ μ΄μ΄κ° μμλ ꡬμμ΄λ¦μ νΈμΆ
player.getLocationName(): string
isEmail
player.isEmail(email: string): boolean
ν΄λΉ νλ μ΄μ΄μ μ΄λ©μΌμ΄ νλΌλ―Έν° κ°κ³Ό κ°λ€λ©΄ true, μλλ©΄ falseλ₯Ό 리ν΄ν©λλ€.
νλΌλ―Έν°
μμ
νλ μ΄μ΄μ μ΄λ©μΌμ΄ μ§μ ν ν
μ€νΈμ κ°μμ§ λΉκ΅ν΄λ³΄κΈ°
// q ν€λ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
// App.addOnKeyDown
let check = player.isEmail("supercat@supercat.co.kr");
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 μ’νλ‘ μ§μ ν λ°©ν₯μ λ°λΌλ³΄κ² μ΄λμν΅λλ€.
νλΌλ―Έν°
μμ
μ
μ₯νλ νλ μ΄μ΄λ₯Ό μ§μ ν μ’νλ‘ μ΄λμν€κΈ°
// νλ μ΄μ΄κ° μ
μ₯ν λ μ€ν
App.onJoinPlayer.Add(function (player) {
player.spawnAt(5, 5, 1); // νλ μ΄μ΄λ₯Ό 5,5 μμΉλ‘ μΌμͺ½ λ°©ν₯μ λ°λΌλ³΄κ² μ΄λμν€κΈ°
});
spawnAtLocation
player.spawnAtLocation(name: string, dir:int = 0)
νλ μ΄μ΄μ μΊλ¦ν°λ₯Ό nameμ ν΄λΉνλ μ§μ μμμΌλ‘ μ§μ ν λ°©ν₯μ λ°λΌλ³΄κ² μ΄λμν΅λλ€.
νλΌλ―Έν°
μμ
μ
μ₯νλ νλ μ΄μ΄λ₯Ό μ§μ μμμΌλ‘ μ΄λμν€κΈ°
// νλ μ΄μ΄κ° μ
μ₯ν λ μ€ν
App.onJoinPlayer.Add(function (player) {
// νλ μ΄μ΄λ₯Ό "test"λΌλ μ΄λ¦μ μ§μ μμμΌλ‘ μΌμͺ½ λ°©ν₯μ λ°λΌλ³΄κ² μννκΈ°
player.spawnAtLocation("test", 1);
});
spawnAtMap
player.spawnAtMap(spaceHashID string, mapHashID:string)
νλ μ΄μ΄λ₯Ό ν΄λΉ μ€νμ΄μ€ ν΄λΉ 맡μΌλ‘ μ΄λμν΅λλ€.
νλΌλ―Έν°
μμ
μ
μ₯νλ νλ μ΄μ΄λ₯Ό ZEP νν λ¦¬μΌ λ§΅μΌλ‘ μ΄λμν€κΈ° ( μ€νμ΄μ€μ 맡 μ΄ν΄νκΈ° )
// νλ μ΄μ΄κ° μ
μ₯ν λ μ€ν
App.onJoinPlayer.Add(function (player) {
// νλ μ΄μ΄λ₯Ό ZEP νν λ¦¬μΌ λ§΅μΌλ‘ μ΄λμν€κΈ°
player.spawnAtMap("65jeBA", "2YvXMJ");
});
setCameraTarget
[1] player.setCameraTarget( tileX: Number, tileY: Number, time: Number )
[2] player.setCameraTarget( key: String, time: Number )
[1] νλ μ΄μ΄μ μμ μ μ§μ λ μ’νλ‘ μ€μ¬ μ΄λμν΅λλ€.
[2] νλ μ΄μ΄μ μμ μ νΉμ μ€λΈμ νΈλ‘ μ€μ¬ μ΄λμν΅λλ€.
νλΌλ―Έν°
μμ
[1] νλ μ΄μ΄κ° λ³΄κ³ μλ νλ©΄μ μ€μ¬μ μ
λ ₯ν μ’νλ‘ μ΄λ λ° μ΄κΈ°ν μν€κΈ°
// Qλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.Q, function (player) {
player.setCameraTarget(0, 0, 2); // νλ μ΄μ΄μ μμ μ [0,0] μ’νλ‘ 2μ΄λμ μ΄λμν΅λλ€.
player.sendUpdated();
});
// Wλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.W, function (player) {
player.setCameraTarget("");
player.sendUpdated();
});
[2] νλ μ΄μ΄μ μμ μ μ€λΈμ νΈλ‘ μ΄λ λ° μ΄κΈ°ν μν€κΈ°
let sprite = App.loadSpritesheet('blueman.png', 48, 64, {
left: [5, 6, 7, 8, 9], // μ’λ°©ν₯ μ΄λ μ΄λ―Έμ§
up: [15, 16, 17, 18, 19],
down: [0, 1, 2, 3, 4],
right: [10, 11, 12, 13, 14],
dance: [20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],
down_jump: [38],
left_jump: [39],
right_jump: [40],
up_jump: [41],
},5);
App.onJoinPlayer.Add(function (player) {
App.runLater(function () {
Map.putObjectWithKey(player.tileX, player.tileY, sprite, {
overlap: true,
movespeed: 50,
key: "TestBlueMan",
useDirAnim: true
});
Map.moveObjectWithKey("TestBlueMan", Map.width - 1, player.tileY, false);
}, 2);
});
// Qλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.Q, function (player) {
player.setCameraTarget("TestBlueMan",1);
player.sendUpdated();
});
// Wλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.W, function (player) {
player.setCameraTarget("");
player.sendUpdated();
});
setEffectSprite
player.setEffectSprite(resource: ScriptDynamicResource, offsetX: Number, offsetY: Number, type: Number)
νλ μ΄μ΄μ λ°°κ²½ λλ μ κ²½ μ΄λ―Έμ§λ₯Ό μ€μ ν μ μμ΅λλ€.
νλΌλ―Έν°
μ¬μ© κ°λ₯ν μ΄ννΈ μ λλ©μ΄μ
ν€ κ°
μΊλ¦ν°μ μμ§μμ λ§μΆ° μ λλ©μ΄μ
μ μ¬μν μ μλλ‘ μ€μ μ΄ κ°λ₯ν©λλ€. (μ°Έκ³ λ¬Έμ)
μΊλ¦ν°μ μμ§μμ λμνλ μ λλ©μ΄μ
μ΄ μ μλμ΄ μμ§ μμ κ²½μ° μ λλ©μ΄μ
μ΄ μ¬μλμ§ μμ΅λλ€.
down_idle // μ λ©΄μμ λκΈ° μν
down // μ λ©΄μμ μ΄λ μ€
left_idle // μΌμͺ½ λ°©ν₯μμ λκΈ° μν
left // μΌμͺ½ λ°©ν₯μΌλ‘ μ΄λ μ€
right_idle // μ€λ₯Έμͺ½ λ°©ν₯μμ λκΈ° μν
right // μ€λ₯Έμͺ½ λ°©ν₯μΌλ‘ μ΄λ μ€
up_idle // μμͺ½ λ°©ν₯μμ λκΈ° μν
up // μμͺ½ λ°©ν₯μΌλ‘ μ΄λ μ€
dance // μΆ€μΆλ λͺ¨μ
down_jump, // μ λ©΄μμ μ ννλ λͺ¨μ
left_jump, // μΌμͺ½ λ°©ν₯μΌλ‘ μ ννλ λͺ¨μ
right_jump, // μ€λ₯Έμͺ½ λ°©ν₯μΌλ‘ μ ννλ λͺ¨μ
up_jump, // μμͺ½ λ°©ν₯μΌλ‘ μ ννλ λͺ¨μ
down_sit, // μ λ©΄ λ°©ν₯μΌλ‘ μμμλ λͺ¨μ
left_sit, // μΌμͺ½ λ°©ν₯μμ μμμλ λͺ¨μ
right_sit, // μ€λ₯Έμͺ½ λ°©ν₯μμ μμμλ λͺ¨μ
up_sit // νλ©΄μμ μμμλ λͺ¨μ
down_attack // μ λ©΄ λ°©ν₯ 곡격 λͺ¨μ
left_attack // μΌμͺ½ λ°©ν₯ 곡격 λͺ¨μ
right_attack // μ€λ₯Έμͺ½ λ°©ν₯ 곡격 λͺ¨μ
up_attack // μμͺ½ λ°©ν₯ 곡격 λͺ¨μ
μμ
νλ μ΄μ΄ λ°°κ²½μ΄λ―Έμ§ μ€μ ν΄λ³΄κΈ°
let effect = App.loadSpritesheet(
"effect_sprite.png",
32,
32,
{
down_idle: [0, 1, 2, 3],
down_attack: [0, 1, 2, 3],
down: [0, 1, 2, 3],
left_idle: [4, 5, 6, 7],
left_attack: [4, 5, 6, 7],
left: [4, 5, 6, 7],
right_idle: [8, 9, 10, 11],
right_attack: [8, 9, 10, 11],
right: [8, 9, 10, 11],
up_idle: [0, 1, 2, 3],
up_attack: [0, 1, 2, 3],
up: [0, 1, 2, 3],
dance: [0, 1, 2, 3],
down_jump: [0],
left_jump: [4],
right_jump: [8],
up_jump: [0],
down_sit: [0, 1, 2, 3],
left_sit: [4, 5, 6, 7],
right_sit: [8, 9, 10, 11],
up_sit: [0, 1, 2, 3],
},
5
);
// Qλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.Q, function (player) {
player.setEffectSprite(effect, -32, -30, 0); // λ°°κ²½ μ΄λ―Έμ§ μ€μ
player.sendUpdated();
});
// Wλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.W, function (player) {
player.setEffectSprite(null); // λ°°κ²½ μ΄λ―Έμ§ μμ
player.sendUpdated();
});
playEffectSprite
player.playEffectSprite(resource: ScriptDynamicResource, repeatNum, offsetX: Number, offsetY: Number)
νλ μ΄μ΄μκ² μ λλ©μ΄μ
ν¨κ³Όλ₯Ό repeatNum
νμλ§νΌ λ°λ³΅ μ¬μνκ³ μ¬λΌμ§λ ν¨κ³Όλ₯Ό μ μ©ν©λλ€.
νλΌλ―Έν°
μμ
1ν μ¬μ ν μ¬λΌμ§λ μ΄ννΈ ν¨κ³Ό
// λ¨μΌ μ λλ©μ΄μ
μΌλ‘ μ μν΄ μ¬μ©ν©λλ€.
let effect = App.loadSpritesheet("effect_sprite.png", 32, 32, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 5);
// Qλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.Q, function (player) {
player.playEffectSprite(effect, 1, -32, -30);
});
disappearObject
player.disappearObject(key: String)
νλ μ΄μ΄ κ°μΈ νλ©΄ μμμ key κ°μ κ°μ§λ μ€λΈμ νΈλ₯Ό μ¬λΌμ§κ²νλ ν¨μμ
λλ€.
νλΌλ―Έν°
μμ
μ€λΈμ νΈμ μνΈμμ© μ κ°μΈμκ² μ¬λΌμ§κ² νκΈ°
let blueman = App.loadSpritesheet("blueman.png");
App.onJoinPlayer.Add(function (player) {
Map.putObjectWithKey(player.tileX + 1, player.tileY, blueman, {
type: 21,
impassable: true,
key: "objectKey",
});
});
App.onTriggerObject.Add(function (player, layerID, x, y, key) {
if(key){
player.disappearObject(key);
}
});
π 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, key: string = "ambient", volume: number = 1)
ν΄λΉ νλ μ΄μ΄μκ² μ¬μ΄λλ₯Ό μ¬μνλ ν¨μμ
λλ€.
νλΌλ―Έν°
μμ
μ
μ₯μ μ€μ ν΄λ³΄κΈ°(νμΌ)
// νλ μ΄μ΄κ° μ
μ₯ν λ μ€ν
App.onJoinPlayer.Add(function (player) {
player.playSound("join.mp3",false, true, "join", 0.5);
});
playSoundLink
player.playSoundLink(link: string, loop: boolean = false, overlap: boolean = false, key: string = "ambient", volume: number = 1)
λͺ¨λ νλ μ΄μ΄μκ² μ¬μ΄λλ₯Ό μ¬μνλ ν¨μμ
λλ€.
π‘ μ¬λ°λ₯Έ λ§ν¬λ₯Ό μ
λ ₯νλλ° μ¬μμ΄ λμ§ μλ κ²½μ°
CORS μ μ±
μ μλ°ν κ²½μ°μΌ κ°λ₯μ±μ΄ λμ΅λλ€. CORS μ μ±
μ λ§μΆ μ μλ κ²½μ°μλ
playSoundLink λμ μμ
νμΌμ μ
λ‘λ νμ¬ playSound ν¨μλ₯Ό μ¬μ©νλ κ²μ κΆμ₯ λ립λλ€.
νλΌλ―Έν°
μμ
μ
μ₯μ μ€μ ν΄λ³΄κΈ°(μ¬μ΄λ url)
// νλ μ΄μ΄κ° μ
μ₯ν λ μ€ν
App.onJoinPlayer.Add(function (player) {
player.playSoundLink("https://cdn-static-stage.zep.us/static/assets/sounds/new_donation_1.wav", false, true, "join", 0.5);
});
stopSound
player.stopSound(key: string)
keyμ ν΄λΉνλ μ¬μ΄λμ μ¬μμ μ€μ§νλ ν¨μμ
λλ€.
μμ
μ¬μ μ€μΈ μ¬μ΄λ μ€μ§ μν€κΈ°
μλ μμ μ½λ μ€ν ν Q, W ν€λ₯Ό μ°μμΌλ‘ μ
λ ₯ν΄λ³΄μΈμ.
//Qλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.q,(player)=>{
player.playSoundLink("https://cdn-static-stage.zep.us/static/assets/sounds/new_donation_1.wav", false, true, "donation", 0.5);
});
//Wλ₯Ό λλ₯΄λ©΄ λμνλ ν¨μ
App.addOnKeyDown(KeyCodeType.w, (player)=>{
player.stopSound("donation")
});
π κ³΅ν΅ Methods
κ³΅ν΅ Methods ν¨μ ν λμ 보기