Field

μ†Œκ°œ

ν”Œλ ˆμ΄μ–΄μ™€ κ΄€λ ¨λœ 속성 κ°’λ“€ μž…λ‹ˆλ‹€.

ν”Œλ ˆμ΄μ–΄μ˜ λ‹‰λ„€μž„(name), μœ„μΉ˜(tileX / tileY) 등을 μ‘°νšŒν•˜κ±°λ‚˜ ν”Œλ ˆμ΄μ–΄μ—κ²Œ 슀팟라이트(spotlight), μ•ˆλ³΄μž„(hidden) κΈ°λŠ₯을 ν™œμ„±ν™” ν•  수 있으며, μΊλ¦­ν„°μ˜ 이동속도(moveSpeed), 이미지(sprite)λ₯Ό λ³€κ²½ν•˜κ±°λ‚˜ ν”Œλ ˆμ΄μ–΄μ˜ μ €μž₯곡간(storage)을 ν™œμš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

πŸ”’ μ•„μ΄μ½˜μ΄ μžˆλŠ” ν•„λ“œλŠ” μˆ˜μ •μ΄ λΆˆκ°€λŠ₯ν•œ 읽기 μ „μš© ν•„λ“œμž…λ‹ˆλ‹€.

이름섀λͺ…

πŸ”’ id

ν”Œλ ˆμ΄μ–΄μ˜ id κ°’

name

ν”Œλ ˆμ΄μ–΄μ˜ λ‹‰λ„€μž„ κ°’

title

아바타 λ‹‰λ„€μž„ μœ„μ— λ…Έλž€μƒ‰μœΌλ‘œ λ…ΈμΆœλ˜λŠ” ν…μŠ€νŠΈ

πŸ”’ role

ν”Œλ ˆμ΄μ–΄μ˜ κΆŒν•œμ„ λ‚˜νƒ€λ‚΄λŠ” 숫자 κ°’

πŸ”’ tileX / tileY

아바타가 μ„œμžˆλŠ” X μ’Œν‘œ κ°’κ³Ό Y μ’Œν‘œ κ°’

πŸ”’ dir

아바타가 바라보고 μžˆλŠ” λ°©ν–₯ κ°’

moveSpeed

ν”Œλ ˆμ΄μ–΄μ˜ 이동속도 κ°’

sprite

μ•„λ°”νƒ€μ˜ μŠ€ν”„λΌμ΄νŠΈ 이미지 κ°’

tag

ν•„μš”ν•œ 속성 값을 λΆ€μ—¬ κ°€λŠ₯ν•œ κ°’ μ €μž₯ 곡간

hidden

값이 true 이면, λ‹€λ₯Έ ν”Œλ ˆμ΄μ–΄μ—κ²Œ 보이지 μ•ŠμŠ΅λ‹ˆλ‹€.

spotlight

ν”Œλ ˆμ΄μ–΄μ˜ 슀팟라이트 κΈ°λŠ₯ ν™œμ„±ν™” μ—¬λΆ€

πŸ”’ disableVideo

ν”Œλ ˆμ΄μ–΄μ˜ λΉ„λ””μ˜€ κ°€λŠ₯ μ—¬λΆ€

πŸ”’ disableAudio

ν”Œλ ˆμ΄μ–΄μ˜ μ˜€λ””μ˜€ κ°€λŠ₯ μ—¬λΆ€

attackType

ν”Œλ ˆμ΄μ–΄μ˜ 곡격(Zν‚€) νƒ€μž…

attackSprite

ν”Œλ ˆμ΄μ–΄μ˜ 곡격(Zν‚€) 이미지 κ°’

attackParam1

곡격 이미지가 λ‚ μ•„κ°€λŠ” 거리 κ°’

attackParam2

곡격 κ°€λŠ₯ 거리 κ°’ attackType이 2(원거리 곡격)으둜 μ„€μ • 된 κ²½μš°μ—λ§Œ 유효

πŸ”’ walletAddress

ν”Œλ ˆμ΄μ–΄μ˜ μ „μžμ§€κ°‘ μ£Όμ†Œ κ°’

