์๊ฐ
Map์ ํ์ผ ํจ๊ณผ๋ ์ค๋ธ์ ํธ ์ค์น ๋ฑ ๋งต๊ณผ ๊ด๋ จ๋ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํจ์๋ค ์
๋๋ค.
๐ API ์ค๋ช
๋ฐ ์์
Methods ํจ์ ํ ๋์ ๋ณด๊ธฐ
// ์ง์ ๋ ์ขํ์ ํ์ผํจ๊ณผ๋ฅผ ์ ์ฉ
Map.putTileEffect(x: number, y: number, tileID: TileEffectType)
// ์ง์ ๋ ์ขํ์ ์ค๋ธ์ ํธ๋ฅผ ๋์ (๊ธฐ์ค ์ขํ : Left-Top)
Map.putObject(x: number, y: number, dynamicResource: ScriptDynamicResource)
// ์ค๋ธ์ ํธ๋ฅผ ๋ฐฐ์นํ ์ขํ๋ค์ 2์ฐจ์ ๋ฐฐ์ด๋ก ์
๋ ฅํ์ฌ ํ ๋ฒ์ ์ค๋ธ์ ํธ๋ฅผ ์ค์นํ๋ ๊ธฐ๋ฅ์
๋๋ค.
Map.putObjectMultiple(tileArray: array, type: PutObjectType, dynamicResource: ScriptDynamicResource, option: object);
// ์ง์ ๋ ์ขํ์ ํค ๊ฐ์ ๊ฐ์ง ์ค๋ธ์ ํธ๋ฅผ ๋์ (๊ธฐ์ค ์ขํ : Left-Top)
Map.putObjectWithKey(x: number, y: number, dynamicResource: ScriptDynamicResource, option: JsValue)
// ํด๋น ์ขํ์ ์๋ ์ค๋ธ์ ํธ์ ์คํ๋ผ์ดํธ ์ ๋๋ฉ์ด์
์ ์คํ์ํด (putObject๊ฐ ์ ํ๋์ด์ผ ํจ)
Map.playObjectAnimation(x: number, y: number, name: string, loop: number)
// key ๊ฐ์ด ์ผ์นํ๋ ์ค๋ธ์ ํธ์ ์คํ๋ผ์ดํธ ์ ๋๋ฉ์ด์
์ ์คํ์ํค๋ ํจ์์
๋๋ค.
Map.playObjectAnimationWithKey(key: string,) animName: string, repeatCount: number)
// ZEP ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ๋ชจ๋ ์ค๋ธ์ ํธ๋ฅผ ์ ๊ฑฐ
Map.clearAllObjects()
// ํด๋น ์ขํ์ ์ค๋ธ์ ํธ๋ฅผ ํ๊ฒ ์ขํ๋ก time(์ด) ๋์ ์ด๋
Map.moveObject(x: number, y: number, targetX: number, targetY: number, time: number)
// ํด๋น ํค ๊ฐ์ ๊ฐ์ง ์ค๋ธ์ ํธ๋ฅผ ํ๊ฒ ์ขํ๋ก ์ด๋
Map.moveObjectWithKey(key: string, targetX: number, targetY: number, usePath:Boolean= true, time=0 )
// ํด๋นํ๋ ๋ ์ด์ด์ x, y ์ขํ์ ์๋ ํ์ผ์ ํ์
๊ฐ์ ๋ฆฌํด
Map.getTile(layer: number, x: number, y: number)
// ๋งต์ ํด๋นํ๋ ๋ก์ผ์ด์
์ด ์๋์ง true/false ๊ฐ์ผ๋ก ๋ฆฌํด
Map.hasLocation(locationName: string)
// Type์ ํด๋นํ๋ ์ค๋ธ์ ํธ๋ค์ ๋ฐํํ๋ ํจ์์
๋๋ค.
Map.getObjectsByType(type: number)
// Type์ ํด๋นํ๋ ์๋จ ์ค๋ธ์ ํธ๋ค์ ๋ฐํํ๋ ํจ์์
๋๋ค.
Map.getTopObjectsByType(type: number)
// key ๊ฐ์ ๊ฐ์ง ์ค๋ธ์ ํธ ์์ ๋งํ์ ์ ํ์ํ๋ ํจ์์
๋๋ค.
Map.sayObjectWithKey( key: string, message: string )
putTileEffect
Map.putTileEffect(x: number, y: number, tileID: TileEffectType)
์ง์ ํ ์ขํ์ ํ์ผ ํจ๊ณผ๋ฅผ ์ ์ฉํ๋ ํจ์์
๋๋ค.
ํ๋ผ๋ฏธํฐ
TileEffectType์ ๋ํ ์์ธํ ์ค๋ช
์ TileEffectType ์์ธ ์ค๋ช
ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
์์
IMPASSABLE ํ์ผ ํจ๊ณผ ์ค์นํด๋ณด๊ธฐ
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
// App.addOnKeyDown
App.addOnKeyDown(81, function (player) {
// 5, 5 ์ขํ์ IMPASSABLE ํ์ผ ํจ๊ณผ ์ค์น
Map.putTileEffect(5, 5, TileEffectType.IMPASSABLE);
});
putObject
Map.putObject(x: number, y: number, dynamicResource: ScriptDynamicResource, option: JsValue)
์ง์ ํ ์ขํ์ ์ค๋ธ์ ํธ๋ฅผ ๋๋ ํจ์์
๋๋ค. ( ๊ธฐ์ค ์ขํ: Left Top ) โ ๊ธฐ์ค ์ขํ๋?
ScriptDynamicResource์ ๋ํ ์ดํด๋ฅผ ๋๋ ์คํ๋ผ์ดํธ์ํธ ์ดํดํ๊ธฐ ๋ฌธ์๋ฅผ ํ์ธํด๋ณด์ธ์!
null ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ์ฌ ์คํฌ๋ฆฝํธ๋ก ์ค์นํ ์ค๋ธ์ ํธ๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
Map.putObject(x, y, null);
ํ๋ผ๋ฏธํฐ
์์
๋ธ๋ฃจ๋งจ ์ค๋ธ์ ํธ ์์ฑํด๋ณด๊ธฐ
// blueman.png๋ฅผ ๊ฐ์ฒดํ ํ์ฌ blueman ๋ณ์์ ์ ์ฅ
let blueman = App.loadSpritesheet("blueman.png");
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
// 5, 5 ์ขํ์ blueman ์ค๋ธ์ ํธ ์์ฑ
Map.putObject(5, 5, blueman, {overlap: true});
});
// w ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
// 5, 5 ์ขํ์ ์๋ ์ค๋ธ์ ํธ๋ฅผ ์ญ์
Map.putObject(5, 5, null);
});
putObjectMultiple
Map.putObjectMultiple(tileArray: array, type: PutObjectType, dynamicResource: ScriptDynamicResource, option: object);
์ค๋ธ์ ํธ๋ฅผ ๋ฐฐ์นํ ์ขํ๋ค์ 2์ฐจ์ ๋ฐฐ์ด๋ก ์
๋ ฅํ์ฌ ํ ๋ฒ์ ์ค๋ธ์ ํธ๋ฅผ ์ค์นํ๋ ๊ธฐ๋ฅ์
๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํ ๋ฒ์ ๋ง์ ์ค๋ธ์ ํธ๋ฅผ ์ค์นํ ๊ฒฝ์ฐ ๋ถํ๋ฅผ ์ค์ด๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
์ฌ๊ฐํ, ์ ๋ชจ์์ผ๋ก ์ค๋ธ์ ํธ ๋ฐฐ์นํ๊ธฐ
const _mark = App.loadSpritesheet("mark.png");
// Q๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์ - ์ฌ๊ฐํ ๋ชจ์์ผ๋ก ๋ฐฐ์น
App.addOnKeyDown(81, function (player) {
const tileArray = [
[5, 5],
[9, 5],
[9, 9],
[5, 9],
[5, 5],
];
Map.putObjectMultiple(tileArray, PutObjectType.STROKE, _mark, { overlap: true });
});
// W๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์ - ์ ๋ชจ์์ผ๋ก ๋ฐฐ์น
App.addOnKeyDown(87, function (player) {
const tileArray = [
[10, 5],
[8, 7],
[8, 10],
[10, 12],
[13, 12],
[15, 10],
[15, 7],
[13, 5],
[10, 5],
];
Map.putObjectMultiple(tileArray, PutObjectType.STROKE, _mark, { overlap: true });
});
putObjectWithKey
Map.putObjectWithKey(x: number, y: number, dynamicResource: ScriptDynamicResource, option: JsValue)
์ง์ ํ ์ขํ์ ํค ๊ฐ์ ๊ฐ์ง ์ค๋ธ์ ํธ๋ฅผ ๋๋ ํจ์์
๋๋ค. ( ๊ธฐ์ค ์ขํ: Left Top )
dynamicResource
ํ๋ผ๋ฏธํฐ์ null
์
๋ ฅ์ ํด๋น ์ขํ์ ์ค๋ธ์ ํธ๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
๊ด๋ จ ๋ฌธ์: ์ค๋ธ์ ํธ npcProperty
ํ๋ผ๋ฏธํฐ
์ต์
(option)
๊ฐ์ ์
๋ ฅํ์ง ์์๋ Default ๊ฐ์ด ์ ์ฉ๋ฉ๋๋ค
์์
ํค ๊ฐ์ ๊ฐ์ง ๋ธ๋ฃจ๋งจ ์ค๋ธ์ ํธ ์์ฑํด๋ณด๊ธฐ
let blueman = App.loadSpritesheet("blueman.png");
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
Map.putObjectWithKey(18, 6, blueman, {
type:21, // zep-script ์ํธ์์ฉ ์ค๋ธ์ ํธ
overlap: true, // ์ถฉ๋ ์ด๋ฒคํธ ๊ฐ์ง
movespeed: 100, // ์ด๋์๋, ๊ธฐ๋ณธ๊ฐ: 80
key: "TestBlueMan", // ํค ๊ฐ
impassalbe:true, // ํต๊ณผ ๋ถ๊ฐ ์ค๋ธ์ ํธ ์ค์
useDirAnim: true, // ๋ฐฉํฅ์ ์ธ์งํด์ ์ ๋๋ฉ์ด์
์ ์ฌ์ํ๋ ์ต์
offsetX: -8, // ์ค๋ธ์ ํธ ์ด๋ฏธ์ง์ ๋ฐฐ์น ๊ธฐ์ค์ ์ X์ขํ๋ฅผ ์กฐ์
offsetY: -32,// ์ค๋ธ์ ํธ ์ด๋ฏธ์ง์ ๋ฐฐ์น ๊ธฐ์ค์ ์ Y์ขํ๋ฅผ ์กฐ์
});
});
// w ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(87, function (player) {
// ์ค๋ธ์ ํธ ์ญ์
Map.putObjectWithKey(18, 6, null, {
key: "TestBlueMan", // ํค ๊ฐ
});
});
getObjectWithKey
Map.getObjectWithKey(key: String)
ํด๋น ํค ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ์ค๋ธ์ ํธ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
ํค ๊ฐ์ ๊ฐ์ง ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๊ณ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ฑํ
์ฐฝ์ ์ถ๋ ฅํด๋ณด๊ธฐ.
let blueman = App.loadSpritesheet("blueman.png");
App.onStart.Add(function() {
Map.putObjectWithKey(18, 6, blueman, {
overlap: true,
movespeed: 80,
key: "TestBlueMan", // ํค ๊ฐ
});
});
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
let object_blueman = Map.getObjectWithKey("TestBlueMan");
for(let data in object_blueman){
App.sayToAll(`${data}: ${object_blueman[data]}`)
}
})
playObjectAnimation
Map.playObjectAnimation(x: number, y: number, name: string, loop: number)
ํด๋น ์ขํ์ ์๋ ์ค๋ธ์ ํธ์ ์คํ๋ผ์ดํธ ์ ๋๋ฉ์ด์
์ ์คํ์ํค๋ ํจ์์
๋๋ค.
ํด๋น ์ขํ ์ง์ ์ Map.putObject ํจ์๊ฐ ์ ํ๋์ด์ผํฉ๋๋ค.
์คํ๋ผ์ดํธ ์ด๋ฏธ์ง๋ฅผ ์ฒ์ ๋ค์ด๋ณด์ ๋ค๋ฉด ์คํ๋ผ์ดํธ์ํธ ์ดํดํ๊ธฐ ๋ฌธ์๋ฅผ ํ์ธํด๋ณด์ธ์!
ํ๋ผ๋ฏธํฐ
์์
์ถค์ถ๋ ๋ธ๋ฃจ๋งจ ์ค๋ธ์ ํธ ์ค์นํด๋ณด๊ธฐ
// ํ ํ๋ ์์ ์ฌ์ด์ฆ 48x64
let blueman_dance = App.loadSpritesheet(
"blueman.png",
48,
64,
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37], // 21๋ฒ์งธ ~ 38๋ฒ์งธ ์ด๋ฏธ์ง๋ก ์ ๋๋ฉ์ด์
์ ๊ตฌ์ฑ
8
);
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
// App.addOnKeyDown
App.addOnKeyDown(81, function (player) {
Map.putObject(5, 5, blueman_dance, { overlap: true });
Map.playObjectAnimation(5, 5, "#" + blueman_dance.id, -1);
});
playObjectAnimationWithKey
Map.playObjectAnimation(key: string, animName: string, repeatCount: number)
key ๊ฐ์ด ์ผ์นํ๋ ์ค๋ธ์ ํธ์ ์คํ๋ผ์ดํธ ์ ๋๋ฉ์ด์
์ ์คํ์ํค๋ ํจ์์
๋๋ค.
Map.putObjectWithKey
ํจ์๊ฐ ์ ํ๋์ด์ผํฉ๋๋ค.
์คํ๋ผ์ดํธ ์ด๋ฏธ์ง๋ฅผ ์ฒ์ ๋ค์ด๋ณด์ ๋ค๋ฉด ์คํ๋ผ์ดํธ์ํธ ์ดํดํ๊ธฐ ๋ฌธ์๋ฅผ ํ์ธํด๋ณด์ธ์!
ํ๋ผ๋ฏธํฐ
์์
์ถค์ถ๋ ๋ธ๋ฃจ๋งจ ์ค๋ธ์ ํธ ์ค์นํด๋ณด๊ธฐ
var blueman_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],
idle: [0],
},
8
);
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
Map.putObjectWithKey(10, 10, blueman_sprite, {
overlap: true,
movespeed: 80, // default: 80
key: "blueman",
});
// "dance" ์ ๋๋ฉ์ด์
์ฌ์
Map.playObjectAnimationWithKey("blueman", "dance", -1);
});
moveObject
Map.moveObject(x: number, y: number, targetX: number, targetY: number, time: number)
x, y ์ขํ์ ์์นํ ์ค๋ธ์ ํธ๋ฅผ targetX, targetY๋ก time ์ด ๋์ ์์ง์ด๋ ํจ์์
๋๋ค.
ํด๋น ์ขํ ์ง์ ์ Map.putObject ํจ์๊ฐ ์ ํ๋์ด์ผํฉ๋๋ค.
์คํ๋ผ์ดํธ ์ด๋ฏธ์ง๋ฅผ ์ฒ์ ๋ค์ด๋ณด์ ๋ค๋ฉด ์คํ๋ผ์ดํธ์ํธ ์ดํดํ๊ธฐ ๋ฌธ์๋ฅผ ํ์ธํด๋ณด์ธ์!
ํ๋ผ๋ฏธํฐ
์์
๋ธ๋ฃจ๋งจ ์ด๋์์ผ๋ณด๊ธฐ
// ํ ํ๋ ์์ ์ฌ์ด์ฆ 48x64
let blueman_right = App.loadSpritesheet(
"blueman.png",
48,
64,
[10, 11, 12, 13, 14], // 11 ~ 15๋ฒ์งธ ์ด๋ฏธ์ง๋ก ์ ๋๋ฉ์ด์
๊ตฌ์ฑ
8
);
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
Map.putObject(5, 5, blueman_right, { overlap: true });
Map.playObjectAnimation(5, 5, "#" + blueman_right.id, -1);
Map.moveObject(5, 5, 10, 5, 3) // (5,5)์์ (10,5)๋ก 3์ด ๋์ ์ด๋
});
moveObjectWithKey
Map.moveObjectWithKey(key: string, targetX: number, targetY: number, usePath:boolean = true)
key ๊ฐ์ ๊ฐ์ง ์ค๋ธ์ ํธ๋ฅผ targetX, targetY๋ก ์์ง์ด๋ ํจ์์
๋๋ค.
๐ก path ํ๋ผ๋ฏธํฐ๊ฐ true์ธ ๊ฒฝ์ฐ, ๋ชฉํ ์ง์ ์ด impassable ํ์ผ์ด๊ฑฐ๋ ๋๋ฌ ํ ์ ์๋ ์ขํ์ด๋ฉด ์ค๋ธ์ ํธ๊ฐ ์์ง์ด์ง ์์ต๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
moveObejctWithKey ๋์ ๋ฐฉ์
// ํ ํ๋ ์์ ์ฌ์ด์ฆ 48x64
let blueman = 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],
}, 10);
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
// App.addOnKeyDown ์ค๋ช
(๋งํฌ)
App.addOnKeyDown(81, function (player) {
Map.putObjectWithKey(18, 6, blueman, {
overlap: true,
movespeed: 50, // default: 80
key: "TestBlueMan",
useDirAnim: true // ๋ฐฉํฅ์ ์ธ์งํด์ ์ ๋๋ฉ์ด์
์ฌ์ํ๋ ์ต์
offsetX: -8,
offsetY: -32,
});
Map.moveObjectWithKey("TestBlueMan", 10, 10, true);
});
clearAllObjects()
ZEP ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ๋ชจ๋ ์ค๋ธ์ ํธ๋ฅผ ์ ๊ฑฐํ๋ ํจ์์
๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
์์ฑ๋ ๋ชจ๋ ์ค๋ธ์ ํธ ์ญ์ ํ๊ธฐ
let blueman = App.loadSpritesheet("blueman.png");
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
// App.addOnKeyDown
App.addOnKeyDown(81, function (player) {
// 5, 5 ์ขํ๋ถํฐ blueman ์ค๋ธ์ ํธ 5๊ฐ ์์ฑ
Map.putObject(5, 5, blueman, {overlap: true});
Map.putObject(6, 5, blueman, {overlap: true});
Map.putObject(7, 5, blueman, {overlap: true});
Map.putObject(8, 5, blueman, {overlap: true});
Map.putObject(9, 5, blueman, {overlap: true});
});
// w ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(87, function (player) {
// ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ๋ชจ๋ ์ค๋ธ์ ํธ ์ ๊ฑฐ
Map.clearAllObjects();
});
getTile
Map.getTile(layer: number, x: number, y: number)
ํด๋นํ๋ ๋ ์ด์ด์ x, y ์ขํ์ ์๋ ํ์ผ์ ํ์
๊ฐ์ ๋ฆฌํด, ํ์ผ์ด ์์ผ๋ฉด -1์ ๋ฆฌํดํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
๋งต์ ์๋ ๋ชจ๋ ์ค๋ธ์ ํธ์ ํ์
์ ์กฐํํ๊ธฐ
const LayerType = {
FLOOR: 0,
WALL: 1,
TILE_EFFECTS: 2,
OBJECTS: 3,
TOP_OBJECTS: 5,
};
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
let layer = LayerType.OBJECTS;
for (let x = 0; x < Map.width; x++) {
for (let y = 0; y < Map.height; y++) {
let data = Map.getTile(layer, x, y);
if (data >= 0) {
App.sayToAll(`(${x},${y}) type: ${data}`);
}
}
}
});
getLocation
Map.getLocation(locationName: string)
ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ ๋ก์ผ์ด์
์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ, ๋ก์ผ์ด์
์ค์น ์ขํ๋ฅผ ๋ฆฌํดํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
๋งต ์๋ํฐ์์ ํ์ผํจ๊ณผ > ์ง์ ์์ญ ์ ํ ํ ์์ญ ์ด๋ฆ์ "testLocation" ์ผ๋ก ์ง์ ํด ๋งต์ ์ค์นํ ํ ์์ ์ฝ๋๋ฅผ ์คํํด๋ณด์ธ์.
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
const targetLocationName = "testLocation";
const targetLocation = Map.getLocation(targetLocationName);
if(targetLocation) {
player.sendMessage(`targetLocation placed at (${targetLocation.x}, ${targetLocation.y})`)
} else {
player.sendMessage(`${targetLocationName} is not exist!`)
}
});
getLocationRandom
Map.getLocationRandom(locationName: string)
ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ ๋ก์ผ์ด์
์ด 2๊ฐ์ด์ ์กด์ฌํ๋ ๊ฒฝ์ฐ, ๋ฌด์์๋ก ์ ํํ์ฌ ํด๋น ๋ก์ผ์ด์
์ ์ค์น ์ขํ๋ฅผ ๋ฆฌํดํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
๋งต ์๋ํฐ์์ ํ์ผํจ๊ณผ > ์ง์ ์์ญ ์ ํ ํ ์์ญ ์ด๋ฆ์ "testLocation" ์ผ๋ก ์ง์ ํด ๋งต์ ์ฌ๋ฌ๊ฐ ์ค์นํ ํ ์์ ์ฝ๋๋ฅผ ์คํํด๋ณด์ธ์.
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
const targetLocationName = "testLocation";
const targetLocation = Map.getLocationRandom(targetLocationName);
if(targetLocation) {
player.sendMessage(`targetLocation placed at (${targetLocation.x}, ${targetLocation.y})`)
} else {
player.sendMessage(`${targetLocationName} is not exist!`)
}
});
getLocationList
Map.getLocationList(locationName: string): Array
ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌ๋ ๋ก์ผ์ด์
์ด๋ฆ๊ณผ ์ผ์นํ๋ ๋ชจ๋ ๋ก์ผ์ด์
์ ์ ๋ณด๋ฅผ ๋ฐฐ์ด ํํ๋ก ๋ฐํํฉ๋๋ค.
๊ฐ๊ฐ์ ๋ก์ผ์ด์
์ ๋ณด๋ ๋ก์ผ์ด์
์ค์น ์ขํ(x, y), ํฌ๊ธฐ(width, height), ๊ทธ๋ฆฌ๊ณ ๋ผ๋ฒจ ๊ฐ(label)์ ํฌํจํ๊ณ ์์ต๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
๋งต ์๋ํฐ์์ ํ์ผํจ๊ณผ > ์ง์ ์์ญ ์ ํ ํ ์์ญ ์ด๋ฆ์ "testLocation" ์ผ๋ก ์ง์ ํด ๋งต์ ์ฌ๋ฌ๊ฐ ์ค์นํ ํ ์์ ์ฝ๋๋ฅผ ์คํํด๋ณด์ธ์.
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
const targetLocationName = "testLocation";
const targetLocationList = Map.getLocationList(targetLocationName);
if (targetLocationList) {
for (const location of targetLocationList) {
player.sendMessage(`${JSON.stringify(location)}`);
}
} else {
player.sendMessage(`${targetLocationName} is not exist!`);
}
});
hasLocation
Map.hasLocation(locationName: String): Boolean
๋งต์ ํด๋น ๋ก์ผ์ด์
์ด ์๋์ง ์ฒดํฌํ์ฌ true/false ๊ฐ์ ๋ฆฌํดํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
๋ก์ผ์ด์
์ด ์ค์น๋์ด์๋์ง ์ฒดํฌํ๋ ํค ํจ์ ๋ง๋ค์ด๋ณด๊ธฐ
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
if(Map.hasLocation("test")){
App.sayToAll("test ๋ก์ผ์ด์
์ด ์ค์น๋์ด์์ต๋๋ค.")
} else {
App.sayToAll("test ๋ก์ผ์ด์
์ด ์ค์น๋์ด์์ง ์์ต๋๋ค.")
}
});
getObjectsByType
Map.getObjectsByType(type: numer) : Array
Type์ ํด๋นํ๋ ์ค๋ธ์ ํธ๋ค์ ๋ฆฌํดํ๋ ํจ์์
๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
๋ชจ๋ ํ์
์ ์ค๋ธ์ ํธ ์กฐํํ๊ธฐ
const ObjectEffectType = {
NONE = 0,
SHOW_NOTE = 1,
SHOW_IMAGE = 2,
PASSWORD_DOOR = 3,
LINK_WEBSITE = 4,
EMBED_WEBSITE = 5,
API_CALL = 6,
REPLACE_IMAGE = 7,
NFT_GIVEAWAY = 8,
NFT_DOOR = 9,
POST_MESSAGE = 10,
SHOW_CHAT_BALLOON = 11,
FT_DOOR = 12,
POST_MESSAGE_TO_APP = 13,
DONATION_DOOR = 14,
IMPASSABLE = 15,
STAMP = 16,
TOKEN_DONATION_DOOR = 17,
CHANGE_OBJECT = 18,
ANIMATION = 19,
NFT_DOOR_MOVE = 20,
INTERACTION_WITH_ZEPSCRIPTS = 21,
MULTIPLE_CHOICE = 22,
}
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81,function(player){
for(let key in ObjectEffectType){
let type = ObjectEffectType[key];
let arr = Map.getObjectsByType(type);
let index = 0;
for(let obj of arr){
for(let key in obj){
App.sayToAll(`${key}: ${obj[key]}`);
}
}
}
})
getTopObjectsByType
Map.getTopObjectsByType(type: numer) : array
Type์ ํด๋นํ๋ ์๋จ์ค๋ธ์ ํธ๋ค์ ๋ฆฌํดํ๋ ํจ์์
๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
๋ชจ๋ ํ์
์ ์๋จ์ค๋ธ์ ํธ ์กฐํํ๊ธฐ
const ObjectEffectType = {
NONE : 0,
SHOW_NOTE : 1,
SHOW_IMAGE : 2,
PASSWORD_DOOR : 3,
LINK_WEBSITE : 4,
EMBED_WEBSITE : 5,
API_CALL : 6,
REPLACE_IMAGE : 7,
NFT_GIVEAWAY : 8,
NFT_DOOR : 9,
POST_MESSAGE : 10,
SHOW_CHAT_BALLOON : 11,
FT_DOOR : 12,
POST_MESSAGE_TO_APP : 13,
DONATION_DOOR : 14,
IMPASSABLE : 15,
STAMP : 16,
TOKEN_DONATION_DOOR : 17,
CHANGE_OBJECT : 18,
ANIMATION : 19,
NFT_DOOR_MOVE : 20,
INTERACTION_WITH_ZEPSCRIPTS : 21,
MULTIPLE_CHOICE : 22,
}
// q ํค๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81,function(player){
for(let key in ObjectEffectType){
let type = ObjectEffectType[key];
let arr = Map.getTopObjectsByType(type);
for(let obj of arr){
for(let key in obj){
App.sayToAll(`${key}: ${obj[key]}`);
}
}
}
})
sayObjectWithKey
Map.sayObjectWithKey( key: string, message: string )
key ๊ฐ์ ๊ฐ์ง ์ค๋ธ์ ํธ ์์ ๋งํ์ ์ ํ์ํ๋ ํจ์์
๋๋ค.
ํ๋ผ๋ฏธํฐ
์์
key ๊ฐ์ ๊ฐ์ง ์ค๋ธ์ ํธ ์์ ๋งํ์ ํ์ํ๊ธฐ
const objectKey = "TestBlueMan";
// Q๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(81, function (player) {
Map.putObjectWithKey(18, 6, blueman, {
npcProperty: { name: "BlueMan", hpColor: 0x03ff03, hp: 100, hpMax: 100 },
overlap: true,
movespeed: 100,
key: objectKey,
useDirAnim: true
});
});
// W๋ฅผ ๋๋ฅด๋ฉด ๋์ํ๋ ํจ์
App.addOnKeyDown(87, function(player){
Map.sayObjectWithKey(objectKey, `I'm BlueMan!`)
})
๋ถ๋ก
์คํ๋ผ์ดํธ์ํธ ์ดํดํ๊ธฐ
๊ธฐ์ค์ขํ๋?