게임강의

Script강의 v0.1

컨텐츠 정보

본문

# 꼬부기의 스크립트 강의 입니다

# 제작자 : 꼬부기([email protected])

# 최종적으로 스크립트 명령어 등을 정리한날은 3월 5일 입니다.

# 무단배포는 가능하나 출처를 꼭 남겨주세요

========================================================

■ 꼬부기의 스크립트 강의

■ 제작자 활동카페는 USFM 입니다.

■ 깔끔하게 정리해놓았으니 보는데 불편하지않으실겁니다.

■ 혹시라도 오타가있을수있는데 귀엽게 봐주세요^^

========================================================

■ 글씨관련

#b할말#k = 파란색 글씨 

#d할말#k = 보라색 글씨 

#g할말#k = 초록색 글씨 

#r할말#k = 빨간색 글씨 

#e할말#n = 굵은 글씨


■ 이미지 관련

#fUI/UIWindow.img/QuestIcon/5/0# = 물음표상자 

#fUI/UIWindow.img/QuestIcon/3/0# = 랜덤아이템

#fUI/UIWindow.img/QuestIcon/4/0# = Reward!! //이건 잘모르겠음

#fUI/UIWindow.img/QuestIcon/6/0# = 인기도

#fUI/UIWindow.img/QuestIcon/7/0# = 메소

#fUI/UIWindow.img/QuestIcon/8/0# = 경험치

#fUI/UIWindow.img/QuestIcon/9/0# = Pet Closeness //이것도 잘 모르겠음

이 명령어를 사용하면 WZ파일안에있는 이미지를 사용할수있습니다.


■ 줄바꾸기 관련

\r\n 이렇게 하면 한줄이 내려갑니다.


■ 유저 아이디 관련

#h # 이걸쓰면 유저아이디가표시됩니다.

예를들자면 #h # 안녕? (제닉네임기준)

꼬부기 안녕? 이런식으로 나옵니다.


■ 스크립트 시작

importPackage(net.sf.odinms.client);

var status = 0;

모든 스크립트의 시작에는 이게 기본으로 쓰인다.


importPackage(net.sf.odinms.client);

var status = 0;


function start() {

status = -1;

action(1, 0, 0);

}


