패거리창고 소스
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 | 방설명 지우기 | 그리움 | 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 |
8 | 방 전체공격 소스 | 그리움 | 2007.04.12 | 234 |
7 | 주문추가 소스 | 그리움 | 2007.04.12 | 234 |
» | 패거리창고 소스 | 그리움 | 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 |