귀환장소 변경 소스 #1

2007.04.12 11:41

그리움 조회 수:202 추천:61

이번에 귀환장소 소스를 공개하게 됐네요 ^6

(이건 제가 쓰는 머드에서 사용중인것이므로 ^^ 자신의 머드에 맞게 고쳐쓰세요 ^^)

1. global.c 에 '귀환장소'명령어를 추가한다.

2. mtype.h 에 PRTACI , PRTNOW , PRTPAS 추가한다.

3. 밑의 소스 추가 ^^ (현재 귀환장소가 디폴트값)

/***********************************************************************/
/* 귀환장소 설정 */
/***********************************************************************/
/* Make by 젤가디스 */

int return_place(ply_ptr,cmnd)

creature *ply_ptr;
cmd *cmnd;

{

      room *rom_ptr;
      char *str[20];
      int fd;

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

      if(cmnd->num < 2){
      ANSI(fd,CYAN);
      print(fd,"어디로 귀환하시려구요?\n");
      print(fd,"- 형식 : 귀환희망장소 귀환장소 -\n");
      ANSI(fd,WHITE);
      return(0);
      }

     if(!strcmp(cmnd->str[1],"과거")){
     F_SET(ply_ptr,PRTACI);
     F_CRL(ply_ptr,PRTNOW);
     F_CRL(ply_ptr,PRTPAS);

     print(fd,"과거로 귀환합니다.\n");
     return 0;
     }

     else if(!strcmp(cmnd->str[1],"현대")){
     F_SET(ply_ptr,PRTNOW);
     F_CRL(ply_ptr,PRTACI);
     F_CRL(ply_ptr,PRTPAS);
     print(fd,"현대로 귀환합니다.\n");
     return 0;
     }

     else if(!strcmp(cmnd->str[1],"미래")){
     F_SET(ply_ptr,PRTPAS);
     F_CRL(ply_ptr,PRTACI);

     F_CRL(ply_ptr,PRTNOW);
     print(fd,"미래로 귀환합니다.\n");
     return 0;
     }

     else{
     print(fd,"그런 귀환장소는 없습니다.\n");
     print(fd,"현대로 귀환합니다.\n");
     F_CRL(ply_ptr,PRTPAS);
     F_CRL(ply_ptr,PRTACI);
     F_SET(ply_ptr,PRTNOW);
     return 0;

     }
}

5. COMMAND1.C 부분의 귀환장소 수정

int return_square(ply_ptr,cmnd)
creature *ply_ptr;
cmd *cmnd;
{
       room *rom_ply;
       int fd;
       ctag *cp;

rom_ply=ply_ptr->parent_rom;
fd=ply_ptr->fd;

if(ply_is_attacking(ply_ptr,cmnd)) {

print(fd,"당신은 싸우고 있는 중입니다!!");
return 0;
}

/*if(rom_ply->rom_num==1001) {
print(fd,"당신은 이미 광장에 와 있습니다!");
return 0;
}*/
if(F_ISSET(ply_ptr,PRTNOW) && rom_ply->rom_num==1001)
       { print(fd,"당신은 이미 광장에 와 있습니다!\n");
       return 0; }

               else if(F_ISSET(ply_ptr,PRTACI) && rom_ply->rom_num==7)
       { print(fd,"당신은 이미 광장에 와 있습니다!\n");
       return 0; }
               else if(F_ISSET(ply_ptr,PRTPAS) && rom_ply->rom_num==16)
           { print(fd,"당신은 이미 광장에 와 있습니다!\n");
       return 0; }


       if(ply_ptr->following) {
           cp = ply_ptr->following->first_fol;
       }
       else {
           cp = ply_ptr->first_fol;
       }
       if(cp){
           print(fd,"먼저 그룹에서 나오세요.");
           return(0);
       }

if(ply_ptr->level>20 && ply_ptr->class print(fd, "당신이 귀환하려하자 흑암의 세력이 당신의 도력을 뺏습니다.\n");
ply_ptr->mpcur = 0;
}


print(fd, "당신이 \"귀환!\"이라고 외치자 이상한 힘에 의해 어딘가로 빨려들어갑니
다.");

if(!F_ISSET(ply_ptr,PDMINV))

broadcast_rom(fd,ply_ptr->rom_num,"\n%m님이 갑자기 사라집니다!",ply_ptr);

       del_ply_rom(ply_ptr,rom_ply);

       if(!F_ISSET(ply_ptr,PFRTUN)){

       if(F_ISSET(ply_ptr,PRTNOW))
/*현대 광장으로 귀환*/

       load_rom(1001,&rom_ply);

/*과거 광장으로 귀환*/

       else if(F_ISSET(ply_ptr,PRTACI))
       load_rom(7,&rom_ply);

/*미래 광장으로 귀환*/
       else if(F_ISSET(ply_ptr,PRTPAS))
       load_rom(16,&rom_ply);
}

       else
       load_rom(3300 + ply_ptr->daily[DL_EXPND].max, &rom_ply);

       add_ply_rom(ply_ptr,rom_ply);

if(!F_ISSET(ply_ptr,PDMINV))
broadcast_rom(fd,ply_ptr->rom_num, "\n%m님이 갑자기 자욱한 연기와 함께 나타났습니다!",ply_ptr);
return 0;

}

이렇게 한후 make 하시면 될껍니다.
현재 제 머드에서 사용중이니깐요 ^^
빼먹은게 있을 수도 있으니깐 버그가 있으면 연락주세요 ^^

아참 이 소스를 제작하게 아이디어를 주신 '프리드러시' 엑 감사드립니다.
번호 제목 글쓴이 날짜 조회 수
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
» 귀환장소 변경 소스 #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