Script강의 v0.1
컨텐츠 정보
- 511 조회
본문
# 꼬부기의 스크립트 강의 입니다
# 제작자 : 꼬부기([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 코드);
관련자료
-
이전
-
다음