• SEARCH

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

      • 자택경비
      • 2025.07.28 - 13:19 63

    GPT에게 물어보고 적용하면서 수정함

     

    신루 서버 파일은 Language_M.txt의 순서?에 따라서 아이템 코드가 바뀌는걸로 알고 있음

     

    그러니 미러서버 파일에서 정상작동하던 룬스톤들을 다른 서버 파일에서 작동시키면 작동이 안됨

     

    되는 룬스톤도 있지만 안되는 룬스톤도 있고 아예 안될수도 있음

     

    이게 미러서버 파일에 맞게 해당 아이템 코드들을 하드코딩으로 아예 박아둬서 그런거라

     

    다른 서버파일에서도 동일하게 작동하게 하려면 해당 코드들을 Item(Code).txt에서 읽어서 적용하면

     

    해당 아이템 코드가 존재할때 작동을 하게 만들 수 있음

     

    #define RuneStone                   318771247   //룬스톤
    #define ReinforceRuneStone          318771263   //강화 룬스톤
    #define ProtectReinforceRuneStone   318771262   //보호 강화 룬스톤
    #define ProtectRuneStone            318771261   //보호 룬스톤
    #define BlackRuneStone              318771275   //블랙 룬스톤
    #define SuperRuneStone              318771277   //슈퍼 룬스톤
    #define RecyclingItem               318771278   //도깨비 방망이

     

    이 부분의 코드를 define에서 int로 변경하고 = 0; 을 붙여서 int형 변수로 바꿔주고

    도깨비 방망이는 내가 사용하지 않아서 뺐음.... 그래도 작동 원리는 동일하니

     

    int RuneStone = 0;
    int ReinforceRuneStone = 0;
    int ProtectReinforceRuneStone = 0;
    int ProtectRuneStone = 0;
    int BlackRuneStone = 0;
    int SuperRuneStone = 0;
    int Miracle = 0;  //기존 코드에서 define으로 선언하지 않고 아이템 코드를 그대로 넣은 부분이라서 이건 코드에서 그 부분 찾아서 변수를 넣어줘야됨
    int ProtectScroll = 0;  //기존 코드에서 define으로 선언하지 않고 아이템 코드를 그대로 넣은 부분이라서 이건 코드에서 그 부분 찾아서 변수를 넣어줘야됨

     

    이렇게 변경을 해준뒤에

     

    아래 코드들을 추가해주고

     

    void LoadItemCodesFromFile()
    {
        char exePath[MAX_PATH] = {};
        GetModuleFileNameA(NULL, exePath, MAX_PATH);

        for (int i = strlen(exePath) - 1; i >= 0; --i) {
            if (exePath[i] == '\\') {
                exePath[i] = '\0';
                break;
            }
        }

        strcat_s(exePath, "\\Config\\Item(Code).txt");

        std::ifstream file(exePath);
        if (!file.is_open()) {
            printf("파일 열기 실패: %s\n", exePath);
            return;
        }
        std::string line;
        while (std::getline(file, line)) {
            if (line.empty()) continue;

            size_t colonPos = line.find(':');
            if (colonPos == std::string::npos) continue;

            std::string name = line.substr(0, colonPos);
            std::string codeStr = line.substr(colonPos + 1);

            name.erase(0, name.find_first_not_of(" \t"));
            name.erase(name.find_last_not_of(" \t") + 1);

            codeStr.erase(0, codeStr.find_first_not_of(" \t"));
            codeStr.erase(codeStr.find_last_not_of(" \t") + 1);

            int code = atoi(codeStr.c_str());
            if (code != 0 || codeStr.find("0") != std::string::npos) {
                itemCodeMap[name] = code;
            }
            else {
                printf("파싱 실패: [%s] = [%s]\n", name.c_str(), codeStr.c_str());
            }
        }

        file.close();
    }

     

    해당 코드로 Item(Code).txt를 읽어온 뒤

     

     

    int GetItemCode(const std::string& name)
    {
        auto it = itemCodeMap.find(name);
        return (it != itemCodeMap.end()) ? it->second : -1;
    }

    void InitItemCodes()
    {
        RuneStone = GetItemCode("룬스톤");
        ReinforceRuneStone = GetItemCode("강화 룬스톤");
        ProtectReinforceRuneStone = GetItemCode("보호 강화 룬스톤");
        ProtectRuneStone = GetItemCode("보호 룬스톤");
        BlackRuneStone = GetItemCode("블랙 룬스톤");
        SuperRuneStone = GetItemCode("슈퍼 룬스톤");
        ProtectScroll = GetItemCode("보호주문서");
        Miracle = GetItemCode("미라클 통행증");

        if (ProtectScroll == -1) {

            ProtectScroll = GetItemCode("보호 주문서");

        }

        if (SuperRuneStone == -1) {

            SuperRuneStone = GetItemCode("슈퍼룬스톤");

        }

        if (ProtectRuneStone == -1) {

            ProtectRuneStone = GetItemCode("보호룬스톤");

        }

        if (ReinforceRuneStone == -1) {

            ReinforceRuneStone = GetItemCode("강화룬스톤");

        }

        if (ProtectReinforceRuneStone == -1) {

            ProtectReinforceRuneStone = GetItemCode("보호 강화룬스톤");

            if (ProtectReinforceRuneStone == -1) {

                ProtectReinforceRuneStone = GetItemCode("보호강화 룬스톤");

                if (ProtectReinforceRuneStone == -1) {

                    ProtectReinforceRuneStone = GetItemCode("보호강화룬스톤");

                }

            }

        }

    }

     

    해당 코드로 가장 먼저 선언한 변수에 코드 값을 넣어주면

     

    기존에 define로 선언해서 사용하던 부분들에 item(Code).txt에서 읽어온 값으로 들어가게 됨

     

    만약 해당 아이템 값이 없다면 -1 로 들어가면서 작동이 안됨

     

    어떤 아이템이 적용되는지는

     

    void PrintLoadedItemCodes()
    {
        printf("   [아이템 코드 확인] \n");
        printf("-1로 나오는거는 코드가 없는 것 \n");
        printf("코드가 있는데 안나온다면 띄어쓰기 확인 \n");
        printf("룬스톤: %d\n", RuneStone);
        printf("강화 룬스톤: %d\n", ReinforceRuneStone);
        printf("보호 룬스톤: %d\n", ProtectRuneStone);
        printf("보호 강화 룬스톤: %d\n", ProtectReinforceRuneStone);
        printf("슈퍼 룬스톤: %d\n", SuperRuneStone);
        printf("다크 룬스톤: %d\n", BlackRuneStone);
        printf("보호주문서: %d\n", ProtectScroll);
        printf("미라클 통행증 : %d\n", Miracle);
        printf("------------------------- \n");

    }

     

    해당 코드를 넣고 확인하면됨

     

    위 코드들이 작동하기 위해서는

     

    맨 아래쪽에

     

    void HookClass::HookFunctions()
    {
        if (MH_Initialize() != MH_OK)
        {
            LeaveCriticalSection(&cs);
            return;
        }

        InitializeCriticalSection(&cs);
        InitializeCriticalSectionAndSpinCount(&cs, 0);
        LoadItemCodesFromFile();  //아이템 코드 읽기
        InitItemCodes();  //아이템 코드 읽기
        PrintLoadedItemCodes();  //적용된 코드 확인
    ..........

    }

     

        LoadItemCodesFromFile();  //아이템 코드 읽기
        InitItemCodes();  //아이템 코드 읽기
        PrintLoadedItemCodes();  //적용된 코드 확인

     

    이 3줄을 포함시켜서 작동시킬때 확인하면 됨

     

    이러면 미러서버파일뿐만 아니라 다른 기존 통파일에서도 해당 아이템 코드가 존재한다면 사용이 가능해짐

     

    이걸로해서 가장 흔하게 퍼진 지피지기 통파일에서 룬스톤, 보호룬스톤, 강화룬스톤, 보호강화룬스톤, 슈퍼룬스톤 5개의 작동을 확인했음

     

    슈퍼룬스톤의 경우 해당 코드가 존재하지만 아이템이 룬스톤 아이템이 아니라서 강화 시도시 경고창이 뜨지 않고 바로 작동하는 문제가 있긴함

     

    어떤식으로 넣어야 될지는 GPT에게 물어보면 친절하게 알려줌

     

    이 게시물을..
    N
    0
    0
    • c언어 출력 인사법닉쿤이람이
    • BDO 영어 클라이언트 인터페이스Yireeli
    • 12
      자택경비

    자택경비 님의 최근 글

    미러서버 파일 코드 수정 63 2025 07.28 프로젝트 신루 NPC스크립트2 136 4 2023 11.07 프로젝트 신루 NPC스크립트 작성하기 134 13 2023 10.22 프로젝트 신루 NPC 스크립트 작성하기 57 2023 10.22 프로젝트신루 전직NPC추가하기 129 7 2023 10.17

    자택경비 님의 최근 댓글

    아.. 아님 찾았음 2025 09.01 윈도우 xp말고 7이상에서 구동할때 MainSvrT가 정상적으로 실행이 안되는데 왜그럴까요.... 2025 09.01 전에 이팩 구해서 뜯어봤는데 진짜 머리아픔.... 버그없이 쓰려면 룬스톤 기능만 남기고 싹 지우는게 가장 좋음 2025 07.25 ㄳㄳ 2024 04.26 ㄳㄳ 2024 04.12
    글쓴이의 서명작성글 감추기 
    댓글 쓰기 에디터 사용하기 닫기
    • view_headline 목록
    • 14px
    • c언어 출력 인사법
    • BDO 영어 클라이언트 인터페이스
    • 목록
      view_headline
    × CLOSE
    전체 던파 5 뮤 18 천상비 프로젝트신루 5 아이온 18 어둠의전설 28 리니지2 7 크로노스 5 칼온라인 3 기타 194
    기본 (286) 제목 날짜 수정 조회 댓글 추천 비추
    분류 정렬 검색
    • 소스자료는 직접 올려주세요
      2017.06.06 - 16:16 665
    286
    기타
    입력과 출력1
    a74654 2025.09.26 - 01:09 29
    285
    기타
    변수명 지정과 C언어 프로그램의 구조
    a74654 2025.09.26 - 01:08 22
    284
    기타
    문자열형 변수와 논리변수
    a74654 2025.09.26 - 01:08 10
    283
    기타
    논리적 오류와 아스키코드
    a74654 2025.09.26 - 01:07 15
    282
    기타
    자료형(코딩의 이해)
    a74654 2025.09.25 - 18:42 31
    281
    기타
    자료형 코딩의 이해
    a74654 2025.09.24 - 20:07 20
    280
    기타
    C언어 시작하기2
    a74654 2025.09.24 - 20:06 17
    279
    기타
    c언어 개발환경 만들기
    a74654 2025.09.24 - 20:05 19
    278
    기타
    c언어 기초 배우기
    a74654 2025.09.24 - 19:57 29
    277
    기타
    c언어 출력 인사법
    닉쿤이람이 2025.08.04 - 14:16 38
    프로젝트신루
    미러서버 파일 코드 수정
    자택경비 2025.07.28 - 13:19 63
    275
    기타
    BDO 영어 클라이언트 인터페이스
    Yireeli 2024.04.13 - 08:54 68
    274
    어둠의전설
    베노미
    인존 2024.03.04 - 09:36 88
    273
    칼온라인
    게임 서버 클래스값
    인존 2024.03.04 - 09:34 113
    272
    던파
    던파 CT입니다
    꺼즈 2024.02.04 - 16:58 544
    271
    기타
    포토샵 꿀팁
    아가입니다 2024.02.04 - 09:38 56
    270
    기타
    블소 아이템 코드 한글입니다,
    팡234 2023.12.03 - 22:33 285
    269
    기타
    블소 신석지급방법 입니다.
    팡234 2023.12.03 - 22:31 135
    268
    기타
    블소 아이템 코드 정리해봤습니다.
    팡234 2023.12.03 - 22:28 143
    267
    기타
    블소 아이디 생성방법입니다
    팡234 2023.12.03 - 00:22 149
    266
    프로젝트신루
    프로젝트 신루 NPC스크립트2
    자택경비 2023.11.07 - 02:24 136
    265
    프로젝트신루
    프로젝트 신루 NPC 스크립트 작성하기
    자택경비 2023.10.22 - 22:09 57
    264
    프로젝트신루
    프로젝트신루 전직NPC추가하기
    자택경비 2023.10.17 - 23:04 129
    263
    프로젝트신루
    NPC 추가 및 스크립트 추가
    자택경비 2023.10.17 - 20:45 100
    262
    기타
    최강의군단 신규(NightWalker)나이트워커 스크립트
    잼과베이컨 2023.07.31 - 18:16 238
    261
    기타
    이터널시티(EternalCity)1_ 스크립트
    잼과베이컨 2023.07.31 - 18:08 369
    260
    기타
    소울워커(SoulWorker) 스팀 asm 스크립트
    잼과베이컨 2023.07.31 - 18:05 158
    259
    기타
    아바(A.V.A) AOB, ASM 스크립트
    잼과베이컨 2023.07.31 - 17:59 77
    258
    기타
    데카론 한글 던전리스트
    일루션 2023.06.21 - 19:01 151
    257
    기타
    데카론 한글 맵리스트
    일루션 2023.06.21 - 18:59 83
    256
    기타
    스톤에이지 8.0 서버 소스
    김철수12 2023.05.31 - 14:35 419
    255
    기타
    천년 상승무공 자동지급
    애꾸형님 2023.05.10 - 17:04 191
    254
    기타
    천년 무공 자동지급
    애꾸형님 2023.05.10 - 17:03 131
    253
    기타
    sega saturn region patcher
    강사내 2023.05.10 - 14:29 34
    252
    아이온
    4.6 버전 스킬 목록 직접 파싱하여 뽑아낸 자료 입니다.
    여기룽 2023.04.03 - 08:51 196
    251
    크로노스
    0g 팩
    막눈 2023.01.13 - 02:12 232
    250
    기타
    Lunia Online Source
    paking 2021.03.15 - 15:49 341
    249
    아이온
    in_game_shop
    BlueServer 2021.02.08 - 13:58 255
    248
    기타
    미니파이터 SPR 이미지 압축해제 소스
    애플민트 2021.01.11 - 09:41 297
    247
    기타
    포토샵 단축키 모음
    아악브로임다 2020.11.29 - 13:33 99
    246
    기타
    MS-OFFICE CD를 넣으라는 메시지가 나올 때..
    아악브로임다 2020.11.29 - 13:32 70
    245
    기타
    이 컨트롤을 활성화하여 사용하려면 클릭하십시오 메시지 해결 방법
    아악브로임다 2020.11.29 - 13:31 51
    244
    기타
    인터넷(IE7) 사용 중 [액세스 허용]을 묻는 대화상자가 안 나오도록..
    아악브로임다 2020.11.29 - 13:29 41
    243
    기타
    구글 번역기를 홈페이지에 달기
    아악브로임다 2020.11.29 - 13:28 106
    242
    기타
    테일즈런너 소스
    예서 2020.10.27 - 09:52 389
    241
    기타
    Maven, m2eclipse설치 후 eclipse에서 WTP용 프로젝트 생성 삽질!
    애니콜런 2020.09.20 - 22:41 120
    240
    기타
    HttpCore를 이용한 Basic HTTP Server 만들기
    애니콜런 2020.09.20 - 22:40 113
    239
    기타
    [Spring Boot] 간단한 RestAPI 및 JPA 예제.
    애니콜런 2020.09.20 - 22:39 90
    238
    기타
    No$gba 3D 향상
    애니콜런 2020.09.20 - 22:38 107
    237
    기타
    Solaris 10 MQSL 설치 과정
    애니콜런 2020.09.20 - 22:37 82
    • 1 2 3 4 5 .. 6
    • / 6 GO
  • GAMEZONE
 GAMEZONE all rights reserved.
by OrangeDay