storage

슀페이슀 λ‚΄μ˜ Player κ°’ μ €μž₯ 곡간(슀페이슀 ν•œμ •)

πŸ”’ isMobile

ν”Œλ ˆμ΄μ–΄μ˜ λͺ¨λ°”일 접속여뢀

πŸ”’ isMoving

ν”Œλ ˆμ΄μ–΄κ°€ 움직이고 있으면 True, μ•„λ‹ˆλ©΄ Falseλ₯Ό λ°˜ν™˜

πŸ”’ isJumping

ν”Œλ ˆμ΄μ–΄κ°€ μ ν”„ν•˜κ³  있으면 True, μ•„λ‹ˆλ©΄ Falseλ₯Ό λ°˜ν™˜

πŸ”’ customData

URL 쿼리 μŠ€νŠΈλ§μ„ 읽어 값을 μ €μž₯ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

displayRatio

ν”Œλ ˆμ΄μ–΄μ˜ ν™”λ©΄ 쀌 λΉ„μœ¨μ„ 쑰절 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

titleColor

ν”Œλ ˆμ΄μ–΄μ˜ 타이틀 색상

πŸ”’ emailHash

ν”Œλ ˆμ΄μ–΄μ˜ 이메일 Hash κ°’

πŸ”’ isGuest

λΉ„λ‘œκ·ΈμΈ ν”Œλ ˆμ΄μ–΄μΈ 경우 true 값을 κ°€μ§‘λ‹ˆλ‹€.

πŸ”’ language

ν”Œλ ˆμ΄μ–΄μ˜ λΈŒλΌμš°μ €μ—μ„œ μ‚¬μš©ν•˜λŠ” μ–Έμ–΄ μ„€μ • κ°’

πŸ”’ away

5λΆ„ 이상 λΉ„ν™œμ„±ν™”λœ μœ μ €μΈ 경우 true값을 κ°€μ§‘λ‹ˆλ‹€.

enableFreeView

맡 λ‘˜λŸ¬λ³΄κΈ° ν—ˆμš© μ—¬λΆ€λ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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

id , name

player.id : Number player.name : String

ν”Œλ ˆμ΄μ–΄μ˜ id, λ‹‰λ„€μž„ 값을 κ°€μ Έμ˜΅λ‹ˆλ‹€.

예제

ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ ν•  λ•Œ ν”Œλ ˆμ΄μ–΄μ˜ id, name κ°’ 좜λ ₯해보기

// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.onJoinPlayer.Add(function(player){
  App.sayToAll(`id: ${player.id} name: ${player.name}`);
})

title

player.title : String

title은 캐릭터 λ‹‰λ„€μž„ μœ„μ— λ…Έλž€μƒ‰μœΌλ‘œ λ…ΈμΆœλ˜λŠ” ν…μŠ€νŠΈμž…λ‹ˆλ‹€.

예제

ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ ν•  λ•Œ title 섀정해보기

// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.onJoinPlayer.Add(function(player){
	player.title = "타이틀";
	player.sendUpdated();
})

role

player.role : Number

role은 ν”Œλ ˆμ΄μ–΄μ˜ κΆŒν•œμ„ λ‚˜νƒ€λ‚΄λŠ” 숫자 κ°’ μž…λ‹ˆλ‹€.

ν”Œλ ˆμ΄μ–΄μ˜ role에 따라 λ‹€μŒκ³Ό 같은 값을 좜λ ₯ν•©λ‹ˆλ‹€.

일반/λΉ„λ‘œκ·ΈμΈμœ μ €-1μŠ€νƒœν”„2000

멀버

0

κ΄€λ¦¬μž

3000

에디터

1000

λ§΅μ†Œμœ μž

3001

예제

κΆŒν•œ 값을 μ±„νŒ… 창에 ν‘œμ‹œν•΄λ³΄κΈ°

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81,function(player){
	App.sayToAll(`${player.name}λ‹˜μ˜ κΆŒν•œ: ${player.role}`)
})

tileX, tileY

player.tileX: Number player.tileY: Number

