지도 기능
2007.04.12 12: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);
}
홈지기 "그륨"
기억이 잘 안나네여!
움. 그런데 지도를 화면에 출력하는 부분만 수정을 해주시면
아주 훌룡한 지도가 될거 같기에 올립니다.
지도 기능을 원하시는분들 이거 조금만 수정해보세여!
훌륭한 지도가 탄생될거 같네여. 참고로 제가 운영하는 천외천도
이와 비슷한 루틴을 이용해서 만들었거던요.
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);
}
홈지기 "그륨"
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
37 | 개량형 우체국 | 그리움 | 2007.04.12 | 230 |
36 | 기술추가 | 그리움 | 2007.04.12 | 246 |
35 | 안시 문자열로 인한 공백 #2 | 그리움 | 2007.04.12 | 242 |
» | 지도 기능 | 그리움 | 2007.04.12 | 219 |
33 | 안시 사용하기 | 그리움 | 2007.04.12 | 209 |
32 | 분신을 만드는 기술 | 그리움 | 2007.04.12 | 221 |
31 | 방설명 안시 넣기 | 그리움 | 2007.04.12 | 212 |
30 | 패거리 전쟁 승패 기록 | 그리움 | 2007.04.12 | 210 |
29 | 접속화면을 멋있게 | 그리움 | 2007.04.12 | 197 |
28 | 패거리 직위 내리기 | 그리움 | 2007.04.12 | 200 |
27 | 이도류 | 그리움 | 2007.04.12 | 237 |
26 | 안시 문자열로 인한 공백 | 그리움 | 2007.04.12 | 230 |
25 | 자동으로 돈줍기 #2 | 그리움 | 2007.04.12 | 237 |
24 | 자동 이벤트 | 그리움 | 2007.04.12 | 242 |
23 | 낮과 밤이 되면 어둡고 환하게 | 그리움 | 2007.04.12 | 241 |
22 | 직업 추가하기 #2 | 그리움 | 2007.04.12 | 233 |
21 | 경매는 이렇게 | 그리움 | 2007.04.12 | 250 |
20 | 패거리전쟁중 "휴전" | 그리움 | 2007.04.12 | 257 |
19 | 도배방지 | 그리움 | 2007.04.12 | 266 |
18 | 직업 추가하기 | 그리움 | 2007.04.12 | 254 |