방 전체공격 소스
2007.04.12 11:40
/*
* 무한 소스를 이용한 방전체 공격.
*
* 이 함수는 누구나 사용이 가능하며, 사용에 아무런 제약은 없습니다.
* 또한, 이 함수의 사용에 따른 문제점에 대해서 전 아무런 책임을
* 지지 않습니다. 이 함수에 대한 문의사항은 아래의 E-Mail 주소로
* 해주시면 됩니다. 단, 제가 답변을 해야 한다는 의무는 없다는 것을
* 미리 밝혀둡니다.
* 몇부분 정도 체크를 하는 부분은 간단한 예만 있으므로, 자신의 소스에
* 맞춰서 더 추가하거나 고치시면 됩니다.
*/
int room_attack(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
room *rom_ptr;
int fd, m, n, mpdown;
ctag *cp, *ctemp;
long i, t;
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
/* 직업 체크 */
if(ply_ptr->class < CARETAKER) {
print(fd, "이건 초인만 쓸수 있어요!!!");
return(0);
}
if(F_ISSET(ply_ptr, PBLIND)) {
print(fd, "아무것도 보이지 않습니다.");
return(0);
} /* 실명 상태인지 체크. 벙어리 상태인지 체크등 추가하면 됨. */
mpdown = (ply_ptr->mpmax) * 2 /10;
/* 도력 소모량 : 최대 도력의 20%를 사용 */
/* mpdown = 100; 등과 같이 사용하면 됨. */
if(ply_ptr->mpcur < mpdown) {
print(fd, "당신의 도력이 부족합니다.");
return(0);
}
/* 딜레이의 체크 */
/* 먼저 mtype.h 에서 LT_RATTCK 이라는 것을 정의해둬야 함 */
i = LT(ply_ptr, LT_RATTCK);
t = time(0);
if(i > t) {
please_wait(fd, i-t);
return(0);
}
ply_ptr->lasttime[LT_RATTCK].ltime = t;
ply_ptr->lasttime[LT_RATTCK].interval = 20L; /* 딜레이가 20초임 */
ply_ptr->mpcur -= mpdown;
F_CLR(ply_ptr, PHIDDN); /* 은신 상태 해제 */
if(F_ISSET(ply_ptr, PINVIS)) { /* 은둔법 걸고 있을 경우 */
F_CLR(ply_ptr, PINVIS);
print(fd, "당신의 모습이 서서히 드러납니다.\n");
broadcast_rom(fd, ply_ptr->rom_num,
"\n%M의 모습이 서서히 드러납니다.", ply_ptr);
}
print(fd, "당신은 어쩌구저쩌구 하여서 방전체 공격을 합니다.");
broadcast_rom(fd, ply_ptr->rom_num,
"\n%M%j 어쩌구저쩌구 하여서 방전체 공격을 합니다.", ply_ptr, "1");
/* 여기서부터가 실제 공격을 들어가는 부분 */
n = mdice(ply_ptr) + mpdown/5;
/* 공격의 타격치 계산 : 아래 while 문에서 중간에 넣어도 관계없음 */
cp = rom_ptr->first_mon;
while(cp) {
ctemp = cp->next_tag; /* ctemp를 사용하는 이유는, 공격으로 인해
몹이 죽을 경우를 대비해서 사용
사용하지 않으면, 버그 생김 -.- */
if(F_ISSET(cp->crt, MUNKIL)) {
cp = ctemp;
continue;
} /* 공격할수 없는 몹 체크 */
if(cp->crt == ply_ptr) {
cp = ctemp;
continue;
} /* 몹이 이 기술을 사용할 경우를 대비해서 넣어둠.
그럴 가능성은 없으므로 빼도 됨. --; */
m = MIN(cp->crt->hpcur, n);
add_enm_crt(ply_ptr->name, cp->crt);
add_enm_dmg(ply_ptr->name, cp->crt, m);
cp->crt->hpcur -= n;
printa(fd, "\n%M%j 어쩌구하면서 기술에 맞았습니다.", cp->crt, "1");
broadcast_rom(fd, rom_ptr->rom_num,
"\n%M%j 어쩌구하면서 기술에 맞았습니다.", cp->crt, "1");
if(cp->crt->hpcur < 1) { /* 죽였을 경우 */
printa(fd, "\n당신은 %M%j 죽였습니다.", cp->crt,"3");
broadcast_rom(fd, cp->crt->rom_num,
"\n%M%j %M%j 죽였습니다.", ply_ptr,"1", cp->crt, "3");
die(cp->crt, ply_ptr);
}
else /* 자동 도망 체크 */
check_for_flee(ply_ptr, cp->crt);
cp = ctemp;
}
return(0);
}
p.s 이소스를 사용해 보신 분이. 에러가 난다고 하는군요.
어느부분인지 잘 모르지만..
그럼.
* 무한 소스를 이용한 방전체 공격.
*
* 이 함수는 누구나 사용이 가능하며, 사용에 아무런 제약은 없습니다.
* 또한, 이 함수의 사용에 따른 문제점에 대해서 전 아무런 책임을
* 지지 않습니다. 이 함수에 대한 문의사항은 아래의 E-Mail 주소로
* 해주시면 됩니다. 단, 제가 답변을 해야 한다는 의무는 없다는 것을
* 미리 밝혀둡니다.
* 몇부분 정도 체크를 하는 부분은 간단한 예만 있으므로, 자신의 소스에
* 맞춰서 더 추가하거나 고치시면 됩니다.
*/
int room_attack(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
room *rom_ptr;
int fd, m, n, mpdown;
ctag *cp, *ctemp;
long i, t;
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
/* 직업 체크 */
if(ply_ptr->class < CARETAKER) {
print(fd, "이건 초인만 쓸수 있어요!!!");
return(0);
}
if(F_ISSET(ply_ptr, PBLIND)) {
print(fd, "아무것도 보이지 않습니다.");
return(0);
} /* 실명 상태인지 체크. 벙어리 상태인지 체크등 추가하면 됨. */
mpdown = (ply_ptr->mpmax) * 2 /10;
/* 도력 소모량 : 최대 도력의 20%를 사용 */
/* mpdown = 100; 등과 같이 사용하면 됨. */
if(ply_ptr->mpcur < mpdown) {
print(fd, "당신의 도력이 부족합니다.");
return(0);
}
/* 딜레이의 체크 */
/* 먼저 mtype.h 에서 LT_RATTCK 이라는 것을 정의해둬야 함 */
i = LT(ply_ptr, LT_RATTCK);
t = time(0);
if(i > t) {
please_wait(fd, i-t);
return(0);
}
ply_ptr->lasttime[LT_RATTCK].ltime = t;
ply_ptr->lasttime[LT_RATTCK].interval = 20L; /* 딜레이가 20초임 */
ply_ptr->mpcur -= mpdown;
F_CLR(ply_ptr, PHIDDN); /* 은신 상태 해제 */
if(F_ISSET(ply_ptr, PINVIS)) { /* 은둔법 걸고 있을 경우 */
F_CLR(ply_ptr, PINVIS);
print(fd, "당신의 모습이 서서히 드러납니다.\n");
broadcast_rom(fd, ply_ptr->rom_num,
"\n%M의 모습이 서서히 드러납니다.", ply_ptr);
}
print(fd, "당신은 어쩌구저쩌구 하여서 방전체 공격을 합니다.");
broadcast_rom(fd, ply_ptr->rom_num,
"\n%M%j 어쩌구저쩌구 하여서 방전체 공격을 합니다.", ply_ptr, "1");
/* 여기서부터가 실제 공격을 들어가는 부분 */
n = mdice(ply_ptr) + mpdown/5;
/* 공격의 타격치 계산 : 아래 while 문에서 중간에 넣어도 관계없음 */
cp = rom_ptr->first_mon;
while(cp) {
ctemp = cp->next_tag; /* ctemp를 사용하는 이유는, 공격으로 인해
몹이 죽을 경우를 대비해서 사용
사용하지 않으면, 버그 생김 -.- */
if(F_ISSET(cp->crt, MUNKIL)) {
cp = ctemp;
continue;
} /* 공격할수 없는 몹 체크 */
if(cp->crt == ply_ptr) {
cp = ctemp;
continue;
} /* 몹이 이 기술을 사용할 경우를 대비해서 넣어둠.
그럴 가능성은 없으므로 빼도 됨. --; */
m = MIN(cp->crt->hpcur, n);
add_enm_crt(ply_ptr->name, cp->crt);
add_enm_dmg(ply_ptr->name, cp->crt, m);
cp->crt->hpcur -= n;
printa(fd, "\n%M%j 어쩌구하면서 기술에 맞았습니다.", cp->crt, "1");
broadcast_rom(fd, rom_ptr->rom_num,
"\n%M%j 어쩌구하면서 기술에 맞았습니다.", cp->crt, "1");
if(cp->crt->hpcur < 1) { /* 죽였을 경우 */
printa(fd, "\n당신은 %M%j 죽였습니다.", cp->crt,"3");
broadcast_rom(fd, cp->crt->rom_num,
"\n%M%j %M%j 죽였습니다.", ply_ptr,"1", cp->crt, "3");
die(cp->crt, ply_ptr);
}
else /* 자동 도망 체크 */
check_for_flee(ply_ptr, cp->crt);
cp = ctemp;
}
return(0);
}
p.s 이소스를 사용해 보신 분이. 에러가 난다고 하는군요.
어느부분인지 잘 모르지만..
그럼.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
17 | 방설명 지우기 | 그리움 | 2007.04.12 | 252 |
16 | 그룹경험치 소스 | 그리움 | 2007.04.12 | 254 |
15 | 자동수련 소스 | 그리움 | 2007.04.12 | 234 |
14 | 귀환장소 변경소스 #2 | 그리움 | 2007.04.12 | 228 |
13 | 귀환장소 변경 소스 #1 | 그리움 | 2007.04.12 | 238 |
12 | 출구모양 개량 소스 | 그리움 | 2007.04.12 | 247 |
11 | 자기 아파트 자기가 방설명 넣기 | 그리움 | 2007.04.12 | 233 |
10 | 혼자 말하는 몹 | 그리움 | 2007.04.12 | 239 |
9 | 패거리 레벨 조정 소스 | 그리움 | 2007.04.12 | 234 |
» | 방 전체공격 소스 | 그리움 | 2007.04.12 | 234 |
7 | 주문추가 소스 | 그리움 | 2007.04.12 | 234 |
6 | 패거리창고 소스 | 그리움 | 2007.04.12 | 229 |
5 | 자동으로 돈줍기 소스 | 그리움 | 2007.04.12 | 252 |
4 | 복권 소스 | 그리움 | 2007.04.12 | 238 |
3 | 무한에서 안시 넣는 방법 | 그리움 | 2007.04.12 | 243 |
2 | 배경색 바꾸기 | 그리움 | 2007.04.12 | 234 |
1 | 어디 | 그리움 | 2007.04.12 | 252 |