ν”Œλ ˆμ΄μ–΄μ˜ 캐릭터가 μ„œμžˆλŠ” X μ’Œν‘œ κ°’κ³Ό Y μ’Œν‘œ κ°’μž…λ‹ˆλ‹€.

예제

λ‚΄ μΊλ¦­ν„°μ˜ x, y μ’Œν‘œ 좜λ ₯해보기

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81,function(player){
	App.sayToAll(`ν˜„μž¬ μ’Œν‘œ: (${player.tileX}, ${player.tileY})`)
})

dir

player.dir : Number

ν”Œλ ˆμ΄μ–΄μ˜ 캐릭터가 바라보고 μžˆλŠ” λ°©ν–₯μž…λ‹ˆλ‹€.

캐릭터가 바라보고 μžˆλŠ” λ°©ν–₯에 따라 λ‹€μŒκ³Ό 같은 값을 좜λ ₯ν•©λ‹ˆλ‹€.

예제

캐릭터가 바라보고 μžˆλŠ” λ°©ν–₯을 좜λ ₯해보기

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81,function(player){
	App.sayToAll(`바라보고 μžˆλŠ” λ°©ν–₯: ${player.dir}`)
})

moveSpeed

player.moveSpeed : Number

ν”Œλ ˆμ΄μ–΄μ˜ 이동속도 κ°’μž…λ‹ˆλ‹€.( κΈ°λ³Έ κ°’: 80 )

이동속도 값이 0이면 움직일 수 μ—†μŠ΅λ‹ˆλ‹€.

예제

q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ 이동속도가 λΉ¨λΌμ§€λŠ” ν•¨μˆ˜ λ§Œλ“€μ–΄λ³΄κΈ°

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81,function(player){
	player.moveSpeed = 150;
	player.sendUpdated();
})

sprite

player.sprite : ScriptDynamicResource

ν”Œλ ˆμ΄μ–΄ μΊλ¦­ν„°μ˜ μŠ€ν”„λΌμ΄νŠΈ μ΄λ―Έμ§€μž…λ‹ˆλ‹€. ( null μž…λ ₯ μ‹œ κΈ°λ³Έ 아바타 μ΄λ―Έμ§€λ‘œ μ΄ˆκΈ°ν™” )

μŠ€ν”„λΌμ΄νŠΈ 이미지λ₯Ό 처음 듀어보신닀면 μŠ€ν”„λΌμ΄νŠΈμ‹œνŠΈ μ΄ν•΄ν•˜κΈ° λ¬Έμ„œλ₯Ό ν™•μΈν•΄λ³΄μ„Έμš”!

예제

페인트맨 - 블루맨 이미지λ₯Ό 캐릭터 μ΄λ―Έμ§€λ‘œ μ μš©ν•΄λ³΄κΈ°

// ν•œ ν”„λ ˆμž„μ˜ μ‚¬μ΄μ¦ˆ 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],
}, 8);
// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•˜λ©΄ 캐릭터 이미지가 λ°”λ€œ
App.onJoinPlayer.Add(function(player){
	player.sprite = blueman;
	player.sendUpdated();
});

tag

player.tag: Any

tagλ₯Ό μ‚¬μš©ν•΄ ν”Œλ ˆμ΄μ–΄μ—κ²Œ ν•„μš”ν•œ 속성 값을 λΆ€μ—¬ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예제

ν”Œλ ˆμ΄μ–΄μ—κ²Œ β€˜alive’ 속성 κ°’ 뢀여해보기. β€˜alive’ 속성 값은 μž„μ˜λ‘œ μƒμ„±ν•œ 속성 μž…λ‹ˆλ‹€.

쓰이지 μ•ŠλŠ”λ‹€λ©΄ 아무 의미 μ—†λŠ” 속성 κ°’ μ΄μ§€λ§Œ, κ²Œμž„μ„ λ§Œλ“€ λ•Œ ν”Œλ ˆμ΄μ–΄μ˜ 생쑴 μ—¬λΆ€λ₯Ό μ²΄ν¬ν•˜λŠ” μ€‘μš”ν•œ μ†μ„±μœΌλ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.onJoinPlayer.Add(function (player) {
	player.tag = {
		alive: true,
	};
	player.sendUpdated();

	App.sayToAll(`alive: ${player.tag.alive}`);
});

