스크립트 프로그래밍을 하다보면 같은 기능을 여러 군데에서 불러다 써야 하는 경우가 있습니다.. 예를 들면 아래와 같은 경우입니다.
function Run()
local result = MsgNews ( 특정값을 받기 )
if result == 1 then
A 처리하기
B 처리하기
elseif result == 2 then
A 처리하기
C 처리하기
elseif result == 3 then
A 처리하기
D 처리하기
else
B 처리하기
C 처리하기
end
end
위 와 같은 경우 보시면 A가 세 번이 나오고 B와 C가 각각 두 번이 나옵니다.. 같은 루틴이 반복되어 나오는 것이지요.. 뭐.. 소스 자체가 간단한 경우라면 그냥 A, B, C, D등의 원본 소스를 반복해서 붙여줘도 상관이 없습니다만 각각의 루틴이 코드 수가 많아진다고 한다면 좀 문제가 달라지겠지요. 이런 경우에는 A, B, C, D 루틴을 각각 함수처리를 해 주고, 위의 예에서는 그 함수를 불러서 사용을 함으로 간단하게 처리를 할 수가 있습니다.. 아래와 같습니다.
편의상 아래 소스의 파일 이름이 myexample.lua 파일이라고 정의를 해 보겠습니다.
function A_routine()
procedures...
procedures...
procedures...
end
function B_routine()
procedures...
procedures...
procedures...
end
function C_routine()
procedures...
procedures...
procedures...
end
function D_routine()
procedures...
procedures...
procedures...
end
function Run()
local result = MsgNews ( 특정값을 받기 )
if result == 1 then
myexample_A_routine()
myexample_B_routine()
elseif result == 2 then
myexample_A_routine()
myexample_C_routine()
elseif result == 3 then
myexample_A_routine()
myexample_D_routine()
else
myexample_B_routine()
myexample_C_routine()
end
end
위 와 같이 구성을 합니다. 그러면 Run 함수의 내부가 간략해져서 전체적인 소스의 흐름을 알아보기가 쉬워지고 또 A_routine() 중 일부를 수정해야 할 일이 생길 때 위의 function A_routine() 함수만 건드려주면 전체가 다 바뀌게 되어서 프로그램의 유지보수도 보다 간결해지게 됩니다..
단.. 함수를 불러 올 때에는
함수의 파일이름_함수이름()
위와 같이 앞에 함수의 파일 이름이 붙는다는 사실을 유의해주세요.
위의 구조는 흑사병 모드와 나이를 먹지 않도록 하는 모드에서 사용을 했습니다.
P.S.: 더 길드 2에 대해 더 자세하고 다양한 정보를 얻기 원하시면 네이버의 더길드 카페(http://cafe.naver.com/theguildz2)를 방문해 보세요.
'800 컴퓨터 게임 > 803 더길드2 모드 강좌란' 카테고리의 다른 글
모든 능력치(abilities)에 할당된 impacts들 (0) | 2011.05.10 |
---|---|
중급 스크립트 강좌 - 여러 파일에 소스 분할하기 (0) | 2011.05.10 |
경험치 올리기 모드 강좌 - MeasureType.dbt 및 기타 (0) | 2011.05.10 |
경험치 올리기 모드 강좌 - Text.dbt (0) | 2011.05.10 |
경험치 올리기 모드 강좌 - MeasureToObjects.dbt (0) | 2011.05.10 |
경험치 올리기 모드 강좌 - Measures.dbt (0) | 2011.05.10 |
경험치 올리기 모드 강좌 - 소스 스크립트 분석 5 (0) | 2011.05.10 |
경험치 올리기 모드 강좌 - 소스 스크립트 분석 4 (0) | 2011.05.10 |
경험치 올리기 모드 강좌 - 소스 스크립트 분석 3 (0) | 2011.05.10 |
경험치 올리기 모드 강좌 - 소스 스크립트 분석 2 (0) | 2011.05.10 |