패거리창고 소스
2007.04.12 11:39
☞패거리 창고 소스
#include "mtype.h"
#include "mstruct.h"
#include "mextern.h"
int save_fam_bank(str, obj_ptr)
char *str;
object *obj_ptr;
{
int fd;
long n;
char file[80];
sprintf(file, "%s/family/fam_bank/%s", PLAYERPATH, str);
fd = open(file, O_RDWR | O_BINARY, 0);
if(fd < 0) {
fd = open(file, O_RDWR | O_CREAT, ACC);
if(fd < 0)
return(-1);
}
n = write_obj(fd, obj_ptr, 0);
if(n <0)
return(-1);
close(fd);
return(0);
}
int load_fam_bank(str, obj_ptr)
char *str;
object *obj_ptr;
{
int fd;
long n;
char file[80];
object *bnk_ptr;
sprintf(file, "%s/family/fam_bank/%s", PLAYERPATH, str);
fd = open(file, O_RDONLY | O_BINARY, 0);
if(fd < 0) {
bnk_ptr = (object *)malloc(sizeof(object));
zero(bnk_ptr, sizeof(object));
bnk_ptr->shotsmax = 200;
bnk_ptr->value = 1000;
F_SET(bnk_ptr, OCONTN);
n = save_fam_bank(str, bnk_ptr);
free_obj(bnk_ptr);
return(-1);
}
*obj_ptr = (object *)malloc(sizeof(object));
n = read_obj(fd, *obj_ptr);
if(n < 0)
return(-1);
close(fd);
return(0);
}
int input_fam_bank(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
int fd, n;
object *cnt_ptr, *obj_ptr;
room *rom_ptr;
char bank[24];
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
if(!(F_ISSET(ply_ptr->parent_rom, RFBANK) && \
F_ISSET(ply_ptr->parent_rom, RFAMIL))) {
print(fd, "\n여긴 패거리 창고가 아닙니다.");
return(0);
}
obj_ptr = find_obj(ply_ptr, ply_ptr->first_obj, cmnd->str[1], cmnd->val[1]);
if(!obj_ptr) {
print(fd, "\n무엇을 기증 하려고 하는지 모르겠습니다.");
return(0);
}
if((obj_ptr->type >= SHARP && obj_ptr->type <=MISSILE) && \
rom_ptr->special != 1) {
print(fd, "\n무기류 창고가 아닙니다.");
return(0);
}
if(obj_ptr->type == ARMOR && rom_ptr->special != 2) {
print(fd, "\n방어구류 창고가 아닙니다.");
return(0);
}
if((obj_ptr->type >= POTION &&obj_ptr->type <= SCROLL) && \
rom_ptr->special != 3) {
print(fd, "\n주술구류 창고가 아닙니다.");
if(cnt_ptr->shotscur >= cnt_ptr->shotsmax) {
print(fd, "\n창고 안에 더이상 넣을 수 없습니다.");
return(0);
}
if(obj_ptr->questnum && F_ISSET(obj_ptr, OEVENT) ply_ptr->class < DM) {
print(fd, "\n임무/이벤트 아이템은 개인은행을 이용하십시오.");
return(0);
}
if(F_ISSET(obj_ptr, OCONTN) && ply_ptr->class < DM) {
print(fd, "\n보따리 종류는 기증할 수 없습니다.");
return(0);
}
del_obj_crt(obj_ptr, ply_ptr);
add_obj_obj(obj_ptr, cnt_ptr);
cnt_ptr->shotscur++;
print(fd,"\n당신은 %1i%j 기증 하였습니다.", obj_ptr,"3");
broadcast_rom(fd, rom_ptr->rom_num, "\n%M이 %1i%j 기증 하였습니다.",
ply_ptr, obj_ptr,"3");
savegame_nomsg(ply_ptr);
save_fam_bank(bank, cnt_ptr);
free_obj(cnt_ptr);
return(0);
}
int output_fam_bank(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
int fd, n;
object *cnt_ptr, *obj_ptr;
room *rom_ptr;
int cnt=0, i;
char bank[24];
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
if(!(F_ISSET(ply_ptr->parent_rom, RFBANK) && \
F_ISSET(ply_ptr->parent_rom, RFAMIL))) {
print(fd, "\n여긴 패거리 창고가 아닙니다.");
return(0);
}
sprintf(bank, "%s-%d", family_str[ply_ptr->daily[DL_EXPND].max],
rom_ptr->special);
n = load_fam_bank(bank, &cnt_ptr);
if(n < 0) {
cnt_ptr = (object *)malloc(sizeof(object));
zero(cnt_ptr, sizeof(object));
cnt_ptr->shotsmax = 200;
F_SET(cnt_ptr, OCONTN);
}
for(i=0,cnt=0; i
if(ply_ptr->ready[i])
cnt++;
}
cnt += count_inv(ply_ptr, -1);
if(cmnd->num < 2) {
print(fd, "\n무엇을 꺼내시려고요?...[물건이름] [반출]");
return(0);
}
obj_ptr = find_obj(ply_ptr, cnt_ptr->first_obj, cmnd->str[1], cmnd->val[1]);
if(!obj_ptr) {
print(fd, "\n창고 안에 그런것은 없군요.");
return(0);
}
if((weight_ply(ply_ptr) + weight_obj(obj_ptr) > max_weight(ply_ptr) && \
cnt_ptr->parent_rom) || cnt>150) {
print(fd, "\n당신은 더이상 가질 수 없습니다.");
return(0);
}
cnt_ptr->shotscur--;
del_obj_obj(obj_ptr, cnt_ptr);
print(fd, "\n당신은 %1i%j 반출했습니다.", obj_ptr,"3");
broadcast_rom(fd, rom_ptr->rom_num, "\n패거리 창고에서 %M이 %1i%j 꺼냈습니다.",
ply_ptr, obj_ptr,"3");
add_obj_crt(obj_ptr, ply_ptr);
save_fam_bank(bank, cnt_ptr);
free_obj(cnt_ptr);
savegame_nomsg(ply_ptr);
return(0);
}
int fam_bank_inv(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
object *bnk_ptr;
room *rom_ptr;
int fd, n;
char str[2048];
char bank[24];
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
if(!(F_ISSET(ply_ptr->parent_rom, RDEPOT) && \
F_ISSET(ply_ptr->parent_rom, RFAMIL))) {
print(fd, "\n여긴 패거리 창고가 아닙니다.");
return(0);
}
if(cmnd->num < 2) {
sprintf(bank, "%s-%d", family_str[ply_ptr->daily[DL_EXPND].max], \
rom_ptr->special);
n = load_family_bank(bank, &bnk_ptr);
if(n < 0) {
print(fd, "없음.");
bnk_ptr = (object *)malloc(sizeof(object));
zero(bnk_ptr, sizeof(object));
bnk_ptr->shotsmax = 200;
F_SET(bnk_ptr, OCONTN);
n = save_family_bank(bank, bnk_ptr);
free_obj(bnk_ptr);
}
else {
strcpy(str, "목록: ");
n = list_obj(&str[16], ply_ptr, bnk_ptr->first_obj);
if(n)
print(fd, "%s.\n", str);
else
print(fd, "없음.");
free_obj(bnk_ptr);
}
return(0);
}
else {
input_fam_bank(ply_ptr, cmnd);
}
return(0);
}
#include "mtype.h"
#include "mstruct.h"
#include "mextern.h"
int save_fam_bank(str, obj_ptr)
char *str;
object *obj_ptr;
{
int fd;
long n;
char file[80];
sprintf(file, "%s/family/fam_bank/%s", PLAYERPATH, str);
fd = open(file, O_RDWR | O_BINARY, 0);
if(fd < 0) {
fd = open(file, O_RDWR | O_CREAT, ACC);
if(fd < 0)
return(-1);
}
n = write_obj(fd, obj_ptr, 0);
if(n <0)
return(-1);
close(fd);
return(0);
}
int load_fam_bank(str, obj_ptr)
char *str;
object *obj_ptr;
{
int fd;
long n;
char file[80];
object *bnk_ptr;
sprintf(file, "%s/family/fam_bank/%s", PLAYERPATH, str);
fd = open(file, O_RDONLY | O_BINARY, 0);
if(fd < 0) {
bnk_ptr = (object *)malloc(sizeof(object));
zero(bnk_ptr, sizeof(object));
bnk_ptr->shotsmax = 200;
bnk_ptr->value = 1000;
F_SET(bnk_ptr, OCONTN);
n = save_fam_bank(str, bnk_ptr);
free_obj(bnk_ptr);
return(-1);
}
*obj_ptr = (object *)malloc(sizeof(object));
n = read_obj(fd, *obj_ptr);
if(n < 0)
return(-1);
close(fd);
return(0);
}
int input_fam_bank(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
int fd, n;
object *cnt_ptr, *obj_ptr;
room *rom_ptr;
char bank[24];
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
if(!(F_ISSET(ply_ptr->parent_rom, RFBANK) && \
F_ISSET(ply_ptr->parent_rom, RFAMIL))) {
print(fd, "\n여긴 패거리 창고가 아닙니다.");
return(0);
}
obj_ptr = find_obj(ply_ptr, ply_ptr->first_obj, cmnd->str[1], cmnd->val[1]);
if(!obj_ptr) {
print(fd, "\n무엇을 기증 하려고 하는지 모르겠습니다.");
return(0);
}
if((obj_ptr->type >= SHARP && obj_ptr->type <=MISSILE) && \
rom_ptr->special != 1) {
print(fd, "\n무기류 창고가 아닙니다.");
return(0);
}
if(obj_ptr->type == ARMOR && rom_ptr->special != 2) {
print(fd, "\n방어구류 창고가 아닙니다.");
return(0);
}
if((obj_ptr->type >= POTION &&obj_ptr->type <= SCROLL) && \
rom_ptr->special != 3) {
print(fd, "\n주술구류 창고가 아닙니다.");
if(cnt_ptr->shotscur >= cnt_ptr->shotsmax) {
print(fd, "\n창고 안에 더이상 넣을 수 없습니다.");
return(0);
}
if(obj_ptr->questnum && F_ISSET(obj_ptr, OEVENT) ply_ptr->class < DM) {
print(fd, "\n임무/이벤트 아이템은 개인은행을 이용하십시오.");
return(0);
}
if(F_ISSET(obj_ptr, OCONTN) && ply_ptr->class < DM) {
print(fd, "\n보따리 종류는 기증할 수 없습니다.");
return(0);
}
del_obj_crt(obj_ptr, ply_ptr);
add_obj_obj(obj_ptr, cnt_ptr);
cnt_ptr->shotscur++;
print(fd,"\n당신은 %1i%j 기증 하였습니다.", obj_ptr,"3");
broadcast_rom(fd, rom_ptr->rom_num, "\n%M이 %1i%j 기증 하였습니다.",
ply_ptr, obj_ptr,"3");
savegame_nomsg(ply_ptr);
save_fam_bank(bank, cnt_ptr);
free_obj(cnt_ptr);
return(0);
}
int output_fam_bank(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
int fd, n;
object *cnt_ptr, *obj_ptr;
room *rom_ptr;
int cnt=0, i;
char bank[24];
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
if(!(F_ISSET(ply_ptr->parent_rom, RFBANK) && \
F_ISSET(ply_ptr->parent_rom, RFAMIL))) {
print(fd, "\n여긴 패거리 창고가 아닙니다.");
return(0);
}
sprintf(bank, "%s-%d", family_str[ply_ptr->daily[DL_EXPND].max],
rom_ptr->special);
n = load_fam_bank(bank, &cnt_ptr);
if(n < 0) {
cnt_ptr = (object *)malloc(sizeof(object));
zero(cnt_ptr, sizeof(object));
cnt_ptr->shotsmax = 200;
F_SET(cnt_ptr, OCONTN);
}
for(i=0,cnt=0; i
if(ply_ptr->ready[i])
cnt++;
}
cnt += count_inv(ply_ptr, -1);
if(cmnd->num < 2) {
print(fd, "\n무엇을 꺼내시려고요?...[물건이름] [반출]");
return(0);
}
obj_ptr = find_obj(ply_ptr, cnt_ptr->first_obj, cmnd->str[1], cmnd->val[1]);
if(!obj_ptr) {
print(fd, "\n창고 안에 그런것은 없군요.");
return(0);
}
if((weight_ply(ply_ptr) + weight_obj(obj_ptr) > max_weight(ply_ptr) && \
cnt_ptr->parent_rom) || cnt>150) {
print(fd, "\n당신은 더이상 가질 수 없습니다.");
return(0);
}
cnt_ptr->shotscur--;
del_obj_obj(obj_ptr, cnt_ptr);
print(fd, "\n당신은 %1i%j 반출했습니다.", obj_ptr,"3");
broadcast_rom(fd, rom_ptr->rom_num, "\n패거리 창고에서 %M이 %1i%j 꺼냈습니다.",
ply_ptr, obj_ptr,"3");
add_obj_crt(obj_ptr, ply_ptr);
save_fam_bank(bank, cnt_ptr);
free_obj(cnt_ptr);
savegame_nomsg(ply_ptr);
return(0);
}
int fam_bank_inv(ply_ptr, cmnd)
creature *ply_ptr;
cmd *cmnd;
{
object *bnk_ptr;
room *rom_ptr;
int fd, n;
char str[2048];
char bank[24];
fd = ply_ptr->fd;
rom_ptr = ply_ptr->parent_rom;
if(!(F_ISSET(ply_ptr->parent_rom, RDEPOT) && \
F_ISSET(ply_ptr->parent_rom, RFAMIL))) {
print(fd, "\n여긴 패거리 창고가 아닙니다.");
return(0);
}
if(cmnd->num < 2) {
sprintf(bank, "%s-%d", family_str[ply_ptr->daily[DL_EXPND].max], \
rom_ptr->special);
n = load_family_bank(bank, &bnk_ptr);
if(n < 0) {
print(fd, "없음.");
bnk_ptr = (object *)malloc(sizeof(object));
zero(bnk_ptr, sizeof(object));
bnk_ptr->shotsmax = 200;
F_SET(bnk_ptr, OCONTN);
n = save_family_bank(bank, bnk_ptr);
free_obj(bnk_ptr);
}
else {
strcpy(str, "목록: ");
n = list_obj(&str[16], ply_ptr, bnk_ptr->first_obj);
if(n)
print(fd, "%s.\n", str);
else
print(fd, "없음.");
free_obj(bnk_ptr);
}
return(0);
}
else {
input_fam_bank(ply_ptr, cmnd);
}
return(0);
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
17 | 프롬프트 그래프화 #2 | 그리움 | 2007.04.12 | 280 |
16 | 낚시 | 그리움 | 2007.04.12 | 280 |
15 | 운영자명령 "보고" | 그리움 | 2007.04.12 | 280 |
14 | 이동하는 몹 | 그리움 | 2007.04.12 | 283 |
13 | 머드에서 몹 심기 | 그리움 | 2007.04.12 | 287 |
12 | 온라인 리붓 | 그리움 | 2007.04.12 | 287 |
11 | 방전체 공격루틴 #2 | 그리움 | 2007.04.12 | 287 |
10 | 개척 소스 | 그리움 | 2007.04.12 | 302 |
9 | 감옥/퇴소 | 그리움 | 2007.04.12 | 338 |
8 | 물건, 몹의 번호 찾아내기. | 그리움 | 2007.07.04 | 392 |
7 | 몹 소환하여 소환몹이 대신 싸우게 하기 | 그리움 | 2007.11.23 | 398 |
6 | 주민등록번호 검사 소스 | 그리움 | 2007.04.12 | 420 |
5 | 무한대전 방 데이터 Convert | 그리움 | 2007.11.23 | 422 |
4 | 연타기능 - 연타수 자동 | 그리움 | 2007.04.12 | 447 |
3 | 게시판 버그 해결 방법. | 그리움 | 2007.04.12 | 470 |
2 | 연타기능 - 직업별 연타 | 그리움 | 2007.04.12 | 479 |
1 | *괴물이름 방폭 버그 수정 | 그리움 | 2007.04.12 | 533 |