패거리 상점 만들기
2007.04.12 13:02
출처 : INS BBS (gamebbs.co.kr)
제 목 : [MORDOR/소스] 패거리 상점 만들기 찬성 : 0 반대 : 0
올린이 : 우리짱이 (정현우 ) 읽음 : 25 날짜 : 99/11/12 14:00
1) 플래그 제작
아이템 플레그에 OGROUP 라는 플래그를 추가 시킵니다. mtype.h에
줄 한출만 추가시키면 되겠죠.?
2) 등록 명령어 제작
등록 이라는 명령어를 하나 만드시고 (5142번 참고) 아래와 같이
함수를 짜주세요.
int item_accept(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
room *rom_ptr, *dep_ptr;
object *obj_ptr;
int fd;
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
if(!F_ISSET(ply_ptr, PFMBOS)) {
print(fd, "당신은 패거리의 리더가 아닙니다.");
return(0);
}
if(!F_ISSET(rom_ptr, RSHOPP)) {
print(fd, "여기는 상점이 아닙니다.");
return(0);
}
if(cmnd->num < 2) {
print(fd, "무엇을 등록할까요?");
return(0);
}
obj_ptr = find_obj(ply_ptr, ply_ptr->first_obj, cmnd->str[1],
cmnd->val[1]);
if(!obj_ptr) {
print(fd, "당신은 그런것을 갖고 있지 않습니다.");
return(0);
}
if(obj_ptr->questnum && ply_ptr->class < DM) {
print(fd, "임무 아이템은 등록하지 못합니다.");
return(0);
}
if(F_ISSET(obj_ptr, OEVENT) && ply_ptr->class < DM) {
print(fd, "이벤트 아이템은 등록하지 못합니다.");
return(0);
}
if(obj_ptr->first_obj) {
print(fd, "내용물이 있는 보자기는 등록하지 못합니다.");
return(0);
}
if(load_rom(rom_ptr->rom_num + 1, &dep_ptr) < 0) {
print(fd, "등록할 수 없습니다.");
return(0);
}
F_SET(obj_ptr, OGROUP);
del_obj_crt(obj_ptr, ply_ptr);
add_obj_rom(obj_ptr, dep_ptr);
savegame_nomsg(ply_ptr);
resave_rom(dep_ptr->rom_num);
print(fd, "당신은 %1i%j 등록하였습니다.", obj_ptr,"3");
broadcast_rom(fd, rom_ptr->rom_num, "\n%M%j %1i%j 등록했습니다.",
ply_ptr,"1", obj_ptr,"3");
return(0);
}
이렇게 하면 대충 등록 명령은 끝날것 같군요.
3) 사 명령어 편집
command7.c 의 buy 함수에서 다음 부분을 찾아주세요.
add_obj_crt(obj_ptr2, ply_ptr);
ply_ptr->gold -= obj_ptr2->value;
print(fd, "당신은 %1i%j 샀습니다", obj_ptr2, "3");
broadcast_rom(fd, ply_ptr->rom_num, "\n%M이 %1i%j 샀습니다.",
ply_ptr, obj_ptr2,"3");
이 부분 바로 위에 다음을 추가해 주세요.
if(F_ISSET(obj_ptr, OGROUP)) {
num = ply_ptr->daily[DL_EXPND].max;
crt_ptr = find_who(fmboss_str[num]);
if (crt_ptr) {
crt_ptr->war_gold += obj_ptr2->value;
} else {
load_ply(fmboss_str[num], &crt_ptr);
crt_ptr->war_gold += obj_ptr2->value;
save_ply(fmboss_str[num], &crt_ptr);
}
del_obj_rom(obj_ptr, dep_ptr);
resave_rom(dep_ptr->rom_num);
}
그리고 추가로 선언해 주어야 할 함수
int num;
creature *crt_ptr;
홈지기 "그륨"
제 목 : [MORDOR/소스] 패거리 상점 만들기 찬성 : 0 반대 : 0
올린이 : 우리짱이 (정현우 ) 읽음 : 25 날짜 : 99/11/12 14:00
1) 플래그 제작
아이템 플레그에 OGROUP 라는 플래그를 추가 시킵니다. mtype.h에
줄 한출만 추가시키면 되겠죠.?
2) 등록 명령어 제작
등록 이라는 명령어를 하나 만드시고 (5142번 참고) 아래와 같이
함수를 짜주세요.
int item_accept(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
room *rom_ptr, *dep_ptr;
object *obj_ptr;
int fd;
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
if(!F_ISSET(ply_ptr, PFMBOS)) {
print(fd, "당신은 패거리의 리더가 아닙니다.");
return(0);
}
if(!F_ISSET(rom_ptr, RSHOPP)) {
print(fd, "여기는 상점이 아닙니다.");
return(0);
}
if(cmnd->num < 2) {
print(fd, "무엇을 등록할까요?");
return(0);
}
obj_ptr = find_obj(ply_ptr, ply_ptr->first_obj, cmnd->str[1],
cmnd->val[1]);
if(!obj_ptr) {
print(fd, "당신은 그런것을 갖고 있지 않습니다.");
return(0);
}
if(obj_ptr->questnum && ply_ptr->class < DM) {
print(fd, "임무 아이템은 등록하지 못합니다.");
return(0);
}
if(F_ISSET(obj_ptr, OEVENT) && ply_ptr->class < DM) {
print(fd, "이벤트 아이템은 등록하지 못합니다.");
return(0);
}
if(obj_ptr->first_obj) {
print(fd, "내용물이 있는 보자기는 등록하지 못합니다.");
return(0);
}
if(load_rom(rom_ptr->rom_num + 1, &dep_ptr) < 0) {
print(fd, "등록할 수 없습니다.");
return(0);
}
F_SET(obj_ptr, OGROUP);
del_obj_crt(obj_ptr, ply_ptr);
add_obj_rom(obj_ptr, dep_ptr);
savegame_nomsg(ply_ptr);
resave_rom(dep_ptr->rom_num);
print(fd, "당신은 %1i%j 등록하였습니다.", obj_ptr,"3");
broadcast_rom(fd, rom_ptr->rom_num, "\n%M%j %1i%j 등록했습니다.",
ply_ptr,"1", obj_ptr,"3");
return(0);
}
이렇게 하면 대충 등록 명령은 끝날것 같군요.
3) 사 명령어 편집
command7.c 의 buy 함수에서 다음 부분을 찾아주세요.
add_obj_crt(obj_ptr2, ply_ptr);
ply_ptr->gold -= obj_ptr2->value;
print(fd, "당신은 %1i%j 샀습니다", obj_ptr2, "3");
broadcast_rom(fd, ply_ptr->rom_num, "\n%M이 %1i%j 샀습니다.",
ply_ptr, obj_ptr2,"3");
이 부분 바로 위에 다음을 추가해 주세요.
if(F_ISSET(obj_ptr, OGROUP)) {
num = ply_ptr->daily[DL_EXPND].max;
crt_ptr = find_who(fmboss_str[num]);
if (crt_ptr) {
crt_ptr->war_gold += obj_ptr2->value;
} else {
load_ply(fmboss_str[num], &crt_ptr);
crt_ptr->war_gold += obj_ptr2->value;
save_ply(fmboss_str[num], &crt_ptr);
}
del_obj_rom(obj_ptr, dep_ptr);
resave_rom(dep_ptr->rom_num);
}
그리고 추가로 선언해 주어야 할 함수
int num;
creature *crt_ptr;
홈지기 "그륨"
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
57 | 특수 아이템 만들기 | 그리움 | 2007.04.12 | 253 |
56 | 몹과 자신을 "비교" | 그리움 | 2007.04.12 | 219 |
55 | 패거리 전쟁시 적과 아군 구분 | 그리움 | 2007.04.12 | 216 |
54 | 순위 소스 | 그리움 | 2007.04.12 | 215 |
53 | 개량형 우체국 | 그리움 | 2007.04.12 | 228 |
52 | 명성치 도입 | 그리움 | 2007.04.12 | 229 |
51 | 자기 아파트 방설명은 자기가 #2 | 그리움 | 2007.04.12 | 222 |
50 | 이동력 추가하기 | 그리움 | 2007.04.12 | 225 |
49 | 경매 소스 | 그리움 | 2007.04.12 | 217 |
48 | 글자색, 배경색 15색 사용하기 | 그리움 | 2007.04.12 | 213 |
47 | Ctrl+Enter 패치하기 | 그리움 | 2007.04.12 | 198 |
» | 패거리 상점 만들기 | 그리움 | 2007.04.12 | 199 |
45 | 귀환장소 설정 | 그리움 | 2007.04.12 | 228 |
44 | 출구 정렬 | 그리움 | 2007.04.12 | 222 |
43 | 게시판 검색 기능 추가하기 | 그리움 | 2007.04.12 | 207 |
42 | 암호 *****로 보이게 하기 | 그리움 | 2007.04.12 | 215 |
41 | 레벨을 32767까지 가능하게 | 그리움 | 2007.04.12 | 236 |
40 | 잡담 안시 사용하기 | 그리움 | 2007.04.12 | 236 |
39 | 지도 소스 #2 | 그리움 | 2007.04.12 | 230 |
38 | 베팅소스 | 그리움 | 2007.04.12 | 242 |