바람의나라 [CR]스크립트 추가 및 간단한 스크립트 설명입니다.
컨텐츠 정보
- 18 조회
- 0 추천
- 0 비추천
- 목록
본문
작성자: 작성자 없음
안녕하세요. 글로리입니다.
바람의나라 소스자료실에 가보면 제가 올려놓은 소스들이 있는데요.
그것들을 추가하기 위한 강좌를 지금부터 시작하도록 하겠습니다.
[이미지 링크 만료]
먼저 폴더를 열면 이 패키지로 구성되어있는데요. 잠깐 설명을 하자면
conf:서버의 설정을 담당하며 ip등을 설정할 수 있는 폴더. 서버의 이름, 배율, 들어갔을때 안내문구, 죽은자의 온기 등등을 설정할 수 있다.
db:서버의 정보를 담당하는 폴더. 마법이름,아이템정보,몬스터정보,맵정보,맵연결등은 이 폴더에서 수정이 가능하다.
map:서버의 맵 구현에 필요한 map파일이 들어있는곳. 이곳에 들어있는 맵들만 db를 통해서 서버에 구현이 가능하다.
save:유저들의 계정변수가 저장되어있는곳. 8kb를 넘으면 더이상 저장되지 않고 초기화 되어버리니 주의하도록 할것.
script:여러가지 스크립트를 설정하고 수정할 수 있는 폴더.
이정도 되겠네요.
잠깐 짚고 넘어가도록 합시다. script란 과연 무엇일까요?
script란 쉽게말해서 "어떤 동작을 글로써 창조해내는 모든것" 이라고 표현할 수 있겠습니다.
예를들어 간단한마법 ㅡ 자무주를 설명하도록 해보죠.
자무주를 사용하기 위해서는?
먼저 마력이 필요하겠죠. 120정도?(if)
그리고 자무주의 데미지를 설정해야겠죠.
또 자무주의 이펙트를 설정해야하구요, 소리도 설정해야죠.
마력이 부족하다면 안된다는 문구까지.
간단한 마법에도 이정도의 동작이 들어가게 됩니다.
체크하고, 실행하고. 이게 스크립트의 기본이죠.
다시 또다른 예를 들어볼까요? NPC를 예로 들어보죠.
도토리 10개를 구해오라는 퀘스트를 구현하려면 어떻게 해야할까요?
먼저 NPC를 세워야겠죠?
그리고 NPC가 도토리를 가져오라고 말해야겠죠.
그리고 만약 도토리가 아이템창에 10개 있다면(if)
퀘스트 보상으로, 음 목도를 주면 되겠네요.
이런 식으로 자신이 생각한대로 NPC 또는 캐릭터, 몬스터가 동작하게끔 하는 모든것들을 script로 표현할 수 있습니다.
이제 스크린샷에 표시되어있는것처럼 script 폴더를 들어가봅시다.
[이미지 링크 만료]
여러가지가 있네요. 뭐 event도 있고, npc도 있고, magic도 있고..
폴더는 얼마든지 만들어낼 수 있습니다. 중요한건 안에 들어있는 스크립트 파일이에요.
스크립트 파일을 살펴보도록 하죠.
[이미지 링크 만료]
magic폴더에 있는 주술사 마법입니다.
전체저주네요.
전체저주가 어떤식으로 적용되는지 메커니즘을 살펴보도록 할까요.
참고로 주의하나 드리자면, 바람의나라 소스자료실에 있는 모든것은 그냥 복사 붙여넣기 했을때 90%는 오류가 납니다.
왜냐하면 각종 변수들이 여러분들이 운영하는 서버와 전혀 다르기 때문입니다.
그렇기때문에 스크립트 함수에 대한 철저한 이해가 필요합니다.
이번에는 그 이해를 돕기위해서 간단한 몇가지의 스크립트 설명을 하도록 하겠습니다.
먼저 맨 윗부분부터 살펴보죠.
set @mysd, mysd();
set @myid, myid();
이렇게 되어있네요. 이게 의미하는바는 뭘까요?
바로 스크립트를 실행하는 유저캐릭터의 정보를 특정하는겁니다.
무슨뜻이냐구요? 그 밑에를 한번 보죠.
set @needmp, get_maxmp(@mysd)*5/100;
이렇게 되어있죠. 해석하자면, @needmp라는 임시변수를, @mysd의 최대마력의 5%로 한다.
이런거죠. 그럼 @mysd의 최대마력이라는건 뭘까요? 최대마력은 알겠는데 @mysd는?
위에 있죠. set @mysd, mysd(); 해석하자면, @mysd는 mysd()이다.
이제 이해가 가시나요? mysd()란 바로 위에서 설명했듯 스크립트를 실행하는 유저캐릭터를 특정하는겁니다.
그럼 myid는요? 마찬가지라고 보시면 됩니다. 함수에따라 요구하는값이 sd가 될수도, id가 될수도 있습니다.
Q.그럼 만약 스크립트를 실행하는 유저캐릭터 말고, 다른걸 집어넣을수도 있나요?
A.될수도 있고 안될수도 있습니다.
함수마다 유저만을 원하는것도 있고, 몬스터만을 원하는것도 있기때문에 이부분은 직접 스크립트를 만져보시면서 깨달으실수 밖에 없습니다.
직관적으로 생각해보세요. get_money( ? ) 소지금액을 불러오는 함수입니다. 여기 ? 에 몬스터가 들어갈까요? 몬스터는 돈을 가지고있지 않은데? 그런거죠.
자 이제 다음으로 넘어가보죠. if(@mp<@needmp) 이런 구문이 나왔네요.
if는 상당히 자주나오고, 또 잘 쓰이는 조건문입니다. 영어 if는 아시죠? 만약 ~~라면.
그렇다면 위에문구도 해석이 될겁니다. 만약 @mp < @needmp 라면.
이 조건에 맞다면 괄호{}에 쳐져있는 스크립트가 작동이 될 것이고, 조건에 맞지 않다면 작동되지 않겠죠.
위에 스크린샷에 따르면
@mp < @needmp 즉, 현재 mp가 요구 mp보다 낮을때 message 함수를 통해 "마력이 부족합니다" 라고 출력할 수 있게 하라. 이정도가 되겠네요
이런식으로 스크립트는 하나하나 해석하고 철저하게 이해한다음 적용하셔야 합니다.
무턱대고 복사 붙여넣기로는 절대 스크립트를 제대로 사용하실 수 없을뿐만 아니라 구동기가 오류를 뿜뿜하면서 꺼질겁니다.
나는 마력을 mana로 선언하는데, 다른유저가 올린 스크립트에서는 마력을 mp로 선언한다면?
구동기는 빙글빙글 돌아가다가 쓰러지는거죠.
결국 제대로 쓰려면 다른 유저가 올린 스크립트에서 mp가 되어있는걸 mana로 바꿀수밖에 없습니다.
이런식으로 자기 서버에 맞춰서 수정한다음 적용하셔야 합니다. 결코 공짜로 얻어지는건 없어요.
이런식으로 아래까지 쭈욱 훑어보면서 변수 이름을 체크하는게 스크립트 적용법의 핵심입니다.
감사합니다.
-
등록일 00:20
-
등록일 08.20
-
등록일 08.10VMware 네트워크 IP 설정댓글 3
-
등록일 08.08