hidden

player.hidden: Boolean

hidden 값이 true 이면, ν•΄λ‹Ή ν”Œλ ˆμ΄μ–΄λŠ” λ‹€λ₯Έ ν”Œλ ˆμ΄μ–΄μ—κ²Œ 보이지 μ•ŠμŠ΅λ‹ˆλ‹€.

⚠️ hidden인 μƒνƒœμ—μ„œ λͺ¨μŠ΅μ€ 보이지 μ•Šμ§€λ§Œ, μ˜€λ””μ˜€μ™€ λΉ„λ””μ˜€ 연결은 λ©λ‹ˆλ‹€.

예제

μΊλ¦­ν„°μ—κ²Œ hidden 속성을 λΆ€μ—¬ν•΄μ„œ λ‹€λ₯Έ ν”Œλ ˆμ΄μ–΄μ—κ²Œ μ•ˆ 보이게 해보기

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81,function(player){
	player.hidden = true;
	player.sendUpdated();
});

spotlight

player.spotlight: Boolean

ν”Œλ ˆμ΄μ–΄μ˜ 슀팟 라이트 κΈ°λŠ₯ ν™œμ„±ν™” μ—¬λΆ€μž…λ‹ˆλ‹€.

예제

q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ 슀팟 라이트 κΈ°λŠ₯을 ON/OFF ν•˜λŠ” ν•¨μˆ˜ λ§Œλ“€μ–΄λ³΄κΈ°

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81,function(player){
	if(player.spotlight){
		player.spotlight = false;
	}
	else{
		player.spotlight = true;
	}
	player.sendUpdated();
});

disableVideo, disableAudio

player.disableVideo : Boolean player.disableAudio : Boolean

ν”Œλ ˆμ΄μ–΄μ˜ λΉ„λ””μ˜€/μ˜€λ””μ˜€ κ°€λŠ₯ μ—¬λΆ€μž…λ‹ˆλ‹€.

예제

λΉ„λ””μ˜€/μ˜€λ””μ˜€ κ°€λŠ₯ μ—¬λΆ€λ₯Ό μ±„νŒ…μ°½μ— ν‘œμ‹œν•΄λ³΄κΈ°

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81, function (player) {
	App.sayToAll(`λΉ„λ””μ˜€ κ°€λŠ₯ μ—¬λΆ€: ${player.disableVideo}`);
	App.sayToAll(`μ˜€λ””μ˜€ κ°€λŠ₯ μ—¬λΆ€: ${player.disableAudio}`);
});

attackType

player.attackType : Number

ν”Œλ ˆμ΄μ–΄μ˜ 곡격(Zν‚€) νƒ€μž…μž…λ‹ˆλ‹€. ( κΈ°λ³Έ: 0 )

attackTypeμ„€λͺ…

0

attackType을 μ„€μ • ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ κΈ°λ³Έ 곡격 νƒ€μž…μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

2

원거리 곡격 νƒ€μž…μž…λ‹ˆλ‹€. attackParam2와 ν•¨κ»˜ μ„€μ •ν•  λ•Œ μœ νš¨ν•©λ‹ˆλ‹€.

예제

μΊλ¦­ν„°μ˜ attackType 변경해보기

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81, function (player) {
	player.attackType = 0;
	App.sayToAll(`attackType: ${player.attackType}`);
	player.sendUpdated();
});

attackParam1

player.attackParam1: Number

곡격(Zν‚€) 이미지가 λ‚ μ•„κ°€λŠ” 거리 μ†μ„±μž…λ‹ˆλ‹€. 곡격 κ°€λŠ₯ κ±°λ¦¬λŠ” λŠ˜μ–΄λ‚˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

예제

attackParam1 변경해보기

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81, function (player) {
	player.attackType = 0;
	player.attackParam1 = 10;
	App.sayToAll(`attackType: ${player.attackType}`);
	App.sayToAll(`attackParam1: ${player.attackParam1}`);
	player.sendUpdated();
});

