UMUX Reference_10 - HonestSquare/UMUX GitHub Wiki
- ๋ณธ ๋ฌธ์๋ API ๋ ๋ฒจ 10(4.0 Dodoma)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ UMUX ๋ ํผ๋ฐ์ค์ ๋๋ค.
 - 
Ctrl+F๋๋F3์ ํตํด ๊ฐ๋ณ ์ด๋์ด ๊ฐ๋ฅํฉ๋๋ค. 
- ๋ณ์ ๋ฐ ํจ์ ์์น๋ ์ด๋ฆ์ ์ ๋์ฌ๋ฅผ ์ฐ์ ํ๋ ๋ก๋ง์(A-Z) ์๋๋ก ์ ๋ ฌํ์์ต๋๋ค.
 
์ ๋์ฌ ๋ชฉ๋ก
- on
 - init
 - is(has), get(find)
 - set
 - add
 - update, check
 - clear, delete, reset
 - show
 
- ์๊ธฐ ๋ชฉ๋ก์์ ์ผ์นํ๋ ์ ๋์ฌ๊ฐ ์๋ ๊ฒฝ์ฐ, show ์ ๋์ฌ๋ณด๋ค๋ ์๋์ ์์นํด ๋์์ต๋๋ค.
 - ๋ค๋ง ์ผ๋ถ๋ ํธ์์์ ์ด์ ๋ก ์์ธ ์ ๋ ฌํ ๊ณณ๋ ์์ด, ์์ค ์ฝ๋์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์์น๋ฅผ ์ด ๊ท์น์ ๋ฐ๋ผ ์ ๋ ฌ๋ ๊ฑด ์๋๋๋ค.
 
- ์ด๊ธฐ ์ค์ 
 - ๊ฒฝ๊ธฐ์ฅ ์ด๊ธฐํ
 - class GameManager
 - class Administration
 - class BlacklistSystem
 - class Notification
 - class ChatManager
 - class ChatSystem
 - class Commands
 - class PlayerManager
 - class PlayerSystem
 - class ScoreManager
 - class StatusSystem
 - class TouchedPlayer
 - class TimeManager
 - class TimerSystem
 - class GameSystem
 - ๋ช ๋ น์ด
 - ์ด๋ฒคํธ
 - ๊ธฐํ
 
ROOMNAME: String
- ์๋ฒ ์ด๋ฆ์ ์ ์ฅํฉ๋๋ค
 
DESCRIPTION: String
- ์๋ฒ ์ค๋ช ์ ์ ์ฅํฉ๋๋ค
 
MAXLIMIT: Int
- ์ต๋ ์ธ์์ ์ ์ฅํฉ๋๋ค
 
HOSTNAME: String
- ํธ์คํธ ์ด๋ฆ์ ๊ฒฐ์ ํฉ๋๋ค
 
PUBLIC: Bool
- ์๋ฒ ๊ณต๊ฐ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค
 
TOKEN: String
- ๋ง๋ฃ๋์ง ์์ ๊ฐ์ ์ง์ ํ๋ฉด ์๋ฒ ์ด๊ธฐํ ์งํ recaptcha ์ธ์ฆ์ ๊ฑด๋๋๋๋ค
 - 
token์ ์ฌ๊ธฐ์ ๋ฐ๊ธ ๋ฐ์ ์ ์์ต๋๋ค 
NOPLAYER: Int
- ํธ์คํธ ๊ณต๊ฐ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค
 
REGION_CODE: String
- ์ง์ญ ์ฝ๋๋ฅผ ๊ฒฐ์ ํฉ๋๋ค
 
LAT: Float
- ์์คํ ์ ์๋๋ฅผ ๊ฒฐ์ ํฉ๋๋ค
 
LON: Float
- ์์คํ ์ ๊ฒฝ๋๋ฅผ ๊ฒฐ์ ํฉ๋๋ค
 
PASSWORD: String
- ์์คํ  ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ฅํฉ๋๋ค
 
MAXPLAYERS: Int
- ์ต๋ ์ธ์์ ๊ฒฐ์ ํฉ๋๋ค
 
INITSERVER(str: String)
- ์๋ฒ๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 
ROOM: RoomObject
- ์๋ฒ๋ฅผ ์ด๊ธฐํ ํ ๋ค 
RoomObject๋ฅผ ์์์ ์ ์ฅํฉ๋๋ค - ์๋ฒ ์ด๊ธฐํ๋ฅผ ์ํด 
HBInit(INITSERVER(PASSWORD))๋ฅผ ํธ์ถํฉ๋๋ค 
initStadiums(links: Array<String>)
- ๊ฒฝ๊ธฐ์ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - ์ธ๋ถ ๋งํฌ ์ ๊ทผ์ด ํ์ํ๋ฉด 
requestStadium()๋ฅผ ํธ์ถํฉ๋๋ค 
requestStadium(ln: String)
- ๊ฒฝ๊ธฐ์ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ๊ฐํฉ๋๋ค
 - 
initStadiums()์์ ๊ฒฝ๊ธฐ์ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ๋ฅผ ์ํด ์ด ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค 
- ๊ฒ์์ ์ ๋ฐ์ ์ผ๋ก ์ ์ดํฉ๋๋ค
 
constructor(afkLimitTime: Int, rptLimitTime: Int, timeLimit: Int)
- 
_afkLimitTime: Int: ์ฅ๊ธฐ ๋ฌด์๋ต ํ๋ ์ด์ด ํ์  ์ต์ ์๊ฐ์ ์ด ๋จ์๋ก ์ ์ฅํฉ๋๋ค - 
_repeatedLimitTim: Int: ๋ฐ๋ณต ์ฑํ ํ์  ์ต๋ ์๊ฐ์ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ ์ฅํฉ๋๋ค - 
_countMatch: Int: ๋์  ๊ฒฝ๊ธฐ ํ์๋ฅผ ์ ์ฅํฉ๋๋ค - 
_gameLink: String: ์๋ฒ ๋งํฌ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_gameEventStats: Int: ๊ฒฝ๊ธฐ ์งํ ์ํ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_isRecording: Bool: ๋ นํ ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_firstTimeNotifie: Float: ์ต์ด ๋๋ฌ ์๊ฐ์ ์ ์ฅํฉ๋๋ค - 
_lastTimeNotified: Float: ์ต๊ทผ ๋๋ฌ ์๊ฐ์ ์ ์ฅํฉ๋๋ค - 
_timeLimit: Int: ๋๋ฌ ๊ธฐ์ค ์๊ฐ์ ์ด ๋จ์๋ก ์ ์ฅํฉ๋๋ค - 
_timeLimitReached: Bool: ์๊ฐ ๋๋ฌ ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค 
onGamePause(player: PlayerObject)
- ๊ฒฝ๊ธฐ๊ฐ ์ค์ง๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
_gameEventStats์ ๊ฐ์c_GAME_STATS.PAUSE์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค - ํ๋ ์ด์ด์ ๋์์ผ๋ก ํธ์ถ๋ ๊ฒฝ์ฐ, ํ๋ ์๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์updateTime()๋ฅผ ํธ์ถํฉ๋๋ค - 
goalํ์ด๋จธ๋ฅผ ์ง์ฐ๊ธฐ ์ํดTimeManagerํด๋์ค์clearTimerByName()๋ฅผ ํธ์ถํฉ๋๋ค - GUI ๊ฐฑ์ ์ ์ํด 
GameSystemํด๋์ค์updateWebGUI()๋ฅผ ํธ์ถํฉ๋๋ค 
onGameStart(player: PlayerObject)
- ๊ฒฝ๊ธฐ๊ฐ ์์๋๋ฉด ํธ์ถํฉ๋๋ค
 - ๊ฒฝ๊ธฐ ์ ์ด ์ค๋น๋ฅผ ์ํด 
handleGameStart()๋ฅผ ํธ์ถํฉ๋๋ค - ์ฝ์์ฐฝ์ ๋์  ๊ฒฝ๊ธฐ ํ์๋ฅผ ๋ฉ์์ง๋ก ๋์๋๋ค
 
onGameStop(player: PlayerObject)
- ๊ฒฝ๊ธฐ๊ฐ ์ข ๋ฃ๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
_gameEventStats์ ๊ฐ์c_GAME_STATS.STOP์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ฐ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์clearTouchedList()๋ฅผ ํธ์ถํฉ๋๋ค - 
goalํ์ด๋จธ๋ฅผ ์ง์ฐ๊ธฐ ์ํดTimeManagerํด๋์ค์clearTimerByName()๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์ด์ด์ ๋์์ผ๋ก ํธ์ถ๋ ๊ฒฝ์ฐ, ํ๋ ์๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์updateTime()๋ฅผ ํธ์ถํฉ๋๋ค - GUI ๊ฐฑ์ ์ ์ํด 
GameSystemํด๋์ค์updateWebGUI()๋ฅผ ํธ์ถํฉ๋๋ค 
onGameTick(void)
- ๊ฒฝ๊ธฐ๊ฐ ์งํ๋๋ ๋์ ํธ์ถํฉ๋๋ค
 - 
ํ์ฌ ์๊ฐ โฅ_firstTimeNotified + 100์ ๋ง์กฑํ๋ฉด_firstTimeNotified์ ๊ฐ์ ํ์ฌ ์๊ฐ์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค - ๊ฒฝ๊ธฐ ์ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด 
handleGameTick()๋ฅผ ํธ์ถํฉ๋๋ค 
onGameUnpause(player: PlayerObject)
- ๊ฒฝ๊ธฐ๊ฐ ์ฌ๊ฐ๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
_gameEventStats์ ๊ฐ์c_GAME_STATS.TICK์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค - ํ๋ ์ด์ด์ ๋์์ผ๋ก ํธ์ถ๋ ๊ฒฝ์ฐ, ํ๋ ์๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์updateTime()๋ฅผ ํธ์ถํฉ๋๋ค - GUI ๊ฐฑ์ ์ ์ํด 
GameSystemํด๋์ค์updateWebGUI()๋ฅผ ํธ์ถํฉ๋๋ค 
onKickRateLimitSet(min: Int, rate: Int, burst: Int, player: PlayerObject)
- ํฅ ์ ํ์ด ์ค์ ๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
min๊ฐ์ ๋ ํฅ ๊ฐ์ ์ต์ ๋ก์งํ๋ ์์ ๋๋ค. - 
rate๊ฐ์burst์ ๋ฐ๋ฅธ ์ถ๊ฐ ํฅ์ ์ฐ๋ ๊ฐ์ ๋๋ค. - 
burst๊ฐ์ ์ถ๊ฐ ํฅ์ ์ ์ฝํ ์ ์๋ ๊ฐ์ ๋๋ค. 
onPlayerBallKick(player: PlayerObject)
- ํ๋ ์ด์ด๊ฐ ๊ณต์ ์ฐจ๋ฉด ํธ์ถํฉ๋๋ค
 - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ๊ฐ๋ฅผ ์ํด 
ScoreManagerํด๋์ค์addTouchedList()๋ฅผ ํธ์ถํฉ๋๋ค 
onPlayerJoin(player: PlayerObject)
- ์ ๊ท ํ๋ ์ด์ด๊ฐ ์ ์ํ๋ฉด ํธ์ถํฉ๋๋ค
 - ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ๋ฅผ ์ํด 
PlayerManagerํด๋์ค์initPlayerList()๋ฅผ ํธ์ถํฉ๋๋ค - GUI์ ๋ช
๋จ์ ์ถ๊ฐํ๊ธฐ ์ํด 
GameSystemํด๋์ค์addListIndex()๋ฅผ ํธ์ถํฉ๋๋ค 
	let hasVisitRecord = PM.updateAccount(player.id);	//	๊ณ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ - ๊ณ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
PlayerManagerํด๋์ค์updateAccount()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ธ๋๋ฆฌ์คํธ ์ฌ๋ถ๋ฅผ ํ์ ํ๊ธฐ ์ํด 
Administrationํด๋์ค์isBlacklist()๋ฅผ ํธ์ถํฉ๋๋ค - ์ค๋ณต ๋ฐ ๋ค์ค ์ ์ ๊ฐ์ง๋ฅผ ์ํด 
Administrationํด๋์ค์hasMatchedConnection()๋ฅผ ํธ์ถํฉ๋๋ค - ์ ์์๊ฐ 2์ธ ๋ฏธ๋ง์ด๋ฉด ๋ ๋ํ์ผ๋ก ํฌ์ ํฉ๋๋ค
 - ๊ถํ ๊ฐฑ์ ์ ์ํด 
Administrationํด๋์ค์updateAdmins()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ นํ ์ค์ด๋ฉด ํ๋ ์ด์ด์๊ฒ ๋ณ๋์ ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค
 - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
hasVisitRecord๊ฐ์ ๋ฐํํฉ๋๋ค 
onPlayerLeave(player: PlayerSystem)
- ์ ์์๊ฐ ํด์ฅํ๋ฉด ํธ์ถํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ฐ๊ธฐ ์ํด 
PlayerSystemํด๋์ค์clearPlayer()๋ฅผ ํธ์ถํฉ๋๋ค - ์ ์์๊ฐ ์์ผ๋ฉด ๊ถํ ๊ฐฑ์ ์ ์ํด 
Administrationํด๋์ค์updateAdmins()๋ฅผ ํธ์ถํฉ๋๋ค - ์ ์์๊ฐ ์์ผ๋ฉด ๋น๋ฐ๋ฒํธ ๊ฐฑ์ ์ ์ํด 
Administrationํด๋์ค์updatePassword()๋ฅผ ํธ์ถํฉ๋๋ค - ์ฝ์์ฐฝ์ ์ ์ ์ธ์์ ๋ฉ์์ง๋ก ๋์๋๋ค
 
onPositionsReset(void)
- ๊ณจ ํ์  ์งํ ํฌ์ง์ ์ด ์ด๊ธฐํ๋๋ฉด ํธ์ถํฉ๋๋ค
 
onRoomLink(address: String)
- ์์คํ ์์ ๋งํฌ๊ฐ ์์ฑ๋๋ฉด ํธ์ถํฉ๋๋ค
 - ์๋ฒ ์ด๊ธฐํ๊ฐ ํ์ํ ๊ฒฝ์ฐ 
GameSystemํด๋์ค์initServer()๋ฐinitWebGUI()๋ฅผ ํธ์ถํ๊ณ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ์๋ฒ ์์ ์ ์ํด 
GameSystemํด๋์ค์enableRecaptcha()๋ฅผ ํธ์ถํฉ๋๋ค 
onStadiumChange(newMap: String, byPlayer: PlayerObject)
- ๊ฒฝ๊ธฐ์ฅ์ด ๊ต์ฒด๋๋ฉด ํธ์ถํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋์์ผ๋ก ํธ์ถ๋ ๊ฒฝ์ฐ, ํ๋ ์๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์updateTime()๋ฅผ ํธ์ถํฉ๋๋ค - ๊ฒฝ๊ธฐ์ฅ ๋ธ๋๋ฆฌ์คํธ์ ํฌํจ๋ ๊ฒฝ์ฐ, 0๋ฒ์งธ ๊ฒฝ๊ธฐ์ฅ์ผ๋ก ๊ต์ฒดํ๊ณ  
Administrationํด๋์ค์addBlacklistByPlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
onTeamGoal(team: TeamID)
- ๊ณจ์ด ํ์ ๋๋ฉด ํธ์ถํฉ๋๋ค
 - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์lastTouchedPlayer๋ฅผ ๋ถ๋ฌ์ต๋๋ค - ์ด์์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์findAssist()๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์ด์ด์ ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์findRankListByPlayer()๋ฅผ ํธ์ถํฉ๋๋ค - ๋์  ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
ScoreManagerํด๋์ค์updateGoals()๋ฅผ ํธ์ถํฉ๋๋ค - GUI ๊ฐฑ์ ์ ์ํด 
GameSystemํด๋์ค์updateWebGUI()๋ฅผ ํธ์ถํฉ๋๋ค - ์งง์ ์๊ฐ ๋์ ๋์ ์๋ฅผ ๋ฑ๋ฒํธ๋ก ๊ฐ์กฐํ๋ 
goalํ์ด๋จธ๋ฅผ ์์ฑํ๊ธฐ ์ํดTimeManagerํด๋์ค์addTimer()๋ฅผ ํธ์ถํฉ๋๋ค 
onTeamVictory(scores: ScoresObject)
- ๊ฒฝ๊ธฐ ์นํจ๊ฐ ๊ฒฐ์ ๋๋ฉด ํธ์ถํฉ๋๋ค
 - ์น๋ฆฌํ ํ์ ๊ตฌํ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์findWinner()๋ฐfindTeamName()๋ฅผ ํธ์ถํฉ๋๋ค - ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐฑ์ ํ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์findRankListByPlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
handleGameStart(void)
- ๊ฒฝ๊ธฐ ์ ์ด๋ฅผ ์ค๋นํฉ๋๋ค
 - 
_gameEventStats์ ๊ฐ์c_GAME_STATS.START์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค - 
_countMatch์ ๊ฐ์ 1 ์ฆ๊ฐํฉ๋๋ค - 
_firstTimeNotified์ ๊ฐ์ ํ์ฌ ์๊ฐ์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค - 
_lastTimeNotified์ ๊ฐ์ ํ์ฌ ์๊ฐ์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค - 
_timeLimitReached์ ๊ฐ์false์ผ๋ก ์ด๊ธฐํ ํฉ๋๋ค - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ชจ๋ ์ง์ฐ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์clearTouchedList()๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์ด์ด์ ํ๋ ์๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์updateTime()๋ฅผ ํธ์ถํฉ๋๋ค 
handleGameTick(currentTime: Float)
- ๊ฒฝ๊ธฐ ์ ์ด๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค
 - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
ScoreManagerํด๋์ค์updateTouchedList()๋ฅผ ํธ์ถํฉ๋๋ค - 
_timeLimit ๏ผ 1์ ๋ง์กฑํ๋ฉดfalse์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค - ์ต๊ทผ ๊ธฐ๋ก ์๊ฐ์์ ๋๋ฌ ๊ธฐ์ค ์๊ฐ ์ดํ๋ก ๊ฒฝ๊ณผ๋ ๊ฒฝ์ฐ, 
_lastTimeNotified์ ๊ฐ์ ํ์ฌ ์๊ฐ์ผ๋ก ๊ฐฑ์ ํ๊ณtrue์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค - 0์ด์์ ๋๋ฌ ๊ธฐ์ค ์๊ฐ ์ดํ๋ก ๊ฒฝ๊ณผ๋๋ฉด 
_timeLimitReached์ ๊ฐ์true๋ก ๊ฐฑ์ ํ๊ณtrue์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
false์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค 
- 10~10800 ์ฌ์ด์ ๊ฐ์ด๋ฉด 
_afkLimitTime๋ฅผ ๋ฐํํฉ๋๋ค 
- 
_gameLink๋ฅผ ๋ฐํํฉ๋๋ค 
- 
_gameEventStats๋ฅผ ๋ฐํํฉ๋๋ค 
- 
_isRecording๋ฅผ ๋ฐํํฉ๋๋ค 
- 
_repeatedLimitTime๋ฅผ ๋ฐํํฉ๋๋ค 
- 
_countMatch๋ฅผ ๋ฐํํฉ๋๋ค 
set afkTime(v: Int)
- ์ฅ๊ธฐ ๋ฌด์๋ต ํ์  ์ต์ ์๊ฐ์ ์ง์ ํฉ๋๋ค
 - 
