머드클럽
머드게임이란?
게임은 어떤 환경에서?
본격적으로 게임해 볼까?
배너교환
머드강좌
일반 머드강좌
성천사님의 머드강좌
혼님의 머드강좌
방울꽃님의 머드강좌
리트님의 머드강좌
2Soo님의 머드강좌
내머드소개하기
접속가능머드
내머드소개하기
자료실
접속 프로그램
머드소스
머드 유틸리티
기타
커뮤니티
공지사항
등업신청
머드클럽에바란다
자유 게시판
질문 AND 답변
머드클럽 갤러리
구인구직
머드게임소개
사신전(死神戰)
사신전 소개
사신전 맵
사신전 명령어 모음집
천명(天命)
천명 소개
천명 맵
천명 명령어 모음집
마이페이지
로그인
회원가입
계정찾기
로그인
회원가입
계정찾기
텍스트머드클럽
검색
[mordor]상점개설
GrayRese
3
3,038
0
0
2004-05-27 13:48:00
/*******************************************************/ <br />/* */ <br />/* 상점관련 소스입니다. */ <br />/* 편의상 파일을 하나 만들어서 관리하는게 편하실듯.. */ <br />/* 아무튼 유용하게 쓰세요 ^^& */ <br />/* 기타 문의는 msn tkeo@grayrese.com 로 해주세요 -ㅅ- */ <br />/* */ <br />/* http://www.grayrese.com */ <br />/* tkeo@dreamwiz.com */ <br />/* GrayRese */ <br />/* */ <br />/*******************************************************/ <br />//참고로 비리아이템 체크하는 프로그램 응용했습니다. <br />//방 만들고 어쩌고 하는 방법도 있는데 <br />//이 방법은 자신의 소지품에 플레그를 걸어서 <br />//직접 판매하는 방법입니다. <br />#include "mstruct.h" <br />#include "mextern.h" <br /> <br /> <br />/*************/ <br />/* 상점-개설 */ <br />/*************/ <br />int shop_list(ply_ptr, cmnd) <br />creature *ply_ptr; <br />cmd *cmnd; <br />{ <br /> char str[2048]; <br /> int fd; <br /> room *rom_ptr; <br /> creature *crt_ptr; <br /> otag *op; <br /> <br /> rom_ptr = ply_ptr->parent_rom; <br /> fd = ply_ptr->fd; <br /> <br /> if(F_ISSET(ply_ptr, PBLIND)) { <br /> ANSI(fd, BLUE); <br /> print(fd, "당신은 눈이 멀어서 아무것도 볼 수가 없습니다!"); <br /> ANSI(fd, WHITE); <br /> return(0); <br /> } <br /> <br /> crt_ptr = find_crt(ply_ptr, rom_ptr->first_mon, cmnd->str[1], cmnd->val[1]); <br /> <br /> if(!crt_ptr) { <br /> lowercize(cmnd->str[1], 1); <br /> crt_ptr = find_crt(ply_ptr, rom_ptr->first_ply, cmnd->str[1], cmnd->val[1]); <br /> if(!crt_ptr) { <br /> print(fd, "그런 사람 없어요!"); <br /> return(0); <br /> } <br /> } <br /> <br /> if(!F_ISSET(crt_ptr, PGSHOP)) { <br /> print(fd, "그 사람은 상점을 차리지 않았습니다."); <br /> return(0); <br /> } <br /> <br /> op = crt_ptr->first_obj; <br /> <br /> if(!op) { <br /> print(fd,"그가 팔고 있는 물건은 없습니다."); <br /> return(0); <br /> } <br /> else { <br /> print(fd, "%s님이 팔고 있는 물건", crt_ptr); <br /> while(op) { <br /> if(F_ISSET(op->obj, OSEITE)) <br /> print(fd, "\n %-30s 가격: %ld", obj_str(op->obj, 1, CAP), op->obj->gold); <br /> op = op->next_tag; <br /> } <br /> } <br /> <br /> return(0); <br />} <br /> <br /> <br />/*************/ <br />/* 상점-구입 */ <br />/*************/ <br />int shop_buy(creature* ply_ptr, cmd* cmnd) <br />{ <br /> int i, cnt, fd; <br /> creature *crt_ptr; <br /> room *rom_ptr; <br /> object *obj_ptr; <br /> <br /> rom_ptr = ply_ptr->parent_rom; <br /> fd = ply_ptr->fd; <br /> <br /> if( cmnd->num < 2 ) { <br /> print(fd, "\n무엇을 구입하시려구요?"); <br /> return(0); <br /> } <br /> <br /> if( cmnd->num < 3 ) { <br /> print(fd, "\n사용법: <괴물이름> <물건> 구입"); <br /> return(0); <br /> } <br /> <br /> cmnd->str[1][0] = up(cmnd->str[1][0]); <br /> crt_ptr = find_crt(ply_ptr, rom_ptr->first_ply, cmnd->str[1], cmnd->val[1]); <br /> <br /> if(!crt_ptr) { <br /> cmnd->str[1][0] = low(cmnd->str[1][0]); <br /> crt_ptr = find_crt(ply_ptr, rom_ptr->first_mon, cmnd->str[1], cmnd->val[1]); <br /> if(!crt_ptr) { <br /> print(fd, "그런 사람은 여기 없어요!\n"); <br /> return(0); <br /> } <br /> } <br /> <br /> if(!F_ISSET(crt_ptr, PGSHOP)) { <br /> print(fd,"그 사람은 상점을 차리지 않았습니다."); <br /> return(0); <br /> } <br /> <br /> for(i = 0, cnt = 0; i < MAXWEAR; i++) <br /> if( ply_ptr->ready[i] ) cnt++; <br /> <br /> cnt += count_inv(ply_ptr, -1); <br /> <br /> obj_ptr = find_obj(ply_ptr, crt_ptr->first_obj, cmnd->str[2], cmnd->val[2]); <br /> <br /> if( !obj_ptr ) { <br /> print(fd, "\n그런 물건은 팔지 않습니다."); <br /> return(0); <br /> } <br /> <br /> if( ply_ptr->gold < obj_ptr->gold ) { <br /> print(fd, "\n돈이 모자랍니다."); <br /> return(0); <br /> } <br /> <br /> if( weight_ply(ply_ptr) + weight_obj(obj_ptr) > max_weight(ply_ptr) || cnt >= 150 ) <br /> { <br /> print(fd, "\n당신은 더이상 가질 수 없습니다."); <br /> return(0); <br /> } <br /> <br /> ply_ptr->gold -= obj_ptr->gold; <br /> crt_ptr->gold += obj_ptr->gold; <br /> del_obj_crt(obj_ptr, crt_ptr); <br /> add_obj_crt(obj_ptr, ply_ptr); <br /> F_CLR(obj_ptr, OSEITE); <br /> F_CLR(ply_ptr, PHIDDN); <br /> <br /> print(fd, "\n당신은 %I%j 샀습니다.", obj_ptr, "3"); <br /> broadcast_rom(fd, ply_ptr->rom_num, "\n%M%j %I%j 샀습니다.", ply_ptr, "1", obj_ptr, "3"); <br /> <br /> savegame_nomsg(ply_ptr); <br /> <br /> return(0); <br />} <br /> <br /> <br />/*************/ <br />/* 상점-닫기 */ <br />/*************/ <br />int shop_close(ply_ptr) <br />creature *ply_ptr; <br />{ <br /> int fd; <br /> otag *op; <br /> <br /> fd = ply_ptr->fd; <br /> op = ply_ptr->first_obj; <br /> <br /> if(!F_ISSET(ply_ptr, PGSHOP)) { <br /> print(fd, "당신은 상점을 차리지 않았습니다."); <br /> return(0); <br /> } <br /> <br /> F_CLR(ply_ptr, PGSHOP); <br /> <br /> while(op) { <br /> if(F_ISSET(op->obj, OSEITE)) <br /> F_CLR(op->obj, OSEITE); <br /> op = op->next_tag; <br /> } <br /> <br /> print(fd, "당신은 자리를 자리를 접고 일어납니다."); <br /> broadcast_rom(fd, ply_ptr->rom_num, "\n%M님이 자리를 접고 일어납니다.", ply_ptr, "1"); <br /> <br /> return(0); <br />} <br /> <br /> <br />/************/ <br />/* 상점-개설 */ <br />/************/ <br />int shop_open(ply_ptr) <br />creature *ply_ptr; <br />{ <br /> int fd; <br /> <br /> fd = ply_ptr->fd; <br /> <br /> if(F_ISSET(ply_ptr, PGSHOP)) { <br /> print(fd, "당신은 벌써 상점을 차리고 있습니다."); <br /> return(0); <br /> } <br /> <br /> F_SET(ply_ptr, PGSHOP); <br /> print(fd, "당신은 자리를 깔고 장사할 준비를 합니다."); <br /> broadcast_rom(fd, ply_ptr->rom_num, "\n%M님이 자리를 깔고 장사할 준비를 합니다.", ply_ptr, "1"); <br /> return(0); <br />} <br /> <br /> <br />/*****************/ <br />/* 상점-물건등록 */ <br />/*****************/ <br />int shop_setting(ply_ptr, cmnd) <br />creature *ply_ptr; <br />cmd *cmnd; <br />{ <br /> int fd; <br /> creature *crt_ptr; <br /> object *obj_ptr; <br /> <br /> fd = ply_ptr->fd; <br /> obj_ptr = find_obj(ply_ptr, ply_ptr->first_obj, cmnd->str[1], cmnd->val[1]); <br /> <br /> if(!F_ISSET(ply_ptr, PGSHOP)) { <br /> print(fd, "당신은 상점을 차리지 않았습니다."); <br /> return(0); <br /> } <br /> <br /> if(F_ISSET(obj_ptr, OSEITE)) { <br /> print(fd, "그 상품은 이미 진열되어 있습니다."); <br /> return(0); <br /> } <br /> <br /> if(!obj_ptr) { <br /> print(fd, "그런 물건은 없습니다."); <br /> return(0); <br /> } <br /> <br /> F_SET(obj_ptr, OSEITE); <br /> print(fd, "\n당신은 %I%j 진열대에 올렸습니다.",obj_ptr, "3"); <br /> broadcast_rom(fd, ply_ptr->rom_num, "\n%M님이 %I%j 진열대에 올려놨습니다.", ply_ptr, obj_ptr, "3"); <br /> <br /> return(0); <br />} <br /> <br /> <br />/*********************/ <br />/* 상점-물건등록해제 */ <br />/*********************/ <br />int shop_unsetting(ply_ptr, cmnd) <br />creature *ply_ptr; <br />cmd *cmnd <br />{ <br /> int fd; <br /> creature *crt_ptr; <br /> object *obj_ptr; <br /> <br /> fd = ply_ptr->fd; <br /> obj_ptr = find_obj(ply_ptr, ply_ptr->first_obj, cmnd->str[1], cmnd->val[1]); <br /> <br /> if(!obj_ptr) { <br /> print(fd, "그런 물건은 없습니다."); <br /> return(0); <br /> } <br /> <br /> if(!F_ISSET(ply_ptr, PGSHOP)) { <br /> print(fd, "당신은 상점을 차리지 않았습니다."); <br /> return(0); <br /> } <br /> <br /> F_CLR(obj_ptr, OSEITE); <br /> print(fd, "\n당신은 %I%j 진열대에 내렸습니다.",obj_ptr, "3"); <br /> broadcast_rom(fd, ply_ptr->rom_num, "\n%M님이 %I%j 진열대에서 내려놨습니다.", ply_ptr, obj_ptr, "3"); <br /> <br /> return(0); <br />} <br /> <br /> <br />/*****************/ <br />/* 상점-물건가격 */ <br />/*****************/ <br />int shop_value(ply_ptr, cmnd) <br />creature *ply_ptr; <br />cmd *cmnd; <br />{ <br /> int fd, len; <br /> long amt; <br /> creature *crt_ptr; <br /> object *obj_ptr; <br /> <br /> fd = ply_ptr->fd; <br /> amt = atol(cmnd->str[2]); <br /> <br /> obj_ptr = find_obj(ply_ptr, ply_ptr->first_obj, cmnd->str[1], cmnd->val[1]); <br /> <br /> if(!obj_ptr) { <br /> print(fd, "그런 물건은 없습니다."); <br /> return(0); <br /> } <br /> <br /> if(!F_ISSET(ply_ptr, PGSHOP)) { <br /> print(fd, "당신은 상점을 차리지 않았습니다."); <br /> return(0); <br /> } <br /> <br /> len = strlen(cmnd->str[2]); <br /> <br /> if(len>2 && strcmp(&cmnd->str[2][len-2],"엘")) { <br /> print(fd, "금액 뒤에는 '엘'을 붙여야 합니다."); <br /> return(0); <br /> } <br /> <br /> if(amt < 1) { <br /> print(fd, "돈의 단위는 음수가 될수 없습니다.\n"); <br /> return(0); <br /> } <br /> <br /> obj_ptr->gold= amt; <br /> print(fd, "\n당신은 %I의 가격을 %d엘로 책정합니다.",obj_ptr, obj_ptr->gold); <br /> broadcast_rom(fd, ply_ptr->rom_num, "\n%M님이 %I의 가격을 %d엘로 책정했습니다.", ply_ptr, obj_ptr, obj_ptr->gold); <br /> <br /> return(0); <br />}
0
0
새글
답변
수정
삭제
최신목록
전체목록
[천명] req_string.c - mapping을 보기좋게 string으로.
게시판의 기능 편하게..(위로 올라가고, 글쓰기기능 추가)
3
Comments
달마
2004.05.27(목) 오후 06:47:19
답변
수고 많으십니다~~ 화이팅.!!
Raven
2004.05.30(일) 오후 09:23:38
답변
아이템에 플래그를 따로 지정하는 방법으로 하셨군요.
전 따로 컨테이너를 만들고 거기에 팔 물건을 담아두는 걸로 만들어 본적이 있었죠. ^^;
GrayRese
2004.05.30(일) 오후 11:36:03
답변
그렇게 하면 방을 따로 만들고 어쩌고 해야되서 좀 번거로울거 같아서 이렇게 했죠-_-ㅁㅁ
근데 경매가 있어서 이게 거의 필요가 없더군요-_-..
뭐 상인이란 부업같은걸 만들어서 이 스킬이 얼만큼 있어야 경매하고 할수 있다고
하면 모를까요-_-ㅁㅁ
코멘트를 삭제할 비밀번호를 입력하세요.
비밀번호:
댓글에 답하기
입력
닫기
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 107개 / 검색된 게시물: 107개
누구든지 머드 강의를 올리수 있는 곳입니다...^^
[circle]
서클의 지도 공부..
0
3076
0
0
머드짱
2004-09-03
[천무혼]
은행 시스템 만들기!
2
2946
0
0
천무혼
2004-08-12
[흑염]
기술의 지속시간과 향상 능력치를 call_out 없이 구현.
1
3113
0
0
흑염기사
2004-08-12
[천무혼]
없는 명령어를 입력했을때 나오는 '^^;' 바꾸기
3
2777
0
0
천무혼
2004-08-09
[기타]
vi 에디터의 안시에 관한 내용입니다.
1
3045
0
0
머드사랑(1)
2004-07-26
[circle]
Ascii Player files 패치된 써클머드 한글화 시키기!
2
3345
0
0
미르
2004-07-06
[흑염]
[천명]노점상인.c 천명 삼일장에서 사용되고있는 노점상인 쏘스.
1
4368
0
0
흑염기사
2004-06-13
[흑염]
[천명] save_data.c - 특정 오브젝트의 플래그를 아이템 파일처럼 저장시켜준다.
0
2700
0
0
흑염기사
2004-06-13
[흑염]
[천명] req_string.c - mapping을 보기좋게 string으로.
0
2793
0
0
흑염기사
2004-06-13
[mordor]
상점개설
3
3039
0
0
GrayRese
2004-05-27
[mordor]
게시판의 기능 편하게..(위로 올라가고, 글쓰기기능 추가)
1
3227
0
0
달마
2004-05-19
[circle]
hanlp의 지도.c
0
3333
0
0
사천건
2004-05-18
[circle]
시간의문 경험치 못먹는거 먹게하는방법(허접이라두 잘봐주세영)
4
2809
0
0
손문
2004-05-07
[hanlp]
[천명] 완치 이벤트 ......
2
3152
0
0
어두운별
2004-04-30
[기타]
gdb 사용법!
3
4527
0
0
GrayRese
2004-04-23
[hanlp]
현재 습득한 기술 목록 보이기.
2
2924
0
0
박대성
2004-04-19
[circle]
새천사님의 수정 사항에 추가할점..
1
2800
0
0
푸른가람
2004-04-03
[hanlp]
10초간 데미지와 방어력 상승
2
2965
0
0
박대성
2004-03-14
[mordor]
*완치 기능?;; 허접해요^-^;;
1
2985
0
0
탈퇴
2004-02-28
[mordor]
순위 소스 입니다.
0
4292
0
0
달마
2004-02-28
이전
1
2
3
4
5
6
다음
검색
글쓰기
최신목록
전체목록
시작일
종료일
분류별 검색
전체보기
기타
circle
hanlp
mordor
소스분석
흑염
천무혼
검색어
이름
제목
내용
검색
닫기
로그인
회원가입
계정찾기
개인정보처리방침
이용약관
PC화면
Copyright (c) 텍스트머드클럽. All rights reserved.
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
닉네임으로 입력
내용
쪽지가 도착하였습니다.
쪽지함
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--