-
Notifications
You must be signed in to change notification settings - Fork 0
Mod scripting guide : 개요 및 API
Sol Lee edited this page Oct 12, 2023
·
10 revisions
투자 미션, 이벤트는 스크립팅을 통해 모딩이 가능합니다.
구현 및 상세한 내용은 아래 문서를 참고해주세요.
본 문서는 모드 스크립팅에 대한 가이드라인을 제공합니다.
한 개의 투자 미션, 이벤트는 한 개의 파일로 구성되어 있습니다.
각각의 파일이 위치한 경로는 다음과 같습니다.
- 투자 미션
게임 설치 폴더/Content/Script/Investment/
- 이벤트
게임 설치 폴더/Content/Script/Event/
해당 경로에 추가하는 파일명은 다음과 같은 규칙을 따라야 합니다.
- 투자 미션
Investment.{ID}.lua
- 이벤트
Event.{ID}.lua
투자 미션, 이벤트의 ID값은 서로 중복을 허용합니다.
해당 파일 명의 ID는 0이 아닌 숫자로 시작하는, 4자리의 숫자여야만 합니다. (1000~9999사이의 값)
투자 미션, 이벤트는 Lua 코드를 스크립팅 하는 것으로 구현할 수 있습니다.
스크립트 파일의 구조는 각각 다음 문서에 서술되어 있습니다.
- 투자 미션
- 이벤트
PolyMetro는 모드 제작에 사용될 수 있는 여러 함수들을 제공합니다.
게임 내 컨텐츠의 카테고리에 따라, 사용할 수 있는 API는 아래와 같습니다.
API의 서술 방법에 대한 설명입니다.
- {함수 이름}({입력 값})
- {함수에 대한 설명}
-- 함수의 사용 예시 코드
Foo = {호출 코드}({입력 값})
Foo.{값 이름 (A)}
Foo.{값 이름 (B)}
- 호출 코드 및 입력 값에 대한 설명
- 값 이름 A에 대한 설명
- 값 이름 B에 대한 설명
투자 미션 및 이벤트에서 모두 사용될 수 있는 API입니다.
- 현재 플레이 중인 맵의 이름을 받아옵니다.
- 환경 설정의 언어 설정에 따라 값이 달라집니다.
Foo = GetMapName()
- 설정 언어가 한글일 경우, 한글 이름을 반환합니다. (서울, 런던... )
- 설정 언어가 영어일 경우, 영어 이름을 반환합니다. (Seoul, London... )
- 게임 내 시간에 관련된 정보를 받아옵니다.
Foo = GetTimestamp()
Foo.Date
Foo.DayoftheWeek
Foo.Week
- Date : 현재 일자를 나타냅니다. 양의 정수 형태로 제공됩니다.
- DayoftheWeek : 현재 요일을 나타냅니다. { Monday, Tuesday ... Sunday } 의 값을 가집니다.
- Week : 현재 주차를 나타냅니다. 양의 정수의 형태로 제공됩니다.
- 정책 상황에 대한 정보를 받아옵니다.
Foo = GetPolicyData()
Foo.ServiceLevel
Foo.IsPrioritySeat
Foo.IsCCTV
Foo.IsElevator
Foo.IsBicycle
Foo.IsTransfer
- ServiceLevel : 현재 서비스 단계 값을 나타냅니다. 1~5사이의 정수 값을 가집니다.
- IsPrioritySeat : 노약자석의 활성화 여부를 나타냅니다. { true, false } 의 값을 가집니다.
- IsCCTV : CCTV의 활성화 여부를 나타냅니다. { true, false } 의 값을 가집니다.
- IsElevator : 엘리베이터의 활성화 여부를 나타냅니다. { true, false } 의 값을 가집니다.
- IsBicycle : 자전거 승차 활성화 여부를 나타냅니다. { true, false } 의 값을 가집니다.
- IsTransfer : 환승 시스템 활성화 여부를 나타냅니다. { true, false } 의 값을 가집니다.
- 통계 개요에서 확인할 수 있는 정보를 받아옵니다.
Foo = GetDefaultStatistics()
Foo.TotalArrivePassenger
Foo.WeeklyArrivePassenger
Foo.TotalIncome
Foo.WeeklyIncome
Foo.TotalSpending
Foo.WeeklySpending
Foo.AverageComplain
Foo.ServiceStationCount
Foo.UpgradeStationCount
- TotalArrivePassenger : 총 탑승 승객 수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- WeeklyArrivePassenger : 주간 탑승 승객 수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalIncome : 총 수익을 나타냅니다. 0 이상의 정수 값을 가집니다.
- WeeklyIncome : 주간 수익을 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalSpending : 총 지출을 나타냅니다. 0 이상의 정수 값을 가집니다.
- WeeklySpending : 주간 지출을 나타냅니다. 0 이상의 정수 값을 가집니다.
- AverageComplain : 불만도 평균을 나타냅니다. 0 이상의 실수 값을 가집니다.
- ServiceStationCount : 활성화된 역의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- UpgradeStationCount : 업그레이드 된 역의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- 노선과 관련된 공통된 정보를 받아옵니다.
Foo = GetLaneStatistics()
Foo.TotalLaneCount
Foo.TotalModifyAndDeleteCount
- TotalLaneCount : 활성화된 노선의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalModifyAndDeleteCount : 노선의 수정, 삭제 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- 개별 노선과 관련된 정보를 받아옵니다.
- 배열로 구성되어 있습니다.
Foo = GetLaneDetailStatistics()
Foo[1].TotalArrivePassenger
Foo[1].WeeklyArrivePassenger
Foo[1].TotalProfit
Foo[1].WeeklyProfit
Foo[1].UsingBridgeCount
Foo[1].UsingTunnelCount
Foo[1].TransferStationCount
Foo[1].ServiceStationCount
Foo[1].TotalModifyAndReduceCount
Foo[1].AverageComplain
Foo[1].ServiceTrainAndSubtrainCount
Foo[1].IsCircularLane
- 배열의 번호는 노선의 번호와 일치합니다.
- 상기 코드는 예시로 1호선에 대한 정보를 이용하고 있습니다.
- TotalArrivePassenger : 총 탑승 승객 수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- WeeklyArrivePassenger : 주간 탑승 승객 수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalProfit : 노선의 총 수익을 나타냅니다. 0 이상의 정수 값을 가집니다.
- WeeklyProfit : 노선의 주간 수익을 나타냅니다. 0 이상의 정수 값을 가집니다.
- UsingBridgeCount : 노선이 사용하고 있는 다리의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- UsingTunnelCount : 노선이 사용하고 있는 터널의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TransferStationCount : 노선이 보유하고 있는 환승 역의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- ServiceStationCount : 노선이 운영되고 있는 역의 숫자를 나타냅니다. 1 이상의 정수 값을 가집니다.
- TotalModifyAndReduceCount : 노선의 수정, 축소 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- AverageComplain : 노선이 운영되고 있는 역의 평균 불만도를 나타냅니다. 0 이상의 실수 값을 가집니다.
- ServiceTrainAndSubtrainCount : 노선에서 운행중인 동차와 객차의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- IsCircularLane : 노선의 순환선 여부를 나타냅니다. { true, false }의 값을 가집니다.
- 상점과 관련된 정보를 받아옵니다.
Foo = GetShopStatistics()
Foo.TotalUsingMoney
Foo.TotalPurchaseCount
- TotalUsingMoney : 상점에서 사용된 금액을 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalPurchaseCount : 상점의 총 구매 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- 동차와 관련된 기본적인 정보를 받아옵니다.
Foo = GetTrainStatistics()
Foo.TotalPurchaseCount
Foo.TotalPlacementCount
Foo.TotalShiftCount
Foo.TotalRetrievalCount
Foo.TotalUpgradeCount
- TotalPurchaseCount : 동차의 구매 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalPlacementCount : 동차의 총 배치 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalShiftCount : 동차가 드래그&드롭으로 이동된 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalRetrievalCount : 동차가 회수된 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalUpgradeCount : 동차가 업그레이드 된 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- 객차와 관련된 기본적인 정보를 받아옵니다.
Foo = GetSubtrainStatistics()
Foo.TotalPurchaseCount
Foo.TotalPlacementCount
Foo.TotalShiftCount
Foo.TotalRetrievalCount
Foo.TotalUpgradeCount
- TotalPurchaseCount : 객차의 구매 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalPlacementCount : 객차의 총 배치 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalShiftCount : 객차가 드래그&드롭으로 이동된 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalRetrievalCount : 객차가 회수된 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalUpgradeCount : 객차가 업그레이드 된 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- 다리와 관련된 기본적인 정보를 받아옵니다.
Foo = GetBridgeStatistics()
Foo.TotalPurchaseCount
Foo.TotalPlacementCount
- TotalPurchaseCount : 다리의 구매 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalPlacementCount : 다리의 배치 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- 터널과 관련된 기본적인 정보를 받아옵니다.
Foo = GetTunnelStatistics()
Foo.TotalPurchaseCount
Foo.TotalPlacementCount
- TotalPurchaseCount : 터널의 구매 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalPlacementCount : 터널의 배치 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- 은행과 관련된 정보를 받아옵니다.
Foo = GetBankStatistics()
Foo.TotalUsingLoanCount
Foo.TotalRepayMoney
Foo.TotalLoanMoeny
Foo.TotalRepayInterestMoney
- TotalUsingLoanCount : 이용중인 대출 상품의 갯수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalRepayMoney : 지금까지 상환한 대출금을 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalLoanMoney : 지금까지 대출한 금액의 총량을 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalRepayInterestMoney : 지금까지 납부한 총 이자를 나타냅니다. 0 이상의 실수 값을 가집니다.
- 게임에 생성된 모든 역에 대한 정보를 받아옵니다.
- 배열로 구성되어 있습니다.
Foo = GetStationInfos()
Foo[0].Id
Foo[0].StationType
Foo[0].ServiceLaneCount
Foo[0].TotalUsingPassenger
Foo[0].WeeklyUsingPassenger
Foo[0].TotalProfit
Foo[0].WeeklyProfit
Foo[0].Complain
Foo[0].GetOnPassengerCount
Foo[0].TotalWaitTime
Foo[0].AverageWaitTime
Foo[0].TotalTransferPassenger
Foo[0].WeeklyTransferPassenger
Foo[0].IsActive
Foo[0].IsDestroyed
Foo[0].IsUpgrade
- 배열의 번호와 노선의 번호는 일치하지 않습니다.
- 상기 코드는 예시로 배열의 0번째 역에 대한 정보를 이용하고 있습니다.
- Id : 역의 고유한 Id값을 나타냅니다. 0 이상의 정수 값을 가집니다.
- StationType : 역의 타입을 나타냅니다. 이하의 값을 가집니다.
- { Circle, Triangle, Rectangle, Cross, Rhombus, Oval, Diamond, Pentagon, Star, Fan }
- ServiceLaneCount : 역이 소속된 노선의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalUsingPassenger : 역을 이용한 총 승객의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- WeeklyUsingPassenger : 역을 이용한 주간 승객의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalProfit : 역의 총 수익을 나타냅니다. 정수 값을 가집니다.
- WeeklyProfit : 역의 주간 수익을 나타냅니다. 정수 값을 가집니다.
- Complain : 역의 불만도를 나타냅니다. 0 이상의 실수 값을 가집니다.
- GetOnPassengerCount : 역에서 열차에 탑승한 승객의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- TotalWaitTime : 승객이 열차에 탑승할 때 까지 걸린 시간을 초 단위로 나타냅니다. 0 이상의 실수 값을 가집니다.
- AverageWaitTime : 승객이 열차에 탑승할 때 까지 걸린 시간의 평균을 초 단위로 나타냅니다. 0 이상의 실수 값을 가집니다.
- TotalTransferPassenger : 환승을 위해 역을 이용한 총 승객 수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- WeeklyTransferPassenger : 환승을 위해 역을 이용한 주간 승객 수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- IsActive : 역의 활성화 여부를 나타냅니다. { true, false }의 값을 가집니다.
- IsDestroyed : 역의 파괴 여부를 나타냅니다. { true, false }의 값을 가집니다.
- IsUpgrade : 역의 업그레이드 여부를 나타냅니다. { true, false }의 값을 가집니다.
- 게임에 생성된 모든 열차에 대한 정보를 받아옵니다.
- 배열로 구성되어 있습니다.
Foo = GetTrainInfos()
Foo[0].Id
Foo[0].ServiceLaneId
Foo[0].TrainType
Foo[0].SubtrainCount
Foo[0].TotalPassenger
Foo[0].WeeklyPassenger
Foo[0].ShiftCount
Foo[0].IsUpgrade
- 배열의 번호와 열차의 번호는 일치하지 않습니다.
- 상기 코드는 예시로 배열의 0번째 열차에 대한 정보를 이용하고 있습니다.
- Id : 열차의 고유한 Id값을 나타냅니다. 0 이상의 정수 값을 가집니다.
- ServiceLaneId : 열차가 운행중인 노선의 Id값을 나타냅니다. 1~8 사이의 정수 값을 가집니다.
- TrainType : 열차의 타입을 나타냅니다. { Train, Subtrain }의 값을 가집니다.
- SubtrainCount : 열차가 동차일 경우와 객차일 경우, 서로 다른 값을 가집니다.
- 열차가 동차인 경우, 열차가 보유한 객차의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- 열차가 객차인 경우, -1의 값을 가집니다.
- TotalPassenger : 열차에 탑승한 총 승객의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- WeeklyPassenger : 열차에 탑승한 주간 승객의 숫자를 나타냅니다. 0 이상의 정수 값을 가집니다.
- ShiftCount : 열차가 드래그&드롭으로 옮겨진 횟수를 나타냅니다. 0 이상의 정수 값을 가집니다.
- IsUpgrade : 열차의 업그레이드 여부를 나타냅니다. { true, false }의 값을 가집니다.
다음 API는 투자 미션 스크립트에서만 사용될 수 있는 API입니다.
- 소지금을 증가/감소시킵니다.
- 수익에 반영됩니다.
AddIncome(100)
- 100의 소지금을 증가시키는 코드입니다.
- 수익에 반영됩니다.
- 정수 값만 허용됩니다.
- 소지금을 증가/감소시킵니다.
- 수익에 반영되지 않습니다.
AddMoney(100)
- 100의 소지금을 증가시키는 코드입니다.
- 수익에 반영되지 않습니다.
- 정수 값만 허용됩니다.
- 게임의 수치에 대하여 투자 미션 시작 시점의 값을 가져오는 함수입니다.
- Get...AtStart의 형식을 지니고 있으며, 투자 미션의 Id값을 요구합니다.
- 해당되는 함수는 다음과 같습니다.
GetTimestampAtStart(InvetmentId)
GetDefaultStatisticsAtStart(InvetmentId)
GetLaneStatisticsAtStart(InvetmentId)
GetLaneDetailStatisticsAtStart(InvetmentId)
GetShopStatisticsAtStart(InvetmentId)
GetTrainStatisticsAtStart(InvetmentId)
GetSubtrainStatisticsAtStart(InvetmentId)
GetBridgeStatisticsAtStart(InvetmentId)
GetTunnelStatisticsAtStart(InvetmentId)
GetBankStatisticsAtStart(InvetmentId)
GetStationInfosAtStart(InvetmentId)
GetTrainInfosAtStart(InvetmentId)
- 다음은 투자 미션 Id 9999의 시작 시점의 날짜를 받아오는 코드입니다.
startDate = GetTimestampAtStart(9999)
startDate.Date
- 투자 미션의 Id는 투자 미션의 파일명의 Id와 동일해야 합니다.
- 다른 값이 입력될 경우, 정상적으로 작동하지 않을 수 있습니다.
- 특정 아이템을 증가시키는 코드입니다.
- Item의 종류로는 동차, 객차, 노선, 다리, 터널이 있습니다.
- Amount의 값 만큼 증가합니다.
AddItem(Train, 2)
- 동차를 2개 증가시키는 코드입니다.
- 동차, 객차, 노선, 다리, 터널은 각각 다음과 같습니다.
- { Train, Subtrain, Lane, Bridge, Tunnel }
- 0 이상의 정수 값만 허용됩니다.
다음 API는 이벤트 스크립트에서만 사용될 수 있는 API입니다.
- 역을 생성하는 코드입니다.
- Amount의 값 만큼 생성합니다.
AddStation(3)
- 역을 3개 생성하는 코드입니다.
- 0 이상의 정수 값만 허용됩니다.
- 역을 파괴하는 코드입니다.
- Amount의 값 만큼 생성된 역 중 랜덤으로 파괴됩니다.
- Amount가 파괴되지 않은 역보다 많을 경우, 남아있는 역이 모두 파괴됩니다.
- 파괴된 역이 중복되서 선택되지 않습니다.
DestroyStation(3)
- 3개의 역을 파괴하는 코드입니다.
- 0 이상의 정수 값만 허용됩니다.
- 승객의 생성 확률을 증가/감소시키는 코드입니다.
- Rate 값 만큼 기존의 생성 확률에 합 적용 됩니다.
- 이벤트 발생 이후에 생성될 역을 포함한 모든 역에 적용됩니다.
AddPassengerSpawnProbability(0.1)
- 승객의 생성 확률을 10% 증가시키는 코드입니다.
- 실수 값만 허용됩니다.
- 음수의 경우 확률이 감소됩니다.
- 특정 역을 목표로 하는 승객의 생성 확률을 증가/감소시키는 코드입니다.
- Rate 값 만큼 특정 역의 가중치에 합적용 됩니다.
- 이벤트 발생 이후에 생성될 역을 포함한 모든 역에 적용됩니다.
AddPassengerSpawnProbabilityByType(Star, 1.0)
- Star형태의 역을 목표로 하는 승객의 생성 확률을 100% 증가시키는 코드입니다.
- 실수 값만 허용됩니다.
- 음수의 경우 가중치가 감소됩니다.
- 역의 불만도를 변화시키는 코드입니다.
- Factor값 만큼 곱해집니다.
- 생성된 모든 역에 적용됩니다.
ScaleComplain(0.8)
- 역의 불만도를 20% 감소시키는 코드입니다.
- 0 이상의 실수 값만 허용됩니다.
- 역의 불만도 증가량을 변화시키는 코드입니다.
- Rate값 만큼 합적용 됩니다.
- 이벤트 발생 이후에 생성될 역을 포함한 모든 역에 적용됩니다.
AddComplainIncreaseRate(0.2)
- 불만도 증가량을 20% 증가시키는 코드입니다.
- 코드의 적용 이후, 모든 불만도는 1.2배만큼 추가로 증가합니다.
- 실수 값만 허용됩니다.
- 음수의 경우 불만도 증가량이 감소합니다.