• SEARCH

    통합검색
  • GAMEZONE
    • 커뮤니티
      • 공지사항
      • 유저게시판
        • 등업게시판
        • 출석체크
        • 정회원 무료자료실
      • 스크린샷
      • 인증자료실
    • 리니지
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 메이플스토리
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 바람의나라
      • 자유게시판
      • 홍보게시판
      • 자료게시판
        • 유틸자료실
        • 소스자료실
        • 클라이언트
        • 팩 자료실
      • 연구게시판
        • 개발내역
        • 질문과답변
        • 기타
      • 강의게시판
        • DR
        • CR
        • 구버전
        • 클라이언트 개조
        • 노하우 게시판
        • 게임공략 & 팁
    • 다크에덴
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 믹스마스터
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 라그나로크
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 기타게임
      • 게임공략 & 팁
      • 홍보게시판
      • 유틸자료실
      • 소스자료실
      • 자유게시판
      • 노하우 게시판
    • 게임강의
    • 비베&포토샵
      • 자유게시판
      • 자료실
        • 일반자료실
        • 포인트 자료실
      • 노하우게시판
      • 포토샵게시판
    • 모바일
      • 게임공략
      • 포인트 자료실
      • 유틸자료실
      • 자유게시판
  • 바람의나라 강의게시판 CR
    • 바람의나라 강의게시판 CR ()
    • [CR] zz // OnPCKill 그룹 관련

      • 행복e
      • 2016.07.28 - 17:33 126
    OnPCKill에 대한 설명을 해드리겠습니다.
    참고용 스크립트는 제가 묵향서버에서 사용했던 스크립트입니다.
    설명은 스크립트 내에 중간중간에 주석을 넣어서 설명하겠습니다.
     
    script    OnPCKill    {
        set @sd, mysd();
        set @id, myid();
    /*
    @kill 부분은 당연히 아실거라고 생각합니다.
    우선 유저가 몬스터를 킬하게되면 OnPCKill 이라는 콜백 함수를 불러옵니다.
    이 콜백함수가 불려오면서 @kill 이라는 임시변수에 저는 마지막에 잡은 몬스터의 id값을 받아옵니다.
    get_lastkillmob_id() 이함수는 몬스터의 id값 즉 mob_db에있는 몬스터의 번호를 불러옵니다.
    예를 들어 다람쥐의 번호가 5번일경우 5번인 다람쥐가 불려오는거죠.
    */
        set @kill, get_lastkillmob_id(@mysd);
     
    /*
    이 부분은 파티가 있는지를 체크하는부분입니다. 저는 파티가 있고 없고의 여부가아닌
    파티원이 몇명인지를 체크하고 조건을 나누어 주었습니다.
    */
        set @party, party_member_count(@sd);
     
    // 앞서 말했던거 처럼 저는 몇명인지를 체크합니다. 즉 파티는 2명이상으로 이루어집니다. 그래서 2이상이라는 조건을 주었구요.
            if(@party >= 2)
    {
    /*
    파티 멤버를 체크 하는 폴문입니다. 파티원 수만큼 폴문이 돌아갑니다.
    */
                for(set @i, 0; @i < @party; set @i, @i+1)
                {
    /*
    파티원 수만큼 돌아가며 파티원의 sd값과 id값을 구하기 위해 party_member의 함수를 사용하였습니다.
    party_member의 함수는 sd값을 구해줍니다. 순서는 0부터 시작이고 0은 파티장입니다.
    */
                    set @party_sd, party_member(@sd, @i);
                    set @party_id, sd2id(@party_sd);
     
    /*
    쩔하는것을 방지하기위해 만든 부분입니다. 자신과 2이상 차이가 난다면.
    몬스터를 잡은 사람을 제외한 승급차수가 2이상 차이나는 유저를 강제 로그아웃시킵니다.
    */
                    set @joblvck, get_joblevel(@sd) - get_joblevel(@party_sd);
                    if(@joblvck < 0)
                    {
                        set @joblvck, @joblvck * -1;
                    }
     
                    if(@joblvck >= 2)
                    {
                        for(set @i, 0; @i < 40; set @i, @i+1)
                        {
                            warp @party_sd, get_mapid(@party_sd), get_x(@party_id), get_y(@party_id);
                        }
                    }
    /*
    이 부분은 왜 있느냐? 하고 생각 하실껍니다.
    참고로 cr에서 평민과 그룹을 한상태로 다른맵에서 몬스터를 사냥시 약 10%정도 더 들어오게됩니다.
    cr의 취약점을 방지하기위해 만들었습니다.
    만약 그룹에 평민이 있으면 평민 캐릭을 강제 로그아웃 시킵니다.
    */
                    if(get_job(@party_sd) == 0)
                    {
                        for(set @i, 0; @i < 40; set @i, @i+1)
                        {
                            warp @party_sd, get_mapid(@party_sd), get_x(@party_id), get_y(@party_id);
                        }
                    }
    /*
    이 부분은 이제 그룹후 사냥시 보상을 주게될경우 유령에게는 보상을 주지 않기 위해 만들었습니다.
    */
                    if(get_state(@party_sd) != 1)
                    {
    /*
    파티원이 잡은사람과 같은 맵에 있는지를 체크해줍니다.
    */
                        if(get_mapid(@sd) == get_mapid(@party_sd))
                        {
    /*
    계정변수를 임의로 수정해주는 함수를 쓴곳은 사냥에 관련된 퀘스트를 그룹 전체가 같이 수행할 수 있게 하기위해 만들었습니다.
    */
                            set @LV_QST, get_uservar_i(@party_sd, "$LV_QST");
                            set @LV_QSTZ, get_uservar_i(@party_sd, "$LV_QSTZ");
                            if(@LV_QST == @kill && @LV_QSTZ == 0)
                            {
                                set_uservar_i @party_sd, "LV_QSTZ", @LV_QSTZ + 1;
                                message @party_sd, 4, "[알림] 몬스터 퇴치 완료";
                            }
     
                            set @LV_QST2, get_uservar_i(@party_sd, "$LV_QST2");
                            set @LV_QSTZ2, get_uservar_i(@party_sd, "$LV_QSTZ2");
                            if(@LV_QST2 == 1 && @LV_QSTZ2 < 100)
                            {
                                if(@kill == 200 || @kill == 201 || @kill == 202 || @kill == 203)
                                {
                                    set_uservar_i @party_sd, "LV_QSTZ2", @LV_QSTZ2 + 1;
                                    set @LV_QSTZ2, get_uservar_i(@party_sd, "$LV_QSTZ2");
                                    message @party_sd, 4, "[알림] 선비족 " + @LV_QSTZ2 + " / 100";
                                }
                            }
                            else if(@LV_QST2 == 2 && @LV_QSTZ2 < 100)
                            {
                                if(@kill == 13011 || @kill == 13014)
                                {
                                    set_uservar_i @party_sd, "LV_QSTZ2", @LV_QSTZ2 + 1;
                                    set @LV_QSTZ2, get_uservar_i(@party_sd, "$LV_QSTZ2");
                                    message @party_sd, 4, "[알림] 낙랑의장난감 " + @LV_QSTZ2 + " / 100";
                                }
                            }
                            else if(@LV_QST2 == 3 && @LV_QSTZ2 < 100)
                            {
                                if(@kill == 13012 || @kill == 13015)
                                {
                                    set_uservar_i @party_sd, "LV_QSTZ2", @LV_QSTZ2 + 1;
                                    set @LV_QSTZ2, get_uservar_i(@party_sd, "$LV_QSTZ2");
                                    message @party_sd, 4, "[알림] 낙랑의동물 " + @LV_QSTZ2 + " / 100";
                                }
                            }   
                            else if(@LV_QST2 == 4 && @LV_QSTZ2 < 100)
                            {
                                if(@kill >= 204 && @kill <= 211)
                                {
                                    set_uservar_i @party_sd, "LV_QSTZ2", @LV_QSTZ2 + 1;
                                    set @LV_QSTZ2, get_uservar_i(@party_sd, "$LV_QSTZ2");
                                    message @party_sd, 4, "[알림] 흉노족 " + @LV_QSTZ2 + " / 100";
                                }
                            }
                            else if(@LV_QST2 == 5 && @LV_QSTZ2 < 100)
                            {
                                if(@kill == 2005 || @kill == 2006 || @kill == 2007 || @kill == 2008)
                                {
                                    set_uservar_i @party_sd, "LV_QSTZ2", @LV_QSTZ2 + 1;
                                    set @LV_QSTZ2, get_uservar_i(@party_sd, "$LV_QSTZ2");
                                    message @party_sd, 4, "[알림] 비류성 " + @LV_QSTZ2 + " / 100";
                                }
                            }
                            else if(@LV_QST2 == 6 && @LV_QSTZ2 < 100)
                            {
                                if(@kill == 310 || @kill == 311 || @kill == 312 || @kill == 13017)
                                {
                                    set_uservar_i @party_sd, "LV_QSTZ2", @LV_QSTZ2 + 1;
                                    set @LV_QSTZ2, get_uservar_i(@party_sd, "$LV_QSTZ2");
                                    message @party_sd, 4, "[알림] 소연지봉 " + @LV_QSTZ2 + " / 100";
                                }
                            }
     
                            if(@LV_QSTZ2 == 100)
                            {
                                set_uservar_i @party_sd, "LV_QSTZ2", @LV_QSTZ2 + 1;
                                message @party_sd, 4, "[알림] 몬스터 군대 소탕 완료";
                            }
    // 북해
                            set @bookha, get_uservar_i(@party_sd, "$bookha");
                            set @bookhamob, get_uservar_i(@party_sd, "$bookhamob");
                            if(@bookha == 1 && @bookhamob < 100 && @kill == 11189)
                            {
                                set_uservar_i @party_sd, "bookhamob", @bookhamob + 1;
                                set @bookhamob, get_uservar_i(@party_sd, "$bookhamob");
                                message @party_sd, 5, "* 북해퀘스트 * [ 얼음귀 " + @bookhamob + "/100 ]";
                            }
                            else if(@bookha == 2 && @bookhamob < 150 && @kill == 11190)
                            {
                                set_uservar_i @party_sd, "bookhamob", @bookhamob + 1;
                                set @bookhamob, get_uservar_i(@party_sd, "$bookhamob");
                                message @party_sd, 5, "* 북해퀘스트 * [ 북해록 " + @bookhamob + "/150 ]";
                            }
                            else if(@bookha == 3 && @bookhamob < 200 && @kill == 11191)
                            {
                                set_uservar_i @party_sd, "bookhamob", @bookhamob + 1;
                                set @bookhamob, get_uservar_i(@party_sd, "$bookhamob");
                                message @party_sd, 5, "* 북해퀘스트 * [ 북해룡 " + @bookhamob + "/200 ]";
                            }
                            else if(@bookha == 4 && @bookhamob < 1 && @kill == 11192)
                            {
                                set_uservar_i @party_sd, "bookhamob", @bookhamob + 1;
                                set @bookhamob, get_uservar_i(@party_sd, "$bookhamob");
                                message @party_sd, 5, "* 북해퀘스트 * [ 청빙룡 " + @bookhamob + "/1 ]";
                            }
    //
    // 억경드랍
    /*
    억경 드랍부분에 관한 부분입니다. 이부분은 제가 예전에 만들었다 너무 노답이여서
    좀더 줄이고자 보완한 부분입니다. 급하게 수정해서 수정이 완벽히 끝나진 않았습니다.
    */
                            set @randtime, rand(1,100);                       
                            if(@randtime <= 5)
                            {
                                if(@kill == 200 || @kill == 201)
                                {
                                    set @itemn$, "일억경";
                                    set @item, 31223;
                                    set @count, 1;
                                    if(get_joblevel(@party_sd) >= 3)
                                    {
                                        set @count, 0;
                                    }
                                }
                                else if(@kill == 13011 || @kill == 204 || @kill == 210 || @kill == 211 || @kill == 2005 || @kill == 2006)
                                {
                                    set @itemn$, "일억경";
                                    set @item, 31223;
                                    set @count, 2;
                                    if(get_joblevel(@party_sd) >= 3 && @kill == 13011)
                                    {
                                        set @count, 0;
                                    }
                                }
                                else if(@kill == 13012 || @kill == 860 || @kill == 870)
                                {
                                    set @itemn$, "일억경";
                                    set @item, 31223;
                                    set @count, 4;
                                    if(get_joblevel(@party_sd) <= 2)
                                    {
                                        if(@kill == 860 || @kill == 870)
                                        {
                                            set @count, 0;
                                        }
                                    }
                                }
                                else if(@kill == 310 || @kill == 311 || @kill == 9806 || @kill == 890 || @kill == 891)
                                {
                                    set @itemn$, "일억경";
                                    set @item, 31223;
                                    set @count, 6;
                                    if(get_joblevel(@party_sd) <= 3 && @kill == 9806)
                                    {
                                        set @count, 0;
                                    }
                                    else if(get_joblevel(@party_sd) <= 2)
                                    {
                                        if(@kill == 890 || @kill == 891)
                                        {
                                            set @count, 0;
                                        }
                                    }
                                }
                                else if(@kill == 313 || @kill == 314 || @kill == 315)
                                {
                                    set @itemn$, "십억경";
                                    set @item, 20295;
                                    set @count, 1;
                    &

     

    이 게시물을..
    N
    0
    0
    • [CR] [스크립트] '스크립트'의 가장 기초적인 설명3로이로이로이로이
    • 0
      행복e

    행복e 님의 최근 글

    작성 글이 없습니다.

    행복e 님의 최근 댓글

    작성 댓글이 없습니다.
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • [CR] [스크립트] '스크립트'의 가장 기초적인 설명3
    • 목록
      view_headline
    × CLOSE
    기본 (92) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    92
    전체 노획 소스.
    프렌치좋아 2024.03.31 - 19:15 24
    91
    링클래식 APM GM 설정 오류 해결법
    마렬 2020.05.14 - 18:53 362
    90
    시간마다 나오는 공지를 수정하려면!
    하늘별풍선 2020.05.07 - 05:08 178
    89
    [CR] Bind Failed 오류 발생 시
    누스 2018.08.28 - 21:55 351
    88
    (초심자 관점) 2. CR 구축 방법
    하얀달 2017.01.15 - 17:06 3786
    87
    (초심자 관점) 1. APMSETUP7 다운 방법
    하얀달 2017.01.15 - 16:30 1659
    86
    [CR] 함수 기능 정리
    마사카 2017.01.07 - 05:18 4124
    85
    CR 운영자 명령어
    웨이1 2017.01.03 - 23:14 2325
    84
    CR 스크립트 if 문
    웨이1 2017.01.03 - 23:12 575
    83
    CR 변수
    웨이1 2017.01.03 - 23:11 392
    82
    스크립트 지식
    웨이1 2017.01.03 - 23:10 695
    81
    아이템 체크 사용자 정의 함수
    웨이1 2017.01.03 - 23:06 388
    80
    npc생성
    웨이1 2017.01.03 - 23:04 598
    79
    cr shop_db 참고
    웨이1 2017.01.03 - 22:46 342
    78
    맵블럭 오류
    웨이1 2017.01.03 - 22:44 465
    77
    CR 아이템 추가
    웨이1 2017.01.03 - 22:41 940
    76
    소지품 확인 사용자 정의 함수
    웨이1 2017.01.03 - 21:29 293
    75
    [CR] 인던 추가방법
    웨이1 2017.01.03 - 21:27 1457
    74
    가독성 높은 스크립트 짜기!
    김돌돌 2016.12.24 - 22:27 654
    73
    서버 느리게하는 요소
    김돌돌 2016.12.24 - 01:30 971
    72
    프바 몹추가 팁
    김돌돌 2016.12.24 - 01:29 1005
    71
    cr 구축법
    김돌돌 2016.12.24 - 01:28 1527
    70
    맵 연결포트 강의입니다.
    김돌돌 2016.12.24 - 00:07 398
    69
    머리 염색 NPC 강의
    옹동봉 2016.12.22 - 20:36 165
    68
    [CR] ㅇㅇㅇㄹ // cr 초간단 강의 onpclogin
    우지냥 2016.12.18 - 13:30 350
    67
    [CR] cr에서 숫자값을 저장할 수 있는 함수
    우지냥 2016.12.18 - 13:30 133
    66
    스크립트 팁 - 가독성 좋게해주는 팁
    우지냥 2016.12.09 - 07:21 194
    65
    유저가 접속안했을때 아이피 쉽게 알아낼수있는 간단한 TIP입니다
    우지냥 2016.12.09 - 07:20 271
    64
    [CR] Chapter. 3-1 꼭 알아둬야할 CR의 문제점
    우지냥 2016.12.03 - 20:34 798
    63
    [CR] 동화 // 조건의종류
    우지냥 2016.12.03 - 20:33 115
    62
    [CR] 동화 // 조건문의 기초
    우지냥 2016.12.03 - 20:33 113
    61
    CR] 동화 // 변수란 무엇인가?
    우지냥 2016.12.03 - 20:33 134
    60
    [CR] 동화 // 간략하고 짧은 강의
    우지냥 2016.12.03 - 20:32 206
    59
    [CR] 원거리 공격마법 만들기
    우지냥 2016.12.03 - 20:32 351
    58
    [CR] 전설 // 이전 강의에 이은 2번째 강의!
    우지냥 2016.12.03 - 20:31 199
    57
    [CR] 전설 // 허접한 강의(전반적인 스크립트 설명)
    우지냥 2016.12.03 - 20:31 284
    56
    [CR] 이영아 // callfunc
    우지냥 2016.12.03 - 20:31 177
    55
    [CR] Chapter. 2-2 데이터베이스[ 엔피씨 ]강의
    우지냥 2016.12.03 - 20:30 123
    54
    [CR] Chapter. 2-1 데이터베이스[ 엔피씨 ]강의
    우지냥 2016.12.03 - 20:30 247
    53
    [CR] Chapter. 1-2 통합파일의 구조체( 무료 )
    우지냥 2016.12.03 - 20:30 456
    52
    [CR] Chapter. 1-1 CR이라는 구동기에 대한 이해( 무료 )
    우지냥 2016.12.03 - 20:29 527
    51
    [기타] 레이더즈 // IPv4 Address 구조강좌..
    우지냥 2016.12.03 - 20:29 138
    50
    [CR] 레이더즈 // 상점NPC만들기..
    우지냥 2016.12.03 - 20:29 190
    49
    [CR] 주작 // CALLFUNC "SLOTCHECK"
    우지냥 2016.12.03 - 20:28 96
    48
    [CR] 주작 // CALLFUNC "ITEMCOUNT
    우지냥 2016.12.03 - 20:28 99
    47
    [CR] 주작 // [기타] 해당 좌표의 아이템 읽어오기
    우지냥 2016.12.03 - 20:27 156
    46
    [CR] 주작 // switch문 추가 강의
    우지냥 2016.12.03 - 20:27 97
    45
    [CR] 그림과 함께 하는 랭킹적용(랭킹자료포함)
    행복e 2016.11.30 - 19:28 346
    44
    [CR] [스크립트] '스크립트'의 가장 기초적인 설명3
    로이로이로이로이 2016.10.25 - 16:50 159
    43
    [CR] [스크립트] '스크립트'의 가장 기초적인 설명2
    로이로이로이로이 2016.10.25 - 16:50 167
    • 1 2
    • / 2 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay