머드클럽
머드게임이란?
게임은 어떤 환경에서?
본격적으로 게임해 볼까?
배너교환
머드강좌
일반 머드강좌
성천사님의 머드강좌
혼님의 머드강좌
방울꽃님의 머드강좌
리트님의 머드강좌
2Soo님의 머드강좌
내머드소개하기
접속가능머드
내머드소개하기
자료실
접속 프로그램
머드소스
머드 유틸리티
기타
커뮤니티
공지사항
등업신청
머드클럽에바란다
자유 게시판
질문 AND 답변
머드클럽 갤러리
구인구직
머드게임소개
사신전(死神戰)
사신전 소개
사신전 맵
사신전 명령어 모음집
천명(天命)
천명 소개
천명 맵
천명 명령어 모음집
마이페이지
로그인
회원가입
계정찾기
로그인
회원가입
계정찾기
텍스트머드클럽
검색
[circle]신세계 수표출금, 수표입금, 수표확인
성천사
0
7,807
0
0
2009-09-15 18:13:35
/* <br /> 2005/04/18 제작, 성천사 <br /> act.wizard.c :수표출금함수, 수표입금함수, 수표입금명령어, 수표출금명령어 <br /> structs.h 안에 struct char_player_data 안에 int supyo 추가삽입 <br /> utils.h 안에 #define GET_SUPYO(ch) ((ch)->player.supyo) 추가 삽입. <br /> 별도의 플레이어파일 리스탓 필요없이 운영중 추가가 가능한 소스 <br />*/ <br /> <br />void loadsupyo(struct char_data *ch) // 수표불러오기 함수 2005/04/18 제작 <br />{ <br /> void savesupyo(struct char_data *ch); // 수표저장 함수 <br /> FILE *fp; <br /> int bankData; // 불러온 데이타 저장할 변수 <br /> char bankname[50]; // 파일이름 넣을 변수 <br /> <br /> <br /> <br /> sprintf(bankname, "sbank/%ld.bnk", GET_IDNUM(ch)); // 파일이름 변수에 저장 <br /> fp = fopen(bankname, "rb"); // 은행 파일읽음 <br /> <br /> if (fp == NULL) { // 은행파일이 없을경우 <br /> savesupyo(ch); // 은행파일 만듦 <br /> return; <br /> } <br /> fscanf(fp, "%d ", &bankData); // 파일에서 int 자료형 읽음 <br /> GET_SUPYO(ch) = bankData; // 사용자 데이타에 저장 <br /> fclose(fp); // 파일닫음 <br /> return; <br />} // 수표불러오기 함수 종료 <br /> <br /> <br /> <br />void savesupyo(struct char_data *ch) // 수표저장함수 시작 2005/04/18 제작 <br />{ <br /> FILE *fp; <br /> char bankname[50]; // 파일이름 저장할 변수 <br /> <br /> sprintf(bankname, "sbank/%ld.bnk", GET_IDNUM(ch)); // 파일이름 변수에 저장 <br /> fp = fopen(bankname, "wb"); // 쓰기모드로 파일 불러들임 <br /> fprintf(fp, "%d ", GET_SUPYO(ch)); // 파일에 입력 <br /> fclose(fp); // 파일닫음 <br /> return; <br />} // 수표저장함수 종료 <br /> <br /> <br />ACMD(do_banksupyo) // 수표출금 시작 2005/04/18 제작 <br />{ <br /> extern void savesupyo(struct char_data *ch); // 수표저장하기함수 <br /> struct obj_data *give; // 물건구조체 <br /> int loadobj; // 물건번호 저장변수 <br /> int i, maxw = (CAN_CARRY_N(ch) - IS_CARRYING_N(ch) < 0 ? 0 : CAN_CARRY_N(ch) - IS_CARRYING_N(ch)); <br /> <br /> if (IS_NPC(ch)) // 맙이면 명령어 사용불가 <br /> return; <br /> <br /> <br /> <br /> one_argument(argument, arg); <br /> <br /> <br /> <br /> if (!*arg) { <br /> sprintf(buf, "사용법: 수표갯수 수표출금 " <br /> " " <br /> " 가장 많이 통용되는 10억원 짜리 수표를 발행해줍니다. " <br /> " 현재 보유중인 수표: %d장 ", GET_SUPYO(ch)); <br /> send_to_char(buf, ch); <br /> return; <br /> } <br /> <br /> <br /> <br /> if (!is_number(arg)) { // 숫자만 입력받음 <br /> send_to_char("수표갯수는 숫자로만 입력해주세요. ", ch); <br /> return; <br /> } <br /> <br /> if (GET_SUPYO(ch) < atoi(arg)) { // 현재 소지 수표 체크 <br /> send_to_char("수표를 그 정도로 많이 가지고 있지 않습니다. ", ch); <br /> return; <br /> } <br /> <br /> if (atoi(arg) <= 0) { <br /> send_to_char("최소한 한장 이상이어야 합니다. ", ch); <br /> return; <br /> } <br /> <br /> <br /> <br /> if (!maxw) { <br /> send_to_char("소지품이 너무 많아 수표를 인출 할 수 없습니다. n", ch); <br /> return; <br /> } <br /> <br /> <br /> <br /> if (atoi(arg) > maxw) { <br /> sprintf(buf, "최대 인출가능한 수표는 %d장 입니다. ", maxw); <br /> send_to_char(buf, ch); <br /> return; <br /> } <br /> <br />/* <br />아래 설정한 1095는 물건의 번호로 10억짜리 수표로 쓰이고 있다. 자신의 머드의 수표에 <br /> <br />맞게 물건번호를 지정한다. 아래에서 사용되는 1095를 제외한 물건의 번호는 10억보다 <br /> <br />작은 수표로 출금및 입금에 사용되지 않는 물건의 번호를 처리할때 쓰인다. <br /> <br />*/ <br /> for (i = 0; i < atoi(arg); i++) { // 여러장의 수표 처리 <br /> loadobj = real_object(1095); <br /> give = read_object(loadobj, REAL); <br /> obj_to_char(give, ch, 10); <br /> } <br /> <br /> GET_SUPYO(ch) -= atoi(arg); // 수표 수치 삭감 <br /> savesupyo(ch); // 수표 수치 저장 <br /> sprintf(buf, "10억원수표 %d장을 출금했습니다. ", i); <br /> send_to_char(buf, ch); <br /> WAIT_STATE(ch, PULSE_VIOLENCE * 1); <br /> return; <br />} // 수표출금 종료 <br /> <br /> <br /> <br />ACMD(do_inbanksupyo) // 수표입금 시작 2005/04/18 제작 <br />{ <br /> extern void savesupyo(struct char_data *ch); // 수표저장 함수 <br /> extern void loadsupyo(struct char_data *ch); // 수표불러오기 함수 <br /> struct obj_data *obj, *next_obj; <br /> int dotmode; <br /> int amount = 0; <br /> <br /> if(IS_NPC(ch)) <br /> return; <br /> <br /> one_argument(argument, arg); <br /> <br /> dotmode = find_all_dots(arg); <br /> <br /> <br /> if (!*arg) { <br /> sprintf(buf, "사용법: 아이템 수표입금 " <br /> " " <br /> " 수표를 수표은행에 입금합니다. " <br /> " 현재 보유중인 수표: %d장 ", GET_SUPYO(ch)); <br /> send_to_char(buf, ch); <br /> return; <br /> } <br /> <br /> <br /> <br /> if (is_number(arg)) { // 아이템 이름 입력 데이타가 숫자일경우 종료 <br /> send_to_char("숫자가 아닌 아이템 이름으로 입력해 주세요 ", ch); <br /> return; <br /> } <br /> <br /> <br /> <br /> if (GET_SUPYO(ch) >= 2000000000) { <br /> send_to_char("현재 수표은행이 꽉 찬 상태라 더 이상 입금이 불가능 합니다. ", ch); <br /> return; <br /> } <br /> <br /> if (dotmode == FIND_ALL) { // 아이템 복수지정 (모두) <br /> send_to_char("모두 입금할 수는 없습니다. 모든 명령을 이용하세요 ", ch); <br /> return; <br /> } else if (dotmode == FIND_ALLDOT) { // 아이템 복수지정 (모든) <br /> if (!*arg) { <br /> send_to_char("사용법: 수표갯수 수표입금 ", ch); <br /> return; <br /> } <br /> if (!(obj = get_obj_in_list_vis(ch, arg, ch->carrying))) { // 소지품에서 수표 찾음 <br /> sprintf(buf, "%s%s 찾을수 없습니다.. ", arg, check_josa(arg, 1)); <br /> send_to_char(buf, ch); <br /> return; /* 추가 */ <br /> } <br /> <br /> while (obj) { <br /> next_obj = get_obj_in_list_vis(ch, arg, obj->next_content); <br /> if(GET_OBJ_VNUM(obj) != 1095) { // 물건번호 1095가 아닌것은 입금불가 <br /> send_to_char("그것은 수표입금이 불가능한 물건입니다. ", ch); <br /> break; <br /> } <br /> amount++; <br /> extract_obj(obj); <br /> obj = next_obj; <br /> } <br /> GET_SUPYO(ch) += amount; <br /> savesupyo(ch); <br /> send_to_char("입금이 완료 되었습니다. ", ch); <br /> WAIT_STATE(ch, PULSE_VIOLENCE * 1); <br /> return; <br /> } else { // 아이템 하나 지정 <br /> if (!(obj = get_obj_in_list_vis(ch, arg, ch->carrying))) { // 소지품에서 수표 찾음 <br /> sprintf(buf, "%s%s 찾을수 없습니다.. ", arg, check_josa(arg, 1)); <br /> send_to_char(buf, ch); <br /> return; /* 추가 */ <br /> } <br /> if (GET_OBJ_VNUM(obj) == 1068 || GET_OBJ_VNUM(obj) == 1070) { <br /> send_to_char("10억원 미만의 수표는 출납기나 상점을 이용해 주세요. n", ch); <br /> return; <br /> } // 10억원 수표 외의 수표는 수표입금 불가 <br /> <br /> if(GET_OBJ_VNUM(obj) != 1095) { // 수표가 아닌것은 입금불가 <br /> send_to_char("수표입금이 불가능한 물건이 있습니다. ", ch); <br /> return; <br /> } <br /> <br /> extract_obj(obj); // 아이템 없애기 <br /> GET_SUPYO(ch) += 1; // 수표수치 1 더하기 <br /> savesupyo(ch); // 수표 수치 저장 <br /> send_to_char("입금이 완료 되었습니다. ", ch); <br /> WAIT_STATE(ch, PULSE_VIOLENCE * 1); <br /> return; <br /> } <br />} // 수표입금 종료 <br /> <br /> <br /> <br />ACMD(do_checksupyo) <br />{ <br /> struct char_data *i, *vict; <br /> int columns = 0; <br /> char bankname[50]; <br /> int charbank; <br /> FILE *fp; <br /> <br /> one_argument(argument, arg); <br /> <br /> if (!*arg) { <br /> send_to_char("접속한 사용자 보유수표 출력: ", ch); <br /> for (i = character_list; i; i = i->next) { <br /> if (!IS_MOB(i)) { <br /> sprintf(buf, "%10s, 보유수표: %10d장 | ", GET_NAME(i), GET_SUPYO(i)); <br /> if (!(++columns % 2)) <br /> strcat(buf, " "); <br /> send_to_char(buf, ch); <br /> } <br /> } <br /> send_to_char(" " <br /> " " <br /> " 사용법: <이름> 수표확인 ", ch); <br /> return; <br /> } <br /> <br /> if (strlen(arg) > MAX_NAME_LENGTH || strlen(arg) < 2) { <br /> send_to_char("이름은 한글 한자 이상 다섯자 이하만 입력 가능합니다. ", ch); <br /> return; <br /> } <br /> <br /> if (!(vict = get_char_vis(ch, arg))) { <br /> if (!get_id_by_name(arg)) { <br /> send_to_char("그런 캐릭터는 없습니다. ", ch); <br /> return; <br /> } else { <br /> sprintf(bankname, "sbank/%ld.bnk", get_id_by_name(arg)); <br /> fp = fopen(bankname, "rb"); // 은행 파일읽음 <br /> if (fp == NULL) { <br /> send_to_char("그 사람은 수표은행계좌가 없습니다. ", ch); <br /> return; <br /> } <br /> fscanf(fp, "%d ", &charbank); <br /> fclose(fp); <br /> sprintf(buf, "이름:%s, 보유수표:%d ", arg, charbank); <br /> send_to_char(buf, ch); <br /> return; <br /> } <br /> return; <br /> } else { <br /> sprintf(buf, "이름:%s, 보유수표:%d ", arg, GET_SUPYO(vict)); <br /> send_to_char(buf, ch); <br /> return; <br /> } <br />} <br /> <br /> <br />/* 수표확인은 운영자의 명령으로 interpreter.c 안에 운영자만 사용하게 설정해야 한다. <br /> 그리고 사용자가 접속할때 매번 수표의 갯수를 체크해야 하므로 interpreter.c 안에 <br /> nanny 함수 안에 void loadsupyo(struct char_data *ch); 선언후 case '1' 안에 <br /> aleq_load(d->character); 이 함수 아랫부분에 넣어주면 된다. 사용자 아이디 번호로 <br /> 저장이 되기 때문에 캐릭터 삭제후 동일 캐릭명 으로 접속해도 수표의 정보를 같지 <br /> 않지만 되도록이면 캐릭터 삭제시 수표의 정보도 삭제되게 설정 해 주는것이 좋다. <br /> 소스내 수표 번호는 자신의 머드에 맞게 수정하면 된다. <br />*/ <br />
0
0
새글
답변
수정
삭제
최신목록
전체목록
신세계 do_set 옵션 리스트
신세계 스킬셋 명령어(운영자명령어)
정회원 이상만 코멘트 사용이 가능합니다.
총 게시물 27개 / 검색된 게시물: 27개
[circle]
신세계 do_set 옵션 리스트
0
6858
0
0
성천사
2009-09-15
[circle]
신세계 수표출금, 수표입금, 수표확인
0
7808
0
0
성천사
2009-09-15
[circle]
신세계 스킬셋 명령어(운영자명령어)
1
8497
0
0
성천사
2008-07-06
[circle]
신세계 방청소 명령어
0
5177
0
0
성천사
2008-01-07
[circle]
신세계 방수정 명령어
1
5522
0
0
성천사
2008-01-05
[circle]
신세계 수거 명령어
0
5216
0
0
성천사
2008-01-05
[circle]
신세계 의원소스
0
7063
0
0
성천사
2008-01-05
이전
1
2
검색
글쓰기
최신목록
전체목록
시작일
종료일
검색어
이름
제목
내용
검색
닫기
로그인
회원가입
계정찾기
개인정보처리방침
이용약관
PC화면
Copyright (c) 텍스트머드클럽. All rights reserved.
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
닉네임으로 입력
내용
쪽지가 도착하였습니다.
쪽지함
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--