Game

Game

게임 전반적인 역할을 하는 객체에요. 여기 있는 기능들은 서버에서만 사용할 수 있어요.

이벤트

OnTeleportFinishEvent

플레이어가 다른 랜드로 이동 완료 후에 설정한 데이터를 받 을 수 있어요. 연결함수 형식은 function(player, TransferData), player 는 텔레포트 완료한 Player 객체, TransferData 는 이전 맵에서 가져온 데이터 입니다.

-- 샘플 --

local function TeleportFinish(player, TransferData)
    if player == nil then
        return
    end

    print("Teleport Data Count : ", TransferData:DataCount())	--AddLandTransferData 로 설정한 데이터의 개수에요.

    for i, key, value in pairs(TransferData:DataArray()) do
        print(key)		--AddLandTransferData 로 설정한 데이터의 Key 값이에요.
        print(value)	--AddLandTransferData 로 설정한 데이터의 Value 값이에요.
    end
end
Game.OnTeleportFinishEvent:Connect(TeleportFinish) --텔레포트가 끝났을 때 이전 랜드에서 설정한 데이터를 받을 함수를 연결해요.

OnTeleportFailedEvent

텔레포트가 실패 했을때 호출돼요 실패한 유저와 텔레포트하려고 했던 LandOrder를 반환해줘요. 연결함수 형식은 function(TeleportErrorType, player, LandOrder) TeleportErrorType 은 error 타입, player는 텔레포트 시도한 Player , LandOrder 는 랜드번호 입니다.

-- 샘플 --

local function TeleportFailed(TeleportErrorType, player, LandOrder)
    if player == nil then
        return
    end

    print("Teleport Failed!")
    print("LandOrder : ", LandOrder)
    print("Player Name : ", player.Name)
end
Game.OnTeleportFailedEvent:Connect(TeleportFailed) --텔레포트에 실패한 플레이어의 이름과 LandOrder를 받을 함수를 연결해요.

OnLuckyDrawResult

럭키드로우 결과 이벤트에요 연결함수 형식은 function(number playerid, string OrderNo, table cards)

OnLuckyDrawNotifyAddOrder

럭키드로우 결재 정보 추가 이벤트에요. 연결함수 형식은 function(number playerid, string eventid, RLuckyDrawOrder)

함수

void AddUserCollisionType(string UserCollisionType)

유저 충돌 타입 설정을 추가할 수 있어요. (충돌 타입 이름 설정) 특정 오브젝트의 충돌 처리를 다른 오브젝트와 다르게 할 때 사용 예) 특정 오브젝트만 통과하고, 캐릭터는 못 통과하는 오브젝트.

-- 샘플 --

Game:AddUserCollisionType("CollisionTag1") --게임에 유저 충돌 타입(CollisionTag1)을 추가해요.

local cube1 = Workspace.Cube1
local cube2 = Workspace.Cube2

cube1.Collision:SetCollisionType("CollisionTag1") --객체A에 충돌 타입(CollisionTag1)을 설정해요.

cube2.Collision:SetUserCollisionTypeResponse("CollisionTag1", Enum.CollisionResponse.Overlap) --또 다른 객체B에 충돌 타입(CollisionTag1)별 충돌 반응을 설정해요.

SpawnPointGroup AddSpawnPointGroup(string SpawnPointGroupName)

게임에서 사용 할 스폰 포인트 그룹을 추가할 수 있어요. (추가할 스폰 포인트 그룹 이름)

-- 샘플 --

local spawnGroup = Game:AddSpawnPointGroup("SpawnGroup1") --이름으로 스폰 그룹을 등록해요.

SpawnPointGroup GetSpawnPointGroup(string SpawnPointGroupName)

AddSpawnPointGroup 함수로 추가시켜놓은 스폰 포인트 그룹을 얻을 수 있어요. (얻을 스폰 포인트 그룹 이름)

SpawnPoint AddSpawnPoint(Object TargetObject)

게임에서 사용 할 스폰 포인트를 추가할 수 있어요. (스폰 포인트로 지정 할 오브젝트)

SpawnPoint AddSpawnPointAtGroup(string SpawnPointGroupName, Object TargetObject)

스폰포인트 그룹에 스폰 포인트를 추가할 수 있어요. (스폰포인트를 추가할 그룹 이름, 이름, 스폰 포인트를 할 오브젝트)

-- 샘플 --

local spawnList = Workspace.SpawnerList:GetChildList()
local spawnGroup = Game:AddSpawnPointGroup("SpawnGroup1") --이름으로 스폰 그룹을 등록해요.

for i = 1, #spawnList do
   local spawner = Game:AddSpawnPointAtGroup("SpawnGroup1", spawnList[i]) --스폰 그룹에서 사용할 스폰포인트를 등록해요.
   spawner:SetSpawnType(Enum.PointSpawnType.Area, 0) --스폰포인트의 작동방식을 설정해요.
end

Game:SetUsingSpawnPointGroup(spawnGroup) --게임에 적용할 스폰 그룹을 설정해요.
Game:SetSpawnType(Enum.SpawnType.UseSpawnGroup) --게임의 스폰타입을 설정해요.

void SetSpawnType(ModeSpawnType InSpawnType)

게임의 스폰 타입을 설정할 수 있어요. ( Enum.SpawnType.타입 )

-- 샘플 --

local spawnList = Workspace.SpawnerList:GetChildList()
local spawnGroup = Game:AddSpawnPointGroup("SpawnGroup1") --이름으로 스폰 그룹을 등록해요.

for i = 1, #spawnList do
   local spawner = Game:AddSpawnPointAtGroup("SpawnGroup1", spawnList[i]) --스폰 그룹에서 사용할 스폰포인트를 등록해요.
   spawner:SetSpawnType(Enum.PointSpawnType.Area, 0) --스폰포인트의 작동방식을 설정해요.
end

Game:SetUsingSpawnPointGroup(spawnGroup) --게임에 적용할 스폰 그룹을 설정해요.
Game:SetSpawnType(Enum.SpawnType.UseSpawnGroup) --게임의 스폰타입을 설정해요.

void SetUsingSpawnPointGroup(SpawnPointGroup SpawnPointGroup)

게임에 적용 할 스폰 그룹을 설정할 수 있어요. (게임에 적용 할 스폰포인트 그룹 오브젝트)

-- 샘플 --

local spawnList = Workspace.SpawnerList:GetChildList()
local spawnGroup = Game:AddSpawnPointGroup("SpawnGroup1") --이름으로 스폰 그룹을 등록해요.

for i = 1, #spawnList do
   local spawner = Game:AddSpawnPointAtGroup("SpawnGroup1", spawnList[i]) --스폰 그룹에서 사용할 스폰포인트를 등록해요.
   spawner:SetSpawnType(Enum.PointSpawnType.Area, 0) --스폰포인트의 작동방식을 설정해요.
end

Game:SetUsingSpawnPointGroup(spawnGroup) --게임에 적용할 스폰 그룹을 설정해요.
Game:SetSpawnType(Enum.SpawnType.UseSpawnGroup) --게임의 스폰타입을 설정해요.

void SetUsingSpawnPoint(SpawnPoint SpawnPoint)

게임에 적용 할 스폰 포인트를 설정할 수 있어요. (게임에 적용 할 스폰포인트 오브젝트)

-- 샘플 --

local SpawnPoint = Workspace.SpawnPoint
local WaitSpawnPoint = Game:AddSpawnPoint(SpawnPoint)
local SpawnRadius = 0

WaitSpawnPoint:SetSpawnType(Enum.PointSpawnType.Area, SpawnRadius)

Game:SetUsingSpawnPoint(WaitSpawnPoint) -- 처음 실행 시 사용할 SpawnPoint 지정

SpawnPoint GetUsingSpawnPoint()

게임에 적용되어있는 스폰 포인트를 가져올 수 있어요.

-- 샘플 --

local usingSpawnPoint = Game:GetUsingSpawnPoint()
print(usingSpawnPoint)

void SetDefaultSpawnPos(Vector Pos)

설정된 스폰 포인트가 없을 경우 지정한 위치에 스폰되도록 해요. (스폰할 위치 Vector)

-- 샘플 --

local DefaultSpawnPos = Vector.new(0, 0, 200) --설정된 스폰포인트가 없을때 사용할 기본 스폰 위치에요.
Game:SetDefaultSpawnPos(DefaultSpawnPos)

void SetUsingCharacterSetting(CharacterSetting CharacterSettingObject)

게임에서 적용 할 캐릭터 설정을 설정 할 수 있어요. (게임에 적용 할 캐릭터 설정 오브젝트) 함수가 호출된 다음, 캐릭터가 스폰될때 반영돼요.

-- 샘플 --

