[mordor]갑옷제작쏘스
/**********************/
/* makeitem */
/**********************/
void make_item();
int makeitem(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
room *rom_ptr;
object *obj_ptr;
int fd;
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
if(!F_ISSET(rom_ptr, RFORGE)) {
print(fd, "여기는 대장간이 아닙니다.");
return(0);
}
F_SET(ply_ptr, PNOBRD);
make_item(fd, 1, NULL);
F_CLR(ply_ptr, PNOBRD);
return(DOPROMPT);
}
char forge1[PMAX][16];
char forge2[PMAX][16];
void make_item(fd, param, str)
int fd;
int param;
char *str;
{
int i;
long sum=0;
int num[5];
creature *ply_ptr;
object *obj_ptr;
ply_ptr=Ply[fd].ply;
switch(param) {
case 1:
print(fd,"\n\n");
print(fd, "1.머리 2.얼굴 3.목 4.몸\n");
print(fd, "5.팔 6.손 7.손가락 8.다리\n");
print(fd, "9.발 @.방패 *.쥐는것\n\n");
print(fd, "어디에 입을 장비를 원하세요: " );
F_SET(Ply[fd].ply,PREADI);
output_buf();
Ply[fd].io->intrpt &= ~1;
RETURN(fd, make_item, 2);
case 2:
F_CLR(Ply[fd].ply,PREADI);
if(str[0] == '@' || str[0] == '1' || str[0] == '2'||
str[0] == '3' || str[0] == '4' || str[0] == '5' ||
str[0] == '6' || str[0] == '7' || str[0] == '8' ||
str[0] == '9' || str[0] == '*' ) {
if(str[0] == '1') {
if(load_obj(50, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '2') {
if(load_obj(51, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '3') {
if(load_obj(52, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '4') {
if(load_obj(53, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '5') {
if(load_obj(54, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '6') {
if(load_obj(55, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '7') {
if(load_obj(56, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '8') {
if(load_obj(57, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '9') {
if(load_obj(58, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '@') {
if(load_obj(59, &obj_ptr) < 0) {
print(fd, "에러!\n");
return;
}
}
if(str[0] == '*') {
if(load_obj(60, &obj_ptr) < 0) {
print(fd, "에러!\n");
return;
}
}
}
else {
print(fd, "잘못 입력 하셨습니다.\n선택: ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 2);
}
/* 포인터 obj_ptr을 long형으로 바꿔 저장. */
sprintf(forge1[fd],"%lu",(long)obj_ptr);
print(fd, "\n\n");
print(fd, "======================================================\n");
print(fd, " 재료 방어력 특성치 회복치 레벨 가격\n");
print(fd, " ------------------------------------------------------\n");
print(fd, " 1.강 철 방어+3 파괴+1 5 100000냥\n");
print(fd, " 2.금강석 방어+5 파괴+3 10 300000냥\n");
print(fd, " 3.귀금속 방어+7 파괴+5 15 500000냥\n");
print(fd, " 4.세라믹 방어+11 파괴+8 회복+3 40 1000000냥\n");
print(fd, " 5.티타늄 방어+20 파괴+15 회복+5 100 5000000냥\n\n");
print(fd, "선택해주세요: ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 3);
case 3:
F_CLR(Ply[fd].ply,PREADI);
obj_ptr=(object *)atol(forge1[fd]);
switch(low(str[0])) {
case '1':
obj_ptr->armor = 3;
obj_ptr->odestructive = 1;
obj_ptr->limit = 5;
sum = 100000;
break;
case '2':
obj_ptr->armor = 5;
obj_ptr->odestructive = 3;
sum = 300000;
obj_ptr->limit = 10;
break;
case '3':
obj_ptr->armor = 7;
obj_ptr->odestructive = 5;
obj_ptr->limit = 15;
sum = 500000;
break;
case '4':
obj_ptr->armor = 11;
obj_ptr->odestructive = 8;
obj_ptr->repower =3;
obj_ptr->limit = 40;
sum = 1000000;
break;
case '5':
obj_ptr->armor = 20;
obj_ptr->odestructive = 15;
obj_ptr->repower = 5;
obj_ptr->limit = 100;
sum = 5000000;
break;
default: print(fd, "잘못 입력 하셨습니다. 선택: ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 3);
}
sprintf(forge2[fd],"%lu",sum);
print(fd, "\n담금질을 많이 할수록 수명이 늘어납니다.");
print(fd, "\n몇번의 담금질을 원하십니까?\n");
print(fd, "\n1. 100번 가격: 50000");
print(fd, "\n2. 200번 가격: 200000");
print(fd, "\n3. 300번 가격: 500000");
print(fd, "\n4. 400번 가격: 1000000");
print(fd, "\n5. 500번 가격: 2000000");
print(fd, "\n선택: ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 4);
case 4:
F_CLR(Ply[fd].ply,PREADI);
obj_ptr=(object *)atol(forge1[fd]);
sum=atol(forge2[fd]);
switch(low(str[0])) {
case '1':
obj_ptr->shotsmax = 100;
obj_ptr->shotscur = 100;
sum += 50000;
break;
case '2':
obj_ptr->shotsmax = 200;
obj_ptr->shotscur = 200;
sum += 200000;
break;
case '3':
obj_ptr->shotsmax = 300;
obj_ptr->shotscur = 300;
sum += 500000;
break;
case '4':
obj_ptr->shotsmax = 400;
obj_ptr->shotscur = 400;
sum += 1000000;
break;
case '5':
obj_ptr->shotsmax = 500;
obj_ptr->shotscur = 500;
sum += 2000000;
break;
default: print(fd, "선택: ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 4);
}
sprintf(forge2[fd],"%lu",sum);
print(fd, "\n물건의 이름을 결정해 주세요.");
print(fd, "\n다시 바꿀수 없으니 신중히 결정 하십시요.\n");
print(fd, ": ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 5);
case 5:
F_CLR(Ply[fd].ply,PREADI);
obj_ptr=(object *)atol(forge1[fd]);
if(strchr(str,'(') || strchr(str,')')) {
print(fd,"이름에는 괄호가 들어갈수 없습니다.\n이름을 다시 넣으십시요:");
RETURN(fd, make_item, 5);
}
if(strlen(str) > 20) {
print(fd, "입력된 이름이 너무 깁니다.\n이름을 다시 넣으십시요(3자이상 20자이하): ");
RETURN(fd, make_item, 5);
}
if(strlen(str) < 3) {
print(fd, "입력된 이름이 너무 짧습니다.\n이름을 다시 넣으십시요(3자이상 20자이하): ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 5);
}
strncpy(obj_ptr->name, str, 20);
print(fd, "\n모든것에 만족하십니까? (예/아니오)\n");
print(fd, ": ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 6);
case 6:
F_CLR(Ply[fd].ply,PREADI);
obj_ptr=(object *)atol(forge1[fd]);
sum=atol(forge2[fd]);
if(!strncmp(str,"예",2)) {
if (ply_ptr->gold < sum) {
print(fd, "\n주인이 인상을 찡그립니다. '돈도 없으면서! 쳇~!'");
free(obj_ptr);
break;
}
add_obj_crt(obj_ptr,ply_ptr);
print(fd, "\n주인이 당신에게 방금 제작한 장비를 넘겨줍니다.");
broadcast_rom(fd, ply_ptr->rom_num,
"\n%M이 주인에게 새로제작된 장비를 넘겨받습니다.",ply_ptr);
ply_ptr->gold -= sum;
}
else {
print(fd,"취소 하였습니다.");
free(obj_ptr);
}
break;
}
RETURN(fd, command, 1);
}
/* makeitem */
/**********************/
void make_item();
int makeitem(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
room *rom_ptr;
object *obj_ptr;
int fd;
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
if(!F_ISSET(rom_ptr, RFORGE)) {
print(fd, "여기는 대장간이 아닙니다.");
return(0);
}
F_SET(ply_ptr, PNOBRD);
make_item(fd, 1, NULL);
F_CLR(ply_ptr, PNOBRD);
return(DOPROMPT);
}
char forge1[PMAX][16];
char forge2[PMAX][16];
void make_item(fd, param, str)
int fd;
int param;
char *str;
{
int i;
long sum=0;
int num[5];
creature *ply_ptr;
object *obj_ptr;
ply_ptr=Ply[fd].ply;
switch(param) {
case 1:
print(fd,"\n\n");
print(fd, "1.머리 2.얼굴 3.목 4.몸\n");
print(fd, "5.팔 6.손 7.손가락 8.다리\n");
print(fd, "9.발 @.방패 *.쥐는것\n\n");
print(fd, "어디에 입을 장비를 원하세요: " );
F_SET(Ply[fd].ply,PREADI);
output_buf();
Ply[fd].io->intrpt &= ~1;
RETURN(fd, make_item, 2);
case 2:
F_CLR(Ply[fd].ply,PREADI);
if(str[0] == '@' || str[0] == '1' || str[0] == '2'||
str[0] == '3' || str[0] == '4' || str[0] == '5' ||
str[0] == '6' || str[0] == '7' || str[0] == '8' ||
str[0] == '9' || str[0] == '*' ) {
if(str[0] == '1') {
if(load_obj(50, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '2') {
if(load_obj(51, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '3') {
if(load_obj(52, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '4') {
if(load_obj(53, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '5') {
if(load_obj(54, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '6') {
if(load_obj(55, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '7') {
if(load_obj(56, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '8') {
if(load_obj(57, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '9') {
if(load_obj(58, &obj_ptr) < 0) {
print(ply_ptr->fd, "에러!\n");
return;
}
}
if(str[0] == '@') {
if(load_obj(59, &obj_ptr) < 0) {
print(fd, "에러!\n");
return;
}
}
if(str[0] == '*') {
if(load_obj(60, &obj_ptr) < 0) {
print(fd, "에러!\n");
return;
}
}
}
else {
print(fd, "잘못 입력 하셨습니다.\n선택: ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 2);
}
/* 포인터 obj_ptr을 long형으로 바꿔 저장. */
sprintf(forge1[fd],"%lu",(long)obj_ptr);
print(fd, "\n\n");
print(fd, "======================================================\n");
print(fd, " 재료 방어력 특성치 회복치 레벨 가격\n");
print(fd, " ------------------------------------------------------\n");
print(fd, " 1.강 철 방어+3 파괴+1 5 100000냥\n");
print(fd, " 2.금강석 방어+5 파괴+3 10 300000냥\n");
print(fd, " 3.귀금속 방어+7 파괴+5 15 500000냥\n");
print(fd, " 4.세라믹 방어+11 파괴+8 회복+3 40 1000000냥\n");
print(fd, " 5.티타늄 방어+20 파괴+15 회복+5 100 5000000냥\n\n");
print(fd, "선택해주세요: ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 3);
case 3:
F_CLR(Ply[fd].ply,PREADI);
obj_ptr=(object *)atol(forge1[fd]);
switch(low(str[0])) {
case '1':
obj_ptr->armor = 3;
obj_ptr->odestructive = 1;
obj_ptr->limit = 5;
sum = 100000;
break;
case '2':
obj_ptr->armor = 5;
obj_ptr->odestructive = 3;
sum = 300000;
obj_ptr->limit = 10;
break;
case '3':
obj_ptr->armor = 7;
obj_ptr->odestructive = 5;
obj_ptr->limit = 15;
sum = 500000;
break;
case '4':
obj_ptr->armor = 11;
obj_ptr->odestructive = 8;
obj_ptr->repower =3;
obj_ptr->limit = 40;
sum = 1000000;
break;
case '5':
obj_ptr->armor = 20;
obj_ptr->odestructive = 15;
obj_ptr->repower = 5;
obj_ptr->limit = 100;
sum = 5000000;
break;
default: print(fd, "잘못 입력 하셨습니다. 선택: ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 3);
}
sprintf(forge2[fd],"%lu",sum);
print(fd, "\n담금질을 많이 할수록 수명이 늘어납니다.");
print(fd, "\n몇번의 담금질을 원하십니까?\n");
print(fd, "\n1. 100번 가격: 50000");
print(fd, "\n2. 200번 가격: 200000");
print(fd, "\n3. 300번 가격: 500000");
print(fd, "\n4. 400번 가격: 1000000");
print(fd, "\n5. 500번 가격: 2000000");
print(fd, "\n선택: ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 4);
case 4:
F_CLR(Ply[fd].ply,PREADI);
obj_ptr=(object *)atol(forge1[fd]);
sum=atol(forge2[fd]);
switch(low(str[0])) {
case '1':
obj_ptr->shotsmax = 100;
obj_ptr->shotscur = 100;
sum += 50000;
break;
case '2':
obj_ptr->shotsmax = 200;
obj_ptr->shotscur = 200;
sum += 200000;
break;
case '3':
obj_ptr->shotsmax = 300;
obj_ptr->shotscur = 300;
sum += 500000;
break;
case '4':
obj_ptr->shotsmax = 400;
obj_ptr->shotscur = 400;
sum += 1000000;
break;
case '5':
obj_ptr->shotsmax = 500;
obj_ptr->shotscur = 500;
sum += 2000000;
break;
default: print(fd, "선택: ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 4);
}
sprintf(forge2[fd],"%lu",sum);
print(fd, "\n물건의 이름을 결정해 주세요.");
print(fd, "\n다시 바꿀수 없으니 신중히 결정 하십시요.\n");
print(fd, ": ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 5);
case 5:
F_CLR(Ply[fd].ply,PREADI);
obj_ptr=(object *)atol(forge1[fd]);
if(strchr(str,'(') || strchr(str,')')) {
print(fd,"이름에는 괄호가 들어갈수 없습니다.\n이름을 다시 넣으십시요:");
RETURN(fd, make_item, 5);
}
if(strlen(str) > 20) {
print(fd, "입력된 이름이 너무 깁니다.\n이름을 다시 넣으십시요(3자이상 20자이하): ");
RETURN(fd, make_item, 5);
}
if(strlen(str) < 3) {
print(fd, "입력된 이름이 너무 짧습니다.\n이름을 다시 넣으십시요(3자이상 20자이하): ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 5);
}
strncpy(obj_ptr->name, str, 20);
print(fd, "\n모든것에 만족하십니까? (예/아니오)\n");
print(fd, ": ");
F_SET(Ply[fd].ply,PREADI);
RETURN(fd, make_item, 6);
case 6:
F_CLR(Ply[fd].ply,PREADI);
obj_ptr=(object *)atol(forge1[fd]);
sum=atol(forge2[fd]);
if(!strncmp(str,"예",2)) {
if (ply_ptr->gold < sum) {
print(fd, "\n주인이 인상을 찡그립니다. '돈도 없으면서! 쳇~!'");
free(obj_ptr);
break;
}
add_obj_crt(obj_ptr,ply_ptr);
print(fd, "\n주인이 당신에게 방금 제작한 장비를 넘겨줍니다.");
broadcast_rom(fd, ply_ptr->rom_num,
"\n%M이 주인에게 새로제작된 장비를 넘겨받습니다.",ply_ptr);
ply_ptr->gold -= sum;
}
else {
print(fd,"취소 하였습니다.");
free(obj_ptr);
}
break;
}
RETURN(fd, command, 1);
}
0Comments
-표시할 내용이 없습니다.-
코멘트를 삭제할 비밀번호를 입력하세요.
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 109개 / 검색된 게시물: 109개
글번호 | 제목 | 작성자 | 조회수 | 좋아요 | 싫어요 | 작성일 | |
---|---|---|---|---|---|---|---|
[기타]누구든지 머드 강의를 올리수 있는 곳입니다...^^ | 머드클럽 | 4552 | 0 | 0 | 2003-12-31 | ||
9 | [mordor] 패거리등급조절 | 머드사랑 | 2780 | 0 | 0 | 2003-12-22 | |
8 | [mordor] 순위쏘스 | 머드사랑 | 2777 | 0 | 0 | 2003-12-18 | |
7 | [mordor] 탈주문 | 머드사랑 | 2821 | 0 | 0 | 2003-12-15 | |
6 | [mordor] 직업추가쏘스 | 머드사랑 | 2755 | 0 | 0 | 2003-12-11 | |
5 | [mordor] 폭탄 | 머드사랑 | 2658 | 0 | 0 | 2003-12-10 | |
4 | [mordor] 갑옷제작쏘스 | 머드사랑 | 3330 | 0 | 0 | 2003-12-06 | |
3 | [mordor] 경매쏘스 | 머드사랑 | 3142 | 0 | 0 | 2003-12-03 | |
2 | [mordor] 자기 아파트 자기가 꾸미기 쏘스 [1] | 머드사랑 | 3434 | 0 | 0 | 2003-12-01 | |
1 | [mordor] 체력,도력 프롬프트 움직임 방지 | 머드사랑 | 4317 | 0 | 0 | 2003-11-30 |