function action(mode, type, selection) {

if (mode == -1) {

cm.dispose();

} else {

if (mode == 0) {

cm.dispose();

}

if (mode == 1)

status++;

else

status--;

대충 이런식으로 스크립트의 첫 시작이다. mode를 status로 바꿀수도있다.


■ 스크립트 명령어의 뜻

스크립트명령어 status 이것은 말의 순서를 정하는것이다.

mode는 나도 자세히 모르겠으나 실질적으로 필요한것이아니다.


■ 그림나오게하기

#v 코드# 코드에다 아이템코드를 적으면 그림으로 나온다.


■ 퀘스트 조건메소드

cm.getLevel() >= 레벨 && cm.getQuestStatus(퀘스트 번호).equals(MapleQuestStatus.Status.NOT_STARTED)

퀘스트 시작전 조건

cm.getLevel() >= 레벨 && cm.getQuestStatus(퀘스트 번호).equals(MapleQuestStatus.Status.STARTED)

퀘스트 진행중 조건

cm.getLevel() >= 레벨 && cm.getQuestStatus(퀘스트 번호).equals(MapleQuestStatus.Status.COMPLETED)

퀘스트 완료 조건

이렇게쓰면된다.


■ 퀘스트 조건메소드 2

if (cm.getLevel() >= 10) {

if (p.getFame() >= 1) {

이런식으로 if (cm.getLevel() >= 10) { 이것은 레벨 10이 되어야할수있는것이고

if (p.getFame() >= 1) { 이것은 인기도 1이 되어야 할수있는것이다 이것은 극히 예제일 뿐이다.


■ 선택창 고르기

#L0#내용#l 이걸 적으면 무엇을 누르는 창이나온다.

2개 이상버릴땐 #L0#내용#l L0을 L1로 바꾸어준다. 

즉 #L1#내용#l 이렇게 되는 것이다.


■ 선택창 고르기 2

if (selection == 0) { 이것을 적으면 #L0#내용#l 이것을눌렀을때 나오는 반응이다.

그밑에 뭐 if ((cm.haveItem(4000000, 10))) { 이런걸 적으면 된다.


■ var의 쓰임

보통 var은 글을 적는데 쓰인다. 

주로 퀘스트 메이커에 잘쓰인다.

Q. var문으로 말하려면?

A. var문으로 말하려면 var p = cm.c.getPlayer();

이 메소드를 쓰고 str += "내용"; 내용이라고 적힌데에다 원하는 내용을쓴다.

var w_msg = ""; 또는 이 var문을 쓸수있는데

이 문을 위에다 적고

w_msg += "내용 "; 밑에다 이렇게 적으면된다. 

TIP. var문은 한문장을 다 적고 엔터치고 다시 적어서 하는것이다. 

그렇다고 밑줄로내려가진않는다. \r\n이문을써야한다.(밑줄로내려갈려면)


■ 자신의 팩 안에 스크립트 명령어를 보고싶어요.

자신의 팩안에 스크립트 명령어를 보고싶은분은 정말 많을것이다.

이걸 보려면 src있는팩과 없는팩으로 갈리는데 src없는팩은 

이 명령어를 확인할수없게된다.

src있는팩은 trunk\src\net\sf\odinms\scripting\npc

이경로로 가서 NPCConversationManager.java

이파일을 열어준다. 그러면 자신의 스크립트 메소드가 좌르륵 있을것이다.

아참! var문은 NPCConversationManager.java 에 없다.

일부 다른것들은 기본적으로 자바스크립트 명령어인게있으므로 없는것이있을것이다.


■ 자신의 팩 안에 스크립트 메소드를 추가하고싶어요.

이것을 할려면 우선 기본적으로 빌드를할줄아는 사람만 가능한것이다

위와 같은 경로로간뒤 같은파일을연다.

설명에 맞춰 메소드를 넣고 빌드한다.


■ 각종 스크립트 명령어모음

# npc대화를 끝낼때 사용됩니다. cm.dispose();

# OK창이뜨는 대화창이뜨게합니다. cm.sendOk("할말");

# Next창이 뜨는 대화창이뜨게 합니다. cm.sendNext("할말");

# Prev창이 뜨는 대화창이뜨게 합니다. cm.sendPrev("할말");

# Next 와 Prev둘다 뜨게합니다. cm.sendNextPrev("할말");

# Yes 와 NO 창이뜨게합니다. cm.sendYesNo("할말");

# 수락과 거절창이 나오게합니다. cm.sendAcceptDecline("할말");

# 아무창도 없는 창이뜨게합니다. sendSimple("할말");

# 스타일이 뜨는 창이뜨게 합니다. cm.sendStyle("대화내용", 코드);

# 맵을 이동할수있는 메소드입니다. cm.warp(맵코드, 0);

# 상점창을 열어주는 메소드입니다. cm.openShop(상점코드);

# 플레이어에게 아이템을줍니다. cm.gainItem(아이템코드, 개수); (이것은 뺏기도가능합니다 갯수앞에 -를붙혀주세요)

# 플레이어의 직업을 변경한다. cm.changeJob(직업코드);

# 퀘스트를 시작한다. cm.startQuest(코드);

# 퀘스트를 완료한다. cm.completeQuest(코드);

# 퀘스트를 없앤다. cm.forfeitQuest(코드);

# 플레이어의 현재 메소를 확인한다. cm.getMeso();

# 플레이어에게 메소를 준다. cm.gainMeso(금액); (이것도 gainItem처럼 뺏기도가능합니다. 금액앞에 -를 붙혀주세요)

# 플레이어에게 경험치를 준다. cm.gainExp(경험치); (이것도 gainItem처럼 뺏기도가능합니다. 경험치앞에 -를 붙혀주세요)

# 플레이어에게 캐쉬를 준다. cm.gainCash(캐쉬); (이것도 gainItem처럼 뺏기도가능합니다. 캐쉬앞에 -를 붙혀주세요)

# 플레이어의 레벨을 확인한다. cm.getLevel();

# 플레이어에게 스킬가르친다. cm.teachSkill(스킬코드, 레벨, 마스터레벨);

# 플레이어의 스텟을 가르쳐준다. cm.get[Stat]();

# 다른NPC를 열어주는 메소드입니다. openNpc(NPC 코드);

관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


새댓글


  • 등록자 벼배릅 등록일 04.14
알림 0