local CharacterSetting = Toybox.CharacterSetting
Game:SetUsingCharacterSetting(CharacterSetting) --게임에서 사용하는 기본 캐릭터를 설정해요. (게임중에 변경시에는 리스폰을 해야 적용돼요.)

CharacterSetting GetUsingCharacterSetting()

게임에서 적용되어있는 캐릭터 설정을 가져올 수 있어요.

-- 샘플 --

wait(1)
local currentCharacterSetting = Game:GetUsingCharacterSetting()
print("GetUsingCharacterSetting ", currentCharacterSetting)

Team AddTeam(string TeamName)

게임에서 사용 할 팀 설정을 추가할 수 있어요. (팀 이름 설정)

-- 샘플 --

local teamName = "Blue Team"
local team = Game:AddTeam(teamName) --이름으로 팀을 추가한뒤, 추가한 팀을 반환해요.
local spawnGroup = Game:AddSpawnPointGroup(teamName) --이름으로 스폰 그룹을 등록해요.
local spawnRadius = 50 --팀별 캐릭터 스폰 반경을 설정해요.

team:AddUsingCharacter(Workspace.CharacterSetting) --팀별로 사용하는 캐릭터를 따로 지정할 수도 있어요.
team:SetUsingSpawnPointGroup(teamName) --팀에서 사용할 스폰 그룹을 설정해요.

local spawner = Game:AddSpawnPointAtGroup(teamName, Workspace.SpawnPoint) --스폰 그룹에서 사용할 스폰포인트를 등록해요.
spawner:SetSpawnType(Enum.PointSpawnType.Area, spawnRadius) --팀의 스폰타입을 설정해요.

Game:SetTeamSetting(Enum.TeamType.Team, Enum.DivideTeamType.Equal) --팀에 플레이어를 분배하는 방식을 설정해요.
Game:SetSpawnType(Enum.SpawnType.UseTeamSpawn) --게임의 캐릭터 스폰 방식을 설정해요.
Game:ApplyTeamSetting() --팀 설정을 적용해요. (모든 플레이어가 리스폰돼요.)

local function SpawnCharacter(character)
    print(character.Name .. "'s' Team : " .. character:GetPlayer():GetTeamName()) --팀 이름을 반환해요.
end
Game.OnSpawnCharacter:Connect(SpawnCharacter)

Player GetPlayer(number PlayerID)

플레이어 아이디로 플레이어를 얻을 수 있어요. (얻고 싶은 플레이어 아이디)

-- 샘플 --

local player = Game:GetPlayer(PlayerID) --플레이어 아이디에 해당하는 플레이어를 반환해요.

Character GetPlayerCharacter(number PlayerID)

플레이어 아이디로 플레이어 캐릭터를 얻을 수 있어요. (얻고 싶은 플레이어 아이디)

-- 샘플 --

local playerID = player:GetPlayerID()
local character = Game:GetPlayerCharacter(PlayerID)
print(character.Name)

void SetTeamSetting(TeamType TeamType, DivideTeamType DivideTeamType)

게임의 팀전 여부, 팀 나누기 방식을 설정할 수 있어요. (팀 타입, Enum.DivideTeamType.타입 )

-- 샘플 --

Game:SetTeamSetting(Enum.TeamType.Team, Enum.DivideTeamType.Equal)

number GetPlayerCount()

현재 게임에 참여하고 있는 플레이어 수를 얻을 수 있어요.

-- 샘플 --

print(Game:GetPlayerCount())

void ResetTeamSetting()

게임의 팀 설정을 모두 제거해요.

-- 샘플 --

Game:ResetTeamSetting()

void ApplyTeamSetting()

팀 설정 방식을 게임에 적용하는 함수에요.

-- 샘플 --

Game:ApplyTeamSetting() --팀 설정을 적용해요. (모든 플레이어가 리스폰돼요.)

void SetCanEnterUser(bool bCan)

게임에 유저의 진입 가능 여부를 설정해요. (false로 설정 할 경우 해당 게임으로 더 이상 유저가 들어올 수 없어요.)

-- 샘플 --

Game:SetCanEnterUser(false)

bool GetCanEnterUser()

현재 게임에 유저의 진입 가능 여부를 가져올 수 있어요.

-- 샘플 --

print(Game:GetCanEnterUser())

void BroadcastEvent(string CustomEventName, Args ...)

모든 클라이언트에게 이벤트를 보내는 함수에요. (이벤트 이름, 전달할 변수들 ...)