attackParam2

player.attackParam2: Number

곡격 κ°€λŠ₯ 거리 μ†μ„±μž…λ‹ˆλ‹€. attackType이 원거리 곡격으둜 μ„€μ • 된 κ²½μš°μ—λ§Œ μœ νš¨ν•©λ‹ˆλ‹€.

예제

attackParam2 μ΄μš©ν•΄ 원거리 곡격 μ„€μ • 해보기.

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81, function (player) {
	player.attackType = 2;
	player.attackParam2 = 5;
	App.sayToAll(`attackType: ${player.attackType}`);
	App.sayToAll(`attackParam2: ${player.attackParam2}`);
	player.sendUpdated();
});

attackSprite

player.attackSprite : ScriptDynamicResource

곡격(Zν‚€) 이미지λ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

예제

곡격 이미지 μ μš©ν•΄λ³΄κΈ°

// 단일 μ΄λ―Έμ§€μ˜ 경우
let redBoxing = App.loadSpritesheet("redBoxing.png");
App.onJoinPlayer.Add(function (player) {
	player.attackSprite = redBoxing;
	player.sendUpdated();
});
// μ—°μ†λœ μ΄λ―Έμ§€μ˜ 경우
let attackSprite = App.loadSpritesheet("attack_sprite.png", 32, 32, [0, 1, 2], 3);
App.onJoinPlayer.Add(function (player) {
	player.attackSprite = attackSprite;
	player.sendUpdated();
});
// λ°©ν–₯별 μ• λ‹ˆλ©”μ΄μ…˜μ„ μ μš©ν•˜λŠ”κ²½μš°
let attackSprite = App.loadSpritesheet(
    "animation_sprite.png", // 이미지 파일λͺ…
    48, 48, // 이미지 ν”„λ ˆμž„ μ‚¬μ΄μ¦ˆ
    {
        left: [0, 1, 2, 3, 4, 5], // μ’ŒμΈ‘μ„ 보고 κ³΅κ²©ν•˜λŠ” 경우
        right: [6, 7, 8, 9, 10, 11], // μš°μΈ‘μ„ 보고 κ³΅κ²©ν•˜λŠ” 경우
        down: [12, 13, 14, 15, 16, 17], // μœ„λ₯Ό 보고 κ³΅κ²©ν•˜λŠ” 경우
        up: [18, 19, 20, 21, 22, 23], // μ•„λž˜λ₯Ό 보고 κ³΅κ²©ν•˜λŠ” 경우
    },
    6
);
App.onJoinPlayer.Add(function (player) {
	player.attackSprite = attackSprite;
	player.sendUpdated();
});

walletAddress

player.walletAddress : String

ν”Œλ ˆμ΄μ–΄μ˜ μ „μžμ§€κ°‘ μ£Όμ†Œμž…λ‹ˆλ‹€.

예제

μ „μžμ§€κ°‘ μ£Όμ†Œ 좜λ ₯해보기 ( μ „μžμ§€κ°‘ μ£Όμ†Œκ°€ 없을 경우 null이 좜λ ₯ )

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81, function (player) {
	App.sayToAll(`${player.walletAddress}`)
});

storage

player.storage : String

슀페이슀 λ‚΄μ˜ Player κ°’ μ €μž₯ 곡간 μž…λ‹ˆλ‹€ (슀페이슀 ν•œμ •)

예제

ν”Œλ ˆμ΄μ–΄ storage에 데이터λ₯Ό μ €μž₯ν•˜κ³ , 확인해보기

πŸ’‘ 앱을 μ’…λ£Œν–ˆλ‹€κ°€ λ‹€μ‹œ μΌœλ„ μ €μž₯된 값이 사라지지 μ•ŠμŠ΅λ‹ˆλ‹€.

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// App.addOnKeyDown
App.addOnKeyDown(81,function(player){
	player.storage = "data";
	player.save(); // storage의 값이 λ³€κ²½λ˜λ©΄ player.save()둜 변경값을 적용
})

