전략게시판

전략게시판 [스튜디오]
루아 스크립트 팁
2018.11.20 10:49 조회 : 3586
Lv. 82프로그래머 프로토스 작성자 게시물 더보기
안녕하세요.

요즘 스튜디오에 루아 스크립트를 지원하네요

간단한 팁남기도록 하겠습니다.

* 특징
1. 프로그램 내장 스크립트이다.
2. 프로그램과 통신해 데이터 교환 API 상호 호출이 가능하다.
3. C 언어나 C++언어 인식이 쉽다.
4. 다른 스크립트보다 가볍다.

정도 입니다.
여기서 가볍다는 적은 데이터형을 지원하지만 용량과 속도의 부담이 적어지게 됩니다.


* 문법
Lua는 전역 변수를 기본으로 합니다.
(전역 변수는 어떤 변수 영역 내에서도 접근할 수 있는 변수를 의미하는 전산학 용어이다. 지역 변수와 대비되는 개념이다. 어떤 스코프에서도 참조하고, 변경할 수 있기 때문에 지역성이 없다.)

nill = null
(여기서 null 이란? '값이 없음'을 나타내는 영단어입니다. 값이 없다는 것은 그 값이 0조차 아니라는 뜻이죠)
JAVA나 C같은 다른 언어는 null을 사용하지만 Lua에선 nill를 대신 사용합니다.

string
문자열 처리

예를들어
string myString = "abcd";

정도가 있군요 myString안에 문자 abcd를 넣는다는 의미입니다.


number
정수, 소수를 구분하지 않고 모든 숫자를 실수형으로 처리합니다.

예를들어

실수형 변수

float frnum = 3.141593f;
double drnum = 3.141592653589793;

보통 C나 Java에선 실수형 float나 double을 사용합니다.
frnum 에 실수값 3.141593f; 값을 넣기 위해 실수형을 선언해줍니다.

자바나 C같은 경우 실수를 선언하기위해 위와 같이 float를 사용하거나 double을 선언 해야하지만 lua에서 number를 사용하는것을 볼 수 있습니다.

table
number형과 string 모두 인덱스 할수 있습니다.
이것은 변수가 아니라 객체로봅니다.

boolean (true, false) 논리 자료형
논리 자료는 말 그대로 논리로직을 사용하여 판단합니다.

예를들어
if (my_variable != 0) {
  printf("True!
");
} else {
  printf("False!
");
}
my_variable, 이것이 != 0, 0과 다를(아닐경우) 경우
출력 결과 :0이 아닐 경우 = printf(True를 출력), 0일 경우 = printf(False)가 되겠군요


Lua에 적용시키려면
------------------------------------
if(조건) than(실행)
else if(조건) than(실행)
else(실행)
end
-------------------------------------
이와 같은 형식이 되어야겠군요.


현재 인게임 루아 튜토리얼
game.lua을 열어 
가장 처음 보이는 소스를 잠깐 설명하고 마치겠습니다.

여기서 --[[ ]] 이 형식은 게임에 아무런 영향이 없는 메모(주석)입니다.
--------------------------------------------
--[[
1. 플레이어의 수치 변경
- 버튼으로 플레이어의 수치를 변경하기
]]
button1 = Game.EntityBlock.Create({x=-42, y=-24, z=2})
button1에 Game.EntityBlock.Create X Y Z 값을 넣습니다.
function button1:OnUse(player)
function기능 아까 XYZ 값을 가진 button1을 On되었다면(플레이어가) 아래와 같은 판단문에 진입합니다.
    (판단문)if self.onnexon true then
이것이 on(위), off(아래) 되었을 경우
player.health = 10 (health=체력을 10으로)
player.armor = 10 (armor=방어를 10으로) (on 상태)
else
player.health = 100 (health=체력을 10으로)
player.armor = 100 (armor=방어를 10으로) (off 상태)
end
end 판단문 처리후 if에서 빠져나갑니다.
---------------------------------------------
+ 이중 if문

if (조건식1) then
코드1
elseif (조건식2) then
코드2
elseif (조건식 3) then
코드3
...
else
코드n
end
-----------------------------------------
추천 : 2
댓글을 남기시려면 로그인 해주세요
댓글 : 7
  • 님아 루아맵좀 만들어주셈 님이 카스 살릴 희망임 ㅇㅇ Lv. 23모바일에서 등록핑듀유듀 2019.03.17
  • 아...고딩 sw시간에 스타하지 말고 열심히 들을걸 ㅠㅠㅠ Lv. 320이북남 2019.03.05
  • 흠 FindPlayerAt(position)기능은 저도 잘 모르겠네요.. 이중 if문 사용법은 추가설명 해놨으니 참고하시기 바랍니다. 블럭1, 2 둘다 On 상태일때 실행하려면 둘다 조건식에 만족해야겠군요. Lv. 82프로그래머 2018.11.20
  • 그리고 이중 if문은 루아에서 어떻게 사용되나요? 예를들어 블럭1이 ON이고 블럭2가 ON일때 btn1 = Game.EntityBlock.Create({x=0, y=0, z=0}) btn2 = Game.EntityBlock.Create({x=1, y=0, z=0}) if btn1.onoff true then elseif btn.onoff true then player.health = 10 end end 하면 되나요? Lv. 53라온헤윰 2018.11.20
  • Functions FindPlayerAt (position) 특정 좌표에 위치한 플레이어를 찾습니다. 이거 설명좀요 이해가 안감 Lv. 53라온헤윰 2018.11.20
  • 보통 컴퓨터 언어의 문법이나 구조등을 이해하기위해 기초적으로 C를 배웁니다. 아니면 스튜디오 예시 파일 소스를 뜯어 차근차근 분석해보시는것도 방법입니다. Lv. 82프로그래머 2018.11.20
  • 루아를 위해 배워야 할 컴퓨터 언어들이 어떤게 있을까요? Lv. 1genocide3 2018.11.20