바람의나라 CR 스크립트 함수 핵심 강의 -2
컨텐츠 정보
- 17 조회
- 0 추천
- 0 비추천
- 목록
본문
작성자: 작성자 없음
지난번 강의를 잠깐 복습해 본다면,
스크립트의 구성은 [명령] [이것을] [이렇게] 라는 구조로 대부분 이루어져 있다는 것이었어요.
잘 기억하고 계시죠?
그럼 이번엔 무엇을 할거냐 하면, 매우 기초적인 명령어. 즉 정말로 자주 쓰이는 명령들을 배우려고 해요.
자연스레 이번의 강의는 [명령]에 대해 배우겠군요.
뭐, 그렇게 어렵진 않을거니깐 자세히 잘 따라와 주시기만 하면 됩니다!
일단! 그 전에 지난번에 짚고 넘어가야 하는게 있었죠.
스크립트의 구조를 다시 한 번 봅시다.
set @id, 1;
이제는 해석하기 쉬울거에요.. @id를 1로 set하라는 소리죠! (모르셨다면 살포시 지난강의로....)
그런데 지금 우리가 봐야할 건 1이 아니고 @id 라는 용어에요. 거기 중에서도 바로 @를 살펴볼겁니다.
저번에 아주 잠깐 넘어간 것이 있었어요. 추후에 한다고 했었는데 오늘 하게 됐네요.
@id는 서랍장과 같다고 했습니다. 그 다음에 나오는 [이렇게]라는 것을 저장해 주는 저장소이죠. 뭐, [이렇게]는 고급진 용어로 상수란 말로도 쓰이겠네요.
어찌됐든 이 서랍장은 3가지의 종류가 존재해요.
1. @id
값 중에서 앞에 @가 쓰인 경우를 여기서는 임시변수라고 합니다.
임시변수는 말 그대로 임시적으로 저장된 값이에요. 그러므로 해당 스크립트가 끝나는 경우엔 즉시 소멸하게 됩니다.
@가 들어간 것들은 다른 스크립트와의 공유가 불가능해요. 단, 예외인 Func(펑크)를 제외하곤 말이죠. 이건 나중에 배울거에요.
어찌됐든 활용도는 가장 높은 변수이니 많이 많이 사용하세요.
2. $id
@ 대신에 $(달러) 표시가 들어갔습니다. 이것은 계정변수라고 합니다.
계정변수는 해당 계정 내에서 공유할 수 있는 저장소입니다.
set $id, 1;
이라는 구문을 작성하고 스크립트를 끝내도, 저 1이란 값은 $id라는 서랍장 내에 여전히 존재하게 됩니다.
그러니 다른 스크립트에서
set @wow, $id+1;
이라는 구문을 준다면 @wow는 2의 값을 얻게 되는 거겠죠!
쉽게말해서, 해당 계정(유저)의 공유가 가능한 서랍장정도가 되겠습니다. 이건 사라지지 않아요.
* 그러나, CR 특유의 버그로서 구동기가 불시 혹은 불안정하게 종료될경우 이 계정변수가 초기화되는 증상이 있어요.
그러니깐 계정변수관리는 정말로 정말로 잘 해주셔야 운영을 잘 할 수 있게됩니다!!
계정변수로 응용할 수 있는 것들은 굉장히 많아요.
개개인의 능력치를 추가로 설정해서 마법에 추가데미지로 넣을 수도 있고.. 강화확률을 높일수도있고.. 등등등 많은 응용이 되겠네요.
3. #id
이번엔 #이 붙었어요. 이것의 이름은 서버변수라고 합니다.
서버변수는 서버의 모든 스크립트와 데이터가 공유하는 변수라고 생각하시면 되겠어요.
계정변수가 자기 계정만 가지고 있는 변수라고 한다면, 서버변수는 그렇지 않다는 거에요.
예를 든다면, 당신이 지금 던전에 입장했는데 다른 일행이 못들어오도록 막고 싶다면 이 서버변수를 통해 이용할 수 있다는 겁니다.
* 그러나그러나.. CR 특유의 버그로서 이것을 자주 쓰면 서버 자체가 팅겨버리는 치명적인 버그가 존재해요.. 그러니 자주 쓰지 않으셨으면 좋겠어요.
이 세가지를 잘 이해하셨죠? 물론 저기 써있는 id 대신에 여러분이 서랍장의 이름을 다른걸로 지어주셔도 됩니다.
여러분의 머리에 따라서 천차만별로 응용이 되겠네요.
자 이제 본격적(....) 으로 시작해봅시다.
보통 어떤 마법 스크립트를 만든다고 할 때에 거의 반드시 필요한 것은 무엇이 있을까요?
네, 그렇죠. 바로 이펙트와 데미지일 것입니다.
정해진 타겟에 이펙트가 떠야하고, 그 후 데미지가 뜨게 처리를 해야된다는 것이죠.
하지만 이러한 과정은 생각보다 복잡합니다. 그래도 익숙해진다면 손쉽게 할 수 있을거에요.
어떤어떤 이펙트를 뜨게하라! 하는 명령이 있을것이고,
이만큼의 데미지를 이렇게 줘라! 하는 명령도 있을거에요 그쵸?
자주쓰이는 명렁! 한번 봅시다!
1. set
이것은 저번시간에도 거의 다루었던 명령이에요.
가장 기초가 되는 것이기도 하죠. set의 경우는 '선언' 이라는 말로도 자주 쓰인답니다.
양식은 set, 변수, 값; 구조가 되겠습니다!
예시)
set, @id, 1;
2. damage
읽으시는 그대로 데미지입니다!
어떤 대상에게 데미지를 가할 때 쓰는 구문이겠네요.
양식은 damage, 가하는대상, 맞는대상, 데미지, 금강불체유무; 가 되겠습니다.
예시)
set @id, myid();
damege, @id, @target, 20000, 1;
이것을 해석한다면 @id가 @target에게 20000의 데미지를 (금강불체를 무시하고) 넣는다. 가 되겠습니다!
'금강불체유무'는 0일경우 금강불체가 외워져있다면 데미지를 받지 않고, 1이라면 무시하고 들어갑니다.
3. if
이건 만약? 이라는 뜻을 가지고 있습니다. 이것은 '조건문'이라고도 하는데, 후에 더 자세히 다룰겁니다.
엄청난 매력을 풍기는 함수입니다. 그러나
.
여기서는 만약?이라는 뜻을 가진 함수라는 것만 기억해 주시면 됩니다.
예를들면, 백호참을 써야하는데 체력이 없을경우에 '체력이 부족합니다.'라는 말을 써야합니다.
다시말해,
"만약 이 케릭터의 hp가 1000 이하라면, 마법을 쓸 수 없게하고싶다." 라는 것이 되겠죠.
if의 양식은 '대체적으로' 아래와 같습니다.
if(조건 등식 조건)
{
조건 만족시 들어갈 스크립트
}
예시를 하나 적용해 봅시다.
... (중략)
set @hp, get_hp(@sd);
if(@hp <= 1000)
{
end;
}
... (중략)
이걸 해석한다면,
'만약 객체(자신)의 체력이 1000보다 작거나 같을 경우, 스크립트를 종료한다.' 라는 뜻이 되겠습니다.
많이 어려우셨나요?
마법 하나 만들기가 이렇게 험난할줄이야.. 그렇지만 함수와 스크립트를 조금씩이나마 이해하신다면, 마법뿐 아닌
npc나 다른 스크립트도 전부 만질수 있을겁니다! 스크립트의 매력은 무한한 응용에서 나옵니다!!
이번 강의는 머리아프실태니 여기까지만 해보도록 할게요.
자, 그럼 잘 배우셨나 문제나갑니다!
--- 잘 배웠나? 과연 잘 맞출 수 있을지 알아봅시다 --
문제1.
하나의 마법엔 2라는 값을 저장하였다.
그러나 다른 마법에도 저기 있던 변수의 값을 가져와 쓰고 싶다.
이 경우엔 어떠한 방법을 사용해야 할까? (단, 서버변수는 쓰지 않는다.)
문제2.
@damege를 1000으로 먼저 설정하고,
만약 @hmm 이란 변수의 값이 10 미만일경우 @damage를 5000으로 설정하고 싶다.
거기에 $str이라는 변수를 @damage를 5000으로 설정한 것 옆에 곱하고 싶다.
결과적으로 어떠한 구문이 나와야 할까?
-
등록일 00:20
-
등록일 08.20
-
등록일 08.10VMware 네트워크 IP 설정댓글 2
-
등록일 08.08