v์ ๊ฐ์ 10~10800 ๋ฒ์ ์์ด๋ฉฐ_afkLimitTime์ ๊ฐ๊ณผ ๋ฌ๋ผ์ผ ํฉ๋๋ค - ์ฅ๊ธฐ ๋ฌด์๋ต ํ๋ ์ด์ด๋ฅผ ๋ณ๊ฒฝ๋ ์๊ฐ์ผ๋ก ํ์ ํ๊ธฐ ์ํด ๋ชจ๋  ํ๋ ์ด์ด์ ํ๋ ์๊ฐ์ ๊ฐฑ์ ํด์ผ ํ๋ฏ๋ก, 
PlayerManagerํด๋์ค์updateTime()๋ฅผ ํธ์ถํฉ๋๋ค - 
_afkLimitTime์ ๊ฐ์ ์์ ํฉ๋๋ค 
set gameLink(v: String)
- ์๋ฒ ๋งํฌ๋ฅผ ์ง์ ํฉ๋๋ค
 - ์๋ฒ๋ฅผ ์ด๊ธฐํ ํ ๋ ํ ๋ฒ๋ง ์คํ๋ฉ๋๋ค
 - 
_gameLink์ ๊ฐ์ ์์ ํฉ๋๋ค 
set gameStats(v: Int)
- ๊ฒฝ๊ธฐ ์งํ ์ํ๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - 
_gameEventStats์ ๊ฐ์ ์์ ํฉ๋๋ค 
set recStats(v: Bool)
- ๋ นํ ์ํ๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - 
_isRecording์ ๊ฐ์ ์์ ํฉ๋๋ค 
findStadiumNameList(target: Int)
- ๊ฒฝ๊ธฐ์ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค
 - 
target์ ๊ฐ์ด ์ ํจํ ๊ฒฝ์ฐ ํน์  ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ๊ฒฝ๊ธฐ์ฅ์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค 
findTeamName(value: teamID)
- ํ ID๋ฅผ ๋ฌธ์์ด๋ก ๋ฐํํฉ๋๋ค
 
checkPublicId(msg: String, player: Int, hasAllRange: Bool)
- 
#ID๋ฅผ ํ๋ณํ์ฌ ์ง๋ชฉํ ๋์์ ID๋ฅผ ๋ฌธ์์ด์์ ์ ์ํ์ผ๋ก ๋ฐํํฉ๋๋ค - 
hasAllRange๊ฐtrue์ ๊ฐ์ ๊ฐ์ง๋ฉด ๋ฏธ์ ์์์ ID๋ ํฌํจํฉ๋๋ค 
loadMap(target: Int, player: Int)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ๊ฒฝ๊ธฐ์ฅ์ ๊ต์ฒดํฉ๋๋ค
 - ์์คํ ์ด ๊ธ์งํ ๊ฒฝ์ฐ, ๊ฒฝ๊ธฐ์ฅ์ ๊ต์ฒดํ์ง ์๊ณ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 
reorderPlayers(playerIdList: Array<Int>, moveToTop: Bool)
- ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์  ์๋ฒ์ ๋ฐ๋ผ ์ฌ์ ๋ ฌํฉ๋๋ค
 - ์ ๋ ฌํ ๋ช ๋จ์ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ, ๋ชจ๋ ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๋ ฌํฉ๋๋ค
 - 
moveToTop์ ๊ฐ์ดtrue์ธ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํฉ๋๋ค - GUI ๊ฐฑ์ ์ ์ํด 
GameSystemํด๋์ค์updateWebGUI()๋ฅผ ํธ์ถํฉ๋๋ค 
runCommand(src: Array<String>, type: Array<String>, player: PlayerObject)
- ๋ช ๋ น์ด๋ก๋ถํฐ ๊ธฐ๋ฅ์ ์ฐ๊ฒฐํฉ๋๋ค
 - ์
๋ ฅ์๊ฐ ์ ์ํด ์์ง ์๋ ๊ฒฝ์ฐ 
false์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค 
	let fn = Function('"use strict";return (' + src + ')')();	//	์คํ ๊ตฌ๋ฌธ- 
fn()์ ํตํด ๊ธฐ๋ฅ์ ์คํํฉ๋๋ค - 
type[2]์ ๊ฐ์ด ๋ถ์ ์ ํ ๊ฒฝ์ฐ-1๋ฅผfn()์ ์ธ์๊ฐ์ผ๋ก ์ ๋ฌํฉ๋๋ค - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
true์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค 
startRecording(hideAnchor: Bool)
- ์์คํ  ๋ นํ๋ฅผ ์์ํฉ๋๋ค
 - ์ด๋ฏธ ์งํํ๊ณ  ์๋ ๋
นํ๊ฐ ์์ผ๋ฉด 
stopRecording()๋ฅผ ํธ์ถํ์ฌ ์ข ๋ฃํฉ๋๋ค - ๋
นํ ์ํ๋ฅผ ๊ฐฑ์ ํ๊ธฐ ์ํด 
_isRecording์ ๊ฐ์ ๊ฐฑ์ ํฉ๋๋ค 
stopRecording(void)
- ์์คํ  ๋ นํ๋ฅผ ์ข ๋ฃํฉ๋๋ค
 - ๋
นํ ์ํ๋ฅผ ๊ฐฑ์ ํ๊ธฐ ์ํด 
_isRecording์ ๊ฐ์ ๊ฐฑ์ ํฉ๋๋ค 
	let file = room.stopRecording();- ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
file์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- ์์คํ ์ ์ ๋ฐ์ ์ธ ๊ถํ์ ์ ์ดํฉ๋๋ค
 
constructor(dynamicAdmin: Bool, isAllowJoin: Bool, isLockStadium: Bool, defaultStadium: Int, maxAdmin: Int, pinHost: Bool)
- 
_blacklist: Array<BlacklistSystem>: ๋ธ๋๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํฉ๋๋ค - 
_enableDynamicAdmin: Bool: ๊ถํ ํ ๋น ๋ฐฉ์์ ์ ์ฅํฉ๋๋ค - 
_isAllowTeamSwitch: Bool: ํ๋ ์ด์ด ํ ์์จ ๊ต์ฒด๊ถ์ ์ ์ฅํฉ๋๋ค - 
_isLockStadium: Bool: ๊ฒฝ๊ธฐ์ฅ ๊ณ ์  ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_defaultStadium: String: ๊ณ ์  ๊ฒฝ๊ธฐ์ฅ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ - 
_maxAdminLimit: Int: ์ต๊ณ ๊ด๋ฆฌ์ ์ํ ์ธ์์ ์ ์ฅํฉ๋๋ค - 
_pinHost: Bool: ํธ์คํธ ํ ์ด๋ ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค 
onPlayerAdminChange(givenPlayer: PlayerObject, byPlayer: PlayerObject)
- ํ๋ ์ด์ด์ ๊ถํ์ด ๋ณ๊ฒฝ๋๋ฉด ํธ์ถํฉ๋๋ค
 
	let target = PM.findPlayerById(givenPlayer.id);- ๊ถํ ๋ณ๊ฒฝ ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์ด์ด์ ๋์์ผ๋ก ํธ์ถ๋ ๊ฒฝ์ฐ, ํ๋ ์๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์updateTime()๋ฅผ ํธ์ถํฉ๋๋ค - 
givenPlayer.admin์ ๊ฐ์ดtrue์ธ ๊ฒฝ์ฐ- ๋ณด์กฐ ๊ถํ์ ๊ฐ์ง ํ๋ ์ด์ด๊ฐ ๋ง์ฐ์ค ํด๋ฆญ์ ํตํ ๊ฒ์ ๋ด ๊ธฐ๋ฅ์ผ๋ก ๊ถํ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ, ๋ณด์กฐ ๊ถํ์ ํด์ ํฉ๋๋ค
 
 - 
givenPlayer.admin์ ๊ฐ์ดfalse์ธ ๊ฒฝ์ฐ- ์ต๊ณ ๊ถํ์ ๊ฐ์ง ํ๋ ์ด์ด๋ ๊ถํ์ด ํด์ ๋ ์งํ ๋ณด์กฐ ๊ถํ์ด ๋ถ์ฌ๋ฉ๋๋ค
 
 - GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์addListIndex()๋ฅผ ํธ์ถํฉ๋๋ค 
onPlayerKicked(kickedPlayer: PlayerObject, reason: String, ban: Bool, byPlayer: PlayerObject)
- ์ ์์๊ฐ ๊ฐ์  ํด์ฅ๋๋ฉด ํธ์ถํฉ๋๋ค
 - ๊ฐ์  ํด์ฅ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - 
reason์ ๊ฐ์ดBad actor๋ก ๊ฐ์ง๋๋ฉด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ์กํ๊ณ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ํ๋ ์ด์ด์ ๋์์ผ๋ก ํธ์ถ๋ ๊ฒฝ์ฐ, ํ๋ ์๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์updateTime()๋ฅผ ํธ์ถํฉ๋๋ค 
- 
_isAllowTeamSwitch์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_enableDynamicAdmin์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_isLockStadium์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 1~
MAXPLAYERS์ฌ์ด์ ๊ฐ์ด๋ฉด_maxAdminLimit๋ฅผ ๋ฐํํฉ๋๋ค 
- 
PASSWORD์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_defaultStadium์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
set allowJoin(bool: Bool)
- ํ๋ ์ด์ด์ ํ ์์จ ๊ต์ฒด๋ฅผ ํ์ฉํ๊ฑฐ๋ ๊ธ์งํฉ๋๋ค
 - 
_isAllowTeamSwitch์ ๊ฐ์ ์์ ํฉ๋๋ค 
set dynmcAdmin(bool: Bool)
- ๊ถํ ํ ๋น ๋ฐฉ์์ ๋ณ๊ฒฝํฉ๋๋ค
 - 
_enableDynamicAdmin์ ๊ฐ์ ์์ ํฉ๋๋ค 
set lockStadium(bool: Bool)
- ๊ฒฝ๊ธฐ์ฅ์ ๊ณ ์ ํ๊ฑฐ๋ ํด์ ํฉ๋๋ค
 - ๊ฒฝ๊ธฐ์ฅ์ด ๊ณ ์ ๋๋ฉด 
GameManagerํด๋์ค์loadMap()๋ฅผ ํธ์ถํฉ๋๋ค 
set password(value: String)
- ์์คํ  ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ํฉ๋๋ค
 - ๋น๋ฐ๋ฒํธ ๊ณ ์  ์ฅ์น๊ฐ ํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
updatePassword()๋ฅผ ํธ์ถํฉ๋๋ค 
isBlacklist(player: Int, isSuper: Bool)
- ํ๋ ์ด์ด์ ๋ธ๋๋ฆฌ์คํธ ํฌํจ ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฐBlacklistSystemํด๋์ค๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์ด์ด์ ๊ณต์ฉ ์ฃผ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
findAddress()๋ฅผ ํธ์ถํฉ๋๋ค - ์ผ์นํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ผ๋ฉด 
false์ ๊ฐ์ ๋ฐํํฉ๋๋ค - ์ด๋ฆ ๋ฐ์ดํฐ๊ฐ ๋น์ด ์์ผ๋ฉด ํ์ฌ ๋ฐ์ดํฐ๋ก ๊ฐฑ์ ํฉ๋๋ค
 - ์ฃผ์ ๋ฐ์ดํฐ๊ฐ ๋น์ด ์์ผ๋ฉด ํ์ฌ ๋ฐ์ดํฐ๋ก ๊ฐฑ์ ํฉ๋๋ค
 - ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ๊ฐ๋ฅผ ์ํด 
addBlacklist()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
true์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
isMute(target: Int)
- ํ๋ ์ด์ด์ ์ฑํ ๊ธ์ง ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
hasAdmin(player: Int, level: Int)
- ํ๋ ์ด์ด์ ๊ด๋ฆฌ์ ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
hasMatchedConnection(player: Int)
- ํ๋ ์ด์ด์ ์ค๋ณต ๋ฐ ๋ค์ค ์ ์ ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - ๋น๊ต ๋์๊ณผ ์ด๋ฆ์ด ์ผ์นํ๊ณ 
- ๊ณต์ฉ ๋คํธ์ํฌ๋ ์ผ์นํ๋ฉด ์ค๋ณต ์ ์์ผ๋ก ํ์ ํฉ๋๋ค
 - ๊ณต์ฉ ๋คํธ์ํฌ๊ฐ ์ผ์นํ์ง ์์ผ๋ฉด ๋ค์ค ์ ์์ผ๋ก ํ์ ํฉ๋๋ค
 
 - ๋น๊ต ๋์๊ณผ ๊ณต์ฉ ์ฃผ์๊ฐ ์ผ์นํ๋ฉด ๋ค์ค ์ ์์ผ๋ก ํ์ ํฉ๋๋ค
 - ์ค๋ณต ๋ฐ ๋ค์ค ์ ์์ผ๋ก ํ์ ๋ ๊ฒฝ์ฐ ๊ฐ์  ํด์ฅํฉ๋๋ค
- ๋ฐ๋ชจ ๋ชจ๋๊ฐ ํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ ๊ฐ์  ํด์ฅํ์ง ์์ต๋๋ค
 
 
findAddress(target: Int)
- ํ๋ ์ด์ด์ ๊ณต์ฉ ์ฃผ์๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
findAdminList(level: Int)
- ๊ด๋ฆฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
findBlacklistByAddress(conn: PlayerObject.conn)
- ํน์  ๊ณต์ฉ ์ฃผ์๋ฅผ ๊ฐ์ง ๋ธ๋๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
findBlacklistByName(str: String)
- ํน์  ์ด๋ฆ์ ๊ฐ์ง ๋ธ๋๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
findMutedList(isPublic: Bool)
- ์ฑํ ๊ธ์ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
findNetwork(target: PlayerObject.auth)
- ํ๋ ์ด์ด์ ๊ณต์ฉ ๋คํธ์ํฌ๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
addBlacklist(isSuper: Bool, name: String, conn: PlayerObject.conn)
- ๋ธ๋๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฑ๋กํฉ๋๋ค
 - ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ๋ฅผ ์ํด 
BlacklistSystemํด๋์ค๋ฅผ ํธ์ถํฉ๋๋ค 
addBlacklistByPlayer(target: Int, isSuper: Bool)
- ํน์  ํ๋ ์ด์ด๋ฅผ ๋ธ๋๋ฆฌ์คํธ์ ๋ฑ๋กํฉ๋๋ค
 - ์ํผ ๋ธ๋๋ฆฌ์คํธ๋ก ๋ฑ๋กํ ์งํ ์ ์์๊ฐ ์์ผ๋ฉด ๊ฐ์  ํด์ฅํฉ๋๋ค
 - ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ๋ก์ ์ํด 
addBlacklist()๋ฅผ ํธ์ถํฉ๋๋ค 
updateAdmins(void)
- ์ ์์์ ๊ถํ์ ๊ฐฑ์ ํฉ๋๋ค
 - ์ ์  ๊ถํ ํ ๋น ๋ฐฉ์์ด ์ค์ ๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - ์ต๊ณ ๊ด๋ฆฌ์๊ฐ ์ด๋ฏธ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ๊ถํ์ ๋ถ์ฌํ๊ธฐ ์ํด 
giveAdmin()๋ฅผ ํธ์ถํฉ๋๋ค- ๋ธ๋๋ฆฌ์คํธ์ ํด๋นํ๋ ๊ฒฝ์ฐ ๋ณด์กฐ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค
 
 
updatePassword(pass: String)
- ์์คํ  ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - ๋น๋ฐ๋ฒํธ ๊ณ ์  ์ฅ์น๊ฐ ํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ
 - 
PASSWORD์ ๊ฐ์ ์์ ํฉ๋๋ค- 
pass์ ๊ฐ์ด ๋ถ์ ์ ํ๊ฑฐ๋ ๊ณต๋ฐฑ์ธ ๊ฒฝ์ฐnull๊ฐ์ ๋์ ํฉ๋๋ค 
 - 
 - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
PASSWORD์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
clearBans(player: Int)
- ์๋ฒ ๋ด ์๊ตฌ ํด์ฅ ๋ช ๋จ์ ๋ชจ๋ ์ง์๋๋ค
 
clearMutedList(player: Int)
- ์ฑํ ๊ธ์ง ๋ช ๋จ์ ๋ชจ๋ ์ง์๋๋ค
 - ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
findMutedList()๋ฅผ ํธ์ถํฉ๋๋ค - GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค 
clearPassword(byPlayer: Int)
- ์์คํ  ๋น๋ฐ๋ฒํธ๋ฅผ ํด์ ํฉ๋๋ค
 - ๋น๋ฐ๋ฒํธ ๊ณ ์  ์ฅ์น๊ฐ ํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ๋น๋ฐ๋ฒํธ ๊ฐฑ์ ์ ์ํด 
updatePassword()๋ฅผ ํธ์ถํฉ๋๋ค 
deleteAdmin(player: Int, isSub: Bool)
- ํ๋ ์ด์ด์ ๊ถํ์ ํด์ ํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
resetGame(player: Int)
- ๊ฒฝ๊ธฐ๋ฅผ ์ฌ์์ํฉ๋๋ค
 
showAdminList(target: Int)
- ๊ฒ์์์ ๊ด๋ฆฌ์ ๋ช ๋จ์ ๋ฉ์์ง๋ก ์ ์กํฉ๋๋ค
 - ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
findAdminList()๋ฅผ ํธ์ถํฉ๋๋ค - ๊ถํ ์ ํ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ํ์ผ๋ก ํ์ํฉ๋๋ค
- ์ ์์ ์ค์์ ๊ด๋ฆฌ์๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฐ๋ก ํ์ํฉ๋๋ค
 
 
showPassword(player: Int)
- ๊ฒ์์์ ์์คํ  ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฉ์์ง๋ก ์ ์กํฉ๋๋ค
 
cntAdmins(level: Int)
- ๊ด๋ฆฌ์ ์ธ์์ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
enablePinHost(bool: Bool)
- ํธ์คํธ์ ํ ์ด๋์ ํ์ฉํ๊ฑฐ๋ ์ ํํฉ๋๋ค
 - ํธ์คํธ๊ฐ ๋นํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - 