-- 샘플 --

--서버 스크립트에서
local cube = Workspace.Cube

wait(1)
cube:BroadcastEvent("SomeFunc", 1) --모든 플레이어에게 SomeFunc() 함수를 호출해요.

-----------------------------------
--클라 스크립트에서
local cube = Workspace.cube

--필요하다면 함수의 인자도 넣을 수 있어요. 단, 숫자나 문자열 인자만 넣을 수 있어요.
local function SomeFunc(id)
    print("Call SomeFunc (" .. id .. ")")
end
cube:ConnectEventFunction("SomeFunc", SomeFunc) --오브젝트에 "SomeFunc"라는 이벤트 이름으로 SomeFunc 함수를 연결해요.
                                                --오브젝트가 아닌 Game에도 연결할 수 있어요.
                                                --같은 대상에 등록된 이벤트만 호출할 수 있어요.

void SendEventToClient(number PlayerID, string CustomEventName, Args ...)

해당 클라이언트에게만 이벤트를 보내는 함수에요. (이벤트 보낼 플레이어 아이디, 이벤트 이름, 전달할 변수들 ...)

-- 샘플 --

--서버 스크립트에서
local cube = Workspace.Cube

wait(1)
cube:SendEventToClient(player:GetPlayerID(), "SomeFunc", 1) --특정 플레이어에게 SomeFunc() 함수를 호출해요. (첫번째 인자로 플레이어 아이디가 반드시 들어가야해요.)

-----------------------------------
--클라 스크립트에서
local cube = Workspace.cube

--필요하다면 함수의 인자도 넣을 수 있어요. 단, 숫자나 문자열 인자만 넣을 수 있어요.
local function SomeFunc(id)
    print("Call SomeFunc (" .. id .. ")")
end
cube:ConnectEventFunction("SomeFunc", SomeFunc) --오브젝트에 "SomeFunc"라는 이벤트 이름으로 SomeFunc 함수를 연결해요.
                                                --오브젝트가 아닌 Game에도 연결할 수 있어요.
                                                --같은 대상에 등록된 이벤트만 호출할 수 있어요.

void InitInventorySize(number XSize, number YSize)

인벤토리의 초기 생성 사이즈를 설정할 수 있어요. (가로 사이즈, 세로 사이즈)

-- 샘플 --

Game:InitInventorySize(9, 2) --인벤토리 크기가 가로 9, 세로 2로 설정돼요.

void SetInventorySize(number XSize, number YSize)

(deprecated) InitInventorySize 를 사용하세요.

void InitQuickSlotCount(number Count)

퀵 슬롯의 초기 생성 개수를 설정할 수 있어요. (설정할 개수 값)

-- 샘플 --

Game:InitQuickSlotCount(9) --퀵 슬롯의 개수를 9로 설정해요.

void SetQuickSlotCount(number Count)

(deprecated) InitQuickSlotCount 를 사용하세요.

void GiveItem(Character TargetCharacter, Item ObjectItem)

해당 캐릭터에게 아이템을 획득시켜줘요. (아이템을 획득할 캐릭터, 아이템 객체)

-- 샘플 --

local item = Script.Parent
Game:GiveItem(character, item) --플레이어에게 아이템을 지급해요.

Object CreateSyncObject(Object SourceObject, Vector Location)

지정한 위치에 클라이언트와 동기화되는 오브젝트를 생성할 수 있어요. (생성 할 오브젝트, 생성할 월드 위치 Vector)

-- 샘플 --

local cube = Workspace.Cube
local createPos = Vector.new(0, 0, 0)

local temp = Game:CreateSyncObject(cube, createPos) --오브젝트를 지정된 위치에 생성해요. (모든 플레이어에게 보여요.)
print(temp.Name) --CreateSyncObject로 생성한 오브젝트를 변수에 담은 뒤 후처리할 수 있어요.

Object CreateSyncObject(Object SourceObject, Vector Location, string Name, Object ObjectParent)

지정한 위치에 클라이언트와 동기화되는 오브젝트를 생성할 수 있어요. (생성 할 오브젝트, 생성할 월드 위치 Vector, 설정할 이름, 부모가 될 오브젝트)

-- 샘플 --

local cube = Workspace.Cube
local createPos = Vector.new(0, 0, 0)

