머드클럽
머드게임이란?
게임은 어떤 환경에서?
본격적으로 게임해 볼까?
배너교환
머드강좌
일반 머드강좌
성천사님의 머드강좌
혼님의 머드강좌
방울꽃님의 머드강좌
리트님의 머드강좌
2Soo님의 머드강좌
내머드소개하기
접속가능머드
내머드소개하기
자료실
접속 프로그램
머드소스
머드 유틸리티
기타
커뮤니티
공지사항
등업신청
머드클럽에바란다
자유 게시판
질문 AND 답변
머드클럽 갤러리
구인구직
머드게임소개
사신전(死神戰)
사신전 소개
사신전 맵
사신전 명령어 모음집
천명(天命)
천명 소개
천명 맵
천명 명령어 모음집
마이페이지
로그인
회원가입
계정찾기
로그인
회원가입
계정찾기
텍스트머드클럽
검색
[흑염][천명]노점상인.c 천명 삼일장에서 사용되고있는 노점상인 쏘스.
흑염기사
1
4,368
0
0
2004-06-13 18:22:07
기존에 사용하던 중개상인(광장에 상인)의 쏘스를 고쳐서 사용중입니다. <br />그냥 HanLP에서는 정상적으로 돌아가지 않습니다. <br />그냥 참고만 하세요. <br /> <br />노점상인은 유저가 상점을 열고 원하는 물품을 가격과 함께 등록하여 사용자가 부재시에도 <br />아이템 거래가 가능하게 해주는 NPC입니다. 등록된 아이템의 목록과 아이템이 팔려서 <br />누적된 돈들을 캐릭터이름.c로 저장합니다. 아이템의 이름만 저장하는 것이 아니라 <br />아이템의 모든 정보를 저장시키고 캐릭터에게서는 사라지게 됩니다. <br /> <br /> <br />#include <mudlib.h> <br />#define MAX_ITEM 50 <br /> <br />inherit MONSTER ; <br /> <br />void create () <br />{ <br /> ::create() ; <br /> seteuid(getuid()) ; <br /> set ("짧은설명", "여러 장인들의 물건을 중개해주는 상인이 서 있다.\n"+ <br /> "[ [0;33m사[0;37m, [0;33m품목[0;37m, [0;33m등록[0;37m, [0;33m등록취소[0;37m, [0;33m출금[0;37m ]") ; <br /> set ("긴설명",""); <br /> enable_commands() ; <br /> set ("아이디", ({ "상","상인" }) ) ; <br /> set_name ("상인") ; <br /> set_living_name("상인"); <br /> set ("무기이름","나뭇가지"); <br /> set_verbs( ({ "때렸다.","휘둘렀다." }) ); <br /> set ("공격금지",1); <br /> set ("설명안함",1); <br />} <br /> <br />void init() <br />{ <br /> add_action("load_bank", "사"); <br /> add_action("save_bank", "등록"); <br /> add_action("list_bank", "품목"); <br /> add_action("list_bank", "품"); <br /> add_action("cancel_bank", "등록취소"); <br /> add_action("depot_bank", "출금"); <br /> set ("짧은설명", ""+this_object()->query("주인")+"의 물건을 중개해주는 상인이 서 있다.\n"+ <br /> "[ [0;33m사[0;37m, [0;33m품목[0;37m, [0;33m등록[0;37m, [0;33m등록취소[0;37m, [0;33m출금[0;37m ]") ; <br />} <br /> <br /> <br />int load_bank(string); <br />string write_at(string,int,string); <br /> <br />string get_path() <br />{ <br /> return "/data/trade/개인/"+this_object()->query("주인")+".c"; <br />} <br />void set_gold(string name, int price) <br />{ <br /> string path = get_path(); <br /> <br /> path->add("은자/"+name,price); <br /> if(path->query("은자/"+name) == 0) <br /> { <br /> path->delete("은자/"+name); <br /> } <br /> if(!save_data(path)) <br /> { <br /> path->set("은자/"+name,path->query("은자/"+name)-price); <br /> return; <br /> } <br /> return; <br />} <br />int depot_bank(string str) <br />{ <br /> string path = get_path(); <br /> object th = this_player(); <br /> int money; <br /> if(th->query("이름") != this_object()->query("주인")) <br /> { <br /> write("노점상의 주인만 출금이 가능합니다.\n"); <br /> return 1; <br /> } <br /> money = path->query("은자/"+th->query("이름")); <br /> if(!path->query("은자/"+th->query("이름")) || path->query("은자/"+th->query("이름"))-money < 0) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m 잔액이 부족합니다.\n\n"); <br /> return 1; <br /> } <br /> set_gold(th->query("이름"),-money); <br /> th->add("금화",money); <br /> write("\n 당신은 "+money+"냥을 출금합니다. [ [1;33;40m잔액 [0;37;40m"+path->query("은자/"+th->query("이름"))+"[0;33;40m냥 [0;37;40m]\n\n"); <br /> return 1; <br />} <br />varargs int get_max_bank(object th) <br />{ <br /> if(!th) th = this_player(); <br /> <br /> return 100; <br />} <br /> <br /> <br />int check_room() <br />{ <br /> string path, line = ""; <br /> path = get_path(); <br /> <br /> if(read_file(path)) update2(path); <br /> else <br /> { <br /> line += " <br />#include <mudlib.h> <br />#include <daemons.h> <br /> <br />inherit OBJECT ; <br /> <br />void create() { <br />} <br />"; <br /> write_file(path,line); <br /> update2(path); <br /> } <br /> return 1; <br />} <br />int save_bank(string str) <br />{ <br /> int price; <br /> object th = this_player(), ob; <br /> string path, line, type = "아이템"; <br /> string info = ""; <br /> mixed *mix, tmp = ({ }); <br /> <br /> string MSG = "\n [1;31;40mメ[1;33;40m [1;33;40m사용법[0;37;40m : <[0;33;40m아이템이름[0;37;40m> <[0;33;40m가격[0;37;40m> 등록.\n\n"; <br /> if(!check_room()) return 1; <br /> <br /> if(!str) <br /> { <br /> write(MSG); <br /> return 1; <br /> } <br /> if(th->query("이름") != this_object()->query("주인")) <br /> { <br /> write("노점상의 주인만 등록이 가능합니다.\n"); <br /> return 1; <br /> } <br /> sscanf(str,"%s %d",str,price); <br /> if(!price || price <= 0) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m가격을 입력해 주세요.\n\n"); <br /> return 1; <br /> } <br /> ob = unuse_item(str,th); <br /> <br /> if(!ob) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m"+han_obj(str)+" 찾을 수 없습니다.\n\n"); <br /> return 1; <br /> } <br /> if(ob->query("버림금지")) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m"+han_desc(str)+" 팔 수 없습니다.\n\n"); <br /> return 1; <br /> } <br /> <br /> mix = (mixed)call_other(ob, "query_auto_load"); <br /> <br /> <br /> path = get_path(); <br /> if(!read_file(path)) <br /> { <br /> <br /> line = "inherit OBJECT ;\n"; <br /> line += "void create() {\n"; <br /> line += "}\n"; <br /> write_file(path,line); <br /> } <br /> update2(path); <br /> if(sizeof(path->query(type)) >= MAX_ITEM) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m"+MAX_ITEM+"개 이상 등록할 수 없습니다.\n\n"); <br /> return 1; <br /> } <br /> <br /> if(ob->query("무기")) <br /> { <br /> info = "데미지:"+ob->query("데미지")[0]+"~"+ob->query("데미지")[1]+" , "; <br /> } <br /> if(ob->query("방어력")) <br /> { <br /> info = "방어력:"+ob->query("방어력")+" , "; <br /> } <br /> else if(ob->query("종류") == "약") <br /> { <br /> info = "체력회복:"+ob->query("체력효과")+" 내력회복:"+ob->query("내력효과")+" * "+ob->query("딜레이")+" , "; <br /> } <br /> mix += ({ ({ ob->query_name(), req_string(ob->query("제한")), info+req_string(ob->query("향상")), price, th->query("이름") }) }); <br /> if(path->query(type)) <br /> { <br /> tmp = path->query(type); <br /> tmp += ({ mix }); <br /> path->set(type,tmp); <br /> } <br /> else <br /> { <br /> tmp += ({ mix }) ; <br /> path->set(type,tmp); <br /> } <br /> write(" "+han_obj(ob->query("이름"))+" "+price+"냥에 등록합니다. [ [1;33;40m관련 명령어 [0;37;40m: [0;33;40m사, 등록취소[0;37;40m ]\n"); <br /> say(han_iga(th->query("이름"))+" "+han_obj(ob->query("이름"))+" 등록합니다.\n"); <br /> if(!save_data(path)) <br /> { <br /> tmp -= ({ mix }) ; <br /> path->set(type,tmp); <br /> return 1; <br /> } <br /> ob->remove(); <br /> return 1; <br /> <br />} <br />int cancel_bank(string str) <br />{ <br /> int n; <br /> object th = this_player(), ob; <br /> string path, type = "아이템"; <br /> mixed *key; <br /> path = get_path(); <br /> if(!check_room()) return 1; <br /> if(!str) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m사용법[0;37;40m : <[0;33;40m번호[0;37;40m> 등록취소.\n"); <br /> return 1; <br /> } <br /> if(th->query("이름") != this_object()->query("주인")) <br /> { <br /> write("노점상의 주인만 취소가 가능합니다.\n"); <br /> return 1; <br /> } <br /> n = to_int(str); <br /> n--; <br /> if(n < 0) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m사용법[0;37;40m : <[0;33;40m번호[0;37;40m> 등록취소.\n\n"); <br /> return 1; <br /> } <br /> if(!read_file(path) || !path->query(type) || sizeof(path->query(type)) <= n) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m그런 물건은 팔고 있지 않습니다.[0;37;40m\n\n"); <br /> return 1; <br /> } <br /> key = path->query(type); <br /> if(th->query("이름") != key[n][2][4]) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m당신이 등록한 물품만 취소가 가능합니다.[0;37;40m\n\n"); <br /> return 1; <br /> } <br /> ob = clone_object(key[n][0]); <br /> call_other(ob,"init_arg",key[n][1]); <br /> ob->delete("업글완료"); <br /> ob->upgrade(ob); <br /> if(ob->move(th,1)) <br /> { <br /> write("당신은 물건을 찾을 수 없습니다.\n"); <br /> return 1; <br /> } <br /> <br /> write(" 당신은 "+han_obj(key[n][2][0])+" 등록 취소합니다.\n"); <br /> say(han_iga(th->query("이름"))+" "+han_obj(key[n][2][0])+" 등록 취소합니다.\n"); <br /> key -= ({ key[n] }); <br /> path->set(type,key); <br /> if(!save_data(path)) <br /> { <br /> key += ({ key[n] }); <br /> ob->remove(); <br /> return 1; <br /> } <br /> return 1; <br />} <br /> <br />int load_bank(string str) <br />{ <br /> int n, price; <br /> object th = this_player(), ob; <br /> string path, type = "아이템"; <br /> mixed *key; <br /> path = get_path(); <br /> if(!check_room()) return 1; <br /> if(!str) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m사용법[0;37;40m : <[0;33;40m종류[0;37;40m> <[0;33;40m번호[0;37;40m> 사.\n"); <br /> return 1; <br /> } <br /> n = to_int(str); <br /> n--; <br /> if(n < 0) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m사용법[0;37;40m : <[0;33;40m종류[0;37;40m> <[0;33;40m번호[0;37;40m> 사.\n\n"); <br /> return 1; <br /> } <br /> if(!read_file(path) || !path->query(type) || sizeof(path->query(type)) <= n) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m그런 물건은 팔고 있지 않습니다.[0;37;40m\n\n"); <br /> return 1; <br /> } <br /> key = path->query(type); <br /> price = key[n][2][3]; <br /> if(th->query("금화")-price < 0) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m당신은 은자가 부족합니다.[0;37;40m\n\n"); <br /> return 1; <br /> } <br /> ob = clone_object(key[n][0]); <br /> call_other(ob,"init_arg",key[n][1]); <br /> ob->delete("업글완료"); <br /> ob->upgrade(ob); <br /> if(ob->move(th,1)) <br /> { <br /> write("당신은 물건을 찾을 수 없습니다.\n"); <br /> return 1; <br /> } <br /> <br /> write(" 당신은 "+han_obj(ob->query("이름"))+" "+price+"냥에 삽니다.\n"); <br /> say(han_iga(th->query("이름"))+" "+han_obj(ob->query("이름"))+" 삽니다.\n"); <br /> th->add("금화",-price); <br /> <br /> set_gold(key[n][2][4], price); <br /> key -= ({ key[n] }); <br /> path->set(type,key); <br /> if(!save_data(path)) <br /> { <br /> set_gold(key[n][2][4], -price); <br /> key += ({ key[n] }); <br /> ob->remove(); <br /> return 1; <br /> } <br /> return 1; <br />} <br /> <br />int list_bank(string type) <br />{ <br /> int n; <br /> string path, line=""; <br /> mixed *mix; <br /> path = get_path(); <br /> <br /> type = "아이템"; <br /> if(!check_room()) return 1; <br /> if(!type) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m사용법[0;37;40m : <[0;33;40m종류[0;37;40m> 품목.\n"); <br /> return 1; <br /> } <br /> if(!read_file(path) || !path->query(type) || !sizeof(path->query(type))) <br /> { <br /> write("\n [1;31;40mメ[1;33;40m [1;33;40m "+han_desc(type)+" 판매중인 물건이 없습니다.\n"); <br /> return 1; <br /> } <br /> mix = path->query(type); <br /> write(" <br /> [1;30;40m┍[1;31;41m▒[1;37;41m품 목[1;31;41m▒[1;30;40m┑[1;30;40m <br /> ┎─┰───────────┴━━━━━┴──────────────┰─┒ <br /> ┃[32;0m┿[30;1m┃ [1;33;40m사용법[0;37;40m : <이름> 사, <종류> <번호> 등록, <종류> <번호> 등록취소[1;30;40m ┃[32;0m┿[30;1m┃ <br /> ┃[32;0m┿[30;1m┠────────────━━━━━───────────────┸─┚"); <br /> for(int i = 0; i < sizeof(mix);i++) <br /> { <br /> n = i+1; <br /> if(i != 0) line+= " ┃[32;0m┿[30;1m┃\n"; <br /> line+= sprintf(" ┃[32;0m┿[30;1m┃[37;0m %2d. %-s [30;1m%|10s[37;0m %13d[33;0m냥\n[30;1m",n,resize_string(mix[i][2][0],31), mix[i][2][4], mix[i][2][3]); <br /> line+= sprintf(" ┃[32;0m┿[30;1m┃[37;0m 제한: %s[33;0m\n[30;1m",mix[i][2][1]); <br /> line+= sprintf(" ┃[32;0m┿[30;1m┃[37;0m 능력: %s[33;0m\n[30;1m",mix[i][2][2]); <br /> } <br /> <br /> <br /> line+=" ┃[32;0m┿[30;1m┠──━━━━━━━────────────━━━━━━━────┰─┒ <br /> ┞─╀────────────━━━━━───────────────╀─┦"; <br /> <br /> write_page(line); <br /> return 1; <br />} <br /> <br />string write_at(string line, int at, string str) <br />{ <br /> int sz = sizeof(line), tmp; <br /> if(sz < at) <br /> { <br /> for(int i = 0; i < at-sz;i++) <br /> { <br /> line += " "; <br /> } <br /> } <br /> for(int i = 0; i < sizeof(str);i++) <br /> { <br /> tmp = at+i; <br /> line[tmp] = str[i]; <br /> } <br /> return line; <br />} <br /> <br />
0
0
새글
답변
수정
삭제
최신목록
전체목록
Ascii Player files 패치된 써클머드 한글화 시키기!
[천명] save_data.c - 특정 오브젝트의 플래그를 아이템 파일처럼 저장시켜준다.
1
Comments
달마
2004.06.15(화) 오전 10:30:26
답변
좋은 자료들 감사합니다.
코멘트를 삭제할 비밀번호를 입력하세요.
비밀번호:
댓글에 답하기
입력
닫기
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 107개 / 검색된 게시물: 107개
누구든지 머드 강의를 올리수 있는 곳입니다...^^
[circle]
서클의 지도 공부..
0
3076
0
0
머드짱
2004-09-03
[천무혼]
은행 시스템 만들기!
2
2947
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
3346
0
0
미르
2004-07-06
[흑염]
[천명]노점상인.c 천명 삼일장에서 사용되고있는 노점상인 쏘스.
1
4369
0
0
흑염기사
2004-06-13
[흑염]
[천명] save_data.c - 특정 오브젝트의 플래그를 아이템 파일처럼 저장시켜준다.
0
2701
0
0
흑염기사
2004-06-13
[흑염]
[천명] req_string.c - mapping을 보기좋게 string으로.
0
2794
0
0
흑염기사
2004-06-13
[mordor]
상점개설
3
3039
0
0
GrayRese
2004-05-27
[mordor]
게시판의 기능 편하게..(위로 올라가고, 글쓰기기능 추가)
1
3228
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
3153
0
0
어두운별
2004-04-30
[기타]
gdb 사용법!
3
4528
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
2986
0
0
탈퇴
2004-02-28
[mordor]
순위 소스 입니다.
0
4293
0
0
달마
2004-02-28
이전
1
2
3
4
5
6
다음
검색
글쓰기
최신목록
전체목록
시작일
종료일
분류별 검색
전체보기
기타
circle
hanlp
mordor
소스분석
흑염
천무혼
검색어
이름
제목
내용
검색
닫기
로그인
회원가입
계정찾기
개인정보처리방침
이용약관
PC화면
Copyright (c) 텍스트머드클럽. All rights reserved.
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
닉네임으로 입력
내용
쪽지가 도착하였습니다.
쪽지함
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--