Mordor에 있는 몹 소환 소스
2007.04.12 13:08
*****************************************************************************
귀환장소 소스 수정판. 메카 총관리 히네시스
*****************************************************************************
/* 이 소스는 김광철 (그리움)님의 귀환장소 소스를
약간만 수정한 버젼입니다. -오류가 날 수 있기 때문에-
최대한 초보자도 이해할 수 있게 설명하려 애썼습니다.
무한대전 1.04b에서 테스트 했습니다.
현제 사용하고 있는 소스입니다.
1. global.c 에 '귀환장소'명령어를 추가한다. "귀환장소", 빈번호 return_place
2. mextern.h 에 return_square 밑에 return_place를 추가.
3. mtype.h 에 PRTACI , PRTNOW , PRTPAS 를 추가해 준다. 사용안하는 플레그번호로
4. command1.c 에 귀환 소스를 모두 지운다.
return_square를 모두 지우면 된다. 아마도 소스 맨 끝쯤에 있을것이다.
5. 지운 후 아래의 return_square와 return_place 두개 소스를 그대로 복사한다.
6. 복사가 끝났으면 각자 자신의 머드에 맞게 출력문을 수정한다.
(이 소스 그대로 썼다가는 -- 귀환할때 "어쩌고 저쩌고 귀환합니다." 라고
나오게 된다. 머드를 조잡하게 만들고 싶으시다면 그대로 쓰시길 -,.-)
7. 이제 게임상에서 [설정] 이라고 치면 나오는 화면에 설정된 귀환장소가 나오게
추가해 주면 끝. (한.. 3줄? 정도 추가하면 끝.)
참고로 command5.c 에 960번째줄 쯤에 설정화면 소스가 있다.
위에있는 것들 보고 그대로 이름만 바꿔서 추가하면됨.
소스 나갑니다.
/****************************************************************************/
/* 귀환장소 설정 */
/****************************************************************************/
/* 텔넷- bit.bbs.co.kr 메카 히네시스 */
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;
}*/
/* 무한대전에 디폴트로 잡혀있는 1001번 방을 채크 */
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==방번호)
형식으로 지금 있는방을 체크해서 귀환이 안되게 함. */
else if(F_ISSET(ply_ptr,PRTACI) && rom_ply->rom_num==1002)
{ print(fd,"당신은_이미_광장에_와_있습니다!\n");
return 0; }
else if(F_ISSET(ply_ptr,PRTPAS) && rom_ply->rom_num==1003)
{ 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);
/* 아래 소스에는 ply_ptr->level>20 으로. 레벨이 20 이하면
귀환할때 도력이 모두 없어진다. 원치 않으면 1로 수정해도 상관없다. */
} 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))
/*디폴트1001번 광장으로 귀환*/
load_rom(1001,&rom_ply);
/*두번째 귀환장소로 귀환*/
else if(F_ISSET(ply_ptr,PRTACI))
load_rom(1002,&rom_ply);
/*세번째 귀환장소로 귀환*/
else if(F_ISSET(ply_ptr,PRTPAS))
load_rom(1003,&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;
}
/****************************************************************************/
/* 귀환장소 설정 */
/****************************************************************************/
/* 메카 히네시스 */
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],"귀환1")){
F_SET(ply_ptr,PRTACI);
F_CLR(ply_ptr,PRTNOW);
/* 예전 소스에는 이부분이 F_CRL으로 표기되어 있었다.
이렇게 할 경우 오류가 나므로 F_CLR로 옳은 함수를 사용했다. */
F_CLR(ply_ptr,PRTPAS);
print(fd,"어쩌고 저쩌고해서 귀환1번 방으로 귀환합니다.\n");
return 0;
}
/*디폴트 1001번 방으로 귀환.*/
else if(!strcmp(cmnd->str[1],"광장")){
F_SET(ply_ptr,PRTNOW);
F_CLR(ply_ptr,PRTACI);
F_CLR(ply_ptr,PRTPAS);
print(fd,"어쩌고저쩌고 해서 광장으로_귀환합니다.\n");
return 0;
}
else if(!strcmp(cmnd->str[1],"귀환2")){
F_SET(ply_ptr,PRTPAS);
F_CLR(ply_ptr,PRTACI);
F_CLR(ply_ptr,PRTNOW);
print(fd,"어쩌고 저쩌고해서 귀환2번 방으로_귀환합니다.\n");
return 0;
}
else{
print(fd,"그런_귀환장소는_없습니다.\n");
print(fd,"광장으로_귀환합니다.\n");
F_CLR(ply_ptr,PRTPAS);
F_CLR(ply_ptr,PRTACI);
F_SET(ply_ptr,PRTNOW);
return 0; }
}
*주의! 이대로 컴파일 해버리면 아이디를 새로 만들고 들어올경우 귀환장소가 설정되어 있지 않기 때문에 귀환이 안된다.
때문에 [어디 귀환장소]를 해주어야 귀환이 가능해 진다.
이것을 처음부터 설정되도록 해줘야 한다.
command1.c 의 create_ply 부분의 마지막쯤에
[입력된 암호가 너무 짧습니다.] 다음부분에
아이디 생성 후 바로 귀환장소가 설정되어 있도록 해줘야 합니다.
/* 중략 */
print(fd, "입력된_암호가_너무_짧습니다.\n암호를_다시_넣으십시요(3자이상_14자이하):_");
RETURN(fd, create_ply, 8);
}
strncpy(Ply[fd].ply->password, str, 14);
strcpy(Ply[fd].ply->name, Ply[fd].extr->tempstr[0]);
up_level(Ply[fd].ply);
Ply[fd].ply->fd = fd;
init_ply(Ply[fd].ply);
init_alias(Ply[fd].ply);
F_SET(Ply[fd].ply,PLECHO); /* 없는 소스도 있습니다. */
F_SET(Ply[fd].ply,PPROMP); /* 없는 소스도 있습니다. */
/* 이부분만 추가. PRTNOW는 디폴트 1001번방인 장소 */
F_SET(Ply[fd].ply,PRTNOW);
/* 추가 끝. */
Ply[fd].ply->gold = 10000;
save_ply(Ply[fd].ply->name, Ply[fd].ply);
print(fd, "%c%c%c\n",255,252,1);
/* 하략 */
이렇게 한줄을 추가해 주시면 아이디 생성 후 자동으로
귀환장소가 1001번 방인 곳으로 설정됩니다.
이해 하시겠죠? ^_^
* 이 외에도 [출구 설정] 이나 [묘사보기 설정] 등을
아이디 생성 후 자동으로 설정되어 있게 하려면
위에 추가한 것처럼 응용하시면 됩니다.
-메카 총관리 히네시스-
귀환장소 소스 수정판. 메카 총관리 히네시스
*****************************************************************************
/* 이 소스는 김광철 (그리움)님의 귀환장소 소스를
약간만 수정한 버젼입니다. -오류가 날 수 있기 때문에-
최대한 초보자도 이해할 수 있게 설명하려 애썼습니다.
무한대전 1.04b에서 테스트 했습니다.
현제 사용하고 있는 소스입니다.
1. global.c 에 '귀환장소'명령어를 추가한다. "귀환장소", 빈번호 return_place
2. mextern.h 에 return_square 밑에 return_place를 추가.
3. mtype.h 에 PRTACI , PRTNOW , PRTPAS 를 추가해 준다. 사용안하는 플레그번호로
4. command1.c 에 귀환 소스를 모두 지운다.
return_square를 모두 지우면 된다. 아마도 소스 맨 끝쯤에 있을것이다.
5. 지운 후 아래의 return_square와 return_place 두개 소스를 그대로 복사한다.
6. 복사가 끝났으면 각자 자신의 머드에 맞게 출력문을 수정한다.
(이 소스 그대로 썼다가는 -- 귀환할때 "어쩌고 저쩌고 귀환합니다." 라고
나오게 된다. 머드를 조잡하게 만들고 싶으시다면 그대로 쓰시길 -,.-)
7. 이제 게임상에서 [설정] 이라고 치면 나오는 화면에 설정된 귀환장소가 나오게
추가해 주면 끝. (한.. 3줄? 정도 추가하면 끝.)
참고로 command5.c 에 960번째줄 쯤에 설정화면 소스가 있다.
위에있는 것들 보고 그대로 이름만 바꿔서 추가하면됨.
소스 나갑니다.
/****************************************************************************/
/* 귀환장소 설정 */
/****************************************************************************/
/* 텔넷- bit.bbs.co.kr 메카 히네시스 */
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;
}*/
/* 무한대전에 디폴트로 잡혀있는 1001번 방을 채크 */
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==방번호)
형식으로 지금 있는방을 체크해서 귀환이 안되게 함. */
else if(F_ISSET(ply_ptr,PRTACI) && rom_ply->rom_num==1002)
{ print(fd,"당신은_이미_광장에_와_있습니다!\n");
return 0; }
else if(F_ISSET(ply_ptr,PRTPAS) && rom_ply->rom_num==1003)
{ 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);
/* 아래 소스에는 ply_ptr->level>20 으로. 레벨이 20 이하면
귀환할때 도력이 모두 없어진다. 원치 않으면 1로 수정해도 상관없다. */
} 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))
/*디폴트1001번 광장으로 귀환*/
load_rom(1001,&rom_ply);
/*두번째 귀환장소로 귀환*/
else if(F_ISSET(ply_ptr,PRTACI))
load_rom(1002,&rom_ply);
/*세번째 귀환장소로 귀환*/
else if(F_ISSET(ply_ptr,PRTPAS))
load_rom(1003,&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;
}
/****************************************************************************/
/* 귀환장소 설정 */
/****************************************************************************/
/* 메카 히네시스 */
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],"귀환1")){
F_SET(ply_ptr,PRTACI);
F_CLR(ply_ptr,PRTNOW);
/* 예전 소스에는 이부분이 F_CRL으로 표기되어 있었다.
이렇게 할 경우 오류가 나므로 F_CLR로 옳은 함수를 사용했다. */
F_CLR(ply_ptr,PRTPAS);
print(fd,"어쩌고 저쩌고해서 귀환1번 방으로 귀환합니다.\n");
return 0;
}
/*디폴트 1001번 방으로 귀환.*/
else if(!strcmp(cmnd->str[1],"광장")){
F_SET(ply_ptr,PRTNOW);
F_CLR(ply_ptr,PRTACI);
F_CLR(ply_ptr,PRTPAS);
print(fd,"어쩌고저쩌고 해서 광장으로_귀환합니다.\n");
return 0;
}
else if(!strcmp(cmnd->str[1],"귀환2")){
F_SET(ply_ptr,PRTPAS);
F_CLR(ply_ptr,PRTACI);
F_CLR(ply_ptr,PRTNOW);
print(fd,"어쩌고 저쩌고해서 귀환2번 방으로_귀환합니다.\n");
return 0;
}
else{
print(fd,"그런_귀환장소는_없습니다.\n");
print(fd,"광장으로_귀환합니다.\n");
F_CLR(ply_ptr,PRTPAS);
F_CLR(ply_ptr,PRTACI);
F_SET(ply_ptr,PRTNOW);
return 0; }
}
*주의! 이대로 컴파일 해버리면 아이디를 새로 만들고 들어올경우 귀환장소가 설정되어 있지 않기 때문에 귀환이 안된다.
때문에 [어디 귀환장소]를 해주어야 귀환이 가능해 진다.
이것을 처음부터 설정되도록 해줘야 한다.
command1.c 의 create_ply 부분의 마지막쯤에
[입력된 암호가 너무 짧습니다.] 다음부분에
아이디 생성 후 바로 귀환장소가 설정되어 있도록 해줘야 합니다.
/* 중략 */
print(fd, "입력된_암호가_너무_짧습니다.\n암호를_다시_넣으십시요(3자이상_14자이하):_");
RETURN(fd, create_ply, 8);
}
strncpy(Ply[fd].ply->password, str, 14);
strcpy(Ply[fd].ply->name, Ply[fd].extr->tempstr[0]);
up_level(Ply[fd].ply);
Ply[fd].ply->fd = fd;
init_ply(Ply[fd].ply);
init_alias(Ply[fd].ply);
F_SET(Ply[fd].ply,PLECHO); /* 없는 소스도 있습니다. */
F_SET(Ply[fd].ply,PPROMP); /* 없는 소스도 있습니다. */
/* 이부분만 추가. PRTNOW는 디폴트 1001번방인 장소 */
F_SET(Ply[fd].ply,PRTNOW);
/* 추가 끝. */
Ply[fd].ply->gold = 10000;
save_ply(Ply[fd].ply->name, Ply[fd].ply);
print(fd, "%c%c%c\n",255,252,1);
/* 하략 */
이렇게 한줄을 추가해 주시면 아이디 생성 후 자동으로
귀환장소가 1001번 방인 곳으로 설정됩니다.
이해 하시겠죠? ^_^
* 이 외에도 [출구 설정] 이나 [묘사보기 설정] 등을
아이디 생성 후 자동으로 설정되어 있게 하려면
위에 추가한 것처럼 응용하시면 됩니다.
-메카 총관리 히네시스-
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
77 | 무한대전 방 데이터 Convert | 그리움 | 2007.11.23 | 491 |
76 | 몹 소환하여 소환몹이 대신 싸우게 하기 | 그리움 | 2007.11.23 | 27435 |
75 | 물건, 몹의 번호 찾아내기. | 그리움 | 2007.07.04 | 456 |
74 | *괴물이름 방폭 버그 수정 | 그리움 | 2007.04.12 | 585 |
73 | 게시판 버그 해결 방법. | 그리움 | 2007.04.12 | 528 |
72 | 연타기능 - 연타수 자동 | 그리움 | 2007.04.12 | 501 |
71 | 연타기능 - 직업별 연타 | 그리움 | 2007.04.12 | 534 |
70 | 감옥/퇴소 | 그리움 | 2007.04.12 | 390 |
69 | 운영자명령 "보고" | 그리움 | 2007.04.12 | 327 |
68 | 낚시 | 그리움 | 2007.04.12 | 338 |
67 | 방전체 공격루틴 #2 | 그리움 | 2007.04.12 | 332 |
66 | 온라인 리붓 | 그리움 | 2007.04.12 | 342 |
» | Mordor에 있는 몹 소환 소스 | 그리움 | 2007.04.12 | 332 |
64 | 귀환장소 수정판 | 그리움 | 2007.04.12 | 313 |
63 | 프롬프트 그래프화 #2 | 그리움 | 2007.04.12 | 340 |
62 | 주민등록번호 검사 소스 | 그리움 | 2007.04.12 | 476 |
61 | 프롬프트 그래프화 | 그리움 | 2007.04.12 | 315 |
60 | 이동하는 몹 | 그리움 | 2007.04.12 | 334 |
59 | 머드에서 몹 심기 | 그리움 | 2007.04.12 | 344 |
58 | 개척 소스 | 그리움 | 2007.04.12 | 354 |