local temp = Game:CreateSyncObject(cube, createPos, obj.Name, Workspace) --오브젝트를 Workspace의 자식으로 지정된 위치에 특정 이름으로 생성해요. (모든 플레이어에게 보여요.)
print(temp.Name) --CreateSyncObject로 생성한 오브젝트를 변수에 담은 뒤 후처리할 수 있어요.

Object CreateNoneSyncObject(Object SourceObject, Vector Location)

지정한 위치에 클라이언트와 동기화 되지 않는 오브젝트를 생성할 수 있어요. (생성 할 오브젝트, 생성 월드 위치 Vector)

-- 샘플 --

local bullet = Game:CreateNoneSyncObject(Bullet, Vector.new(0, 0, 300))

ObjectSpawner AddObjectSpawner(Object SpawnObject, ObjectSelectType ObjectSelectType, number SpawnTime, number Count)

오브젝트 스포너 생성할 수 있어요. (스폰 할 오브젝트, Enum.ObjectSelectType.타입 , 스폰 시간, 한번에 스폰될 개수)

-- 샘플 --

local object = Script.Parent
local spawnTime = 1
local spawnLimit = 1 --생성 제한 수(생성된 객체가 이 수보다 작아야 생성됩니다.)
local spawner = Game:AddObjectSpawner(object, Enum.ObjectSelectType.Random, spawnTime, spawnLimit) --오브젝트를 스폰할 스포너를 등록해요.

local spawnRate = 0.9
local maxSpawnCount = 9999 --최대 생성 수(이 수 만큼 생성되면 생성이 종료됩니다.)
local spawnPos = Vector.new(0, 0, 0)

spawner:AddSpawnObject(Toybox.Cube, spawnRate, maxSpawnCount, spawnPos) --스포너에서 스폰할 오브젝트를 등록해요.

ObjectSelector CreateObjectSelector(ObjectSelectType SelectType)

오브젝트 셀렉터를 생성할 수 있어요. ( Enum.ObjectSelectType.타입 )

ObjectList GetObjectList(Vector Center, number Radius)

지정한 영역의 오브젝트를 얻을 수 있어요. (영역 중앙 포인트 Vector, 영역 반지름 값)

bool UseWorldItem(Character Character, Item TargetItem)

월드 아이템을 사용하게 할 수 있어요. (사용할 캐릭터, 사용할 아이템)

-- 샘플 --

Game:UseWorldItem(character, item)

void DeleteWorldItem(Item TargetItem)

월드 아이템 삭제해요. (삭제할 아이템)

-- 샘플 --

Game:DeleteWorldItem(item)

void SaveUserGameData(number PlayerID, string KeyString, Vector SaveValue)

해당 유저의 게임 데이터를 저장할 수 있어요. (저장할 플레이어 이름, 데이터 키 값, 저장할 Vector 값)

-- 샘플 --

local playerID = player:GetPlayerID()
local saveDataName = "PlayerSomeData"
local saveDataValue = Vector.new(0, 0, 0)
Game:SaveUserGameData(playerID, saveDataName, saveDataValue)

void SaveUserGameData(number PlayerID, string KeyString, number SaveValue)

해당 유저의 게임 데이터를 저장할 수 있어요. (저장할 플레이어 이름, 데이터 키 값, 저장할 number 값)

-- 샘플 --

local playerID = player:GetPlayerID()
local saveDataName = "PlayerSomeData"
local saveDataValue = 1.5
Game:SaveUserGameData(playerID, saveDataName, saveDataValue)

void SaveUserGameData(number PlayerID, string KeyString, bool SaveValue)

해당 유저의 게임 데이터를 저장할 수 있어요. (저장할 플레이어 이름, 데이터 키 값, 저장할 Bool 값)

-- 샘플 --

local playerID = player:GetPlayerID()
local saveDataName = "PlayerSomeData"
local saveDataValue = true
Game:SaveUserGameData(playerID, saveDataName, saveDataValue)

void SaveUserGameData(number PlayerID, string KeyString, Table SaveValue)

해당 유저의 게임 데이터를 저장할 수 있어요. (저장할 플레이어 이름, 데이터 키 값, 저장할 Table 값)

-- 샘플 --

local playerID = player:GetPlayerID()
local saveDataName = "PlayerSomeData"
local saveDataValue = { 1, 2, 3 }
Game:SaveUserGameData(playerID, saveDataName, saveDataValue)

void SaveUserGameData(number PlayerID, string KeyString, string SaveValue)

해당 유저의 게임 데이터를 저장할 수 있어요. (저장할 플레이어 이름, 데이터 키 값, 저장할 String 값)