// w ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.addOnKeyDown(87,function(player){
	App.sayToAll(player.storage); // player storage에 μ €μž₯된 값을 μ±„νŒ…μ°½μ— 좜λ ₯
})

isMobile

player.isMobile : Boolean

ν”Œλ ˆμ΄μ–΄μ˜ λͺ¨λ°”일 접속 μ—¬λΆ€λ₯Ό true/false 둜 좜λ ₯ν•©λ‹ˆλ‹€.

예제

ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ ν•  λ•Œ μž…μž₯λ©”μ‹œμ§€μ— λͺ¨λ°”일/PC ν‘œμ‹œν•΄λ³΄κΈ°

// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.onJoinPlayer.Add(function(player){	
	if(player.isMobile){
		App.sayToAll(`${player.name}λ‹˜μ΄ λͺ¨λ°”μΌμ—μ„œ μ ‘μ†ν–ˆμŠ΅λ‹ˆλ‹€.`)	
	} else{
		App.sayToAll(`${player.name}λ‹˜μ΄ PCμ—μ„œ μ ‘μ†ν–ˆμŠ΅λ‹ˆλ‹€.`)
	}
});

isMoving

player.isMoving : Boolean

ν”Œλ ˆμ΄μ–΄κ°€ 움직이고 있으면 True, μ•„λ‹ˆλ©΄ Falseλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

예제

ν”Œλ ˆμ΄μ–΄μ˜ μ›€μ§μž„μ„ κ°μ§€ν•΄μ„œ λ©”μ‹œμ§€ 좜λ ₯해보기.

App.onUpdate.Add(function (dt) {
	let _players = App.players;
	for (let i in _players) {
		let p = _players[i];
		if (p.isMoving) {
			App.sayToAll(`${p.name}λ‹˜μ΄ μ›€μ§μ΄λŠ” 쀑..`);
		}
	}
});

isJumping

player.isJumping : Boolean

ν”Œλ ˆμ΄μ–΄κ°€ μ ν”„ν•˜κ³  있으면 True, μ•„λ‹ˆλ©΄ Falseλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

예제

ν”Œλ ˆμ΄μ–΄μ˜ 점프λ₯Ό κ°μ§€ν•΄μ„œ λ©”μ‹œμ§€ 좜λ ₯해보기.

App.onUpdate.Add(function (dt) {
	let _players = App.players;
	for (let i in _players) {
		let p = _players[i];
		if (p.isJumping) {
			App.sayToAll(`[μ‹œμŠ€ν…œ] ${p.name}λ‹˜μ΄ 점프 쀑..`);
		}
	}
});

customData

player.customData : String

URL 쿼리슀트링으둜 전달 받은 값을 μ €μž₯ν•˜λŠ” ν•„λ“œμž…λ‹ˆλ‹€.

예제

πŸ”₯ URL 쿼리슀트링 ν™œμš©ν•˜κΈ°

displayRatio

player.displayRatio

ν”Œλ ˆμ΄μ–΄ν™”λ©΄μ˜ μ€Œμ„ 컨트둀 ν•˜λŠ” κ°’ ( κΈ°λ³Έ κ°’: 1 )

예제

ν™”λ©΄μ˜ μ€Œμ„ 컨트둀 ν•˜λŠ” ν‚€ λ§Œλ“€μ–΄λ³΄κΈ°

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
// ν•œ 번 λˆ„λ₯΄λ©΄ ν™”λ©΄μ˜ 쀌 값이 컀지고, ν•œ 번 더 λˆ„λ₯΄λ©΄ μ›λž˜λŒ€λ‘œ λŒμ•„μ˜€λŠ” ν‚€ ν•¨μˆ˜ 
App.addOnKeyDown(81,function(player){
	if(player.displayRatio == 1){
		player.displayRatio = 5;
	}else{
		player.displayRatio = 1;
	}
	player.sendUpdated(); //* player의 Field값이 λ³€κ²½λ˜λ©΄ player.sendUpdated()둜 변경값을 적용
})

titleColor

player.titleColor

