GetLocalPlayerDynasty("Player")

  local CheatMode = GetSettingNumber("GAME", "CheatMode", 0)
  if CheatMode ~= 1 then
    MsgQuick("Player", "@LCheatMode is disabled")
    MsgNewsNoWait("Player","","","intrigue",-1,
      "@LCheatMode is disabled",
      "@LCurrently CheadMode is disabled. If you want to enable the CheatMode, please add as below in the Config.ini file.$N$N[GAME]$NCheatMode = 1$N$NConfig.ini file can be found in the main folder of The Guild 2")
    return
  end

더길드2 스크립트에서 변수를 사용하기 위해서는 반드시 변수를 먼저 선언을 해 주어야 합니다.. 변수의 선언 방식은 아래와 같습니다.

local CheatMode

위와 같이 하면 CheatMode라는 변수가 만들어져서 이 이후부터는 CheatMode라는 변수를 사용할 수 있게 됩니다. 이렇게 변수를 미리 선언해놓지 않으면 CheatMode라는 변수를 사용을 할 수 없게 됩니다.

기타 Lua 스크립트에서의 변수에 관한 부분은 아래의 링크를 참고해 주세요.
http://blog.naver.com/well75/100074089701
http://blog.naver.com/well75/100074098469

이제 본격적으로 소스 분석 들어갑니다..

local CheatMode = GetSettingNumber("Game", "CheatMode", 0)

위의 구문은 먼저 CheatMode라는 변수를 만들어서 GetSettingNumber 함수의 결과값을 CheatMode 라는 변수에 저장하라는 명령어 입니다. 다른 부분은 이해하는데 어려움이 없으실테고 아마 GetSettingNumber 함수가 뭘 하는 함수일지가 궁금하실텐데... 각 함수들에 대한 레퍼런스는 이미 올려드린바가 있습니다. 아래 링크에서 다운 받으실 수 있고요.. 기본적으로 모든 함수들에 대한 설명은 아래 링크에 제가 올려드린 레퍼런스를 기준으로 설명을 드리겠습니다. 아래 링크에서 레퍼런스를 다운 받아서 같이 참고 하시면서 따라와 주세요.
http://yyht.tistory.com/1191

GetSettingNumber 함수의 정의는 아래와 같습니다..

Number GetSettingNumber(
  String Group,
  String Name,
  Number Default)

이 함수에 대한 설명이 "Get a float/int value from the config file" 이라고 되어 있습니다. 즉, config.ini 파일에서 특정한 숫자 값을 받아 오는 것이지요. String Group이 Config.ini 파일 안에 큰 대괄호로 표시되어 있는 부분을 뜻하고 String Name이 그 대괄호 안에 포함되어 있는 항목을 뜻합니다. 그리고 Number는 그 항목의 값을 이야기 하겠지요.. Default는 해당 항목이 없을 경우에 넘겨주는 값을 설정하라는 이야기 입니다.

local CheatMode = GetSettingNumber("Game", "CheatMode", 0)

따라서 위의 라인은 Group을 [GAME] Group 아래에서 CheatMode 항목을 찾아서 이 항목이 가지고 있는 값을 숫자로 반환해서 따로 선언한 변수인 CheatMode에 저장하라는 이야기입니다. 그런데 만약에 [GAME] 항목 아래에 CheatMode가 없다면 0을 기본값으로 넘겨주라는 이야기입니다.

구체적으로 Config.ini 파일을 살펴보면 아래와 같은 라인이 있습니다.

[GAME]

// Young 통합 치트모드를 활성화 시킵니다.
CheatMode = 1

위의 라인들 중에서 Group이 [GAME]이고, Name이 CheatMode이고, Default number가 1 이 됩니다.. 이 글을 읽으시는 분 들 중에 제 치트모드를 제대로 설치하신 분들이라면 아마도 CheatMode = 1 이라는 라인이 있으실테고.. 제 치트모드를 설치하지 않으신 분들은 CheatMode = 1 이라는 라인이 없으실겁니다.

  GetLocalPlayerDynasty("Player")

  if CheatMode ~= 1 then
    MsgQuick("Player", "@LCheatMode is disabled")
    MsgNewsNoWait("Player","","","intrigue",-1,
      "@LCheatMode is disabled",
      "@LCurrently CheadMode is disabled. If you want to enable the CheatMode, please add as below in the Config.ini file.$N$N[GAME]$NCheatMode = 1$N$NConfig.ini file can be found in the main folder of The Guild 2")
      return
  end

위의 라인은 만약에 CheatMode 변수에 1이 저장되지 않았을 경우에 밑의 라인을 처리하게 됩니다.

Lua 스크립트가 제공하는 비교 연산자는 아래와 같습니다.

> : 크다
=> : 크거나 같다
< : 작다
=< : 작거나 같다
== : 같다
~= : 같지 않다.

if CheatMode ~= 1 then

위의 라인은 CheatMode 변수에 저장되어 있는 값이 1이 아닌경우 then 이후 라인을 실행하라는 이야기 입니다.. 다시 말해서 Config.ini 파일의 [GAME] 항목 밑에 CheatMode라는 항목이 없거나.. 있더라도 CheatMode에 1이 아닌 다른 값이 저장이 되어 있는 경우가 되겠지요.. 이런 경우에는 각각 MsgQuick함수와 MsgNewsNoWait 함수를 호출하고 스크립트 실행을 종료합니다.

자 그러면 또 MsgQuick 함수와 MsgNewsNoWaiit 함수에 대해서 알아봐야 겠군요...

글이 길어질 것 같으니까 이 두 함수에 대해서는 다음 글에서 계속 다뤄보도록 하겠습니다..

사실 Lua 스크립트의 구문 자체는 별로 어렵지 않습니다.. 각각의 함수의 사용법만 잘 이해 한다면 말이지요... 모드 제작을 잘 하려면 각각의 함수들의 사용법을 잘 아는 것이 중요합니다..

 

P.S.: 더 길드 2에 대해 더 자세하고 다양한 정보를 얻기 원하시면 네이버의 더길드 카페(http://cafe.naver.com/theguildz2)를 방문해 보세요.

Posted by yyht
,