-- 샘플 --

local playerID = player:GetPlayerID()
local saveDataName = "PlayerSomeData"
local saveDataValue = "Hello"
Game:SaveUserGameData(playerID, saveDataName, saveDataValue)

void SaveUserGameData(number PlayerID, string KeyString, Color SaveValue)

해당 유저의 게임 데이터를 저장할 수 있어요. (저장할 플레이어 이름, 데이터 키 값, 저장할 Color 값)

-- 샘플 --

local playerID = player:GetPlayerID()
local saveDataName = "PlayerSomeData"
local saveDataValue = Color.new(255, 0, 0, 255)
Game:SaveUserGameData(playerID, saveDataName, saveDataValue)

Object GetSavedUserGameData(number PlayerID, string KeyString)

해당 유저의 게임 데이터를 얻을 수 있어요. (플레이어 아이디, 데이터 키 값)

-- 샘플 --

local playerID = player:GetPlayerID()
local saveDataName = "PlayerSomeData"
local loadData = Game:GetSavedUserGameData(playerID, saveDataName)
print(loadData)

void SaveGameStatisticsData(number PlayerID, GameStatisticsData Data, number SaveValue)

해당 유저의 게임 통계 데이터를 저장할 수 있어요. (저장할 플레이어 아이디, GameStatisticsData(키, 정렬, 덮어쓰기) , 저장 값)

-- 샘플 --

local LeaderBoardName = "Score"
local Ascending = false
local Overwrite = true
local LeaderBoardData = Game:NewGameStatisticsData(LeaderBoardName, Ascending, Overwrite)

local score = 100
Game:SaveGameStatisticsData(player:GetPlayerID(), LeaderBoardData, score)

void GetGameStatisticsData(GameStatisticsData Data, number Offset, number Count, function CallBackFunction)

게임 통계 데이터를 얻을 수 있어요. (GameStatisticsData(키, 정렬, 덮어쓰기), Offset 값, Count 값, CallBack 연결 함수)

-- 샘플 --

local LeaderBoardData = Game:NewGameStatisticsData(LeaderBoardName, Ascending, Overwrite)

local function CompleteAcquireData(data)
    for i = 1, #data do
        print(data[i].PlayerNickName .. ", " .. tostring(data[i].Value))
    end
end
Game:GetGameStatisticsData(LeaderBoardData, 0, 10, CompleteAcquireData)

GameStatisticsData GetStatisticsData(string KeyString)

게임 통계 데이터 오브젝트 를 얻을 수 있어요. (키 값)

-- 샘플 --

func void SendToClient_GameStatisticsData(number PlayerID, GameStatisticsData Data, number Offset, number Count)
** 게임 통계 데이터를 클라이언트로 보내줄 수 있어요 (보내줄 플레이어 아이디, GameStatisticsData(키, 정렬, 덮어쓰기), Offset 값, Count 값)
** 해당 함수는 10초 이상의 간격을 두고 사용해야 해요.
샘플
```lua
</br>

| **void Broadcast_GameStatisticsData(GameStatisticsData Data, number Offset, number Count)** |
| :--- |

게임 통계 데이터를 모든 클라이언트로 보내요 (GameStatisticsData(키, 정렬, 덮어쓰기), Offset 값, Count 값)</br>해당 함수는 10초 이상의 간격을 두고 사용해야 해요.

-- 샘플 --
```lua
local LeaderBoardData = Game:GetStatisticsData(LeaderBoardName)
Game:Broadcast_GameStatisticsData(LeaderBoardData, 0, 10)

PlayerList GetAllPlayer()

모든 플레이어 얻을 수 있어요.

-- 샘플 --

local allPlayerList = Game:GetAllPlayer() --모든 플레이어를 리스트로 반환해요.

for i = 1, #allPlayerList do
    print(allPlayerList[i].Name)
end

void TeleportToPublicServer(number LandOrder, List PlayerIDList)

공개서버로 접속하는 텔레포트에요 텔레포트 한 랜드에 다른사람이 있을 수 있어요

-- 샘플 --

local LandOrder = 1 --텔레포트시킬 랜드의 번호에요. (랜드 번호는 내 게임 관리 - 게임 설정에서 확인할 수 있어요.)
local Collider = Script.Parent

