Skip to content

Mod scripting guide : Event

Sol Lee edited this page Sep 28, 2023 · 8 revisions

개요

본 문서는 이벤트의 모딩에 사용되는 스크립트 파일의 구조를 설명합니다.

주의 사항

해당 항목은 Mod scripting guide : Investment와 중복되는 내용을 담고 있습니다.
스크립트 작성 시 주의해야 할 사항은 다음과 같습니다.

  • 0000번 스크립트를 통해 확인 가능한 템플릿이 지켜져야 합니다.
  • Lua에서 기본적으로 사용 가능한 라이브러리(math, string 등)를 사용할 수 있습니다.
  • API는 적절한 용도에 맞게 사용되어야 합니다. (ex. Event에서 Investment의 API를 사용할 수 없습니다.)
  • 같은 카테고리 내 스크립트 파일의 전역변수는 모두 공유됩니다. 따라서, 변수 선언에 다음과 같은 Convention을 권장합니다.
    • {VariableName}_{ScriptId}
    • ex. Event.1234.lua파일의 n이라는 변수를 사용할 경우, n_1234라는 이름을 권장합니다.

코드 본문 (Event.0000.lua)

-- Event data
function EventData()
    Data = {}
    Data.title = 'Title'
    Data.flavor_text = 'Flavor text'
    Data.message = 'Event message'
    Data.period = 0
    
    return Data
end

-- Event occur weight
function Weight()
    return 1
end

-- Event start (event effect)
function Start()
end

EventDataStruct = {}
EventDataStruct.EventData = EventData
EventDataStruct.Weight = Weight
EventDataStruct.Start = Start

return EventDataStruct

위 스크립트는 Event.0000.lua파일의 코드입니다.
이후 참조에 용이하도록, 샘플의 목적으로 배치했습니다.
이벤트는 위 스크립트를 수정, 추가하는 것으로 구현됩니다.
각 스크립트를 조금 더 작게 나누어 살펴보도록 하겠습니다.

EventData

스크립트 중 EventData 항목입니다.

-- Event data
function EventData()
    Data = {}
    Data.title = 'Title'
    Data.flavor_text = 'Flavor text'
    Data.message = 'Event message'
    Data.period = 0
    
    return Data
end

Data의 각 속성은 다음과 같은 역할을 수행합니다.

  • Data.title
    • 이벤트의 제목을 나타냅니다.
  • Data.flavor_text
    • 이벤트의 플레이버 텍스트를 나타냅니다.
  • Data.message
    • 이벤트의 효과를 설명하는 텍스트를 나타냅니다.
  • Data.period
    • 이벤트의 지속 기간을 나타냅니다.

위 속성들과 텍스트 중 period를 제외하면 UI에 노출되는 설명이며, 실제 기능과는 무관합니다.
위 설명들에 맞춰 아래 함수들을 구현해야 이벤트의 추가가 완료됩니다.

Weight

-- Event occur weight
function Weight()
    return 1
end

Event의 가중치를 지정하는 함수입니다.
상황에 따라 다른 값을 return하는 것으로 가중치를 변동시킬 수 있습니다.

Start

-- Event start (event effect)
function Start()
end

Event가 발생했을 시 미치는 영향을 지정하는 함수입니다.
확률 조정과 같은 효과의 경우, 이벤트가 종료될 시 자동으로 기존 상태로 돌아갑니다.

EventDataStruct

EventDataStruct = {}
EventDataStruct.EventData = EventData
EventDataStruct.Weight = Weight
EventDataStruct.Start = Start

return EventDataStruct

코드의 마지막에 있는 EventDataStruct및 return구문입니다.
엔진에서 스크립트를 읽어들이기 위해 반드시 필요한 구문으로, 추가적인 편집은 불필요합니다.


샘플 코드

다음 문서는 Lua스크립팅에 관련된 샘플 코드를 첨부하고 있습니다.

Mod scripting guide : Sample code

Clone this wiki locally