• SEARCH

    통합검색
  • GAMEZONE
    • 커뮤니티
      • 공지사항
      • 유저게시판
        • 등업게시판
        • 출석체크
        • 정회원 무료자료실
      • 스크린샷
      • 인증자료실
    • 리니지
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 메이플스토리
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 바람의나라
      • 자유게시판
      • 홍보게시판
      • 자료게시판
        • 유틸자료실
        • 소스자료실
        • 클라이언트
        • 팩 자료실
      • 연구게시판
        • 개발내역
        • 질문과답변
        • 기타
      • 강의게시판
        • DR
        • CR
        • 구버전
        • 클라이언트 개조
        • 노하우 게시판
        • 게임공략 & 팁
    • 다크에덴
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 믹스마스터
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 라그나로크
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 기타게임
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 게임강의
    • 비베&포토샵
      • 자유게시판
      • 자료실
        • 일반자료실
        • 포인트 자료실
      • 노하우게시판
      • 포토샵게시판
    • 모바일
      • 게임공략
      • 포인트 자료실
      • 유틸자료실
      • 자유게시판
  • 메이플스토리 소스자료실
    • 메이플스토리 소스자료실 ()
    • [01] - 스크립트에서 사용되는 메서드를 추가해보자. [출처] [01] - 스크립트에서 사용되는 메서드를 추가해보자. (@USFM - 메이플스토리 공식 카페) |작성자 enoch_rvn

      • 원나소년
      • 2016.06.06 - 11:43 211

    안녕하세요~ 에녹입니다.

    다름이아니라, 계속 스크립트라던지, 소스코드를 배포하는것보다는

    그냥 강좌를 쓰는게 저한테도, 보는사람에게도 좋을것같아 한번 끄적여봅니당..

     

    오늘 제가 여러분에게 가르쳐드릴것은 스크립트에서 사용되는 메서드를 추가해보는겁니다.

    스크립트를 제작하시다보면, 제약적인것들이 많이 있습니다. 뭐 한 예를들어서

     

    '상대방의 레벨을 보는방법? 상대방의 레벨과 플레이어의 레벨을 비교해보고싶은데..'

    cm. 여기까지 적어두고 고민하게되는거죠. (아닌가 나만그런가..)

     

    말나온김에, 예제로 상대방의 닉네임을 적으면, 상대방의 레벨을 볼수있는 메서드를 만들어보겠습니다.

     

     

    준비물 :: 넷빈, 메모장

     

     

    모든 상황은 1.2.220v ArcP@CK 기반으로 둡니다.

     

    01.png?type=w740

     

    소스에 들어가시게되면, 많은 패키지들(왼쪽부분에 노란색 볏짚같이생긴거) 이 있는데

    scripting 부분을 클릭하시고 NPCConversationManager.java 를 열어줍시다.

     

    그리고 위와같이

     

    Public Int hisLevel(String name) {

            return c.hisLevel(name);

    }

     

    을 적어줍시다. 여기까지 따라하셨으면 분명히 에러가날것이에요.

    그 에러의 이유를 찾기위해선, c 의 존재를 알아두셔야합니다.

     

    c 는 MapleClient 즉 저 많은 패키지상자중 MapleClient.java 라는 소스코드를 참조하는겁니다.

    여기서 더 깊이있게 들어가면 지루하고 재미없으니. 대충 설명해드리자면

     

    c 는 MapleClient 라는 소스코드를 의미하는거고, MapleClient.hisLevel 이라는 메서드가 존재하지 않아서 나오는 오류입니다.

     

     

       Public Int hisLevel(String name) 부분을 궁금해하시는분들이 분명히 있을거에요.

       이것은 메서드의 이름은 hisLevel 이며, 숫자형을 반환받는 메서드라는 뜻이에요.

      

       즉 반환받는 메서드는 무조건 숫자 값을 hisLevel이라는 메서드에게 돌려주어야해요.

       눈치빠른 사람들은 대충 아시겠지만, return 의 존재 이유기도해요.

     

       그렇다면, MapleClient 에 있는 hisLevel 이란 메서드도 숫자형이란 뜻이겠죠?

     

       그리고 (String name) 이란 부분은, 바로 인자값이라는 부분이에요.

       작업을 처리할때, 매번 다른 값을 넣어야하는 경우가 있어요.

       쉽게 말하자면 저 부분은 이제 스크립트에서 다른사람의 닉네임을 작성할 곳이에요.

     

       var targetLvl = cm.hisLevel("다른사람닉네임"); 을 적어줄때, ("다른사람닉네임") 부분이 바로

       인자값을 받는부분이에요.

     

     

    자, 여기서 궁금하실거에요. 왜 MapleClient 를 굳이 참조해서 MapleClient 를 타고 작업을 처리하는거지?

    그냥 저기서 작업해버리면 안되나? 라고 묻는사람들이 계실거에요.

     

    간단하게 생각하시면되요.

    MapleClient 에서 처리해야 안전한 작업이 있기 때문이에요.

     

    자, 그러면 MapleClient 에도 저 메서드를 추가해야겠죠?

     

    02.png?type=w740

     

    public int hisLevel(String name) {
            final ChannelServer ch = ChannelServer.getInstance(channel);
            return ch.hisLevel(name);

    }

     

    자 이번에도 숫자형 메서드에요.

    NPCScript어쩌구저쩌구Manager.java 에서의 hisLevel 메서드도 숫자형이고, 그 메서드에서 반환되야하는 값이 숫자형이여야 하기때문에 이 MapleClient 에서도 숫자형을 사용하는거에요.. 라고 말하면 복잡하네.. 흠..

     

    아몰ㄹ랑

     

    어찌됬든, 전에 썻던 hisLevel 메서드보다 뭔가 더 추가가되어있어요.

     

     final ChannelServer ch = ChannelServer.getInstance(channel);

     

    패키지(launch) - 소스(ChannelServer) 에 있는놈을 참고하겠다는거에요.

    그리고 MapleClient 에서만 처리해야지 안전하다는 값이 저 channel 부분인데, 닥쳐 나도모르겠어

     

    여튼, VB하다가 야매로 배운 저라서 자세하게 알려줄 순 없어요.

    그리고 이놈도 숫자형 메서드라 값을 돌려줘야해요.

    그럼 참조받은 ChannelServer 의 메서드를 반환해줘요.

     

    return ch.hisLevel(name);

     

    그말인 즉, 채널서버에서도 hisLevel 메서드를 만들어주어야하고, 거기에서도 거기서만 처리할 수 있는 무언가가 있겠죠?

     

    03.png?type=w740

     

    public int hisLevel(String name) {
            if (isMyChannelConnected(name)) {
                return getPlayerStorage().getCharacterByName(name).getClient().getPlayer().getLevel();
            } else {
                return 0;
            }

    }

     

    어우 뭔가 많아요.

    하지만 걱정할거없어요. 정말 간단해요.

     

    한글로 풀어보도록할게요!

     

     만약에 (채널에 연결되어있으면(스크립트에서 받은 인자값이)) {
                값을 반환합니다. 이름을통해참조(스크립트에서 받은 인자값).그캐릭터의클라이언트().그캐릭터의정보().그캐릭터의레벨();
     } 연결되어있지 않으면 {
                아무것도없는 0을 반환합니다;
    }

     

    오 간단하죠? 아닌가? 여튼

    대충 이런 뜻이에요. 제가 어휘능력이 후달려서 정말 궁금하거나 이해안되는부분이있다면

    덧글로 지적해주세요. 응답해드리겠나이다.

     

    자 이제 빌드하고 적용하고 제대로 작동하는지 한번 봐야겠죠?

    NPCScript어쩌구저쩌구에서 hisLevel(인자값) 으로 만들었으니

    스크립트에서는

     

    var hisLevel = cm.hisLevel("캐릭터이름");

    cm.sendOk(hisLevel); 뭐 이런식으로 진행해야겠습니다!

     

    자 적당한 npc를 찾아봅시다.

     

    04.png?type=w740

     

    아 이년이 아닌데

     

    05.png?type=w740

     

    자 소스코드보이시죠? 저희가 만든 hisLevel 메서드에요!

     

    06.png?type=w740

     

    정상적으로 나오네요 ㅎㅎㅎㅎ

     

    자 이것만 만들면 존ㄴ나 쓸데가없잖아요.

    차라리 cm.getPlayer().getLevel() 쓰고말지.

     

    이제 응용을해봅시다.

     

    07.png?type=w740

     

    이부분은 알아서 이해해보도록해.

    힌트를 주자면 cm.sendGetText 에서 받은값은 cm.getText() 에 저장이됭.

    즉 우리가 만든 메서드에 적은 값을 받아오고, 되돌아오는값이 0이 아니면 상대방의 레벨으 ㄹ띄워주고

    0이면 상대방이 없다고 뜨는거지.

     

    왜 0이면 상대방이 없다고 뜨는지 이해가 안되면 위에 사진들의 소스를 한번씩 다시 읽어보도록 해.

     

    08.png?type=w740
     
    09.png?type=w740
     
    10.png?type=w740
     
    11.png?type=w740
     
    12.png?type=w740

     

    나 이제 나가봐야해서 횡설수설하고 어휘력도 병ㅇㅅ.. 이라.. 이해좀해줘.

     

    지적 달게받고 이해안되는것있으면 덧글로 질문해줘 형들!

     

    그럼이만 뿅★

    [출처] [01] - 스크립트에서 사용되는 메서드를 추가해보자. (@USFM - 메이플스토리 공식 카페) |작성자 enoch_rvn

    Attached file
    01.png 112.3KB 702.png 123.8KB 503.png 137.3KB 504.png 562.6KB 805.png 61.1KB 706.png 583.4KB 607.png 71.1KB 608.png 591.0KB 509.png 592.7KB 610.png 587.7KB 611.png 592.3KB 312.png 588.2KB 4
    이 게시물을..
    N
    0
    0
    • 1.2.65 아트 소스오빠는요
    • 8
      원나소년

    원나소년 님의 최근 글

    메이플스토리 캐릭터카드! 80 5 2016 06.07 메이플 링크스킬 정리 및 추천도!! [출처] 메이플 링크스킬 정리 및 추천도!!|작성자 세이 66 1 2016 06.07 [05] - 데이터베이스 연동 개발 심화 마지막 [출처] [05] - 데이터베이스 연동 개발 심화 마지막|작성자 enoch_rvn 99 2016 06.06 [04] - 데이터베이스 연동, 캐릭터 생성을 특별한 이벤트로만 가능하게 해보자 2편 [출처] [04] - 데이터베이스 연동, 캐릭터 생성을 특별한 이벤트로만 가능하게 해보자 2편|작성자 enoch_rvn 139 2016 06.06 [03] - 데이터베이스 연동, 캐릭터 생성을 특별한 이벤트로만 가능하게 해보자! [출처] [03] - 데이터베이스 연동, 캐릭터 생성을 특별한 이벤트로만 가능하게 해보자!|작성자 enoch_rvn 148 2016 06.06

    원나소년 님의 최근 댓글

    초보 개발자도 가능합니까? 아직   개발의 ㄱ자도 모르긴하는데.. 2016 06.07 구축하기 쉬운가용? 2016 06.02 흑 ㅜㅜ 팩을 구하고싶은데 ㅠㅠ 구글링하면 나오려나요?... 2016 06.02 라피스 해보고싶네요 정말 어떻게못하나요... 2016 05.31 하핳... 그런게임들은 프리서버 못하는건가요? 2016 05.31
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • 1.2.65 아트 소스
    • 목록
      view_headline
    × CLOSE
    기본 (942) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 소스자료는 직접 올려주세요
      2017.06.06 - 16:13 927
    942
    v391 pack
    더기덕이 2025.10.04 - 00:33 205
    941
    127 써니 소스
    전창덕 2025.09.23 - 14:30 43
    940
    1.2.65 서버 ct및 우외 엔진
    마눙 2025.09.08 - 14:47 120
    939
    1.2.362 서버 src 입니
    GV솔그린 2024.03.21 - 20:54 313
    938
    1.2.316 초원팩 jdbc ssl 에러 수정 src
    GV솔그린 2024.03.21 - 19:31 115
    937
    1.2.329 로컬리디 언팩해서 만든 리디렉터
    GV솔그린 2024.03.21 - 19:24 92
    936
    1.2.329 로컬리디
    GV솔그린 2024.03.21 - 19:20 70
    935
    373 멀티로컬
    dreamin공유 2024.02.22 - 05:29 356
    934
    331팩 소스
    스마 2024.02.12 - 20:53 123
    933
    1.2.373 새벽소스
    스마 2024.02.12 - 20:47 243
    932
    373 솟
    garegdas 2024.02.06 - 09:24 121
    931
    스트레딧.
    하리86 2024.01.13 - 03:34 151
    930
    1.2.65 아르카나팩 스킬 변경 src
    김김김스 2023.12.26 - 04:49 948
    929
    316초원팩 src파일입니다
    동동쓰 2023.11.15 - 21:29 294
    928
    gms v111 접속rn
    하리86 2023.10.23 - 18:28 230
    927
    65버전 아르카나 , 죽둥젠 늘린거입니다
    gkxo9570 2023.09.22 - 12:38 542
    926
    65버전에서도 쓴 스크립트 강의모음
    gkxo9570 2023.09.22 - 07:42 460
    925
    1.2.65 화이트스타 src
    kingye 2023.07.04 - 10:56 1146
    924
    1.2.65 아르카나 src
    kingye 2023.07.04 - 07:28 535
    923
    ngs 우회
    우2우2 2023.06.08 - 04:55 277
    922
    몬스터 코드
    VanBan 2022.12.10 - 23:38 552
    921
    직업 코드
    VanBan 2022.12.10 - 23:30 306
    920
    362 자석펫 지급 NPC 스크립트
    나르나르 2022.11.10 - 08:55 854
    919
    0.83 src
    qweqwedq1 2022.07.13 - 15:30 144
    918
    리플렉스95 src
    qweqwedq1 2022.07.13 - 15:08 327
    917
    1.2.65 바콘팩
    dullggae 2021.07.30 - 18:04 730
    916
    316src입니다
    BJK 2021.02.10 - 05:37 218
    915
    331 소스
    라비앙로즈 2021.02.07 - 08:43 441
    914
    슈퍼엔진
    돼지우리 2021.01.14 - 02:20 445
    913
    kms 1.2.1104 ct입니다
    돼지우리 2021.01.12 - 12:07 448
    912
    어빌리티인포테이블.sql
    하리86 2020.12.16 - 00:23 180
    911
    잠재능력 관련 오류 수정 및 본섭화 옵션
    하리86 2020.12.16 - 00:16 358
    910
    sql 수정
    재희0414 2020.11.24 - 03:23 274
    909
    65 천외천 소스
    lIllIlllIllll 2020.10.16 - 06:05 412
    908
    로컬 소스
    피아쨩 2020.09.22 - 13:01 520
    907
    331 노엘팩 소스
    풍선씨 2020.09.09 - 03:33 1227
    906
    1.2.65 화이트스타 소스
    JYH93 2020.08.15 - 00:44 2343
    905
    1.2.65 순클 idb
    nhsnhsn 2020.07.24 - 00:19 875
    904
    331 GM명령어
    흐밍 2020.07.09 - 14:14 1837
    903
    레벨별 메소지급 소스
    능이 2020.07.05 - 21:44 690
    902
    1.2.284 그랜드 접속문제 해결파일
    wls 2020.06.28 - 07:30 240
    901
    대만 메이플스토리 113 아이템코드
    해우김123 2020.06.19 - 07:47 304
    900
    Java SE Development Kit 6 Update 10 - jdk-6u10
    수박씨 2020.05.12 - 21:52 203
    899
    Java SE Development Kit 6 Update 6 - jdk-6u6
    수박씨 2020.05.12 - 21:51 124
    898
    316 추옵 쿼리에서 수정하기
    DanielJSKim 2020.03.08 - 05:03 1440
    897
    316 추가옵션 구현 소스
    DanielJSKim 2020.03.08 - 05:00 1181
    896
    알면 유용한 위젯
    오빠는요 2020.02.25 - 21:06 754
    895
    1.2.65dk
    오빠는요 2020.02.25 - 21:04 481
    894
    1.2.65 아트 소스
    오빠는요 2020.02.25 - 21:02 459
    893
    316 이너 어빌리티 미개방 캐릭터에 강제로 부여하기
    DanielJSKim 2020.02.23 - 02:44 499
    • 1 2 3 4 5 6 7 8 9 10 .. 19
    • / 19 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay