6Comments
MaGuN
2004.01.17(토) 오후 09:10:30
기본적인 플로어차트가 이것이 맞는가요?
----------------------------
플레이어가 노인에게 가서 '노인 약 대화'라는 명령을 치면
>>플레이어가 이미 '노인 약 대화'를 쳤는지 검색
만약 플레이어 데이타의 임무값이 1이면 -> 빨리 구해오라고 말을 하고 종료
아니면 -> {
플레이어에게 허브를 구해오라고 말을 하고
플레이어의 데이타에 임무값을 1로 셋팅한다.
}
----------------------------
허브를 가지고 노인에게 가서 '노인 허브 대화' 라고 명령을 치면
>> 임무를 받은 상태인지 검색
만약 플레이어의 임무값이 1보다 작으면 -> 허브는 몸에 좋다고 엉뚱한 말을 해준다.
아니면 만약 플레이어의 임무값이 1이면 -> 소지품에 허브가 있는지 검색
만약 허브가 있으면 {
어떤 아이템을 줄건지 검색해서 준다.
플레이어의 임무값을 지운다.
}
아니면 만약 허브가 없으면 {
허브를 가지고 오라고 말을 해 주고 종료.
}
Xerxes
2004.01.17(토) 오후 09:50:12
네...
자세한 설명과 소스 부탁드립니다.
이런 부탁을 드려서 죄송합니다.
자세한 설명과 소스 부탁드립니다.
이런 부탁을 드려서 죄송합니다.
MaGuN
2004.01.17(토) 오후 10:51:18
#include <daemons.h>
#include <mudlib.h>
inherit DAEMON;
int cmd(string str) {
string who, msg, *ignores, name;
object th, ob;
if( !str || sscanf( str, "%s %s", who, msg ) != 2 ) {
notify_fail("\n* 사용법 : <대상> <할말> 대화\n\n");
return 0;
}
th = this_player();
name = th->query("이름");
ob = find_player( who );
if( !ob ) {
string func;
/* 그런 사용자가 없다면 현재 룸에 NPC가 있는지 본다. */
ob = present(who, environment(th));
if( !ob ) {
/* 그런 이름을 가진 NPC가 없다면 */
return notify_fail("그런 대상을 찾을 수 없습니다.\n" );
}
if( !living(ob) ) {
/* 오브젝트는 있지만 살아 있는 NPC가 아니라면 */
write("당신은 "+han_obj(who)+" 보고 중얼 거립니다.\n" );
say(han_iga(name)+" "+han_obj(who)+" 보고 중얼 거립니다.\n" );
return 1;
}
/* 룸에 NPC가 있고 NPC에 event_func이라는 값이 있으면 함수를 실행한다. */
if ((func = ob->query("event_func"))) {
call_other(ob,func,th,msg);
say(han_iga(name)+" "+han_tool(who)+" 대화를 나눕니다.\n" );
return 1;
}
}
ignores = ob->query("대화거부");
if (ignores) if( member_array(name,ignores) != -1) {
write(who+"님은 당신과의 대화를 거부하고 있습니다.\n");
return 1;
}
ob->set_temp("대화상대",name);
tell_object(ob,"* "+name+"님이 보낸 메세지 : "+msg+"\n");
write("당신은 "+who+"님께 대화를 보냈습니다.\n");
return 1;
}
#include <mudlib.h>
inherit DAEMON;
int cmd(string str) {
string who, msg, *ignores, name;
object th, ob;
if( !str || sscanf( str, "%s %s", who, msg ) != 2 ) {
notify_fail("\n* 사용법 : <대상> <할말> 대화\n\n");
return 0;
}
th = this_player();
name = th->query("이름");
ob = find_player( who );
if( !ob ) {
string func;
/* 그런 사용자가 없다면 현재 룸에 NPC가 있는지 본다. */
ob = present(who, environment(th));
if( !ob ) {
/* 그런 이름을 가진 NPC가 없다면 */
return notify_fail("그런 대상을 찾을 수 없습니다.\n" );
}
if( !living(ob) ) {
/* 오브젝트는 있지만 살아 있는 NPC가 아니라면 */
write("당신은 "+han_obj(who)+" 보고 중얼 거립니다.\n" );
say(han_iga(name)+" "+han_obj(who)+" 보고 중얼 거립니다.\n" );
return 1;
}
/* 룸에 NPC가 있고 NPC에 event_func이라는 값이 있으면 함수를 실행한다. */
if ((func = ob->query("event_func"))) {
call_other(ob,func,th,msg);
say(han_iga(name)+" "+han_tool(who)+" 대화를 나눕니다.\n" );
return 1;
}
}
ignores = ob->query("대화거부");
if (ignores) if( member_array(name,ignores) != -1) {
write(who+"님은 당신과의 대화를 거부하고 있습니다.\n");
return 1;
}
ob->set_temp("대화상대",name);
tell_object(ob,"* "+name+"님이 보낸 메세지 : "+msg+"\n");
write("당신은 "+who+"님께 대화를 보냈습니다.\n");
return 1;
}
MaGuN
2004.01.17(토) 오후 10:51:51
위 루틴은 대화.c 입니다.
MaGuN
2004.01.17(토) 오후 10:52:09
#include <mudlib.h>
inherit MONSTER ;
void create ()
{
set ("레벨",1);
::create() ;
seteuid(getuid()) ;
set ("짧은설명", "나이를 짐작하기 어려울 정도로 노쇠한 할아버지가 앉아 있다.") ;
set ("긴설명","금방이라도 저세상으로 갈것 같은 노인이다.\n");
enable_commands() ;
set ("아이디", ({ "노인","할아버지" }) ) ;
set_name ("노인") ;
set_living_name("노인");
set ("무기이름","지팡이");
set_verbs( ({ "때렸다.","휘둘렀다." }) );
set("event_func","event_msg");
}
int event_msg(object th, string str) {
/* 플레이어가 노인에게 와서 '노인 약 대화' 라고 했을때. */
if( str == "약" ) {
/* 임무를 시작한적이 없다면 허브를 구해 오라고 한다. */
if( !th->query("이벤트/허브") ) {
write("노인 : 약이 필요한가? 그렇다면 허브를 구해오게\n");
th->set("이벤트/허브",1);
return 1;
}
/* 이미 '노인 약 대화'를 했다면 빨리 구해 오라고 한다. */
write("노인 : 허브를 구해 오라니까.. 여기서 뭐하고 있나?\n");
return 1;
}
/* 플레이어가 노인에게 와서 '노인 허브 대화' 라고 했을때. */
if( str == "허브" ) {
string *obs, *path, msg;
object item, ob;
int ran;
/* '노인 약 대화'를 먼저 안하고 '노인 허브 대화' 라고 했다면. */
if( !th->query("이벤트/허브") ) {
write("노인 : 허브? 몸에 아주 좋은거라네..\n");
return 1;
}
/* 소지품에 허브가 없으면 허브를 가지고 오라고 한다. */
if( !(item = present("허브",th)) ) {
write("노인 : 그래.. 허브 말이야.. 허브를 구해 오라구!\n");
return 1;
}
/* 플레이어에게 줄 아이템의 이름 */
obs = ({ "러브캔디", "매직캔디" });
/* 플레이어에게 줄 아이템의 경로 */
path = ({ "/obj/아이템/러브캔디", "/obj/아이템/매직캔디" });
/* 어떤 아이템을 줄건지 렌덤값을 만든다. */
ran = random(sizeof(obs));
/* 플레이어에게 줄 아이템이 없거나 아이템에 에러가 있다면 */
if( !(ob = clone_object(path[ran])) ) {
write(
"노인 : "+path[ran]+" 화일이 없거나 화일에 에러가 있네"
" 게임의 운영자에게 버그라고 알려 주게나.\n"
);
return 1;
}
/* 일단 사용자 소지품에 있는 허브를 잠시 옮겨 놓는다. */
item->move(this_object());
/* 미리 출력할 메세지를 정의해 놓는다. */
msg = "노인 : 허브를 구해 왔구먼.. 좋아 자네에게 상품을 주겠네.\n";
/* 사용자가 가진게 많아서 아이템을 못받는다면 처리한다. */
if( ob->move(th) ) {
msg += " 하지만 자넨 가진게 너무 많아서 줄수가 없군.\n";
/* 만들어 놨던 아이템을 없앤다. */
ob->remove();
/* 플레이어에게 허브를 돌려 준다. */
item->move(th);
/* 메세지를 출력하고 종료한다. */
write(msg);
return 1;
}
/* 사용자가 아이템을 잘 받았다면 허브를 없앤다. */
item->remove();
/* 임무에 관한 기록을 지운다. */
th->delete("이벤트/허브");
/* 사용자에게 아이템을 준다는 메세지를 뿌려 준다. */
msg += "\n노인이 당신에게 "+han_obj(obs[ran])+" 주었습니다.\n";
write(msg);
/*
* 같은 룸에 있는 플레이어를 제외한 모든 사람들에게
* 노인이 누구에게 아이템을 준다는 메세지를 뿌려 준다.
*/
message("이벤트",
"노인이 "+th->query("이름")+"에게 "+han_obj(obs[ran])+" 줍니다.\n",
environment(th),th);
return 1;
}
write("노인이 고개를 들어 하늘을 봅니다.\n");
return 1;
}
inherit MONSTER ;
void create ()
{
set ("레벨",1);
::create() ;
seteuid(getuid()) ;
set ("짧은설명", "나이를 짐작하기 어려울 정도로 노쇠한 할아버지가 앉아 있다.") ;
set ("긴설명","금방이라도 저세상으로 갈것 같은 노인이다.\n");
enable_commands() ;
set ("아이디", ({ "노인","할아버지" }) ) ;
set_name ("노인") ;
set_living_name("노인");
set ("무기이름","지팡이");
set_verbs( ({ "때렸다.","휘둘렀다." }) );
set("event_func","event_msg");
}
int event_msg(object th, string str) {
/* 플레이어가 노인에게 와서 '노인 약 대화' 라고 했을때. */
if( str == "약" ) {
/* 임무를 시작한적이 없다면 허브를 구해 오라고 한다. */
if( !th->query("이벤트/허브") ) {
write("노인 : 약이 필요한가? 그렇다면 허브를 구해오게\n");
th->set("이벤트/허브",1);
return 1;
}
/* 이미 '노인 약 대화'를 했다면 빨리 구해 오라고 한다. */
write("노인 : 허브를 구해 오라니까.. 여기서 뭐하고 있나?\n");
return 1;
}
/* 플레이어가 노인에게 와서 '노인 허브 대화' 라고 했을때. */
if( str == "허브" ) {
string *obs, *path, msg;
object item, ob;
int ran;
/* '노인 약 대화'를 먼저 안하고 '노인 허브 대화' 라고 했다면. */
if( !th->query("이벤트/허브") ) {
write("노인 : 허브? 몸에 아주 좋은거라네..\n");
return 1;
}
/* 소지품에 허브가 없으면 허브를 가지고 오라고 한다. */
if( !(item = present("허브",th)) ) {
write("노인 : 그래.. 허브 말이야.. 허브를 구해 오라구!\n");
return 1;
}
/* 플레이어에게 줄 아이템의 이름 */
obs = ({ "러브캔디", "매직캔디" });
/* 플레이어에게 줄 아이템의 경로 */
path = ({ "/obj/아이템/러브캔디", "/obj/아이템/매직캔디" });
/* 어떤 아이템을 줄건지 렌덤값을 만든다. */
ran = random(sizeof(obs));
/* 플레이어에게 줄 아이템이 없거나 아이템에 에러가 있다면 */
if( !(ob = clone_object(path[ran])) ) {
write(
"노인 : "+path[ran]+" 화일이 없거나 화일에 에러가 있네"
" 게임의 운영자에게 버그라고 알려 주게나.\n"
);
return 1;
}
/* 일단 사용자 소지품에 있는 허브를 잠시 옮겨 놓는다. */
item->move(this_object());
/* 미리 출력할 메세지를 정의해 놓는다. */
msg = "노인 : 허브를 구해 왔구먼.. 좋아 자네에게 상품을 주겠네.\n";
/* 사용자가 가진게 많아서 아이템을 못받는다면 처리한다. */
if( ob->move(th) ) {
msg += " 하지만 자넨 가진게 너무 많아서 줄수가 없군.\n";
/* 만들어 놨던 아이템을 없앤다. */
ob->remove();
/* 플레이어에게 허브를 돌려 준다. */
item->move(th);
/* 메세지를 출력하고 종료한다. */
write(msg);
return 1;
}
/* 사용자가 아이템을 잘 받았다면 허브를 없앤다. */
item->remove();
/* 임무에 관한 기록을 지운다. */
th->delete("이벤트/허브");
/* 사용자에게 아이템을 준다는 메세지를 뿌려 준다. */
msg += "\n노인이 당신에게 "+han_obj(obs[ran])+" 주었습니다.\n";
write(msg);
/*
* 같은 룸에 있는 플레이어를 제외한 모든 사람들에게
* 노인이 누구에게 아이템을 준다는 메세지를 뿌려 준다.
*/
message("이벤트",
"노인이 "+th->query("이름")+"에게 "+han_obj(obs[ran])+" 줍니다.\n",
environment(th),th);
return 1;
}
write("노인이 고개를 들어 하늘을 봅니다.\n");
return 1;
}
MaGuN
2004.01.17(토) 오후 10:53:15
위 루틴은 노인.c 입니다.
여기 게시판이 탭키나 스페이스를 먹어 버리는 군요..
원본은 자료실에 따로 올려 놓았습니다.
여기 게시판이 탭키나 스페이스를 먹어 버리는 군요..
원본은 자료실에 따로 올려 놓았습니다.
코멘트를 삭제할 비밀번호를 입력하세요.
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 954개 / 검색된 게시물: 954개
글번호 | 제목 | 작성자 | 조회수 | 좋아요 | 싫어요 | 작성일 | |
---|---|---|---|---|---|---|---|
[기타]질문 답변 외 글은 자유 게시판에 올려 주세요... | 머드클럽 | 4341 | 0 | 0 | 2004-01-01 | ||
54 | [hanlp] 소스좀 부탁해도 되나요~? [3] | 혼 | 2094 | 0 | 0 | 2004-01-18 | |
53 | [기타] sscanf 질문 드립니다. [2] | 혼 | 1891 | 0 | 0 | 2004-01-18 | |
52 | [mordor] 마계지바 라는 머드아시면 꼭 봐주세요 | 이상국 | 2303 | 0 | 0 | 2004-01-18 | |
51 | [hanlp] 다시.... 소스 부탁 [6] | Xerxes | 1861 | 0 | 0 | 2004-01-17 | |
50 | [기타] 저기요 ./mudch 치면 다음과 같은 에러메세지가 뜹니다 [1] | 데모닉 | 1760 | 0 | 0 | 2004-01-17 | |
49 | [hanlp] 오래전에 공개된 야망소스좀 올려주세요.. | &미카엘& | 1870 | 0 | 0 | 2004-01-17 | |
48 | [hanlp] 소스를 만들어달라는... ^^; [3] | Xerxes | 1774 | 0 | 0 | 2004-01-16 | |
47 | [기타] 얽 그런데요.. [3] | 김지성 | 1891 | 0 | 0 | 2004-01-16 | |
46 | [circle] 신세계 2.5 에 대한 안좋은 추억. . . [4] | 최루탄 | 2341 | 0 | 0 | 2004-01-16 | |
45 | [기타] 저도 마찬가지로 크리스님이랑 동일임니다. [2] | 파천 | 1826 | 0 | 0 | 2004-01-16 | |
44 | [기타] vtmode.com bbs접속관련.. [3] | 크리스Kof | 2144 | 0 | 0 | 2004-01-15 | |
43 | [기타] [제3의눈]질문이요 자동실행 스크립트..... | 데모닉 | 2014 | 0 | 0 | 2004-01-14 | |
42 | [hanlp] 소스가 어디가 잘못 되었는지... [2] | Xerxes | 2026 | 0 | 0 | 2004-01-14 | |
41 | [기타] 볼랜드 씨에 대해서 질문 [1] | 강력세탁 | 2123 | 0 | 0 | 2004-01-12 | |
40 | [기타] 질문하나 할께용[제3의눈] [4] | 파천 | 2087 | 0 | 0 | 2004-01-12 | |
39 | [기타] 영자님 한게더요.. [2] | 파천 | 2008 | 0 | 0 | 2004-01-12 | |
38 | [기타] 윈도우에서 컴파일 질문 [3] | 강력세탁 | 2131 | 0 | 0 | 2004-01-11 | |
37 | [hanlp] 질문이요 [1] | 최루탄 | 1837 | 0 | 0 | 2004-01-11 | |
36 | [기타] 이 사이트의 대해서 정확한 설명이 모자른듯 합니다. [13] | 그런가 | 1906 | 0 | 0 | 2004-01-11 | |
35 | [기타] 저기요 관리자 질문.. | 파천 | 2071 | 0 | 0 | 2004-01-10 |