ν”Œλ ˆμ΄μ–΄μ˜ 타이틀 색상을 μ½κ±°λ‚˜ μˆ˜μ • ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Enum κ°’ λ˜λŠ” 컬러 Hex Code 값을 μž…λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš© κ°€λŠ₯ν•œ Enum ColorType
{ WHITE, BLACK, RED, GREEN, BLUE, ORANGE, PURPLE, GRAY, YELLOW, MAGENTA, CYAN }

예제

타이틀 색상 바꿔보기

// q ν‚€λ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.addOnKeyDown(81, function (player) {
	player.title = "πŸ”ΈTitleπŸ”Έ";
	// Enum κ°’μœΌλ‘œ μž…λ ₯ν•˜λŠ” 경우
	player.titleColor = ColorType.CYAN;
	
	// Hex Code둜 μž…λ ₯ν•˜λŠ” 경우 (주석을 ν•΄μ œν•΄μ£Όμ„Έμš”)
	// player.titleColor = 0x00FFFF;
	
	player.sendUpdated(); //* player의 Field값이 λ³€κ²½λ˜λ©΄ player.sendUpdated()둜 변경값을 적용
});

emailHash

player.emailHash

ν”Œλ ˆμ΄μ–΄μ˜ 이메일 Hash 값을 κ°€μ Έμ˜΅λ‹ˆλ‹€.

예제

ν”Œλ ˆμ΄μ–΄μ˜ 이메일 Hash κ°’ 좜λ ₯ν•˜κΈ°

// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.onJoinPlayer.Add(function(player){
  App.sayToAll(`name: ${player.name} emailHash: ${player.emailHash}`);
})

isGuest

player.isGuest

λΉ„λ‘œκ·ΈμΈ ν”Œλ ˆμ΄μ–΄μΈ 경우 true 값을 κ°€μ§‘λ‹ˆλ‹€.

예제

λΉ„λ‘œκ·ΈμΈ μœ μ € μž…μž₯μ‹œ 타이틀에 "GUEST" ν‘œμ‹œν•˜κΈ°

// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.onJoinPlayer.Add(function(player){
  if(player.isGuest){
    player.title = "GUEST";
    player.sendUpdated();
  }
})

language

player.language

λΈŒλΌμš°μ €μ—μ„œ μ‚¬μš©ν•˜λŠ” μ–Έμ–΄ 섀정값에 따라 λ‹€μŒκ³Ό 같은 값을 κ°€μ§‘λ‹ˆλ‹€.

ν•œκ΅­μ–΄ "ko", 일본어: "ja", μ˜μ–΄: "en"

예제

μœ μ € μž…μž₯μ‹œ λΈŒλΌμš°μ €μ—μ„œ μ‚¬μš© ν•˜λŠ” μ–Έμ–΄ μ„€μ • κ°’ ν‘œμ‹œν•˜κΈ°

// ν”Œλ ˆμ΄μ–΄κ°€ μž…μž₯ν•  λ•Œ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.onJoinPlayer.Add(function(player){
  App.sayToAll(player.language);
})

away

player.away

μž₯μ‹œκ°„ λΉ„ν™œμ„±ν™”λœ μœ μ €μΈ 경우 true값을 κ°€μ§‘λ‹ˆλ‹€.

enableFreeView

player.enableFreeView

ν”Œλ ˆμ΄μ–΄μ˜ 맡 λ‘˜λŸ¬λ³΄κΈ° ν—ˆμš© μ—¬λΆ€λ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예제

λ‹¨μΆ•ν‚€λ‘œ ν”Œλ ˆμ΄μ–΄μ˜ 맡 λ‘˜λŸ¬λ³΄κΈ° ν—ˆμš© μ—¬λΆ€ μ„€μ •ν•˜κΈ°

// Qλ₯Ό λˆ„λ₯΄λ©΄ λ™μž‘ν•˜λŠ” ν•¨μˆ˜
App.addOnKeyDown(81, function (player) {
	if (player.enableFreeView) {
		player.enableFreeView = false;
	} else {
		player.enableFreeView = true;
	}
	player.sendUpdated();
	player.sendMessage(`player.enableFreeView = ${player.enableFreeView}`, 0x00ffff);
});

Last updated