패거리 상점 만들기

2007.04.12 13:02

그리움 조회 수:163 추천:48

출처 : INS BBS (gamebbs.co.kr)

제 목 : [MORDOR/소스] 패거리 상점 만들기 찬성 : 0 반대 : 0
올린이 : 우리짱이 (정현우 ) 읽음 : 25 날짜 : 99/11/12 14:00

1) 플래그 제작
   아이템 플레그에 OGROUP 라는 플래그를 추가 시킵니다. mtype.h에
   줄 한출만 추가시키면 되겠죠.?

2) 등록 명령어 제작
   등록 이라는 명령어를 하나 만드시고 (5142번 참고) 아래와 같이
   함수를 짜주세요.

   int item_accept(ply_ptr, cmnd)
   creature *ply_ptr;
   cmd *cmnd;
   {
     room *rom_ptr, *dep_ptr;
     object *obj_ptr;
     int fd;

     fd = ply_ptr->fd;
     rom_ptr = ply_ptr->parent_rom;

     if(!F_ISSET(ply_ptr, PFMBOS)) {
        print(fd, "당신은 패거리의 리더가 아닙니다.");
        return(0);
     }
        
     if(!F_ISSET(rom_ptr, RSHOPP)) {
        print(fd, "여기는 상점이 아닙니다.");
        return(0);
     }

     if(cmnd->num < 2) {
        print(fd, "무엇을 등록할까요?");
        return(0);
     }

     obj_ptr = find_obj(ply_ptr, ply_ptr->first_obj, cmnd->str[1],
               cmnd->val[1]);

     if(!obj_ptr) {
        print(fd, "당신은 그런것을 갖고 있지 않습니다.");
        return(0);
     }

     if(obj_ptr->questnum && ply_ptr->class < DM) {
        print(fd, "임무 아이템은 등록하지 못합니다.");
        return(0);
     }

     if(F_ISSET(obj_ptr, OEVENT) && ply_ptr->class < DM) {
        print(fd, "이벤트 아이템은 등록하지 못합니다.");
        return(0);
     }

     if(obj_ptr->first_obj) {
        print(fd, "내용물이 있는 보자기는 등록하지 못합니다.");
        return(0);
     }

     if(load_rom(rom_ptr->rom_num + 1, &dep_ptr) < 0) {
        print(fd, "등록할 수 없습니다.");
        return(0);
     }

     F_SET(obj_ptr, OGROUP);

     del_obj_crt(obj_ptr, ply_ptr);
     add_obj_rom(obj_ptr, dep_ptr);
     savegame_nomsg(ply_ptr);
     resave_rom(dep_ptr->rom_num);

     print(fd, "당신은 %1i%j 등록하였습니다.", obj_ptr,"3");
     broadcast_rom(fd, rom_ptr->rom_num, "\n%M%j %1i%j 등록했습니다.",
                   ply_ptr,"1", obj_ptr,"3");

     return(0);
   }

   이렇게 하면 대충 등록 명령은 끝날것 같군요.

3) 사 명령어 편집
   command7.c 의 buy 함수에서 다음 부분을 찾아주세요.

    add_obj_crt(obj_ptr2, ply_ptr);
    ply_ptr->gold -= obj_ptr2->value;
    print(fd, "당신은 %1i%j 샀습니다", obj_ptr2, "3");
    broadcast_rom(fd, ply_ptr->rom_num, "\n%M이 %1i%j 샀습니다.",
                  ply_ptr, obj_ptr2,"3");

   이 부분 바로 위에 다음을 추가해 주세요.

    if(F_ISSET(obj_ptr, OGROUP)) {
       num = ply_ptr->daily[DL_EXPND].max;

       crt_ptr = find_who(fmboss_str[num]);
       if (crt_ptr) {
           crt_ptr->war_gold += obj_ptr2->value;
         } else {
           load_ply(fmboss_str[num], &crt_ptr);
           crt_ptr->war_gold += obj_ptr2->value;
           save_ply(fmboss_str[num], &crt_ptr);
        }

       del_obj_rom(obj_ptr, dep_ptr);
       resave_rom(dep_ptr->rom_num);
    }

    그리고 추가로 선언해 주어야 할 함수

     int num;
     creature *crt_ptr;
                      
홈지기 "그륨"
번호 제목 글쓴이 날짜 조회 수
57 도배방지 그리움 2007.04.12 222
56 그룹경험치 소스 그리움 2007.04.12 220
55 패거리전쟁중 "휴전" 그리움 2007.04.12 220
54 직업 추가하기 그리움 2007.04.12 218
53 자동으로 돈줍기 소스 그리움 2007.04.12 213
52 경매는 이렇게 그리움 2007.04.12 213
51 어디 그리움 2007.04.12 211
50 무한에서 안시 넣는 방법 그리움 2007.04.12 210
49 방설명 지우기 그리움 2007.04.12 209
48 특수 아이템 만들기 그리움 2007.04.12 209
47 복권 소스 그리움 2007.04.12 207
46 혼자 말하는 몹 그리움 2007.04.12 206
45 자동 이벤트 그리움 2007.04.12 204
44 낮과 밤이 되면 어둡고 환하게 그리움 2007.04.12 203
43 귀환장소 변경 소스 #1 그리움 2007.04.12 202
42 개량형 우체국 그리움 2007.04.12 202
41 주문추가 소스 그리움 2007.04.12 201
40 출구모양 개량 소스 그리움 2007.04.12 201
39 자동수련 소스 그리움 2007.04.12 201
38 잡담 안시 사용하기 그리움 2007.04.12 200


XE Login