bool์ ๊ฐ์ดtrue์ธ ๊ฒฝ์ฐ ํธ์คํธ๋ฅผ ๊ด์ค์์ผ๋ก ํ์ ๊ณ ์ ํฉ๋๋ค 
giveAdmin(player: Int, isSub: Bool)
- ํ๋ ์ด์ด์ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
kickPlayer(target: Int, msg: String, ban: Bool, ...replace: Array<String>)
- ํ๋ ์ด์ด๋ฅผ ๊ฐ์  ํด์ฅํฉ๋๋ค
 
limitScore(value: Int, byPlayer: Int)
- ๋ค์ ๊ฒฝ๊ธฐ์ ์ ํ ์ ์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - 
value์ ๊ฐ์ด 0~14 ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ๊ฒฝ๊ธฐ๊ฐ ์งํ ์ค์ธ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 
limitTime(value: Int, byPlayer: Int)
- ๋ค์ ๊ฒฝ๊ธฐ์ ์ ํ ์๊ฐ์ ๋ณ๊ฒฝํฉ๋๋ค
 - 
value์ ๊ฐ์ด 0~14 ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ๊ฒฝ๊ธฐ๊ฐ ์งํ ์ค์ธ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 
logonAdmin(player: Int, msg, type: String)
- ํ๋ ์ด์ด๊ฐ ์ต๊ณ ๊ถํ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - ์ด๋ฏธ ๊ถํ์ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ์ฅ๊ธฐ ๋๊ธฐ์ด์ ํฌํจ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๊ฑฐํฉ๋๋ค
 
missPassword(player: Int, msg: String, type: Int)
- ํ๋ ์ด์ด๊ฐ ์ต๊ณ ๊ถํ ๋ก๊ทธ์ธ์ ์คํจํ ๊ฒฝ์ฐ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - ์ด๋ฏธ ๊ถํ์ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 
mutePlayer(target: Int, time: Int, byPlayer: Int)
- ํ๋ ์ด์ด์ ์ฑํ ์ ๊ธ์งํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค - 
time โฅ 5๋ฅผ ๋ง์กฑํ๋ ๊ฒฝ์ฐtime์ด ๊ฒฝ๊ณผ ์งํ ์ฑํ ์ ํ์ฉํ๋ ํ์ด๋จธ๋ฅผ ์์ฑํ๊ธฐ ์ํดTimeManagerํด๋์ค์addTimer()๋ฅผ ํธ์ถํฉ๋๋ค 
swapGame(player: Int)
- ๊ฒฝ๊ธฐ๋ฅผ ์์ํ๊ฑฐ๋ ์ข ๋ฃํฉ๋๋ค
 
unmutePlayer(target: Int, byPlayer: Int)
- ํ๋ ์ด์ด์ ๊ธ์ง๋ ์ฑํ ์ ํ์ฉํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์ด์ด์ ๋ฑ๋ฒํธ๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ฏธ์ ์์๋ ๋ณ๋๋ก ์๋ฆฌ์ง ์์ต๋๋ค
 - 
muteํ์ด๋จธ๋ฅผ ์ง์ฐ๊ธฐ ์ํดTimeManagerํด๋์ค์clearTimerByName()๋ฅผ ํธ์ถํฉ๋๋ค 
- ๋ธ๋๋ฆฌ์คํธ ๋ช ๋จ์ ์ ์ดํฉ๋๋ค
 
constructor(isSuper: Bool, name: String, conn: PlayerObject.conn)
- 
_super: Bool: ์ํผ ๋ธ๋๋ฆฌ์คํธ ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_name: String: ์ด๋ฆ์ ์ ์ฅํฉ๋๋ค - 
_address: PlayerObject.conn: ๊ณต์ฉ ์ฃผ์๋ฅผ ์ ์ฅํฉ๋๋ค 
hasMatchedName(str: String)
- ์ด๋ฆ ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ ํฉ๋๋ค
 - ์ด๋ฆ์ด ๊ณต๋ฐฑ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ์ฐํ ๋ฌธ์๋ฅผ ์ ์ธํ ์ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค
 
hasMatchedAddress(conn: PlayerObject.conn)
- ๊ณต์ฉ ์ฃผ์ ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ ํฉ๋๋ค
 
hasMatchedDatabase(name: String, address: PlayerObject.conn, isSuper: Bool)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ ํฉ๋๋ค
 - ์ด๋ฆ ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ ํ๊ธฐ ์ํด 
hasMatchedName()๋ฅผ ํธ์ถํฉ๋๋ค - ๊ณต์ฉ ์ฃผ์ ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ ํ๊ธฐ ์ํด 
hasMatchedAddress()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ชจ๋ ๋ถ์ผ์นํ๋ฉด 
false์ ๊ฐ์ ๋ฐํํฉ๋๋ค - ์ํผ ๋ธ๋๋ฆฌ์คํธ ์ฌ๋ถ์ ๋ฐ๋ผ ๊ฐ์ ๋ฐํํฉ๋๋ค
 
- ์๋ฆผ ์์คํ ์ ๊ด๋ฆฌํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค
 
constructor(common: Int, acess: Int, caution: Int, info: Int, locked: Int, notice: Int, warning: Int)
- 
common: String: ๊ณตํต ๋ฉ์์ง ์ ๋ชฉ ์์์ ์ ์ฅํฉ๋๋ค - 
acess: String: ๊ถํ ์๊ตฌ ๋ฉ์์ง ์ ๋ชฉ ์์์ ์ ์ฅํฉ๋๋ค - 
caution: String: ์ฃผ์ ๋ฉ์์ง ์ ๋ชฉ ์์์ ์ ์ฅํฉ๋๋ค - 
info: String: ์์ธ์ ๋ณด ๋ฉ์์ง ์ ๋ชฉ ์์์ ์ ์ฅํฉ๋๋ค - 
locked: String: ์ ๊ธ/ํด์  ๋ฉ์์ง ์ ๋ชฉ ์์์ ์ ์ฅํฉ๋๋ค - 
notice: String: ์๋ฆผ ๋ฉ์์ง ์ ๋ชฉ ์์์ ์ ์ฅํฉ๋๋ค - 
warning: String: ๊ฒฝ๊ณ ๋ฉ์์ง ์ ๋ชฉ ์์์ ์ ์ฅํฉ๋๋ค - 
c_LIST_MSG_COLOR: Array<String>: ๋ฉ์์ง ์์ ๋ชฉ๋ก์ ์ ์ฅํฉ๋๋ค 
- 
c_LIST_MSG_COLOR์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
findColor(color: Int, hasRaw: Bool)
- ์์ ๊ฐ์ 16์ง์ ์ ์ํ์ผ๋ก ๋ฐํํฉ๋๋ค
 
findSound(sound: Int)
- ์๋ฆฌ ๊ฐ์ ์ ์ํ์ผ๋ก ๋ฐํํฉ๋๋ค
 
findStyle(style: Int)
- ์์ ๊ฐ์ ์ ์ํ์ผ๋ก ๋ฐํํฉ๋๋ค
 
announce(msg: String, target: Int, color: Int, style: Int, sound: Int, delay: Int, ...replace: Array<String>)
- ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค
 - 
target์ ๊ฐ์ด ์์์ธ ๊ฒฝ์ฐ ๋์์ ์ ์ธํ ๋ค๋ฅธ ๋ชจ๋ ํ๋ ์ด์ด์๊ฒ ์ ์กํฉ๋๋ค - 
delay > 0๋ฅผ ๋ง์กฑํ๋ ๊ฒฝ์ฐdelay๋ฐ๋ฆฌ์ด ๋ค์ ์ ์กํ๋ ํ์ด๋จธ๋ฅผ ์์ฑํ๊ธฐ ์ํดTimeManagerํด๋์ค์addTimer()๋ฅผ ํธ์ถํฉ๋๋ค 
extMsg(title: String, content: String, target: Int, advCom: String, titleColor: Int, contentColor: Int, delay: Int, ...replace: Array<String>)
- ํ์ฅ๋ ์ ๋๋ฒ์  ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค
 - ์ ๋ชฉ๊ณผ ๋ณธ๋ฌธ์ ์๋ก ๋ค๋ฅธ ํ์ผ๋ก ์ถ๋ ฅํฉ๋๋ค
 - 
announce()๋ฅผ ํธ์ถํฉ๋๋ค 
uniMsg(title: String, content: String, target: Int, advCom: String, delay: Int, ...replace: Array<String>)
- ์ ๋๋ฒ์  ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค
 - 
delay์ ๊ฐ์ ์ด ๋จ์์ ๋๋ค - 
extMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
acess(target: Int, reason: String, ...replace: Array<String>)
- ๊ถํ ์๊ตฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 
extMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
alretMsg(player: Int)
- ๊ธ์ง์ด๊ฐ ๊ฐ์ง๋๋ฉด ๋ณ๋์ ์๋ฆผ์ ์ถ๋ ฅํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - 
์์คํ  ๊ธ์ง์ด ์ต๋ ๊ฐ์ง๋ โค ํ๋ ์ด์ด์ ๊ธ์ง์ด ๊ฐ์ง๋๋ฅผ ๋ง์กฑํ๋ฉด ๊ฐ์  ํด์ฅํฉ๋๋ค - ์ฑํ
 ํํฐ๋ง ์๊ฒฉ๋์ ๋ฐ๋ผ
- 1๋จ๊ณ์์๋ ๋ณ๋๋ก ์ฒ๋ฆฌํ์ง ์์ต๋๋ค
 - 2๋จ๊ณ์์๋ ๊ฐ์ง ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 3๋จ๊ณ์์๋ ๊ฐ์  ํด์ฅํฉ๋๋ค
 - 4๋จ๊ณ์์๋ ๊ฐ์ง ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ ์ฑํ ์ 15์ด๊ฐ ๊ธ์งํฉ๋๋ค
 - 5๋จ๊ณ์์๋ ์ฑํ ์ 30์ด๊ฐ ๊ธ์งํ๊ณ ๊ฐ์  ํด์ฅํฉ๋๋ค
 - ๋ธ๋๋ฆฌ์คํธ๋ ํ ๋จ๊ณ ๋ ์๊ฒฉํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค
 
 - 
announce()๋ฅผ ํธ์ถํฉ๋๋ค 
caution(msg: String, target: Int, advCom: String, ...replace: Array<String>)
- ์ฃผ์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 
extMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
fmtStr(str: String, rep: Array<String>, target: Int)
- ํน์  ๊ธฐํธ๋ฅผ ๋ณ์์ ๊ฐ์ผ๋ก ์นํํ ํ ๋ฌธ์์ด๋ก ๋ฐํํฉ๋๋ค
 
	if(rep == undefined || rep.length < 1) return PM.isValid(target) ? str.replace(subst, SYS.showPlayerInfo(target, c_PLAYERINFO_TYPE.NAME)) : str;- 
rep์ ๊ฐ์ด ์ ํจํ์ง ์๋ ๊ฒฝ์ฐ ํ๋ ์ด์ด์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค 
help(msg: String, exCom: String, target: Int, advCom: String, ...replace: Array<String>)
- ๋์๋ง ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 
uniMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
์ธ์๊ฐ 5๊ฐ: info(title: String, context: String, target: Int, advCom: String, ...replace: Array<String>)
- ์์ธ์ ๋ณด ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 
extMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
locked(isLock: Bool, msg: String, target: Int, advCom: String, ...replace: Array<String>)
- ์ ๊ธ/ํด์  ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 
extMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
msgCommand(title: String, content: String, target: Int, advCom: String, ...replace: Array<String>)
- ๋ช ๋ น์ด ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค
 - 
uniMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
notice(msg: String, target: Int, advCom: String, ...replace: Array<String>)
- ์๋ฆผ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 
uniMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
warning(msg: String, target: Int, advCom: String, ...replace: Array<String>)
- ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 
extMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
- ์ ๋ฐ์ ์ธ ์ฑํ ์์คํ ์ ๊ด๋ฆฌํฉ๋๋ค
 
constructor(isFreeze: Bool, isLockPrivateChat: Bool, detectorLevel: Int, maxForbiddenWordCount: Int, maxRepeatedCount: Int)
- 
_playerList: Array: ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํฉ๋๋ค - 
_isFreezeChat: Bool: ์ฑํ ์ผ๋ฆผ ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_isLockPrivateChat: Bool: ๊ฐ์ธ ์ฑํ ๊ธ์ง ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_detectorLevel: Int: ์ฑํ ํํฐ๋ง ์๊ฒฉ๋๋ฅผ ์ ์ฅํฉ๋๋ค - 
_maxForbiddenWordCount: Int: ๊ธ์ง์ด ์ต๋ ๊ฐ์ง๋์ ์ ์ฅํฉ๋๋ค - 
_maxRepeatedCount: Int: ๋๋ฐฐ ์ต๋ ๊ฐ์ง๋์ ์ ์ฅํฉ๋๋ค 
onPlayerChat(player: PlayerObject, msg: String)
- ํ๋ ์ด์ด๊ฐ ์ฑํ ์ ์ ์กํ๋ฉด ํธ์ถํฉ๋๋ค
 - ํ๋ ์๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์updateTime()๋ฅผ ํธ์ถํฉ๋๋ค 
	let commandsList = [							//	๋ช
๋ น์ด ๋ชฉ๋ก
				internalCommands, standardCommands, customCommands
			];- ๋ช
๋ น์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด 
internalCommands,standardCommands,customCommands๋ฅผ ํธ์ถํฉ๋๋ค- ๋ฌธ์์ด ์ฒซ ๊ธ์์ ๋ฐ๋ผ ๋ช
๋ น์ด ์ ํ์ ๊ฒฐ์ ํฉ๋๋ค
- ์ฒซ ๊ธ์๊ฐ 
!์ด๋ฉด0์ ๊ฐ์ผ๋ก ์ ์ฅํฉ๋๋ค - ์ฒซ ๊ธ์๊ฐ 
?์ด๋ฉด1์ ๊ฐ์ผ๋ก ์ ์ฅํฉ๋๋ค - ์ฒซ ๊ธ์๊ฐ 
!!์ด๋ฉด2์ ๊ฐ์ผ๋ก ์ ์ฅํฉ๋๋ค 
 - ์ฒซ ๊ธ์๊ฐ 
 - ๋ช
๋ น์ด๋ฅผ ํ๋
ํ๊ณ  ๊ธฐ๋ฅ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด 
GameManagerํด๋์ค์runCommand()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ช ๋ น์ด ์ ๋ ฅ์ด ๊ฐ์ง๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 
 - ๋ฌธ์์ด ์ฒซ ๊ธ์์ ๋ฐ๋ผ ๋ช
๋ น์ด ์ ํ์ ๊ฒฐ์ ํฉ๋๋ค
 - ์ฑํ
์ด ๊ธ์ง๋ ๊ฒฝ์ฐ ๊ฐ์  ์ฑํ
 ์ ์ก์ ์ํด 
sendEmojiChat()๋ฅผ ํธ์ถํฉ๋๋ค - ์ฑํ
 ๋ก๊ทธ ๊ฐฑ์ ์ ์ํด 
updateChatLog()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ฐ๋ณต ์ฑํ
 ๊ฐ์ง๋ฅผ ์ํด 
hasRepeatedChat()๋ฅผ ํธ์ถํฉ๋๋ค - ์
๋ ฅ๋ ๋ฌธ์์ด์์ 
#์ ๊ฐ์ด ๊ฐ์ง๋ ๊ฒฝ์ฐ ๊ฐ์ธ ์ฑํ ๋ช ๋ น์ด๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํดCommandsํด๋์ค์comPrivateChat()๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์ด์ด์ ์ฑํ
 ๋ชจ๋๊ฐ
- 
0์ ๊ฐ์ ๊ฐ์ง๋ฉด ์ ์ฒด ์ฑํ ์ ์ ์กํ๊ธฐ ์ํดsendAllChat()๋ฅผ ํธ์ถํฉ๋๋ค - 
1์ ๊ฐ์ ๊ฐ์ง๋ฉด ํ ์ฑํ ์ ์ ์กํ๊ธฐ ์ํดsendTeamChat()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
 
- 
_isFreezeChat์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_isLockPrivateChat์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_detectorLevel์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- ๊ธ์ง์ด ์ต๋ ๊ฐ์ง๋์ ๋ฐํํฉ๋๋ค
 - 3 ์ด์์ ๊ฐ์ด๋ฉด 
_maxForbiddenWordCount๋ฅผ ๋ฐํํฉ๋๋ค - ๋ฒ์ ์ธ ๊ฐ์ด๋ฉด 
null๋ฅผ ๋ฐํํฉ๋๋ค 
- ๋ฐ๋ณต ์ฑํ ์ต๋ ๊ฐ์ง๋์ ๋ฐํํฉ๋๋ค
 - 3 ์ด์์ ๊ฐ์ด๋ฉด 
_maxRepeatedCount๋ฅผ ๋ฐํํฉ๋๋ค - ๋ฒ์ ์ธ ๊ฐ์ด๋ฉด 
null๋ฅผ ๋ฐํํฉ๋๋ค 
set isFreezeChat(bool: Bool)
- ์ฑํ ์ ์ผ๋ฆฌ๊ฑฐ๋ ๋ น์ ๋๋ค
 - 
_isFreezeChat์ ๊ฐ์ ์์ ํฉ๋๋ค 
set isLockPrvChat(bool: Bool)
- ๊ฐ์ธ ์ฑํ ์ ๊ธ์งํ๊ฑฐ๋ ํด์ ํฉ๋๋ค
 - 
_isLockPrivateChat์ ๊ฐ์ ์์ ํฉ๋๋ค 
set maxFwdCount(limit: Int)
- ๊ธ์ง์ด ์ต๋ ๊ฐ์ง๋์ ๋ณ๊ฒฝํฉ๋๋ค
 - 
_maxForbiddenWordCount์ ๊ฐ์ ์์ ํฉ๋๋ค 
set maxRptCount(limit: Int)
- ๋ฐ๋ณต ์ฑํ ์ต๋ ๊ฐ์ง๋์ ๋ณ๊ฒฝํฉ๋๋ค
 - 
_maxRepeatedCount์ ๊ฐ์ ์์ ํฉ๋๋ค 
set detectorLev(targetLev: Int)
- ์ฑํ ํํฐ๋ง ์๊ฒฉ๋๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - 
_detectorLevel์ ๊ฐ์ ์์ ํฉ๋๋ค 
initPlayerList(player: Int)
- ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - 
ChatSystemํด๋์ค๋ฅผ ํธ์ถํฉ๋๋ค 
isWhiteSpace(str: String)
- ๋ฌธ์์ด์ ๊ณต๋ฐฑ ์ฌ๋ถ๋ฅผ ํ์ ํฉ๋๋ค
 
hasForbiddenWord(msg: String)
- ๊ธ์ง์ด ๊ฐ์ง ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ๋จ์ด๊ฐ ๊ณต๋ฐฑ์ด๋ฉด ์ฒ๋ฆฌํ์ง ์์ต๋๋ค
 - ์ฐํ ๋ฌธ์๋ฅผ ์ ์ธํ ์ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค
 
hasMutedChat(player: Int)
- ํ๋ ์ด์ด์ ์ฑํ ๊ธ์ง ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
hasRepeatedChat(player: Int)
- ํ๋ ์ด์ด์ ๋ฐ๋ณต ์ฑํ ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
findPlayerById(target: Int)
- ํน์  ๊ณต์ฉ ID๋ฅผ ๊ฐ์ง ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
updateChatLog(player, msg, time)
- ํ๋ ์ด์ด์ ์ฑํ ๋ก๊ทธ๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
showHelpCommandList(title: String, cml: Array<String>, player: Int)
- ๋ช ๋ น์ด ๋ชฉ๋ก์ ๋ฉ์์ง๋ก ์ถ๋ ฅํฉ๋๋ค
 - ๊ถํ ์๊ตฌ์ ๋ฐ๋ผ ๋ช ๋ น์ด๋ฅผ ์๋ก ๋ค๋ฅธ ํ์ผ๋ก ๋ถ๋ฅํฉ๋๋ค
 
freezeChat(time: Int, player: Int)
- ์ฑํ ์ ์ผ๋ฆฝ๋๋ค
 - 
_isFreezeChat์ ๊ฐ์ ์์ ํฉ๋๋ค - 
time โฅ 5๋ฅผ ๋ง์กฑํ๋ ๊ฒฝ์ฐtime์ด ๊ฒฝ๊ณผ ์งํ ์ฑํ ์ ๋ น์ด๋ ํ์ด๋จธ๋ฅผ ์์ฑํ๊ธฐ ์ํดTimeManagerํด๋์ค์addTimer()๋ฅผ ํธ์ถํฉ๋๋ค 
lockPrivateChat(bool: Bool, player: Int)
- ๊ฐ์ธ ์ฑํ ์ ๊ธ์งํ๊ฑฐ๋ ํ์ฉํฉ๋๋ค
 - 
_isLockPrivateChat์ ๊ฐ์ ์์ ํฉ๋๋ค 
sendAlert(msg: String, target: Int, ...replace: Array<String>)
- ๊ด๋ฆฌ์ ์ฑํ ์ ์ ์กํฉ๋๋ค
 - ํธ์คํธ๊ฐ ์กด์ฌํ๋ฉด 
room.sendChat()๋ฅผ ํธ์ถํฉ๋๋ค - ํธ์คํธ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด 
Notificationํด๋์ค์announce()๋ฅผ ํธ์ถํฉ๋๋ค 
sendAllChat(player: Int, msg: String)
- ์ ์ฒด ์ฑํ ์ ์ ์กํฉ๋๋ค
 - ๊ธ์ง์ด ๊ฐ์ง๋ฅผ ์ํด 
hasForbiddenWord()๋ฅผ ํธ์ถํฉ๋๋ค - ์ฑํ
 ํํฐ๋ง ์๊ฒฉ๋์ ๋ฐ๋ผ
- 4๋จ๊ณ์์๋ ๋ด์ฉ์ ์จ๊ธด ์ฑ ์ ์กํฉ๋๋ค
 - 5๋จ๊ณ์์๋ ๋ด์ฉ์ ์จ๊ธด ์ฑ ์ ์กํฉ๋๋ค
 
 - 
sendMsg()๋ฅผ ํธ์ถํฉ๋๋ค - ๊ธ์ง์ด๊ฐ ๊ฐ์ง๋ ๊ฒฝ์ฐ 
Notificationํด๋์ค์alretMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
sendEmojiChat(player: Int, msg: String)
- ๊ฐ์  ์ฑํ ์ ์ ์กํฉ๋๋ค
 - ๋ด์ฉ์ ๋ฑ๋ฒํธ์ ์ถ๋ ฅํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์giveAvatar()๋ฅผ ํธ์ถํฉ๋๋ค 
sendMsg(msg: String, target: Int, ...replace: Array<String>)
- ์ผ๋ฐ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 
Notificationํด๋์ค์announce()๋ฅผ ํธ์ถํฉ๋๋ค 
sendPrivateChat(toPlayer: Int, fromPlayer: Int, msg: String)
- ๊ฐ์ธ ์ฑํ ์ ์ ์กํฉ๋๋ค
 - ์ธ๋ถ์์ ๋ถ๋ฌ์จ ๊ฒฝ์ฐ 
sendAlert()๋ฅผ ํธ์ถํฉ๋๋ค - ์ฑํ
 ํํฐ๋ง ์๊ฒฉ๋์ ๋ฐ๋ผ
- 4๋จ๊ณ์์๋ ๋ด์ฉ์ ์จ๊ธด ์ฑ ์ ์กํฉ๋๋ค
 - 5๋จ๊ณ์์๋ ๋ด์ฉ์ ์จ๊ธด ์ฑ ์ ์กํฉ๋๋ค
 
 - ๊ธ์ง์ด ๊ฐ์ง๋ฅผ ์ํด 
hasForbiddenWord()๋ฅผ ํธ์ถํฉ๋๋ค 
sendTeamChat(teamId: TeamID, player: Int, msg: String)
- ํ ์ฑํ ์ ์ ์กํฉ๋๋ค
 - ๊ธ์ง์ด ๊ฐ์ง๋ฅผ ์ํด 
hasForbiddenWord()๋ฅผ ํธ์ถํฉ๋๋ค - ์ฑํ
 ํํฐ๋ง ์๊ฒฉ๋์ ๋ฐ๋ผ
- 4๋จ๊ณ์์๋ ๋ด์ฉ์ ์จ๊ธด ์ฑ ์ ์กํฉ๋๋ค
 - 5๋จ๊ณ์์๋ ๋ด์ฉ์ ์จ๊ธด ์ฑ ์ ์กํฉ๋๋ค
 
 - ๊ธ์ง์ด๊ฐ ๊ฐ์ง๋ ๊ฒฝ์ฐ 
Notificationํด๋์ค์alretMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
unfreezeChat(player: Int)
- ์ฑํ ์ ๋ น์ ๋๋ค
 - 
_isFreezeChat์ ๊ฐ์ ์์ ํฉ๋๋ค - 
freezeํ์ด๋จธ๋ฅผ ์ง์ฐ๊ธฐ ์ํดTimeManagerํด๋์ค์clearTimerByName()๋ฅผ ํธ์ถํฉ๋๋ค 
- ์ฑํ ์์คํ ์ ์ฒ๋ฆฌํฉ๋๋ค
 
constructor(id: Int)
- 
_id: Int: ํ๋ ์ด์ด์ ๊ณต์ฉ ID๋ฅผ ์ ์ฅํฉ๋๋ค - 
_str: String: ์ ๋ ฅ๋ ๋ฌธ์์ด์ ์ ์ฅํฉ๋๋ค - 
_timeList: Array<Int>: ์ ๋ ฅ ์๊ฐ์ ์ ์ฅํฉ๋๋ค - 
_time: Int: ๋ง์ง๋ง์ผ๋ก ์ ๋ ฅํ ์๊ฐ์ ์ ์ฅํฉ๋๋ค - 
_repeatedCount: Int: ๋ฐ๋ณต ์ฑํ ๋์  ๊ฐ์ง๋์ ์ ์ฅํฉ๋๋ค - 
_forbiddenWordCount: Int: ๊ธ์ง์ด ๋์  ๊ฐ์ง๋์ ์ ์ฅํฉ๋๋ค 
- 
_forbiddenWordCount์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_repeatedCount์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
set cntFwd(v: Int)
- ๊ธ์ง์ด ๋์  ๊ฐ์ง๋์ ๋ณ๊ฒฝํฉ๋๋ค
 - 
_forbiddenWordCount์ ๊ฐ์ ์์ ํฉ๋๋ค 
set cntRpt(v: Int)
- ๋ฐ๋ณต ์ฑํ ๊ฐ์ง๋์ ๋ณ๊ฒฝํฉ๋๋ค
 - 
_repeatedCount์ ๊ฐ์ ์์ ํฉ๋๋ค 
hasMutedChat(void)
- ํ๋ ์ด์ด์ ์ฑํ ๊ธ์ง ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - 
Administrationํด๋์ค์isMute()๋ฅผ ํธ์ถํฉ๋๋ค 
hasRepeatedChat(void)
- ๋ฐ๋ณต ์ฑํ ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ๋ฐ๋ณต ์ฑํ
 ๊ฐ์ง๋์ด ๋ฏธ์ค์  ๋ผ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข
๋ฃํ๊ณ  
false์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค - ์ฑํ
 ํํฐ๋ง์ด ๋นํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข
๋ฃํ๊ณ  
false์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค - ๊ธ์ง์ด ๋ถ์ฐ ์ ๋ ฅ์ ๊ฐ์งํฉ๋๋ค
 - ์ฑํ
 ๋ก๊ทธ ๋ฐ์ดํฐ๊ฐ ์ถฉ๋ถํ์ง ์์ผ๋ฉด ๊ตฌ๋ฌธ์ ์ข
๋ฃํ๊ณ  
false์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค - ์ฐํ ๋ฌธ์๋ฅผ ์ ์ธํ ์ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค
 - ๋ด์ฉ๊ณผ ๋ฌด๊ดํ๊ฒ ์งง์ ์๊ฐ๋ด ์ฐ์์ ์ธ ์ฑํ ์ ๋ ฅ์ด ๊ฐ์ง๋๋ฉด ๋ฐ๋ณต ์ฑํ ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค
 - ์ฑํ
 ํํฐ๋ง ์๊ฒฉ๋์ ๋ฐ๋ผ
- 1๋จ๊ณ์์๋ ๋ณ๋๋ก ์ฒ๋ฆฌํ์ง ์์ต๋๋ค
 - 2๋จ๊ณ์์๋ ๊ฐ์ง ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 3๋จ๊ณ์์๋ ๊น ์  ํด์ฅํฉ๋๋ค
 - 4๋จ๊ณ์์๋ ๊ฐ์ง ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ ์ฑํ ์ 15์ด๊ฐ ๊ธ์งํฉ๋๋ค
 - 5๋จ๊ณ์์๋ ์ฑํ ์ 30์ด๊ฐ ๊ธ์งํ๊ณ ๊ฐ์  ํด์ฅํฉ๋๋ค
 - ๋ธ๋๋ฆฌ์คํธ์์๋ ํ ๋จ๊ณ ๋ ์๊ฒฉํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค
 
 
updateChatLog(msg: String, time: Int)
- ํ๋ ์ด์ด์ ์ฑํ ๋ก๊ทธ๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - ์ผ์  ์์ค ์ด์์ ๊ธฐ๋ก์ด ์์ฌ ์์ผ๋ฉด ๊ฐ์ฅ ์ค๋๋ ๊ธฐ๋ก๋ถํฐ ์ญ์ ํ๊ณ ์๋ก์ด ๊ธฐ๋ก์ ์ถ๊ฐํฉ๋๋ค
 
- ๋ช ๋ น์ด์ ๊ธฐ๋ฅ ์ํ์ ์ฒ๋ฆฌํฉ๋๋ค
 
constructor(maxMsgLength: Int)
- 
_maxStringLength: Int: ์ฑํ ๊ธ์ ์ ํ ์๋ฅผ ์ ์ฅํฉ๋๋ค 
- 
_maxStringLength์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
set maxMsgLen(n: Int)
- ์ฑํ ๊ธ์ ์ ํ ์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - 15~255 ๋ฒ์ ์ธ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - 
_maxStringLength์ ๊ฐ์ ์์ ํฉ๋๋ค 
alertSpam(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๋๋ฐฐ ๋ฐฉ์ง ๋ฌธ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
helpCom()๋ฅผ ํธ์ถํฉ๋๋ค 
 
comUpdateUniform(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ ์ ๋ํผ์ ๋ณ๊ฒฝํฉ๋๋ค
 - 
PlayerManagerํด๋์ค์updateUniform()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comAdminList(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๊ด๋ฆฌ์ ๋ช ๋จ์ ์กฐํํฉ๋๋ค
 - 
Administrationํด๋์ค์showAdminList()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comAllChat(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ์ ์ฒด ์ฑํ ์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์sendAllChat()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comPrivateChat(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๊ฐ์ธ ์ฑํ ์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์sendPrivateChat()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comTeamChat(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ ์ฑํ ์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์sendTeamChat()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comAfk(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ์ฅ๊ธฐ ๋ฌด์๋ต ํ๋ ์ด์ด ๋ช ๋จ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ์ธํฉ๋๋ค
 - 
PlayerManagerํด๋์ค์enableSleepMode()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comAllowJoin(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ ์์จ ๊ต์ฒด๋ฅผ ํ์ฉํ๊ฑฐ๋ ๊ธ์งํฉ๋๋ค
 - 
_isAllowTeamSwitch์ ๊ฐ์ ์์ ํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comAvatar(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ๋ ์ด์ด์ ๋ฑ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - 
PlayerManagerํด๋์ค์giveAvatar()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comChatMode(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ๋ ์ด์ด์ ๊ธฐ๋ณธ ์ฑํ ๋ชจ๋๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comClearBans(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ์๊ตฌ ํด์ฅ ๋ช ๋จ์ ๋ชจ๋ ์ง์๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
Administrationํด๋์ค์clearBans()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comClearPassword(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๋น๋ฐ๋ฒํธ๋ฅผ ํด์ ํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
Administrationํด๋์ค์clearPassword()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comClearUniform(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ ์ ๋ํผ์ ์๋๋๋ก ๋๋ฆฝ๋๋ค
 - 
PlayerManagerํด๋์ค์clearUniform()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comFreezeChat(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ์ฑํ ์ ์ผ๋ฆฌ๊ฑฐ๋ ๋ น์ ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
ChatManagerํด๋์ค์freezeChat()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comJoin(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ๋ ์ด์ด๋ฅผ ๊ฒฝ๊ธฐ์ ํฌ์ ํ๊ฑฐ๋ ํ์ ๊ต์ฒดํฉ๋๋ค
 - 
joinPlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comKick(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํน์  ํ๋ ์ด์ด๋ฅผ ๊ฐ์  ํด์ฅํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - 
#ID๋ฅผ ํ๋ณํ๊ธฐ ์ํดGameManagerํด๋์ค์checkPublicId()๋ฅผ ํธ์ถํฉ๋๋ค - ์ง๋ชฉ ๋์์ด ์ด๋ฏธ ํด์ฅํ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ์ง๋ชฉ ๋์๋ณด๋ค ๊ถํ์ด ๋ฎ์ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
Administrationํด๋์ค์kickPlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comLockPrivateChat(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๊ฐ์ธ ์ฑํ ์ ๊ธ์งํ๊ฑฐ๋ ํ์ฉํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
ChatManagerํด๋์ค์lockPrivateChat()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comMute(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํน์  ํ๋ ์ด์ด์ ์ฑํ ์ ๊ธ์งํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
Administrationํด๋์ค์mutePlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comMutedList(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ์ฑํ ๊ธ์ง ๋ช ๋จ์ ์กฐํํฉ๋๋ค
 - 
PlayerManagerํด๋์ค์showMutedList()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comPinHost(player: Int, msg: String, type: Int)
- ํธ์คํธ๊ฐ ๋นํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํธ์คํธ์ ํ ์ด๋์ ํ์ฉํ๊ฑฐ๋ ์ ํํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
Administrationํด๋์ค์enablePinHost()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comRecaptcha(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- reCAPTCHA๋ฅผ ํ์ฑํ ํ๊ฑฐ๋ ๋นํ์ฑํ ํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
GameSystemํด๋์ค์enableRecaptcha()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comRecording(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๋ นํ๋ฅผ ์์ํ๊ฑฐ๋ ์ข ๋ฃํฉ๋๋ค
 - ์ต๊ณ  ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
GameManagerํด๋์ค์stopRecording()๋๋startRecording()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comResetAvatar(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ๋ ์ด์ด์ ๋ฑ๋ฒํธ๋ฅผ ์๋๋๋ก ๋๋ฆฝ๋๋ค
 - 
PlayerManagerํด๋์ค์resetAvatar()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comResetGame(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๊ฒฝ๊ธฐ๋ฅผ ์ฌ์์ํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
Administrationํด๋์ค์resetGame()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comSetPassword(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ๋น๋ฐ๋ฒํธ ๊ณ ์  ์ฅ์น๊ฐ ํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - 4~30 ๋ฒ์ ์ธ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comSetScore(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๋ค์ ๊ฒฝ๊ธฐ์ ์ ํ ์ ์๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
Administrationํด๋์ค์limitScore()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comSetTime(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๋ค์ ๊ฒฝ๊ธฐ์ ์ ํ ์๊ฐ์ ๋ณ๊ฒฝํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
Administrationํด๋์ค์limitTime()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comShowPassword(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ์ฌ ์ค์ ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์กฐํํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
Administrationํด๋์ค์showPassword()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comSleepList(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ์ฅ๊ธฐ ๋๊ธฐ์ด ๋ช ๋จ์ ์กฐํํฉ๋๋ค
 - 
PlayerManagerํด๋์ค์showSleepList()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comSwapGame(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๊ฒฝ๊ธฐ๋ฅผ ์์ํ๊ฑฐ๋ ์ข ๋ฃํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
Administrationํด๋์ค์swapGame()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comUnfreezeChat(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ์ฑํ ์ ๋ น์ ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
ChatManagerํด๋์ค์unfreezeChat()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
comUnmute(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๊ธ์ง๋ ํ๋ ์ด์ด์ ์ฑํ ์ ํ์ฉํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - 
msg์ ๊ฐ์ด"all"์ธ ๊ฒฝ์ฐAdministrationํด๋์ค์clearMutedList()๋ฅผ ํธ์ถํ๊ณ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
Administrationํด๋์ค์unmutePlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
helpBot(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ด์ธ์ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ์๋ฒ ๋์๋ง์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์showHelpCommandList()๋ฅผ ์ ์กํฉ๋๋ค 
helpChat(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ด์ธ์ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ์ฑํ ๋์๋ง์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์showHelpCommandList()๋ฅผ ์ ์กํฉ๋๋ค 
helpCom(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ด์ธ์ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ๋ช ๋ น์ด ๋์๋ง์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์showHelpCommandList()๋ฅผ ์ ์กํฉ๋๋ค 
helpJoin(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ด์ธ์ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ์ฐธ๊ฐ ๋์๋ง์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์showHelpCommandList()๋ฅผ ์ ์กํฉ๋๋ค 
helpMap(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ด์ธ์ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ๊ฒฝ๊ธฐ์ฅ ๋์๋ง์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์showHelpCommandList()๋ฅผ ์ ์กํฉ๋๋ค 
helpMisc(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ด์ธ์ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ๊ธฐํ ๋์๋ง์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์showHelpCommandList()๋ฅผ ์ ์กํฉ๋๋ค 
helpRank(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ด์ธ์ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ๋ญํฌ ๋์๋ง์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์showHelpCommandList()๋ฅผ ์ ์กํฉ๋๋ค 
helpScore(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ด์ธ์ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ์ ์ ๋์๋ง์ ์ ์กํฉ๋๋ค
 - 
ChatManagerํด๋์ค์showHelpCommandList()๋ฅผ ์ ์กํฉ๋๋ค 
infoLink(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ์๋ฒ ์ฃผ์๋ฅผ ๋ฉ์์ง๋ก ์ ์กํฉ๋๋ค
 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- 
infoRoom()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
 
infoMaps(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๊ฒฝ๊ธฐ์ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐํํฉ๋๋ค
 - 
GameManagerํด๋์ค์findStadiumNameList()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
infoRanking(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ๋ ์ด์ด์ ๋ญํน ์ ๋ณด๋ฅผ ๋ฉ์์ง๋ก ์ ์กํฉ๋๋ค
 - 
#ID๋ฅผ ํ๋ณํ๊ธฐ ์ํดGameManagerํด๋์ค์checkPublicId()๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์ด์ด์ ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์findRankListByGrade()๋ฅผ ํธ์ถํฉ๋๋ค - 
ScoreManagerํด๋์ค์sendRanking()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ญํน ์ธก์  ๋ฐฉ์์ ๋ฉ์์ง๋ก ์ ์กํฉ๋๋ค
 
 
infoRoom(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ์๋ฒ ์ ๋ณด๋ฅผ ๋ฉ์์ง๋ก ์ ์กํฉ๋๋ค
 - 
GameSystemํด๋์ค์_releaseDate๋ฐfindInfo()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- 
infoLink()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
 
infoStats(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ํ๋ ์ด์ด์ ์ ์ ์ ๋ณด๋ฅผ ๋ฉ์์ง๋ก ์ ์กํฉ๋๋ค
 - ํ๋ ์ด์ด์ ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์findRankListByPlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- 
helpScore()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
 
joinPlayer(player: Int, msg: String)
- ํ๋ ์ด์ด์ ํ์ ๊ต์ฒดํฉ๋๋ค
 - ํ ์์จ ๊ต์ฒด๊ฐ ๊ธ์ง๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - 
#ID๋ฅผ ํ๋ณํ๊ธฐ ์ํดGameManagerํด๋์ค์checkPublicId()๋ฅผ ํธ์ถํฉ๋๋ค - ์
๋ ฅํ ๋ฌธ์์ด์ ๋ฐ๋ผ 
comAllowJoin()๋ฅผ ํธ์ถํฉ๋๋ค - ์ง๋ชฉ ๋์์ด ์ฅ๊ธฐ ๋๊ธฐ์ด ๋ช ๋จ์ ํฌํจ๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
PlayerManagerํด๋์ค์moveTeam()๋ฅผ ํธ์ถํฉ๋๋ค 
loadMap(player: Int, msg: String, type: Int)
- 
type์ ๊ฐ์ด0์ธ ๊ฒฝ์ฐ- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ๊ฒฝ๊ธฐ์ฅ์ ๊ต์ฒดํฉ๋๋ค
 - ๊ถํ์ด ์๋ ๊ฒฝ์ฐ 
GameManagerํด๋์ค์loadMap()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
type์ ๊ฐ์ด1์ธ ๊ฒฝ์ฐ- ๋ช ๋ น์ด ์ฌ์ฉ๋ฒ์ ์ ์กํฉ๋๋ค
 
 
- ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๋ฐ์ ์ผ๋ก ์ ์ดํฉ๋๋ค
 
- 
_playerList: Array<PlayerSystem>: ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํฉ๋๋ค 
onPlayerActivity(player: PlayerObject)
- ํ๋ ์ด์ด์ ํค ์ ๋ ฅ์ด ๊ฐ์ง๋๋ฉด ํธ์ถํฉ๋๋ค
 - ํ๋ ์๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
updateTime()๋ฅผ ํธ์ถํฉ๋๋ค - ์ ๋ํ๊ณ  ์๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ๊ฐ๋ฅผ ์ํด 
ScoreManagerํด๋์ค์addTouchedList()๋ฅผ ํธ์ถํฉ๋๋ค 
onPlayerInactivity(player: Int)
- ํ๋ ์ด์ด์ ์๋ต์ด ์๋ ๊ฒฝ์ฐ ํธ์ถํฉ๋๋ค
 - 
afkํ์ด๋จธ๊ฐ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค - ๋ฐ๋ชจ ๋ชจ๋๊ฐ ํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
Administrationํด๋์ค์kickPlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
onPlayerTeamChange(player: PlayerObject, byPlayer: PlayerObject)
- ํ๋ ์ด์ด์ ํ์ด ๋ณ๊ฒฝ๋๋ฉด ํธ์ถํฉ๋๋ค
 - ํธ์คํธ ํ ์ด๋์ด ์ ํ๋ผ ์๊ณ ๋์์ด ํธ์คํธ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ์ฅ๊ธฐ ๋๊ธฐ์ด ๋ช ๋จ์ ํฌํจ๋ ๊ฒฝ์ฐ ๊ด์ ์์ผ๋ก ์ด๋ํฉ๋๋ค
 - GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์clearListIndex()๋ฐaddListIndex()๋ฅผ ํธ์ถํฉ๋๋ค - 
goalํ์ด๋จธ๋ฅผ ์ง์ฐ๊ธฐ ์ํดTimeManagerํด๋์ค์clearTimerByName()๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์๊ฐ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์updateTime()๋ฅผ ํธ์ถํฉ๋๋ค - GUI ๊ฐฑ์ ์ ์ํด 
GameSystemํด๋์ค์updateWebGUI()๋ฅผ ํธ์ถํฉ๋๋ค 
initPlayerList(player: PlayerObject)
- ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ๋ฅผ ์ํด 
ScoreManagerํด๋์ค์initRankList()๋ฅผ ํธ์ถํฉ๋๋ค - ์ฑํ
 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ๋ฅผ ์ํด 
ChatManagerํด๋์ค์initPlayerList()๋ฅผ ํธ์ถํฉ๋๋ค - 
PlayerSystemํด๋์ค๋ฅผ ํธ์ถํ๊ณ_playerList์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค 
isAfkPlayer(player: Int, time: Int)
- ํ๋ ์ด์ด์ ์ฅ๊ธฐ ๋ฌด์๋ต ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 
isValid(target: PlayerObject || PlayerSystem, includeHost: Bool)
- ์ ํจ ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 
hasCommonRange(player: Int, ball: Int, range: Float)
- ํ๋ ์ด์ด์ ๊ณต ์ฌ์ด์ ์ถฉ๋ ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 
findDiscProp(target: Int)
- ํ๋ ์ด์ด์ ๋์คํฌ ์์ฑ์ ๋ฐํํฉ๋๋ค
 
findLocalId(publicId: Int)
- ํ๋ ์ด์ด์ ๊ฐ์ธ ID๋ฅผ ๋ฐํํฉ๋๋ค
 
findPlayerList(isPublic: Bool)
- ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช
๋จ์ 
isPublic์ ๊ฐ์ ๋ฐ๋ผ ์ ์์ ํน์ ๋ชจ๋ ๊ธฐ๋ก์ ๋ฐํํฉ๋๋ค 
findPlayerListByTeam(team: TeamID)
- ํน์  ํ ID๋ฅผ ๊ฐ์ง ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช ๋จ์ ๋ฐํํฉ๋๋ค
 
findPlayerById(target: Int)
- ํน์  ๊ณต์ฉ ID๋ฅผ ๊ฐ์ง ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
findTagGrade(player: Int)
- ํ๋ ์ด์ด์ ๊ถํ ๋งํฌ๋ฅผ ๋ฐํํฉ๋๋ค
 
findTagTeam(team: TeamID)
- ํ๋ ์ด์ด์ ํ ๋งํฌ๋ฅผ ๋ฐํํฉ๋๋ค
 
addSleepPlayer(player: Int)
- ํ๋ ์ด์ด๋ฅผ ์ฅ๊ธฐ ๋๊ธฐ์ด ๋ช ๋จ์ ์ถ๊ฐํฉ๋๋ค
 
updateAccount(player: Int)
- ํ๋ ์ด์ด์ ๊ณ์ ์ ๊ฐฑ์ ํฉ๋๋ค
 - ์ค๋ณต ๊ณ์ ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข
๋ฃํ๊ณ  
false์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
	for(const [k, v] of Object.entries(oldPlayer)){
		if(!["id", "name", "team", "admin", "time", "network", "address",
			"isSleep", "detector"
		].includes(k.replace('_', ''))) newPlayer[k] = v;
	}- ์ผ๋ถ ํญ๋ชฉ์ ์ ์ธํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ท ๊ณ์ ์ ๋๊ธฐํ ํฉ๋๋ค
 - ์ด์  ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ต๊ณ ๊ถํ์ด ์๊ณ ์ ์์ ์ค์ ๊ด๋ฆฌ์๊ฐ ์๋ ๊ฒฝ์ฐ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค
 - ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐฑ์ ์ ์ํด 
ScoreManagerํด๋์ค์updateAccount()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
true์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค 
updateTime(player: Int)
- ํ๋ ์ด์ด์ ์๋ต ์๊ฐ์ ๊ฐฑ์ ํฉ๋๋ค
 - 
afkTimer,afkAvatar,afkCheckํ์ด๋จธ๋ฅผ ์ง์ฐ๊ธฐ ์ํดTimeManagerํด๋์ค์clearTimerByName()๋ฅผ ํธ์ถํฉ๋๋ค - ์ฅ๊ธฐ ๋ฌด์๋ต ํ์  ์๊ฐ์ด ์ ํจํ์ง ์๋ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ํ์  ๋ฉ์์ง๋ฅผ ์ ์กํ๋ 
afkCheckํ์ด๋จธ๋ฅผ ์์ฑํ๊ธฐ ์ํดTimeManagerํด๋์ค์addTimer()๋ฅผ ํธ์ถํฉ๋๋ค- ๋ฑ๋ฒํธ ์๋ฆผ์ ์ถ๋ ฅํ๋ 
afkAvatarํ์ด๋จธ๋ฅผ ์์ฑํ๊ธฐ ์ํดTimeManagerํด๋์ค์addTimer()๋ฅผ ํธ์ถํฉ๋๋ค 
 - ๋ฑ๋ฒํธ ์๋ฆผ์ ์ถ๋ ฅํ๋ 
 - ๊ฐ์  ํด์ฅ์ ์ฒ๋ฆฌํ๋ 
afkTimerํ์ด๋จธ๋ฅผ ์์ฑํ๊ธฐ ์ํดTimeManagerํด๋์ค์addTimer()๋ฅผ ํธ์ถํฉ๋๋ค 
updateUniform(team: TeamID, angle: Int, textColor: Int, bgColor: Array<Int>)
- ํ ์ ๋ํผ์ ์ง์ ํฉ๋๋ค
 
clearPlayerById(player: Int)
- ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์๋๋ค
 
clearUniform(team: TeamID)
- ํ ์ ๋ํผ์ ์๋๋๋ก ๋๋ฆฝ๋๋ค
 
deleteSleepPlayer(player: Int)
- ํ๋ ์ด์ด๋ฅผ ์ฅ๊ธฐ ๋๊ธฐ์ด ๋ช ๋จ์์ ์ ๊ฑฐํฉ๋๋ค
 
resetAvatar(player: Int)
- ํ๋ ์ด์ด์ ๋ฑ๋ฒํธ๋ฅผ ์๋๋๋ก ๋๋ฆฝ๋๋ค
 
showMutedList(player: Int, isPublic: Bool)
- ์ฑํ ๊ธ์ง ๋ช ๋จ์ ๋ฉ์์ง๋ก ์ถ๋ ฅํฉ๋๋ค
 - 
Administrationํด๋์ค์findMutedList()๋ฅผ ํธ์ถํฉ๋๋ค 
showSleepList(player: Int, isPublic: Bool)
- ์ฅ๊ธฐ ๋๊ธฐ์ด ๋ช ๋จ์ ๋ฉ์์ง๋ก ์ถ๋ ฅํฉ๋๋ค
 
cntPlayers(team: TeamID || String)
- ์ ์์ ์ธ์์ ๋ฐํํฉ๋๋ค
 - 
team == "public"์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ_playerList๋ฅผ ๋ฐํํฉ๋๋ค 
enableSleepMode(player: Int, bool: Bool)
- ํ๋ ์ด์ด๋ฅผ ์ฅ๊ธฐ ๋ฌด์๋ต ๋ช ๋จ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ์ธํฉ๋๋ค
 - 
addSleepPlayer()๋ฐdeleteSleepPlayer()๋ฅผ ํธ์ถํฉ๋๋ค - GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค - ๊ถํ ๊ฐฑ์ ์ ์ํด 
Administrationํด๋์ค์updateAdmins()๋ฅผ ํธ์ถํฉ๋๋ค 
giveAvatar(player: Int, msg: String)
- ํ๋ ์ด์ด์ ๋ฑ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 
moveTeam(player: Int, team: TeamID)
- ํ๋ ์ด์ด์ ํ์ ๊ต์ฒดํฉ๋๋ค
 
- ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค
 
constructor(id: Int, name: String, team: TeamID, admin: Bool, conn: PlayerObject.conn, auth: PlayerObject.auth)
- 
_id: Int: ํ๋ ์ด์ด์ ๊ณต์ฉ ID๋ฅผ ์ ์ฅํฉ๋๋ค - 
_name: String: ํ๋ ์ด์ด์ ์ด๋ฆ์ ์ ์ฅํฉ๋๋ค - 
_address: PlayerObject.conn: ํ๋ ์ด์ด์ ๊ณต์ฉ ์ฃผ์๋ฅผ ์ ์ฅํฉ๋๋ค - 
_network: PlayerObject.auth: ํ๋ ์ด์ด์ ๊ณต์ฉ ๋คํธ์ํฌ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_team: TeamID: ํ๋ ์ด์ด์ ํ ID๋ฅผ ์ ์ฅํฉ๋๋ค - 
_admin: Int: ํ๋ ์ด์ด์ ๊ถํ์ ์ ์ฅํฉ๋๋ค - 
_time: Int: ํ๋ ์ด์ด์ ๋ง์ง๋ง ์๋ต ์๊ฐ์ ์ ์ฅํฉ๋๋ค - 
_chatmode: Int: ํ๋ ์ด์ด์ ๊ธฐ๋ณธ ์ฑํ ๋ชจ๋๋ฅผ ์ ์ฅํฉ๋๋ค - 
_detector: Int: ํ๋ ์ด์ด์ ๊ธ์ง์ด ๊ฐ์ง๋์ ์ ์ฅํฉ๋๋ค - 
_uniqueAvatar: String: ํ๋ ์ด์ด์ ์ด๊ธฐ ๋ฑ๋ฒํธ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_isMute: Bool: ํ๋ ์ด์ด์ ์ฑํ ๊ธ์ง ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_isSleep: Bool: ํ๋ ์ด์ด์ ์ฅ๊ธฐ ๋ฌด์๋ต ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_hasKicked: Bool: ํ๋ ์ด์ด์ ๊ฐ์  ํด์ฅ ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค 
- 
_chatmode์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
room.getPlayerDiscProperties()์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- ํ๋ ์ด์ด์ ์ขํ๋ฅผ ๋ฐํํฉ๋๋ค
 
- ํ๋ ์ด์ด์ ์ค๋ ฅ ๋ฒกํฐ๋ฅผ ๋ฐํํฉ๋๋ค
 
- ํ๋ ์ด์ด์ ์๋ ๋ฒกํฐ๋ฅผ ๋ฐํํฉ๋๋ค
 
- ํ๋ ์ด์ด์ ๊ฐ์ธ ID๋ฅผ ๋ฐํํฉ๋๋ค
 
- 
_uniqueAvatar์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
set chatmode(value: Int)
- ํ๋ ์ด์ด์ ์ฑํ ๋ชจ๋๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - 
_chatmode์ ๊ฐ์ ์์ ํฉ๋๋ค 
set discProp(value: DiscPropertiesObject)
- ํ๋ ์ด์ด์ ๋์คํฌ ์์ฑ์ ์์ ํฉ๋๋ค
 - 
room.setPlayerDiscProperties()๋ฅผ ํธ์ถํฉ๋๋ค 
set unqAvtr(value: String)
- ํ๋ ์ด์ด์ ๊ฐ์ธ ๋ฑ๋ฒํธ๋ฅผ ์ง์ ํฉ๋๋ค
 - 
_uniqueAvatar์ ๊ฐ์ ์์ ํฉ๋๋ค - ๋ฑ๋ฒํธ ์ด๊ธฐํ๋ฅผ ์ํด 
resetAvatar()๋ฅผ ํธ์ถํฉ๋๋ค 
isAfk(time: Int)
- ํ๋ ์ด์ด์ ์ฅ๊ธฐ ๋ฌด์๋ต ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 
	let limit = SYS.hasInRange(time, 5, 60 * 60 * 3) ? time : GM.afkTime;- 
5 ๏ผ limit ๏ผ 10800๋ฒ์ ์ธ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํ๊ณfalse์ ๊ฐ์ ๋ฐํํฉ๋๋ค - ๋ฏธ์ ์์์ธ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข
๋ฃํ๊ณ  
false์ ๊ฐ์ ๋ฐํํฉ๋๋ค - ๊ฒฝ๊ธฐ ๋์ค ๊ด์ ์ธ ๊ฒฝ์ฐ 
false์ ๊ฐ์ ๋ฐํํฉ๋๋ค - ๊ฒฝ๊ธฐ ๋ฏธ์งํ ์ํ์์ ๊ด๋ฆฌ์๊ฐ ์๋ ๊ฒฝ์ฐ 
false์ ๊ฐ์ ๋ฐํํฉ๋๋ค - ์ฅ๊ธฐ ๋๊ธฐ์ด ๋ช
๋จ์ ํฌํจ๋ ๊ฒฝ์ฐ 
false์ ๊ฐ์ ๋ฐํํฉ๋๋ค - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
true์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
hasCommonRange(ball: Int, range: Float)
- ํ๋ ์ด์ด์ ๊ณต ์ฌ์ด์ ์ถฉ๋ ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ๋์คํฌ ์์ฑ์ ๊ตฌํ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์findDiscProp()๋ฅผ ํธ์ถํฉ๋๋ค - ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์calcDistance()๋ฅผ ํธ์ถํฉ๋๋ค 
addSleepList(void)
- ํ๋ ์ด์ด๋ฅผ ์ฅ๊ธฐ ๋๊ธฐ์ด ๋ช ๋จ์ ์ถ๊ฐํฉ๋๋ค
 - 
_isSleep์ ๊ฐ์ ์์ ํฉ๋๋ค - ๊ด์ ์์ผ๋ก ํ์ ๊ต์ฒดํฉ๋๋ค
 - ์ต๊ณ ๊ถํ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด ๋ณด์กฐ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค
 
clearPlayer(void)
- ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์๋๋ค
 - GUI์ ๋ช
๋จ์ ์ญ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์clearListIndex()๋ฅผ ํธ์ถํฉ๋๋ค - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ฐ๊ธฐ ์ํด 
ScoreManagerํด๋์ค์clearTouchedListByPlayer()๋ฅผ ํธ์ถํฉ๋๋ค - ํ๋ ์ด์ด ์์ ์ ๋ชจ๋  ํ์ด๋จธ๋ฅผ ์ง์ฐ๊ธฐ ์ํด 
TimeManagerํด๋์ค์clearTimerByPlayer()๋ฅผ ํธ์ถํฉ๋๋ค - 
_team์ ๊ฐ์c_TEAM.SPECTATOR์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค - 
_time์ ๊ฐ์ ํ์ฌ ์๊ฐ์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค - 
_chatmode์ ๊ฐ์0์ผ๋ก ๊ฐฑ์ ํฉ๋๋ค - 
_isSleep์ ๊ฐ์false๋ก ๊ฐฑ์ ํฉ๋๋ค - ๊ฐ์  ํด์ฅ๋ ๊ฒฝ์ฐ์ ํํด 
_admin๋ฐ_hasKicked์ ๊ฐ์ ์์ ํฉ๋๋ค - GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค 
deleteAdmin(isSub: Bool)
- ํ๋ ์ด์ด์ ๊ถํ์ ํด์ ํฉ๋๋ค
 - ์ต๊ณ  ๊ถํ์์ ์์ ํ ๊ถํ์ ํด์ ํ๊ฑฐ๋ ๋ณด์กฐ ๊ถํ์ ํด์ ํ๋ ๊ฒฝ์ฐ
- 
_admin์ ๊ฐ์0์ผ๋ก ์์ ํฉ๋๋ค - GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค 
 - 
 
deleteSleepPlayer(void)
- ํ๋ ์ด์ด๋ฅผ ์ฅ๊ธฐ ๋๊ธฐ์ด ๋ช ๋จ์์ ์ ๊ฑฐํฉ๋๋ค
 - 
_isSleep์ ๊ฐ์ ์์ ํฉ๋๋ค - ๊ถํ ๊ฐฑ์ ์ ์ํด 
Administrationํด๋์ค์updateAdmins()๋ฅผ ํธ์ถํฉ๋๋ค 
resetAvatar(void)
- ํ๋ ์ด์ด์ ๋ฑ๋ฒํธ๋ฅผ ๊ฐ์ธ ๋ฑ๋ฒํธ๋ก ๋๋๋ฆฝ๋๋ค
 - 
giveAvatar()๋ฅผ ํธ์ถํฉ๋๋ค 
showPlayerInfo(type: Int)
- ํ๋ ์ด์ด์ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค
 - 
type == c_PLAYERINFO_TYPE.LOCAL๋ฅผ ๋ง์กฑํ๋ ๊ฒฝ์ฐ- ํ๋ ์ด์ด์ ๊ฐ์ธ ID์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค
 
 - 
type == c_PLAYERINFO_TYPE.PUBLIC๋ฅผ ๋ง์กฑํ๋ ๊ฒฝ์ฐ- ํ๋ ์ด์ด์ ๊ณต์ฉ ID์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค
 
 - 
type == c_PLAYERINFO_TYPE.NAME๋ฅผ ๋ง์กฑํ๋ ๊ฒฝ์ฐ- ํ๋ ์ด์ด์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค
 
 - ์ด๋ฆ์ด ๋น์ด ์์ผ๋ฉด 
๊ณต๋ฐฑ์ผ๋ก ํ์ํฉ๋๋ค 
adjustGravityVector(x: Float, y: Float)
- ํ๋ ์ด์ด์ ์ค๋ ฅ ๋ฒกํฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - 
discProp๋ฅผ ํธ์ถํฉ๋๋ค 
adjustSpeedVector(x: Float, y: Float)
- ํ๋ ์ด์ด์ ์๋ ๋ฒกํฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - 
discProp๋ฅผ ํธ์ถํฉ๋๋ค 
giveAdmin(isSub: Bool)
- ํ๋ ์ด์ด์ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค
 - ๋ธ๋๋ฆฌ์คํธ์ ํฌํจ๋๋ ๊ฒฝ์ฐ ์ต๊ณ ๊ถํ์ ๋ถ์ฌํ์ง ์์ต๋๋ค
 - 
Administrationํด๋์ค์maxAdmin์ ๊ฐ์ด ์ต๊ณ ๊ด๋ฆฌ์ ์ธ์๋ณด๋ค ์ ์ ๊ฒฝ์ฐ ์ต๊ณ ๊ถํ์ ๋ถ์ฌํ์ง ์๊ณ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - 
Administrationํด๋์ค์maxAdmin * 2์ ๊ฐ์ด ๋ณด์กฐ ๊ด๋ฆฌ์ ์ธ์๋ณด๋ค ์ ์ ๊ฒฝ์ฐ ๋ณด์กฐ ๊ถํ์ ๋ถ์ฌํ์ง ์๊ณ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค 
giveAvatar(str: String)
- ํ๋ ์ด์ด์ ๋ฑ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - 
room.setPlayerAvatar()๋ฅผ ํธ์ถํฉ๋๋ค 
movePosition(dx: Float, dy: Float)
- ํ๋ ์ด์ด๋ฅผ ํ์ฌ ์์น ๊ธฐ์ค์์ ์ง์  ์ขํ๋ก ์ด๋ํฉ๋๋ค
 - 
discProp๋ฅผ ํธ์ถํฉ๋๋ค 
moveTeam(t: TeamID)
- ํ๋ ์ด์ด์ ํ์ ๊ต์ฒดํฉ๋๋ค
 - 
room.setPlayerTeam()๋ฅผ ํธ์ถํฉ๋๋ค 
teleportPosition(tx: Float, ty: Float)
- ํ๋ ์ด์ด๋ฅผ ์ง์  ์์น๋ก ์ขํ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - 
discProp๋ฅผ ํธ์ถํฉ๋๋ค 
- ์ ์ ๋ฐ ๋ญํน ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๋ฐ์ ์ผ๋ก ์ ์ดํฉ๋๋ค
 
constructor(collisionSensitivity: Float)
- 
_collisionRange: Float: ์ถฉ๋ ๋ฒ์ ๋ฏผ๊ฐ๋๋ฅผ ์ ์ฅํฉ๋๋ค - 
_totalGoals: Array: ํ ๋์  ๊ณจ์ ์ ์ฅํฉ๋๋ค - 
_touchedList: Array<TouchedPlayer>: ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํฉ๋๋ค - 
_rankList: Array<StatusSystem>: ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํฉ๋๋ค 
onPlayerTeamChange(player: PlayerObject, byPlayer: PlayerObject)
- ํ๋ ์ด์ด์ ํ์ด ๋ณ๊ฒฝ๋๋ฉด ํธ์ถํฉ๋๋ค
 - ์ผ์  ์์ค ์ด์์ ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ผ๋ฉด 
clearTouchedListByPlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
onPositionsReset(void)
- ๊ณจ ํ์  ์งํ ํฌ์ง์ ์ด ์ด๊ธฐํ๋๋ฉด ํธ์ถํฉ๋๋ค
 - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ชจ๋ ์ง์ฐ๊ธฐ ์ํด 
clearTouchedList()๋ฅผ ํธ์ถํฉ๋๋ค 
initRankList(player: Int)
- ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - 
StatusSystemํด๋์ค๋ฅผ ํธ์ถํ๊ณ_rankList์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค 
initTouchedList(player: Int)
- ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - 
TouchedPlayerํด๋์ค๋ฅผ ํธ์ถํ๊ณ_touchedList์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค 
- 
_collisionRange์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
scores.time์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- ์ต๊ทผ ์ ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 - ์ ์ ํ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ 
null๋ฅผ ๋ฐํํฉ๋๋ค 
- 
scores.scoreLimit๋ฅผ ๋ฐํํฉ๋๋ค - ์ ์ ํ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ 
0์ ๋ฐํํฉ๋๋ค 
- 
scores.timeLimit๋ฅผ ๋ฐํํฉ๋๋ค - ์ ์ ํ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ 
0์ ๋ฐํํฉ๋๋ค 
- 
room.getScores()์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_totalGoals[c_TEAM.RED]์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_totalGoals[c_TEAM.BLUE]์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
set collRange(v: Float)
- ์ถฉ๋ ๋ฒ์ ๋ฏผ๊ฐ๋๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค
 - 1~16 ๋ฒ์ ์ธ ๊ฐ์ด๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - 
_collisionRange์ ๊ฐ์ ์์ ํฉ๋๋ค 
set totalRedGoals(v: Int)
- ๋ ๋ํ ๋์  ๊ณจ์ ๋ณ๊ฒฝํฉ๋๋ค
 - 
_totalGoals[c_TEAM.RED]์ ๊ฐ์ ์์ ํฉ๋๋ค 
set totalBlueGoals(v: Int)
- ๋ธ๋ฃจํ ๋์  ๊ณจ์ ๋ณ๊ฒฝํฉ๋๋ค
 - 
_totalGoals[c_TEAM.BLUE]์ ๊ฐ์ ์์ ํฉ๋๋ค 
hasCommonRange(da: DiscPropertiesObject, db: DiscPropertiesObject, range: Float)
- ๋์คํฌ ๊ฐ์ ์ถฉ๋ ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด 
calcDistance()๋ฅผ ํธ์ถํฉ๋๋ค 
findAssist(target: Int)
- ์ด์์คํธ์ ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ ์ธ์์ด ์ผ์  ์์ค ์ด์์ ๋ง์กฑํ์ง ์์ผ๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 
findDiscProp(target: Int)
- ๊ณต์ ๋์คํฌ ์์ฑ์ ๋ฐํํฉ๋๋ค
 
findDiscColor(target: Int)
- ๋์คํฌ ์์์ 16์ง์๋ก ๋ฐํํฉ๋๋ค
 - ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
findDiscProp()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ถ์ ์ ํ ๊ฐ์ด๋ฉด 
-1์ ๋ฐํํฉ๋๋ค 
findRankListByPlayer(target: Int)
- ํน์  ๊ณต์ฉ ID๋ฅผ ๊ฐ์ง ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
findRankListByGrade(grade: Int)
- ํน์  ์์๋ฅผ ๊ฐ์ง ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
findTouchedListByPlayer(target: Int)
- ํน์  ๊ณต์ฉ ID๋ฅผ ๊ฐ์ง ์ ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
findWinner(scores: ScoresObject)
- ๋ ํ ์ฌ์ด์ ์ ์๋ฅผ ๋น๊ตํด ์ฐ์์ธ ํ์ ๋ฐํํฉ๋๋ค
 - ์ ์๊ฐ ๋์ผํ๋ฉด 
3์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
addTouchedList(player: Int)
- ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค
 - ์ผ์  ์์ค ์ด์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ผ๋ฉด ์ค๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ถํฐ ์ง์ฐ๊ธฐ ์ํด 
clearTouchedListByPlayer()๋ฅผ ํธ์ถํฉ๋๋ค - GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ํ๋ ํ์ด๋จธ๋ฅผ ์์ฑํ๊ธฐ ์ํด 
TimeManagerํด๋์ค์addTimer()๋ฅผ ํธ์ถํฉ๋๋ค 
updateAccount(op: Int, np: Int)
- ํ๋ ์ด์ด์ ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๊ท ๊ณ์ ์ ๋๊ธฐํ ํฉ๋๋ค
 
updateGoals(team: TeamID)
- ํ ๋์  ๊ณจ์ ๊ฐฑ์ ํฉ๋๋ค
 - ๊ฒฝ๊ธฐ๋ฅผ ์งํํ๊ณ ์์ง ์์ผ๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - ํ ์ ํ์ ๋ฐ๋ผ 
_totalGoals[c_TEAM.RED]๋ฐ_totalGoals[c_TEAM.BLUE]์ ๊ฐ์ ์์ ํฉ๋๋ค 
updateTouchedList(target: Int)
- ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๊ณต ์ฌ์ด์ ์ถฉ๋ ์ฌ๋ถ๋ฅผ ํ์ ํ๊ธฐ ์ํด 
hasCommonRange()๋ฅผ ํธ์ถํฉ๋๋ค - ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ผ๋ฉด 
addTouchedList()๋ฅผ ํธ์ถํฉ๋๋ค 
clearRankListByPlayer(player: Int)
- ํ๋ ์ด์ด์ ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์๋๋ค
 
clearTouchedList(void)
- ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ชจ๋ ์ง์๋๋ค
 
clearTouchedListByPlayer(player: Int)
- ํ๋ ์ด์ด์ ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์๋๋ค
 - GUI์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
GameSystemํด๋์ค์updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค 
sendRanking(target: Int, player: Int)
- ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฉ์์ง๋ก ์ ์กํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด PlayerManager ํด๋์ค์ findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค
 
calcDistance(a: DiscPropertiesObject, b: DiscPropertiesObject)
- ๋ ๊ฐ์ฒด ๊ฐ์ ๋ฌผ๋ฆฌ์ ์ธ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ์ฌ ๋ฐํํฉ๋๋ค
 
calcGoalsByTeam(team: TeamID)
- ํน์  ํ์ ๊ฒฝ๊ธฐ ๋์  ๊ณจ์ ๋ฐํํฉ๋๋ค
 
calcGravityVector(target: Int)
- ํ๋ ์ด์ด์ ์ค๋ ฅ ๋ฒกํฐ๋ฅผ ๋ฐํํฉ๋๋ค
 
calcPosition(target: Int)
- ํ๋ ์ด์ด์ ์ขํ๋ฅผ ๋ฐํํฉ๋๋ค
 
calcSpeedVector(target: Int)
- ํ๋ ์ด์ด์ ์๋ ๋ฒกํฐ๋ฅผ ๋ฐํํฉ๋๋ค
 
calcTotalGoalsByTeam(team: Int)
- ํน์  ํ์ ๋์  ๋์  ๊ณจ์ ๋ฐํํฉ๋๋ค
 
- ํ๋ ์ด์ด์ ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค
 
constructor(id: Int)
- 
_id: Int: ํ๋ ์ด์ด์ ๊ณต์ฉ ID๋ฅผ ์ ์ฅํฉ๋๋ค - 
_win: Int: ์น๋ฆฌํ ๊ฒฝ๊ธฐ ์๋ฅผ ์ ์ฅํฉ๋๋ค - 
_lost: Int: ํจ๋ฐฐํ ๊ฒฝ๊ธฐ ์๋ฅผ ์ ์ฅํฉ๋๋ค - 
_goal: Int: ๋์ ํ ๊ณจ ์๋ฅผ ์ ์ฅํฉ๋๋ค - 
_ownGoal: Int: ์ค์ ํ ๊ณจ ์๋ฅผ ์ ์ฅํฉ๋๋ค - 
_assist: Int: ๋์ ํ์๋ฅผ ์ ์ฅํฉ๋๋ค 
- 
_assist์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_goal์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- ํ๋ ์ด์ด์ ์์๋ฅผ ๋ฐํํฉ๋๋ค
 
- 
_lost์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_ownGoal์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- ํ๋ ์ด์ด์ ์ด ์ ์๋ฅผ ๋ฐํํฉ๋๋ค
 
- ํ๋ ์ด์ด์ ๊ธฐ๋ก ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค
 
- ํ๋ ์ด์ด์ ์์ธ ๊ธฐ๋ก ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค
 
- ํ๋ ์ด์ด์ ์์ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค
 
- 
_win์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- ํ๋ ์ด์ด์ ์น๋ฅ ์ ๋ฐํํฉ๋๋ค
 - ์์์  ๋์งธ ์๋ฆฌ๊น์ง ๋ฐ์ฌ๋ฆผ ํฉ๋๋ค
 
set asst(v: Int)
- ๋์ ํ์๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - 
_assist์ ๊ฐ์ ์์ ํฉ๋๋ค 
set goal(v: Int)
- ๋์ ํ ๊ณจ ์๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - 
_goal์ ๊ฐ์ ์์ ํฉ๋๋ค 
set lost(v: Int)
- ํจ๋ฐฐ ๊ฒฝ๊ธฐ ์๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - 
_lost์ ๊ฐ์ ์์ ํฉ๋๋ค 
set owgl(v: Int)
- ์ค์ ํ ๊ณจ ์๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - 
_ownGoal์ ๊ฐ์ ์์ ํฉ๋๋ค 
set win(v: Int)
- ์น๋ฆฌ ๊ฒฝ๊ธฐ ์๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - 
_win์ ๊ฐ์ ์์ ํฉ๋๋ค 
clearPlayer(void)
- ํ๋ ์ด์ด์ ์ ์  ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์๋๋ค
 
- ํ๋ ์ด์ด์ ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค
 
constructor(id: Int)
- 
_id: Int: ํ๋ ์ด์ด์ ๊ณต์ฉ ID๋ฅผ ์ ์ฅํฉ๋๋ค - 
_team: Int: ํ๋ ์ด์ด์ ์์ ํ ID๋ฅผ ์ ์ฅํฉ๋๋ค - 
_time: Int: ๊ฐ์ง ์๊ฐ์ ์ ์ฅํฉ๋๋ค - 
_pos: Int: ๊ฐ์ง ์งํ ์ขํ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_disc: Int: ๊ฐ์ง ์งํ ๋์คํฌ ์์ฑ์ ์ ์ฅํฉ๋๋ค 
hasCommonRange(ball: Int, range: Float)
- ํ๋ ์ด์ด์ ๊ณต ์ฌ์ด์ ์ถฉ๋ ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
- ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์๊ฐ ์์คํ ์ ์ ๋ฐ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค
 
constructor(timeFormats: Int)
- 
_timeFormats: Int: ์๊ฐ ์ถ๋ ฅ ํ์์ ์ ์ฅํฉ๋๋ค - 
_timerList: Array<TimerSystem>: ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํ๋๋ค 
- 
Date()์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
fullDate.getTime()์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
fullDate.getFullYear()์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
fullDate.getMonth() + 1์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
fullDate.getDate()์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
fullDate.getHours()์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
fullDate.getMinutes()์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
fullDate.getSeconds()์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- ์คํ์ด๋ฉด 
2์ ๊ฐ์ ๋ฐํํฉ๋๋ค - ์ค์ ์ด๋ฉด 
1์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
- 
_timeFormats์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
set fmtTime(index: Int)
- ์๊ฐ ์ถ๋ ฅ ํ์์ ๋ณ๊ฒฝํฉ๋๋ค
 - 
_timeFormats์ ๊ฐ์ ์์ ํฉ๋๋ค 
findTimer(findId: String)
- ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ID๋ก ๋ฐํํฉ๋๋ค
 - ์ ํจํ์ง ์๋ ๊ฒฝ์ฐ 
undefined์ ๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค 
findTimerByName(name: String, player: Int)
- ํน์  ์ด๋ฆ์ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
findTimerByPlayer(target: Int)
- ํน์  ํ๋ ์ด์ด์ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
findTimers(target: timerSystem, hasTarget: Bool)
- ๋น์ทํ ์ ํ์ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
addTimer(name: String, func, player: Int, delay: Int, isRepeat: Bool, runDirectly: Bool, seq: Int)
- ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค
 - ์ด๋ฆ์ด ๋น์ด ์์ผ๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - 
TimerSystemํด๋์ค๋ฅผ ํธ์ถํ๊ณ_timerList์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค - ๋ฐ๋ณต ํ์ด๋จธ๋ก ์ค์ ํ ๊ฒฝ์ฐ
- 
delay์ ๊ฐ์ด ๋ถ์ ์ ํ๊ฑฐ๋100๋ฏธ๋ง์ธ ๊ฒฝ์ฐ ๋ก๊ทธ๋ฅผ ๋ณ๋๋ก ์ถ๋ ฅํ๊ณ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - 
100 โค delay ๏ผ 1000๋ฅผ ๋ง์กฑํ๋ ๊ฒฝ์ฐ ํ์ด๋จธ์ ID์ ์ด๋ฆ ๊ทธ๋ฆฌ๊ณ ํ์ด๋จธ ๊ฐ๊ฒฉ์ ํฌํจํ ๋ก๊ทธ๋ฅผ ๋ณ๋๋ก ์ถ๋ ฅํฉ๋๋ค 
 - 
 - ์ด๋ฏธ ์ฒ๋ฆฌํ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ญ์ ํฉ๋๋ค
 - ๋ชจ๋ ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด ์์ฑํ ํ์ด๋จธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 
clearTimer(findId: String, skipTrmnFn: Bool)
- ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํฉ๋๋ค
 
clearTimerByName(name: String, player: Int)
- ํน์  ์ด๋ฆ์ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํฉ๋๋ค
 
clearTimerByPlayer(player: Int)
- ํน์  ํ๋ ์ด์ด์ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํฉ๋๋ค
 
resetTimers(void)
- ๋ชจ๋ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํฉ๋๋ค
 
showCurrentTime(type: Int)
- ์๊ฐ ์ถ๋ ฅ ํ์์ ๋ฐ๋ผ ํ์ฌ ์๊ฐ์ ๋ฐํํฉ๋๋ค
 
showDate(void)
- ํ์ฌ ๋ ์ง ๋ฐ ์๊ฐ์ ๋ฐํํฉ๋๋ค
 
showNormalTime(void)
- ํ์ฌ ์๊ฐ์ ๊ฐ๋จํ๊ฒ ๋ฐํํฉ๋๋ค
 
showTime(void)
- ํ์ฌ ์๊ฐ์ ์์ธํ๊ฒ ๋ฐํํฉ๋๋ค
 
- ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ดํฉ๋๋ค
 
constructor(name: String, id: String, exct: Function(), trmn: Function(), delay: Int, preId: String, target: Int, seq: Int)
- 
_id: String: ํ์ด๋จธ์ ID๋ฅผ ์ ์ฅํฉ๋๋ค - 
_name: String: ํ์ด๋จธ์ ์ด๋ฆ์ ์ ์ฅํฉ๋๋ค - 
_player: Int: ํ๋ ์ด์ด์ ๊ณต์ฉ ID๋ฅผ ์ ์ฅํฉ๋๋ค - 
_time: Int: ๋ฑ๋ก ์๊ฐ์ ์ ์ฅํฉ๋๋ค - 
_delay: Int: ์ง์ฐ ์๊ฐ์ ์ ์ฅํฉ๋๋ค - 
_exctFn: Function(): ์คํ ํจ์๋ฅผ ์ ์ฅํฉ๋๋ค - 
_trmnFn: Function(): ์ข ๋ฃ ํจ์๋ฅผ ์ ์ฅํฉ๋๋ค - 
_proc: setTimeout: ํ์ด๋จธ ํจ์๋ฅผ ์ ์ฅํฉ๋๋ค 
	let proc = setTimeout(() => {
		exct();
		if(isRepeat == false) TS.clearTimer(id);
	}, dt);
	...
	this._exctFn	= Object.freeze(exct);	// ์คํ ํจ์๋ฅผ ์ ์ฅํฉ๋๋ค
	...
	this._proc	= Object.freeze(proc);	// ํ์ด๋จธ ํจ์๋ฅผ ์ ์ฅํฉ๋๋ค- ํ์ด๋จธ๊ฐ ํธ์ถ๋๋ฉด ์คํ ํจ์๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ฐ๋ณต ์ฌ๋ถ์ ๋ฐ๋ผ ํ์ด๋จธ๋ฅผ ์ญ์ ํฉ๋๋ค
 - 
_sequence: Int: ์งํ ์์๋ฅผ ์ ์ฅํฉ๋๋ค - 
_isRepeat: Bool: ๋ฐ๋ณต ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค 
	let overloaded = TS.findTimerByName(name, target).filter(t => t._isRepeat == false);
	if(overloaded.length > 0) overloaded.forEach(t => !t._id.includes('r'));- ์ด๋ฏธ ์ฒ๋ฆฌํ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ญ์ ํฉ๋๋ค
 
findTimerByName(void)
- ํน์  ์ด๋ฆ์ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 - 
TimeManagerํด๋์ค์findTimerByName()๋ฅผ ํธ์ถํฉ๋๋ค 
findTimerByPlayer(void)
- ํน์  ํ๋ ์ด์ด์ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ฐํํฉ๋๋ค
 - 
TimeManagerํด๋์ค์findTimerByPlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
clearTimer(skipTrmnFn: Bool)
- ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํฉ๋๋ค
 - 
TimeManagerํด๋์ค์_timerList๋ฅผ ํธ์ถํฉ๋๋ค - 
skipTrmnFn์ ๊ฐ์ดtrue์ธ ๊ฒฝ์ฐ ์ข ๋ฃ ํจ์๋ฅผ ์คํํ์ง ์์ต๋๋ค 
clearTimerByName(void)
- ํน์  ์ด๋ฆ์ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํฉ๋๋ค
 - 
TimeManagerํด๋์ค์clearTimerByName()๋ฅผ ํธ์ถํฉ๋๋ค 
clearTimerByPlayer(void)
- ํน์  ํ๋ ์ด์ด์ ํ์ด๋จธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํฉ๋๋ค
 - 
TimeManagerํด๋์ค์clearTimerByPlayer()๋ฅผ ํธ์ถํฉ๋๋ค 
calcCurrentSequence(mx: Int, mn: Int)
- ํ์ด๋จธ์ ํ์ฌ ์งํ ์์๋ฅผ ๋ฐํํฉ๋๋ค
 
calcTotalSequence(seq: Int)
- ํ์ด๋จธ์ ๋์  ์งํ ์์๋ฅผ ๋ฐํํฉ๋๋ค
 
- ๊ฒ์ ๋ด๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๋ฐ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค
 
constructor(versionRoom: String, releaseDate: String, isDev: Bool, isDemo: Bool, lockPass: Bool)
- 
_isDev: Bool: ๊ฐ๋ฐ์ ๋ฒ์  ์ ๋ฌด๋ฅผ ์ ์ฅํฉ๋๋ค - 
_isDemo: Bool: ๋ฐ๋ชจ ๋ชจ๋ ์ ๋ฌด๋ฅผ ์ ์ฅํฉ๋๋ค - 
_versionRoom: String: ์๋ฒ ๋ฒ์ ์ ์ ์ฅํฉ๋๋ค - 
_releaseDate: String: ๋ฆด๋ฆฌ์ค ์ผ์๋ฅผ ์ ์ฅํฉ๋๋ค - 
_cssStyleList: Array<String>: CSS ์คํ์ผ์ ์ ์ฅํฉ๋๋ค - 
_hasInitServer: Bool: ์๋ฒ ์ด๊ธฐํ ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_hasInitWebGUI: Bool: GUI ์ด๊ธฐํ ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค - 
_lockPass: Bool: ๋น๋ฐ๋ฒํธ ๊ณ ์  ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค 
onClickBtnSendLog(void)
- ๋ก๊ทธ ์ ์ก ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค
 - ์
๋ ฅํ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ 
printMsg()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ก๊ทธ ์ ๋ ฅ๋์ ๋ด์ฉ์ ๋น์๋๋ค
 
onKeyDownSend(e: KeyboardEvent)
- ๋ก๊ทธ ์ ๋ ฅ๋์ ํค ์ ๋ ฅ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค
 - 
enterํค ์ ๋ ฅ์ด ๊ฐ์ง๋๋ฉดonClickBtnSendLog()๋ฅผ ํธ์ถํฉ๋๋ค 
initAttributeColors(obj: HTMLElement, colBg: String, colText: String, str: String, isGradient: Bool, brd: String)
- ์์ฑ ์์์ ์ด๊ธฐํ ํฉ๋๋ค
 
initAttributeId(obj: HTMLElement, cssName: String, id: String)
- ๊ฐ์ฒด ID๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - CSS ํด๋์ค ์ด๊ธฐํ๋ฅผ ์ํด 
initCssClass()๋ฅผ ํธ์ถํฉ๋๋ค 
initCssClass(elm: HTMLElement, str: String)
- ๊ฐ์ฒด์ CSS ํด๋์ค๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - 
_cssStyleList์ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ผ๋ฉด ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค 
initElement(tag: String, id: String, cssName: String)
- ์์๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - ๊ฐ์ฒด ID ์ด๊ธฐํ๋ฅผ ์ํด 
initAttributeId()๋ฅผ ํธ์ถํฉ๋๋ค 
initServer(url: String)
- ์๋ฒ๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - ์ ํ ์ ์์ ์ ํ ์๊ฐ์ 0์ ์ผ๋ก ์ง์ ํฉ๋๋ค
 - ๊ฒฝ๊ธฐ์ฅ ๊ต์ฒด๋ฅผ ์ํด 
GameManagerํด๋์ค์loadMap()๋ฅผ ํธ์ถํฉ๋๋ค - ๊ฐ๋ฐ์ ๋ชจ๋๊ฐ ํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ ๋น๋ฐ๋ฒํธ ๋ฑ๋ก์ ์๊ตฌํฉ๋๋ค
- ์์คํ
 ๋น๋ฐ๋ฒํธ ๊ฐฑ์ ์ ์ํด 
Administrationํด๋์ค์updatePassword()๋ฅผ ์๊ตฌํฉ๋๋ค - 
_lockPass์ ๊ฐ์ ์์ ํฉ๋๋ค 
 - ์์คํ
 ๋น๋ฐ๋ฒํธ ๊ฐฑ์ ์ ์ํด 
 - 
internalCommands๋ฐ์ดํฐ๋ฒ ์ด์ค์์AMN.logonAdmin์ ๋์ํ๋ ๋ช ๋ น์ด๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ- ์์๋ก 4์๋ฆฌ ์ซ์๋ก ์ด๋ฃจ์ด์ง ์ต๊ณ  ๊ถํ ๋ก๊ทธ์ธ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ณ  
customCommands๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ๊ฐํฉ๋๋ค 
 - ์์๋ก 4์๋ฆฌ ์ซ์๋ก ์ด๋ฃจ์ด์ง ์ต๊ณ  ๊ถํ ๋ก๊ทธ์ธ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ณ  
 - ์ฝ์์ฐฝ์ ์๋ฒ ์ ๋ณด๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - ์ํผ ๋ธ๋๋ฆฌ์คํธ ๋ช
๋จ์ ์ด๊ธฐํ ํฉ๋๋ค
- ์๋์ ๊ฐ์ ํ์์ผ๋ก ๋ช ๋จ์ ์์ฑํ ์ ์์ต๋๋ค.
 
 
	let bl = [
		...
		[true, "์ํ๊ณ "],
		[true, undefined, "12345678901234567890"]
		...
	]- ์ผ๋ฐ ๋ธ๋๋ฆฌ์คํธ ๋ช
๋จ์ ์ด๊ธฐํ ํฉ๋๋ค
- ์๋์ ๊ฐ์ ํ์์ผ๋ก ๋ช ๋จ์ ์์ฑํ ์ ์์ต๋๋ค.
 
 
	let bl = [
		...
		[false, "์ํ๊ณ "],
		[false, undefined, "12345678901234567890"]
		...
	]- ๋ธ๋๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ๋ก์ ์ํด 
Administrationํด๋์ค์addBlacklist()๋ฅผ ํธ์ถํฉ๋๋ค - ์์คํ
 ๋น๋ฐ๋ฒํธ๊ฐ ์ค์ ๋ผ ์๊ณ  ๊ฐ๋ฐ์ ๋ชจ๋๊ฐ ํ์ฑํ ๋ผ ์์ผ๋ฉฐ, ๋น๊ณต๊ฐ ๋ฐฉ์ธ ๊ฒฝ์ฐ reCAPTCHA ํ์ฑํ๋ฅผ ์ํด 
enableRecaptcha()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ฐ๋ชจ ๋ชจ๋๊ฐ ํ์ฑํ ๋ผ ์๋ ๊ฒฝ์ฐ ๋ก๊ทธ์ ๋ณ๋์ ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค
 - 
_hasInitServer์ ๊ฐ์ ์์ ํฉ๋๋ค 
initWebGUI(void)
- GUI๋ฅผ ์ด๊ธฐํ ํฉ๋๋ค
 - ์๋ฒ ์ด๊ธฐํ๊ฐ ํ์ํ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค
 - 
_framebody์ ๊ฐ์ ์์ ํฉ๋๋ค - 
addWebElement(),initElement(),initAttributeColors()๋ฅผ ํธ์ถํฉ๋๋ค - ์๋ฒ ์ ๋ณด UI๋ฅผ ์์ฑํฉ๋๋ค
- ์ ๊ฑฐ๋ ํผ์น ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค
 
 - ์ธ์ ์ ๋ณด UI๋ฅผ ์์ฑํฉ๋๋ค
 - ๊ฒฝ๊ธฐ ์ ๋ณด UI๋ฅผ ์์ฑํฉ๋๋ค
 - ์ข์ ์ ๋ณด UI๋ฅผ ์์ฑํฉ๋๋ค
 - ๋ก๊ทธ ์ถ๋ ฅ UI๋ฅผ ์์ฑํฉ๋๋ค
- ์ ๊ฑฐ๋ ํผ์น ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค
 
 - ๋ก๊ทธ ์ ๋ ฅ UI๋ฅผ ์์ฑํฉ๋๋ค
 - UMUX ์ ์๋ฌผ ํ๊ธฐ๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - 
_hasInitWebGUI์ ๊ฐ์ ์์ ํฉ๋๋ค 
hasInRange(num: Float, min: Float, max: Float)
- ์ฃผ์ด์ง ๊ฐ์ด ํน์  ๋ฒ์์ ํฌํจ๋๋์ง ๋ฐํํฉ๋๋ค
 
findInfo(void)
- UMUX ์ ์๋ฌผ ๋ฐ ๋ฒ์ ์ ๋ฐํํฉ๋๋ค
 - ์ด ๊ธฐ๋ฅ์ ์์๋ก ์์ ํ๊ฑฐ๋ ์ญ์ ํ์ง ๋ง์ญ์์ค
 
addEventInput(obj: HTMLElement, ev: Function())
- ์์ฑ์ ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์ง์ ํฉ๋๋ค
 
addListIndex(player: Int)
- GUI์์ ํ๋ ์ด์ด์ ๋ช ๋จ์ ์ถ๊ฐํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - GUI์์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค 
addWebElement(pe: HTMLElement, ce: HTMLElement)
- GUI์ ์์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํฉ๋๋ค
 
updateListIndex(player: Int)
- GUI์์ ํ๋ ์ด์ด์ ๋ช ๋จ์ ๊ฐฑ์ ํฉ๋๋ค
 - ๋ฏธ์ ์์์ธ ๊ฒฝ์ฐ ๋ช
๋จ์ ์ญ์ ํ๊ธฐ ์ํด 
clearListIndex()๋ฅผ ํธ์ถํ๊ณ ๊ตฌ๋ฌธ์ ์ข ๋ฃํฉ๋๋ค - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - 
updateNotificationํ์ด๋จธ๋ฅผ ์ง์ฐ๊ธฐ ์ํดTimeManagerํด๋์ค์clearTimerByName()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ช
๋จ ์ฐ์ธก์ ํ์ฌ ์ํ๋ฅผ ๊ฐ๋จํ ์๋ฆฌ๋ ์์ด์ฝ์ ํ์ํฉ๋๋ค
- ํ๋ ์ด์ด๊ฐ ์ ๋ํ๊ณ  ์์ผ๋ฉด 
โฝ์ ์ถ๊ฐํฉ๋๋ค - ์ฑํ
์ด ๊ธ์ง๋ผ ์์ผ๋ฉด 
๐ฅถ์ ์ถ๊ฐํฉ๋๋ค - ์๋ฆฌ๋ฅผ ๋น์ฐ๊ณ  ์๋ ๊ฒฝ์ฐ 
๐ด์ ์ถ๊ฐํฉ๋๋ค - ํ๋ ์ด์ด์ ๊ถํ ๋งํฌ๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findTagGrade()๋ฅผ ํธ์ถํฉ๋๋ค- ์ด ์์ด์ฝ์ ํญ์ ์ฐ์ธก์ ํ์ํฉ๋๋ค
 
 
 - ํ๋ ์ด์ด๊ฐ ์ ๋ํ๊ณ  ์์ผ๋ฉด 
 
	let maxIcons = 5;- ์ต๋ ์๋ฆผ ๊ฐ์๋ 
maxIcons์ ๊ฐ์ ๋ฐ๋ฆ ๋๋ค - ๊ฐ๋จ ์๋ฆผ์ ๊ฐฑ์ ํ๋ 
updateNotificationํ์ด๋จธ๋ฅผ ์์ฑํ๊ธฐ ์ํดTimeManagerํด๋์ค์addTimer()๋ฅผ ํธ์ถํฉ๋๋ค 
updateWebGUI(void)
- GUI๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - ์ธ์ ์ ๋ณด UI๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
 - ๊ฒฝ๊ธฐ ์ ๋ณด UI๋ฅผ ๊ฐฑ์ ํฉ๋๋ค
- ๋ฐฐ๊ฒฝ ์์์ ๋ณ๊ฒฝํ๊ธฐ ์ํด 
initAttributeColors()๋ฅผ ํธ์ถํฉ๋๋ค 
 - ๋ฐฐ๊ฒฝ ์์์ ๋ณ๊ฒฝํ๊ธฐ ์ํด 
 
clearListIndex(player: Int)
- GUI์์ ํ๋ ์ด์ด์ ๋ช ๋จ์ ์ญ์ ํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค - GUI์์ ๋ช
๋จ์ ๊ฐฑ์ ํ๊ธฐ ์ํด 
updateListIndex()๋ฅผ ํธ์ถํฉ๋๋ค 
showPlayerInfo(player: Int, type: Int)
- ํ๋ ์ด์ด์ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค
 - ํ๋ ์ด์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌํ๊ธฐ ์ํด 
PlayerManagerํด๋์ค์findPlayerById()๋ฅผ ํธ์ถํฉ๋๋ค 
enableDemo(bool: Bool)
- ๋ฐ๋ชจ ๋ชจ๋๋ฅผ ํ์ฑํ ํ๊ฑฐ๋ ๋นํ์ฑํ ํฉ๋๋ค
 - ๋ชจ๋ ์ ์์์๊ฒ ์ ์ฉ ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค
 - ์ฝ์์ฐฝ์ ์ ์ฉ ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค
- ์ค๋ณต ๋ฐ ๋ค์ค ์ ์ ํ๋ ์ด์ด๋ฅผ ๊ฐ์งํด๋ ๋์์ ๊ฐ์  ํด์ฅํ์ง ์์ต๋๋ค
 - ๋นํ๋ ํ๋ ์ด์ด๋ฅผ ๊ฐ์งํด๋ ๋์์ ๊ฐ์  ํด์ฅํ์ง ์์ต๋๋ค
 
 - 
_isDemo์ ๊ฐ์ ์์ ํฉ๋๋ค 
enableRecaptcha(isActive: Bool, player: Int)
- reCAPTCHA๋ฅผ ํ์ฑํ ํ๊ฑฐ๋ ๋นํ์ฑํ ํฉ๋๋ค
 - 
room.setRequireRecaptcha()๋ฅผ ํธ์ถํฉ๋๋ค 
fillLine(amount: Int, line: Int)
- ์๋ฆฟ์๋ฅผ ๊ต์ ํฉ๋๋ค
 
lockPassword(bool: Bool)
- ์์คํ  ๋น๋ฐ๋ฒํธ ๊ณ ์  ์ฅ์น๋ฅผ ํ์ฑํ ํ๊ฑฐ๋ ๋นํ์ฑํ ํฉ๋๋ค
 
log(io: Bool, msg: String, type: Int, ...replace: Array<String>)
- ๋ก๊ทธ๋ฅผ ์ ๋ฌํฉ๋๋ค
 - ๋น ๋ฉ์์ง๋ ์ ์กํ์ง ์์ต๋๋ค
 - ์ถ๋ ฅ ์๊ฐ์ ๊ตฌํ๊ธฐ ์ํด 
TimeManagerํด๋์ค์showCurrentTime()๋ฅผ ํธ์ถํฉ๋๋ค - 
outputLogMsg()๋ฅผ ํธ์ถํฉ๋๋ค 
outputLogMsg(msg: String, time: String, textColor: String, bgColor: String)
- ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 - ์ถ๋ ฅ ์๊ฐ์ ๊ตฌํ๊ธฐ ์ํด 
TimeManagerํด๋์ค์showCurrentTime()๋ฅผ ํธ์ถํฉ๋๋ค - GUI ๊ฐฑ์ ์ ์ํด 
updateWebGUI()๋ฅผ ํธ์ถํฉ๋๋ค 
printMsg(msg: String, target: Int)
- ์๋ฒ ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค
 - ์ ์ก ๋ฉ์์ง ์ถ๋ ฅ์ ์ํด 
log()๋ฅผ ํธ์ถํฉ๋๋ค - 
target์ ๊ฐ์ ๋ฐ๋ผChatManagerํด๋์ค์sendTeamChat()๋๋sendPrivateChat()๋ฅผ ์ ์กํฉ๋๋ค - ๋ชจ๋  ๊ตฌ๋ฌธ์ด ์จ์ ํ๊ฒ ์งํ๋์์ผ๋ฉด 
ChatManagerํด๋์ค์sendAlert()๋ฅผ ํธ์ถํฉ๋๋ค 
sendError(type: Int)
- ์ค๋ฅ ๋ฉ์์ง์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํฉ๋๋ค
 
- ๋ช ๋ น์ด ์ ๋ ฅ์ ํตํด ํน์  ๊ธฐ๋ฅ์ ์์คํ ์์ ์ํํฉ๋๋ค
 - 
ChatManagerํด๋์ค์onPlayerChat()๊ฐ ๋ช ๋ น์ด ์ ๋ ฅ์ ๊ฐ์งํ๊ธฐ ์ํด ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํธ์ถํฉ๋๋ค - 
GameManagerํด๋์ค์runCommand()๊ฐ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ถํฐ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋๋ก ์ฐ๊ฒฐํฉ๋๋ค - ๋ช ๋ น์ด ์ถ๊ฐ๋ ์๋์ ๊ฐ์ด ์์ฑํฉ๋๋ค
 
// ๊ฒ์ ์ฑํ
์์ `!1234`, '!!1234', '?1234' ์ค์ ํ๋๋ฅผ ์
๋ ฅํ๋ฉด
// AMN.logonAdmin()๋ฅผ ์คํํฉ๋๋ค
["AMN.logonAdmin"] :	["1234"]
// ํ๋์ ํจ์์ ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์์ด์ ๋์ํ  ์ ์์ต๋๋ค
// ์๋์ ๊ฐ์ ๊ฒฝ์ฐ `1234`, `4321`, `1111`, `2222` ์ค์ ํ๋๋ฅผ ๊ณจ๋ผ์ `!` ๋ฐ `!!` ๋๋ `?`๋ฅผ ์์ ๋๋ฉด
// AMN.logonAdmin()๋ฅผ ์คํํฉ๋๋ค
["AMN.logonAdmin"] :	["1234", "4321", "1111", "2222"]- UMUX ๋ด๋ถ ์์คํ ์ ์ ๊ทผํ๋ ๋ช ๋ น์ด์ ๋๋ค.
 - ๊ธฐ์กด ๋ช ๋ น์ด ์ญ์  ๋ฐ ์ ๊ท ๋ช ๋ น์ด ์ถ๊ฐ๋ ๊ธ์งํฉ๋๋ค.
 - ๊ธฐ์กด ๋ช ๋ น์ด ์ ๊ทผ์ ๋ง๊ฑฐ๋ ์ฃผ์ ์ฒ๋ฆฌ๋ ๊ถ์ฅํ์ง ์์ต๋๋ค.
 
- UMUX ํ์ค ๋ช ๋ น์ด์ ๋๋ค.
 - ๊ธฐ์กด ๋ช ๋ น์ด ์ญ์  ๋ฐ ์ ๊ท ๋ช ๋ น์ด ์ถ๊ฐ๋ ๊ถ์ฅํ์ง ์์ต๋๋ค.
 - ๊ธฐ์กด ๋ช ๋ น์ด ์ ๊ทผ์ ๋ง๊ฑฐ๋ ์ฃผ์ ์ฒ๋ฆฌ๋ ๊ถ์ฅํ์ง ์์ต๋๋ค.
 
- UMUX ์ปค์คํ  ๋ช ๋ น์ด์ ๋๋ค.
 - ์ ๊ท ๋ช ๋ น์ด ์ถ๊ฐ์ ์ ํฉํ๋ฉฐ, ๊ถ์ฅํฉ๋๋ค.
 
onGameStart(byPlayer: PlayerObject)
- ๊ฒฝ๊ธฐ๊ฐ ์์๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
GameManagerํด๋์ค์onGameStart()๋ฅผ ํธ์ถํฉ๋๋ค 
onGameTick(void)
- ๊ฒฝ๊ธฐ๊ฐ ์งํ๋๋ ๋์ ํธ์ถํฉ๋๋ค
 - 
GameManagerํด๋์ค์onGameTick()๋ฅผ ํธ์ถํฉ๋๋ค 
onGameStop(byPlayer: PlayerObject)
- ๊ฒฝ๊ธฐ๊ฐ ์ข ๋ฃ๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
GameManagerํด๋์ค์onGameStop()๋ฅผ ํธ์ถํฉ๋๋ค 
onGamePause(byPlayer: PlayerObject)
- ๊ฒฝ๊ธฐ๊ฐ ์ค์ง๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
GameManagerํด๋์ค์onGamePause()๋ฅผ ํธ์ถํฉ๋๋ค 
onGameUnpause(byPlayer: PlayerObject)
- ๊ฒฝ๊ธฐ๊ฐ ์ฌ๊ฐ๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
GameManagerํด๋์ค์onGameUnpause()๋ฅผ ํธ์ถํฉ๋๋ค 
onKickRateLimitSet(min: Int, rate: Int, burst: Int, player: PlayerObject)
- ํฅ ์ ํ์ด ์ค์ ๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
GameManagerํด๋์ค์onKickRateLimitSet()๋ฅผ ํธ์ถํฉ๋๋ค 
onPlayerActivity(player: PlayerObject)
- ํ๋ ์ด์ด์ ํค ์ ๋ ฅ์ด ๊ฐ์ง๋๋ฉด ํธ์ถํฉ๋๋ค
 - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
PlayerManagerํด๋์ค์onPlayerActivity()๋ฅผ ํธ์ถํฉ๋๋ค 
onPlayerAdminChange(givenPlayer: PlayerObject, byPlayer: PlayerObject)
- ํ๋ ์ด์ด์ ๊ถํ์ด ๋ณ๊ฒฝ๋๋ฉด ํธ์ถํฉ๋๋ค
 - ๊ถํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
Administrationํด๋์ค์onPlayerAdminChange()๋ฅผ ํธ์ถํฉ๋๋ค 
onPlayerBallKick(player: PlayerObject)
- ํ๋ ์ด์ด๊ฐ ๊ณต์ ์ฐจ๋ฉด ํธ์ถํฉ๋๋ค
 - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ๊ฐ๋ฅผ ์ํด 
GameManagerํด๋์ค์onPlayerBallKick()๋ฅผ ํธ์ถํฉ๋๋ค 
onPlayerChat(player: PlayerObject, msg: String)
- ํ๋ ์ด์ด๊ฐ ์ฑํ ์ ์ ์กํ๋ฉด ํธ์ถํฉ๋๋ค
 - ์ฑํ
 ๋ด์ฉ์ ํ์ธํ๊ธฐ ์ํด 
ChatSystemํด๋์ค์onPlayerChat()๋ฅผ ํธ์ถํฉ๋๋ค - ๋ช
๋ น์ด ์
๋ ฅ ๊ธฐ๋ก์ ๋จ๊ธฐ์ง ์๊ธฐ ์ํด 
false์ ๊ฐ์ ๋ฐํํฉ๋๋ค 
onPlayerJoin(player: PlayerObject)
- ์ ๊ท ํ๋ ์ด์ด๊ฐ ์ ์ํ๋ฉด ํธ์ถํฉ๋๋ค
 - ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ถ๊ฐ๋ฅผ ์ํด 
GameManagerํด๋์ค์onPlayerJoin()๋ฅผ ํธ์ถํฉ๋๋ค 
onPlayerLeave(player: PlayerObject)
- ์ ์์๊ฐ ํด์ฅํ๋ฉด ํธ์ถํฉ๋๋ค
 - ๊ฐ์  ํด์ฅ ์งํ ์ด๋ฒคํธ๋ฅผ ์ ์ดํ๋ 
gm_onPlayerLeaveํ์ด๋จธ๋ฅผ ์์ฑํ๊ธฐ ์ํดTimeManagerํด๋์ค์addTimer()๋ฅผ ํธ์ถํฉ๋๋ค- ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
GameManagerํด๋์ค์onPlayerLeave()๋ฅผ ํธ์ถํฉ๋๋ค 
 - ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
 
onPlayerKicked(kickedPlayer: PlayerObject, reason: String, ban: Bool, byPlayer: PlayerObject)
- ์ ์์๊ฐ ๊ฐ์  ํด์ฅ๋๋ฉด ํธ์ถํฉ๋๋ค
 - ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
Administrationํด๋์ค์onPlayerKicked()๋ฅผ ํธ์ถํฉ๋๋ค 
onPlayerTeamChange(player: PlayerObject, byPlayer: PlayerObject)
- ํ๋ ์ด์ด์ ํ์ด ๋ณ๊ฒฝ๋๋ฉด ํธ์ถํฉ๋๋ค
 - ํ๋ ์ด์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
PlayerManagerํด๋์ค์onPlayerTeamChange()๋ฅผ ํธ์ถํฉ๋๋ค - ์ ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์ ์ ์ํด 
ScoreManagerํด๋์ค์onPlayerTeamChange()๋ฅผ ํธ์ถํฉ๋๋ค 
onPositionsReset(void)
- ๊ณจ ํ์  ์งํ ํฌ์ง์ ์ด ์ด๊ธฐํ๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
GameManagerํด๋์ค์onPositionsReset()๋ฅผ ํธ์ถํฉ๋๋ค 
onStadiumChange(newMap: String, byPlayer: PlayerObject)
- ๊ฒฝ๊ธฐ์ฅ์ด ๊ต์ฒด๋๋ฉด ํธ์ถํฉ๋๋ค
 - ๊ฒฝ๊ธฐ์ฅ ์ ํจ ํ์ธ์ ์ํด 
GameManagerํด๋์ค์onStadiumChange()๋ฅผ ํธ์ถํฉ๋๋ค 
onRoomLink(url: String)
- ์์คํ ์์ ๋งํฌ๊ฐ ์์ฑ๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
GameManagerํด๋์ค์onRoomLink()๋ฅผ ํธ์ถํฉ๋๋ค 
onTeamGoal(team: TeamID)
- ๊ณจ์ด ํ์ ๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
GameManagerํด๋์ค์onTeamGoal()๋ฅผ ํธ์ถํฉ๋๋ค 
onTeamVictory(scores: ScoresObject)
- ๊ฒฝ๊ธฐ ์นํจ๊ฐ ๊ฒฐ์ ๋๋ฉด ํธ์ถํฉ๋๋ค
 - 
GameManagerํด๋์ค์onTeamVictory()๋ฅผ ํธ์ถํฉ๋๋ค 
...
/*** ๊ฒ์ ๋งค๋์  ํด๋์ค ***/
class GameManager{
	...
	onTeamGoal(team){ 					/* ๊ณจ ํ์  ์ด๋ฒคํธ */
		...
		let goalTimer = TM.addTimer("goal", {
			EXECUTE : () => {					// ์คํ ํจ์
				let showAvatar = function(s, t, c){
					...
					// s: ํ์ด๋จธ์ ํ์ฌ ์งํ ์์
					// t: ํ๋ ์ด์ด์ ID
					// c: ๋ณ๊ฒฝํ  ๋ฑ๋ฒํธ์ ๋ฌธ์(์ด)
				}
				let target = goalTimer.findTimerByName().at(-1);
				if(target == undefined) return false;
				let currentOrder = goalTimer.calcCurrentSequence(target._sequence, 2);
				let totalSequence = goalTimer.calcTotalSequence(target._sequence);
				showAvatar(currentOrder, goalTimer._player, 'โฝ');
				if(PM.isValid(assist)) showAvatar(currentOrder, assist, '๐');
				if(totalSequence > 5) return goalTimer.clearTimerByName();
			},
			TERMINATE : () => {					// ์ข
๋ฃ ํจ์
				PM.resetAvatar(goalTimer._player);
				if(PM.isValid(assist)) PM.resetAvatar(assist);
			}
		}, player, SEC_TO_MS / 2, true, true);
		...
	}
	...
}
...- ์ด ํ์ด๋จธ๋ ๊ณจ ํ์  ์งํ๋ถํฐ ์ผ์ ํ ๊ฐ๊ฒฉ์ ๋ฐ๋ณต์ ๋ช ์ด ๋์, ๋์ ์/์ด์์คํธ์ ๋ฑ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค
 - 
goalTimer์ ๊ฐ์ ์ด ํ์ด๋จธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํฉ๋๋ค 
let goalTimer = TM.addTimer("goal", {
let goalTimer = TM.addTimer("goal", {
	EXECUTE : () => {		// ์คํ ํจ์
		...
	},
	TERMINATE : () => {		// ์ข
๋ฃ ํจ์
		...
	}
}, player, SEC_TO_MS / 2, true, true);
/*
	(SEC_TO_MS / 2)์ ๊ฐ์ 500ms์ ๊ฐ์ต๋๋ค
*/- 
EXECUTE๊ธฐ๋ฅ์ ํ์ด๋จธ๊ฐ ๋ชฉํ ์๊ฐ์ ๋๋ฌํ๋ฉด ์คํํฉ๋๋คEXECUTE : () => { // ์คํ ํจ์ let showAvatar = function(s, t, c){ ... // s: ํ์ด๋จธ์ ํ์ฌ ์งํ ์์ // t: ํ๋ ์ด์ด์ ID // c: ๋ณ๊ฒฝํ ๋ฑ๋ฒํธ์ ๋ฌธ์(์ด) } let target = goalTimer.findTimerByName().at(-1); if(target == undefined) return false; let currentOrder = goalTimer.calcCurrentSequence(target._sequence, 2); let totalSequence = goalTimer.calcTotalSequence(target._sequence); showAvatar(currentOrder, goalTimer._player, 'โฝ'); if(PM.isValid(assist)) showAvatar(currentOrder, assist, '๐'); if(totalSequence > 5) return goalTimer.clearTimerByName(); },
- 
target์ ๊ฐ์ ์์ฃผ ์ค์ธ ์ต์ ํ์ด๋จธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํฉ๋๋ค 
let target = goalTimer.findTimerByName().at(-1);
- 
currentOrder์ ๊ฐ์ ํ์ด๋จธ์ ํ์ฌ ์์๋ฅผ ์ ์ฅํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์์ ์ต๋๊ฐ์ผ๋ก 2๊ฐ ์ง์ ๋์์ต๋๋ค 
let currentOrder = goalTimer.calcCurrentSequence(target._sequence, 2);
- ๊ฐ์ 0, 1 ์ค์ ํ๋๋ก ๊ฒฐ์ ๋ฉ๋๋ค
 - ๋์  ์งํ ์์๊ฐ 
5๋ฅผ ์ด๊ณผํ ๊ฒฝ์ฐ ํ์ด๋จธ๋ฅผ ์ญ์ ํฉ๋๋ค- ์ด๋ ์ข ๋ฃ ํจ์๋ฅผ ์คํํฉ๋๋ค
 
 
 - 
 - 
TERMINATE๊ธฐ๋ฅ์EXECUTE์คํ ์งํ, ๋๋ ํ์ด๋จธ๊ฐ ์ข ๋ฃ๋๋ ์๊ฐ์ ์คํํฉ๋๋คTERMINATE : () => { // ์ข ๋ฃ ํจ์ PM.resetAvatar(goalTimer._player); if(PM.isValid(assist)) PM.resetAvatar(assist); }
- ์ด ํ์ด๋จธ์ ์ข ๋ฃ ํจ์์์๋ ๋์ ์/์ด์์คํธ๋ฅผ ํ์ด๋จธ ์คํ ์ง์ ์ ๋ฑ๋ฒํธ๋ก ๋๋๋ฆฌ๋ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค
 - ์ข
๋ฃ ํจ์๋ ์๋ตํ  ์ ์์ต๋๋ค
let goalTimer = TM.addTimer("goal", () => { // ์คํ ํจ์๋ง ... }, player, SEC_TO_MS / 2, true, true);