Mod scripting guide : Investment - Tiny-Metro/Poly-Metro GitHub Wiki

๊ฐœ์š”

๋ณธ ๋ฌธ์„œ๋Š” ํˆฌ์ž ๋ฏธ์…˜์˜ ๋ชจ๋”ฉ์— ์‚ฌ์šฉ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ๊ตฌ์กฐ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์˜ ์‚ฌํ•ญ

ํ•ด๋‹น ํ•ญ๋ชฉ์€ Mod scripting guide : Event์™€ ์ค‘๋ณต๋˜๋Š” ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ์‹œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • 0000๋ฒˆ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ํ™•์ธ ๊ฐ€๋Šฅํ•œ ํ…œํ”Œ๋ฆฟ์ด ์ง€์ผœ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Lua์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(math, string ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • API๋Š” ์ ์ ˆํ•œ ์šฉ๋„์— ๋งž๊ฒŒ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (ex. Investment์—์„œ Event์˜ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)
  • ๊ฐ™์€ ์นดํ…Œ๊ณ ๋ฆฌ ๋‚ด ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ์ „์—ญ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ๊ณต์œ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ณ€์ˆ˜ ์„ ์–ธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ Convention์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
    • {VariableName}_{ScriptId}
    • ex. Investment.1234.luaํŒŒ์ผ์˜ n์ด๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, n_1234๋ผ๋Š” ์ด๋ฆ„์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ๋ณธ๋ฌธ (Investment.0000.lua)

-- Investment condition
function InvestmentData()
    Data = {}
    Data.message = 'Mission require text'
    Data.time_require = 0
    Data.award = 'Reward text'

    return Data
end

-- Call when investment start
-- Used save info when start
function Start()
end

-- Investment appear condition
function Appearance()
    return true
end

-- Investment success condition
function Process()
    return continue
end

-- Investment award
function Award()
end

InvestmentDataStruct = {}
InvestmentDataStruct.InvestmentData = InvestmentData
InvestmentDataStruct.Start = Start
InvestmentDataStruct.Appearance = Appearance
InvestmentDataStruct.Process = Process
InvestmentDataStruct.Award = Award

return InvestmentDataStruct

์œ„ ์Šคํฌ๋ฆฝํŠธ๋Š” Investment.0000.luaํŒŒ์ผ์˜ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ดํ›„ ์ฐธ์กฐ์— ์šฉ์ดํ•˜๋„๋ก, ์ƒ˜ํ”Œ์˜ ๋ชฉ์ ์œผ๋กœ ๋ฐฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํˆฌ์ž ๋ฏธ์…˜์€ ์œ„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜์ •, ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์กฐ๊ธˆ ๋” ์ž‘๊ฒŒ ๋‚˜๋ˆ„์–ด ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

InvestmentData

์Šคํฌ๋ฆฝํŠธ ์ค‘ InvestmentData ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

-- Investment condition
function InvestmentData()
    Data = {}
    Data.message = 'Mission require text'
    Data.time_require = 0
    Data.award = 'Reward text'

    return Data
end

Data์˜ ๊ฐ ์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • Data.message
    • ํˆฌ์ž ๋ฏธ์…˜์˜ ๋‚ด์šฉ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • Data.time_require
    • ํˆฌ์ž ๋ฏธ์…˜์˜ ์ˆ˜ํ–‰ ๊ธฐํ•œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋‹จ์œ„๋Š” ์ผ(Day)์ž…๋‹ˆ๋‹ค.
  • Data.award
    • ํˆฌ์ž ๋ฏธ์…˜์˜ ๋ณด์ƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์œ„ ์†์„ฑ๋“ค๊ณผ ํ…์ŠคํŠธ ์ค‘ time_require๋ฅผ ์ œ์™ธํ•˜๋ฉด UI์— ๋…ธ์ถœ๋˜๋Š” ์„ค๋ช…์ด๋ฉฐ, ์‹ค์ œ ๊ธฐ๋Šฅ๊ณผ๋Š” ๋ฌด๊ด€ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ์„ค๋ช…๋“ค์— ๋งž์ถฐ ์•„๋ž˜ ํ•จ์ˆ˜๋“ค์„ ๊ตฌํ˜„ํ•ด์•ผ ํˆฌ์ž ๋ฏธ์…˜์˜ ์ถ”๊ฐ€๊ฐ€ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

Start

์Šคํฌ๋ฆฝํŠธ ์ค‘ Start ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

-- Call when investment start
function Start()
end

ํˆฌ์ž ๋ฏธ์…˜์˜ ์‹œ์ž‘ ์‹œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์‹œ์ž‘๊ณผ ํ•จ๊ป˜ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜, ํ˜ธ์ถœ๋˜์–ด์•ผ ํ•˜๋Š” API๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Appearance

์Šคํฌ๋ฆฝํŠธ ์ค‘ Appearance ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

-- Investment appear condition
function Appearance()
    return true
end

ํˆฌ์ž ๋ฏธ์…˜์˜ ๋…ธ์ถœ ์กฐ๊ฑด์„ ์ง€์ •ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. return์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • true
    • ํˆฌ์ž ๋ฏธ์…˜์ด ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  • false
    • ํˆฌ์ž ๋ฏธ์…˜์ด ๋…ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)

Process

์Šคํฌ๋ฆฝํŠธ ์ค‘ Process ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

-- Investment success condition
function Process()
    return continue
end

ํˆฌ์ž ๋ฏธ์…˜์˜ ์ˆ˜ํ–‰ ๊ณผ์ •์„ ๊ฒ€์‚ฌํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ํˆฌ์ž ๋ฏธ์…˜์˜ ์‹œ์ž‘ ์ดํ›„ (Startํ•จ์ˆ˜ ํ˜ธ์ถœ ์ดํ›„) ์ง€์†์ ์œผ๋กœ(๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค) ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. return์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • continue
    • ํˆฌ์ž ๋ฏธ์…˜์˜ ์ง„ํ–‰์— ์ด์ƒ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • success
    • ํˆฌ์ž ๋ฏธ์…˜์ด ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ Awardํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  • fail
    • ํˆฌ์ž ๋ฏธ์…˜์ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ํˆฌ์ž ๋ฏธ์…˜์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

Award

์Šคํฌ๋ฆฝํŠธ ์ค‘ Award ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.

-- Investment award
function Award()
end

ํˆฌ์ž ๋ฏธ์…˜ ์„ฑ๊ณต ์‹œ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ํˆฌ์ž ๋ฏธ์…˜์˜ ๋ณด์ƒ์„ ์ง€๊ธ‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

InvestmentDataStruct

InvestmentDataStruct= {}
InvestmentDataStruct.InvestmentData = InvestmentData
InvestmentDataStruct.Start = Start
InvestmentDataStruct.Appearance = Appearance
InvestmentDataStruct.Process = Process
InvestmentDataStruct.Award = Award

return InvestmentDataStruct

์ฝ”๋“œ์˜ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” InvestmentDataStruct๋ฐ return๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—”์ง„์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฝ์–ด๋“ค์ด๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ตฌ๋ฌธ์œผ๋กœ, ์ถ”๊ฐ€์ ์ธ ํŽธ์ง‘์€ ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


์ƒ˜ํ”Œ ์ฝ”๋“œ

๋‹ค์Œ ๋ฌธ์„œ๋Š” Lua์Šคํฌ๋ฆฝํŒ…์— ๊ด€๋ จ๋œ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์ฒจ๋ถ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Mod scripting guide : Sample code