지도 기능

2007.04.12 12:59

그리움 조회 수:178 추천:59

이 소스는 INS비비에스에서 어떤 분이 올리신 글입니다.
기억이 잘 안나네여!

움. 그런데 지도를 화면에 출력하는 부분만 수정을 해주시면
아주 훌룡한 지도가 될거 같기에 올립니다.

지도 기능을 원하시는분들 이거 조금만 수정해보세여!

훌륭한 지도가 탄생될거 같네여. 참고로 제가 운영하는 천외천도
이와 비슷한 루틴을 이용해서 만들었거던요.

int map(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
    char rooms[6][6];
    char rooml[17];


    char Blank;
    room *rom_ptr, *new_rom;
    exit_ *ext_ptr;

    xtag *xp;
    int i, ii;

    rom_ptr = ply_ptr->parent_rom;
    Blank = ' ';
    for (i=0;i<6;i++)
      for (ii=0;ii<6;ii++)
        rooms[i][ii] = ' ';
    for (i=0;i<17;i++)
      rooml[i] = ' ';

    xp = rom_ptr->first_ext;

    if (xp) do {
      if (!strcmp(xp->ext->name, "동")) {
          rooml[9] = '-';
          rooms[3][4] = 'O';
          rooms[3][3] = 'S';

          load_rom(xp->ext->room, &new_rom);
            if (new_rom) {
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "동", 1);
              if (ext_ptr) {
                  rooml[10] = '-';
                  rooms[3][5] = 'O';
                  rooms[3][3] = 'S';

              }
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "남", 1);
              if (ext_ptr) {
                  rooml[13] = '|';
                  rooms[4][4] = 'O';
                  rooms[3][3] = 'S';
              }
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "북", 1);
              if (ext_ptr) {
                  rooml[6] = '|';
                  rooms[2][4] = 'O';
                  rooms[3][3] = 'S';
            }
      }
      }
      if (!strcmp(xp->ext->name, "서")) {
          rooml[8] = '-';
          rooms[3][2] = 'O';
          rooms[3][3] = 'S';

          load_rom(xp->ext->room, &new_rom);
            if (new_rom) {
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "서", 1);
              if (ext_ptr) {
                  rooml[7] = '-';
                  rooms[3][1] = 'O';
                  rooms[3][3] = 'S';
              }
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "남", 1);
              if (ext_ptr) {
                  rooml[11] = '|';
                  rooms[4][2] = 'O';
                  rooms[3][3] = 'S';
              }
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "북", 1);
              if (ext_ptr) {
                  rooml[4] = '|';
                  rooms[2][2] = 'O';
                  rooms[3][3] = 'S';
              }
          }
      }
      if (!strcmp(xp->ext->name, "남")) {
          rooml[12] = '|';
          rooms[4][3] = 'O';
          rooms[3][3] = 'S';

          load_rom(xp->ext->room, &new_rom);
            if (new_rom) {
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "동", 1);
              if (ext_ptr) {
                  rooml[15] = '-';
                  rooms[4][4] = 'O';
                  rooms[3][3] = 'S';
              }
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "서", 1);
              if (ext_ptr) {
                  rooml[14] = '-';
                  rooms[4][2] = 'O';
                  rooms[3][3] = 'S';
              }
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "남", 1);
              if (ext_ptr) {
                  rooml[16] = '|';
                  rooms[5][3] = 'O';
                  rooms[3][3] = 'S';
              }
          }
      }
      if (!strcmp(xp->ext->name, "북")) {
          rooml[5] = '|';
          rooms[2][3] = 'O';
          rooms[3][3] = 'S';

          load_rom(xp->ext->room, &new_rom);
            if (new_rom) {
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "동", 1);
              if (ext_ptr) {
                  rooml[3] = '-';
                  rooms[2][4] = 'O';
                  rooms[3][3] = 'S';
              }
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "서", 1);
              if (ext_ptr) {
                  rooml[2] = '-';
                  rooms[2][2] = 'O';
                  rooms[3][3] = 'S';
              }
              ext_ptr = find_ext(ply_ptr, new_rom->first_ext, "북", 1);
              if (ext_ptr) {
                  rooml[1] = '|';
                  rooms[1][3] = 'O';
                  rooms[3][3] = 'S';
              }
          }
      }
      } while(xp = xp->next_tag);
   print(ply_ptr->fd, "\n%c %c %c %c %c %c %c %c %c",
          rooms[1][1], Blank, rooms[1][2], Blank, rooms[1][3], Blank,
          rooms[1][4], Blank, rooms[1][5] );
    print(ply_ptr->fd, "\n%c %c %c %c %c %c %c %c %c",
          Blank, Blank, Blank, Blank, rooml[1], Blank, Blank, Blank,
          Blank);
    print(ply_ptr->fd, "\n%c %c %c %c %c %c %c %c %c",
          rooms[2][1], Blank, rooms[2][2], rooml[2], rooms[2][3],
          rooml[3], rooms[2][4], Blank, rooms[2][5] );
    print(ply_ptr->fd, "\n%c %c %c %c %c %c %c %c %c",
          Blank, Blank, rooml[4], Blank, rooml[5], Blank, rooml[6],
          Blank, Blank);
    print(ply_ptr->fd, "\n%c %c %c %c %c %c %c %c %c",
          rooms[3][1], rooml[7], rooms[3][2], rooml[8], rooms[3][3],
          rooml[9], rooms[3][4], rooml[10], rooms[3][5] );
    print(ply_ptr->fd, "\n%c %c %c %c %c %c %c %c %c",
          Blank, Blank, rooml[11], Blank, rooml[12], Blank, rooml[13],
          Blank, Blank);
    print(ply_ptr->fd, "\n%c %c %c %c %c %c %c %c %c",
          rooms[4][1], Blank, rooms[4][2], rooml[14], rooms[4][3],
          rooml[15], rooms[4][4], Blank, rooms[4][5] );
    print(ply_ptr->fd, "\n%c %c %c %c %c %c %c %c %c",
          Blank, Blank, Blank, Blank, rooml[16], Blank, Blank, Blank,
          Blank);
    print(ply_ptr->fd, "\n%c %c %c %c %c %c %c %c %c",
          rooms[5][1], Blank, rooms[5][2], Blank, rooms[5][3], Blank,
          rooms[5][4], Blank, rooms[5][5] );
          return(0);
}

홈지기 "그륨"


XE Login