local function TeleportFunc(self, character)
	if character == nil or not character:IsCharacter() then
		return
	end

    local movePlayerIDList = {} --텔레포트시킬 플레이어의 아이디들을 저장하기 위한 변수에요.
    table.insert(movePlayerIDList, character:GetPlayerID()) --텔레포트 시킬 플레이어의 아이디를 변수에 추가해요.

	Game:TeleportToPublicServer(LandOrder, movePlayerIDList) --공개 설정된 랜드로 텔레포트를 시작해요.
end
Collider.Collision.OnBeginOverlapEvent:Connect(TeleportFunc) --오브젝트와 충돌을 시작할때 호출되는 함수를 연결해요.

void TeleportToPrivateServer(number LandOrder, List PlayerIDList)

비공개서버로 접속하는 함수에요 나만 혹은 지정한 인원으로만 새로 서버를 만들어서 하고 싶을때 사용해요

-- 샘플 --

local LandOrder = 1234 --텔레포트시킬 랜드의 번호에요. (랜드 번호는 내 게임 관리 - 게임 설정에서 확인할 수 있어요.)
local Collider = Script.Parent

local function TeleportFunc(self, character)
	if character == nil or not character:IsCharacter() then
		return
	end

	local movePlayerIDList = {} --텔레포트시킬 플레이어의 아이디를 저장하기 위한 변수에요.
    table.insert(movePlayerIDList, character:GetPlayerID()) --텔레포트 시킬 플레이어의 아이디를 변수에 추가해요.

	Game:TeleportToPrivateServer(LandOrder, movePlayerIDList) --비공개 설정된 랜드로 텔레포트를 시작해요.
end
Collider.Collision.OnBeginOverlapEvent:Connect(TeleportFunc) --오브젝트와 충돌을 시작할때 호출되는 함수를 연결해요.

void TeleportToServerUsingIP(string ServerIP, number SlotID, number PlayerID)

서버 주소를 이용하여 서버에 접속하는 함수에요 접속해야 하는 서버 주소를 알고, 슬롯 아이디를 알고 있을 때 사용해요

string GetServerIP()

서버 주소를 이용하여 서버에 접속하는 함수에요 현재 서버의 주소를 얻을 때 써요

number GetSlotID()

서버 주소를 이용하여 서버에 접속에 필요한 파라미터 현재 서버의 슬롯 아이디를 얻을 때 써요

void AddTeleportStartEvent(number LandOrder, function TeleportStartFunction)

플레이어가 텔레포트 이동을 시작할때 호출되는 이벤트 함수를 추가할 수 있어요. 랜드별로 이벤트를 설정 할 수 있어요.

-- 샘플 --

local LandOrder = 1

local function PortalA_TeleportStart(player)
    --해당 랜드에 이동해서 사용할 데이터를 저장해요.
	player:AddLandTransferData("TestValue1", 1000)
	player:AddLandTransferData("TestValue2", "StringValueTest")

	print("Teleport Start!")
end
Game:AddTeleportStartEvent(LandOrder, PortalA_TeleportStart) --플레이어가 특정 랜드로 텔레포트 이동을 시작할때 호출되는 함수를 연결해요.

void OnChatNormalMessage(number TargetID, string Message, ChatVisibleType ChatVisibleType)

모들 플레이어 채팅 창에 일반 메시지 추가. (연출용)

-- 샘플 --

Game:OnChatNormalMessage(PlayerID, "출력 내용", Enum.ChatVisibleType.ShowChatOnly) --채팅창에만 표시해요
Game:OnChatNormalMessage(PlayerID, "출력 내용", Enum.ChatVisibleType.ShowBalloonOnly) --말풍선으로만 표시해요
Game:OnChatNormalMessage(PlayerID, "출력 내용", Enum.ChatVisibleType.ShowBoth) --채팅창과 말풍선으로 표시해요

void OnChatSystemMessage(number PlayerID, string Message)

모든 플레이어 창에 시스템 메시지 추가.

void OnChatSystemMessage(string Name, string Message)

모든 플레이어 창에 시스템 메시지 추가.

-- 샘플 --

Game:OnChatSystemMessage("운영자", "출력 내용") --채팅창에만 표시해요

void OnChatNPCMessage(NPC ObjectNPC, string Message, ChatVisibleType ChatVisibleType)

모든 플레이어 채팅 창에 NPC 추가.

-- 샘플 --

local npc = Script.Parent

Game:OnChatNPCMessage(npc, "출력 내용", Enum.ChatVisibleType.ShowChatOnly) --채팅창에만 표시해요
Game:OnChatNPCMessage(npc, "출력 내용", Enum.ChatVisibleType.ShowBalloonOnly) --말풍선으로만 표시해요
Game:OnChatNPCMessage(npc, "출력 내용", Enum.ChatVisibleType.ShowBoth) --채팅창과 말풍선으로 표시해요

void AllUserMuteVoiceChatAll(number ExcludePlayerID)

모든 유저의 보이스 채팅을 음소거 시켜요

void AllUserMuteUnmuteVoiceChatAll(number ExcludePlayerID)

모든 유저의 보이스 채팅을 음소거 해제 시켜요

void UserMuteVoiceChatAll(number MutePlayerID)

특정 유저의 보이스 채팅을 음소거 시켜요

void UserUnMuteVoiceChatAll(number UnmutePlayerID)

특정 유저의 보이스 채팅을 음소거 해제 시켜요

number GetCurrentLandOrder()

현재 랜드가 몇 번째 슬롯에 있는지 순서번호를 얻어요.

-- 샘플 --

--스튜디오 테스트 플레이에서는 -1을 반환하지만 플레이어는 연결순서에 맞춰 반환돼요.
local currentLandOrder = Game:GetCurrentLandOrder()

FiniteStateMachine AddFSM(string StateMachineName)

오브젝트나 NPC에 사용될 FSM을 추가할 수 있어요. (상태머신 이름)

-- 샘플 --

local FSM = Game:AddFSM("FSM")

GameStatisticsData NewGameStatisticsData(string KeyString, bool Ascending, bool Overwrite)

게임 통계 데이터 오브젝트를 만듭니다.(키 값, 정렬 여부, 덮어쓰기.)

-- 샘플 --

local LeaderBoardData = Game:NewGameStatisticsData(KeyString, ascending, Overwrite)

사용 가능한 부모 오브젝트 기능들

속성

이름

설명

이벤트

이름

설명

매 프레임마다 호출되는 이벤트에요. 연결함수 형식은 function(updateTime), updateTime 은 number 입니다.

플레이어가 게임에 입장 시 호출되는 이벤트에요. 연결함수 형식은 function(enterPlayer), enterPlayer 은 Player 객체 입니다.

플레이어가 게임에서 나갈 때 호출되는 이벤트에요. 연결함수 형식은 function(leavePlayer), leavePlayer 은 Player 객체 입니다.

캐릭터가 죽을 때 호출되는 이벤트에요. 연결함수 형식은 function(deathCharacter), deathCharacter 는 Character 객체 입니다.

캐릭터가 스폰 될 때 호출되는 이벤트에요. 연결함수 형식은 function(spawnCharacter), spawnCharacter 는 Character 객체 입니다.

함수

이름

설명

게임에 단계를 추가할 수 있어요. (추가할 단계 이름)

단계 이름으로 단계를 불러올 수 있어요. (불러올 단계 이름)

현재 단계를 얻을 수 있어요.

단계 이름을 통해 해당 단계로 변경할 수 있어요. (변경할 단계 이름)

다음 단계로 변경할 수 있어요.

유저가 추가한 이벤트에 함수를 연결할 수 있어요. (이벤트 이름, 연결 함수)

오브젝트를 삭제할 수 있어요. (삭제할 오브젝트) 서버에서 사용하면 서버와 클라 오브젝트 모두 삭제되고 클라에서 사용하면 클라 오브젝트만 삭제해요

설정된 시작 지점에서 원하는 방향으로 지정된 거리 만큼의 충돌 리스트들을 가져올 수 있어요. (시작 지점 Vector, 방향 Vector, 거리 값)

설정된 시작 지점에서 원하는 방향으로 지정된 거리 만큼의 유저가 추가한 충돌 타입과의 충돌 리스트들을 가져올 수 있어요. (시작 지점 Vector, 방향 Vector, 거리 값, 원하는 유저 충돌 타입 이름)

반환값이 false이면 스튜디오(스튜디오로 접속), true이면 퍼블리쉬된 상태(플레이어로 접속)

로그 채팅창 출력 기능 활성, 비활성 설정(true로 설정 시 스크립트 print 가 채팅창에도 표시됨)

RootObject 하위의 오브젝트들 중 ObjectName 에 해당하는 오브젝트 리스트를 얻을 수 있어요.

RootObject 하위의 오브젝트들 중 ObjectType 에 해당하는 오브젝트 리스트를 얻을 수 있어요.

Last updated