[기타]HanLP 지도명령 mudos 버젼으로 바꾸기.
얼마전에 지도명령의 필요성을 느껴서
HanLP의 지도명령어를 mudos버젼으로 바꿔봣습니다.
음, 그래서 어쩌다보니 공개를 -- 머 공개를껏도 없겟네요;;
#include <구조.h>
string *res = ({ });
int *room_num = ({ });
void ch_exit(int roomnum, string room);
string map()
{
int j=0;
string arg, maptext=" ";
foreach( arg in res ) {
j += 1;
maptext += arg;
if( j == 11 ) {
maptext += "\n ";
j = 0;
}
}
return maptext;
}
void exit_mark(object ob, mapping exits, int roomnum, string short_name)
{
int i;
string *dir, short, tmp;
if( res[roomnum] == " " ) {
if( !short_name || short_name == "") short = " ???? ";
else {
if( strlen(short_name) >= 5 ) {
if( short_name[4] == 32 )
short = " "+short_name[0..3]+" ";
else
short = short_name[0..5];
}
else
short = sprintf("%|6s",short_name);
}
if( roomnum == 60 ) res[roomnum] = "[1;32;40m"+short+"[37;0;40m";
else res[roomnum] = "[37;0;40m"+short+"[1;37;40m";
}
else return;
dir = ob->getPureExits();
for (i = 0; i < sizeof(exits); i++) {
tmp = ob->getExit(dir[i]);
switch (dir[i]) {
case "동":
if( res[roomnum+1] == " " ) res[roomnum+1] = "[0;33;40m ─〉 [37;0;40m";
else res[roomnum+1] = "[0;33;40m ── [37;0;40m";
ch_exit(roomnum+2,tmp);
break;
case "서":
if( res[roomnum-1] == " " ) res[roomnum-1] = "[0;33;40m 〈─ [37;0;40m";
else res[roomnum-1] = "[0;33;40m ── [37;0;40m";
ch_exit(roomnum-2,tmp);
break;
case "남":
if( res[roomnum+11] == " " ) res[roomnum+11] = "[0;33;40m ↓ [37;0;40m";
else res[roomnum+11] = "[0;33;40m │ [37;0;40m";
ch_exit(roomnum+22,tmp);
break;
case "북":
if( res[roomnum-11] == " " ) res[roomnum-11] = "[0;33;40m ↑ [37;0;40m";
else res[roomnum-11] = "[0;33;40m │ [37;0;40m";
ch_exit(roomnum-22,tmp);
break;
case "북동":
if( res[roomnum-10] == " " ) res[roomnum-10] = "[0;33;40m ↗ [37;0;40m";
else res[roomnum-10] = "[0;33;40m / [37;0;40m";
ch_exit(roomnum-20,tmp);
break;
case "북서":
if( res[roomnum-12] == " " ) res[roomnum-12] = "[0;33;40m ↖ [37;0;40m";
else res[roomnum-12] = "[0;33;40m \ [37;0;40m";
ch_exit(roomnum-24,tmp);
break;
case "남동":
if( res[roomnum+12] == " " ) res[roomnum+12] = "[0;33;40m ↘ [37;0;40m";
else res[roomnum+12] = "[0;33;40m \ [37;0;40m";
ch_exit(roomnum+24,tmp);
break;
case "남서":
if( res[roomnum+10] == " " ) res[roomnum+10] = "[0;33;40m ↙ [37;0;40m";
else res[roomnum+10] = "[0;33;40m / [37;0;40m";
ch_exit(roomnum+20,tmp);
break;
case "위":
if( res[roomnum] == "[0;33;40m ∨ [37;0;40m" )
res[roomnum] = "[0;33;40m ↕ [37;0;40m";
else
res[roomnum] = "[0;33;40m ∧ [37;0;40m";
break;
case "아래":
case "밑":
if(res[roomnum] == "[0;33;40m ∧ ")
res[roomnum] = "[0;33;40m ↕ ";
else
res[roomnum] = "[0;33;40m ∨ ";
break;
}
}
return;
}
void ch_exit(int roomnum, string room) {
object ob;
string short_name;
mapping exit;
if( !roomnum || roomnum < 0 || !room || room == "") return ;
if( member_array(roomnum,room_num) != -1 ) {
ob = find_object(room);
if( !ob ) {
catch( call_other( room, "???" ) );
ob = find_object(room);
if( !ob ) return;
}
exit = ob->getExits();
if( exit && sizeof(exit) > 0 ) {
short_name = ob->getShort();
if( !short_name ) short_name = "....";
exit_mark(ob, exit, roomnum, short_name);
}
return;
}
return;
}
mixed CMD(string arg) {
object room;
mapping exits;
string short_name, str;
room = environment(this_player());
if (!room) return notify_fail("* 아무것도 보이지 않습니다.\n");
exits = room->getExits();
if( !exits || sizeof(exits) < 1 ) {
return notify_fail("* 이곳은 출구가 없는 곳입니다.\n");
}
room_num = ({
12,14,16,18,20,
34,36,38,40,42,
56,58,60,62,64,
78,80,82,84,86,
100,102,104,106,108,
});
res = ({
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," "
});
exits = room->getExits();
short_name = room->getShort();
if(exits) exit_mark(room, exits, 60, short_name);
str = "\n"+map()+"[37;0;40m\n";
write(str);
return 1;
}
음 별건아니지만 많은 도움 됬으면좋겟습니다. ㅎㅎ
한엘피 지도명령이랑 쪼금만 비교해보면
모두 아실것이기에 따로 설명은 안할게요
흠흠;; 제가글쓰면서 바로 수정한소스라-_-;;;;
한가지 실수해서 수정했습니다;;
int cmd(string arg) -> mixed CMD(string arg)
이렇게 고쳐줘야죠;;;;
HanLP의 지도명령어를 mudos버젼으로 바꿔봣습니다.
음, 그래서 어쩌다보니 공개를 -- 머 공개를껏도 없겟네요;;
#include <구조.h>
string *res = ({ });
int *room_num = ({ });
void ch_exit(int roomnum, string room);
string map()
{
int j=0;
string arg, maptext=" ";
foreach( arg in res ) {
j += 1;
maptext += arg;
if( j == 11 ) {
maptext += "\n ";
j = 0;
}
}
return maptext;
}
void exit_mark(object ob, mapping exits, int roomnum, string short_name)
{
int i;
string *dir, short, tmp;
if( res[roomnum] == " " ) {
if( !short_name || short_name == "") short = " ???? ";
else {
if( strlen(short_name) >= 5 ) {
if( short_name[4] == 32 )
short = " "+short_name[0..3]+" ";
else
short = short_name[0..5];
}
else
short = sprintf("%|6s",short_name);
}
if( roomnum == 60 ) res[roomnum] = "[1;32;40m"+short+"[37;0;40m";
else res[roomnum] = "[37;0;40m"+short+"[1;37;40m";
}
else return;
dir = ob->getPureExits();
for (i = 0; i < sizeof(exits); i++) {
tmp = ob->getExit(dir[i]);
switch (dir[i]) {
case "동":
if( res[roomnum+1] == " " ) res[roomnum+1] = "[0;33;40m ─〉 [37;0;40m";
else res[roomnum+1] = "[0;33;40m ── [37;0;40m";
ch_exit(roomnum+2,tmp);
break;
case "서":
if( res[roomnum-1] == " " ) res[roomnum-1] = "[0;33;40m 〈─ [37;0;40m";
else res[roomnum-1] = "[0;33;40m ── [37;0;40m";
ch_exit(roomnum-2,tmp);
break;
case "남":
if( res[roomnum+11] == " " ) res[roomnum+11] = "[0;33;40m ↓ [37;0;40m";
else res[roomnum+11] = "[0;33;40m │ [37;0;40m";
ch_exit(roomnum+22,tmp);
break;
case "북":
if( res[roomnum-11] == " " ) res[roomnum-11] = "[0;33;40m ↑ [37;0;40m";
else res[roomnum-11] = "[0;33;40m │ [37;0;40m";
ch_exit(roomnum-22,tmp);
break;
case "북동":
if( res[roomnum-10] == " " ) res[roomnum-10] = "[0;33;40m ↗ [37;0;40m";
else res[roomnum-10] = "[0;33;40m / [37;0;40m";
ch_exit(roomnum-20,tmp);
break;
case "북서":
if( res[roomnum-12] == " " ) res[roomnum-12] = "[0;33;40m ↖ [37;0;40m";
else res[roomnum-12] = "[0;33;40m \ [37;0;40m";
ch_exit(roomnum-24,tmp);
break;
case "남동":
if( res[roomnum+12] == " " ) res[roomnum+12] = "[0;33;40m ↘ [37;0;40m";
else res[roomnum+12] = "[0;33;40m \ [37;0;40m";
ch_exit(roomnum+24,tmp);
break;
case "남서":
if( res[roomnum+10] == " " ) res[roomnum+10] = "[0;33;40m ↙ [37;0;40m";
else res[roomnum+10] = "[0;33;40m / [37;0;40m";
ch_exit(roomnum+20,tmp);
break;
case "위":
if( res[roomnum] == "[0;33;40m ∨ [37;0;40m" )
res[roomnum] = "[0;33;40m ↕ [37;0;40m";
else
res[roomnum] = "[0;33;40m ∧ [37;0;40m";
break;
case "아래":
case "밑":
if(res[roomnum] == "[0;33;40m ∧ ")
res[roomnum] = "[0;33;40m ↕ ";
else
res[roomnum] = "[0;33;40m ∨ ";
break;
}
}
return;
}
void ch_exit(int roomnum, string room) {
object ob;
string short_name;
mapping exit;
if( !roomnum || roomnum < 0 || !room || room == "") return ;
if( member_array(roomnum,room_num) != -1 ) {
ob = find_object(room);
if( !ob ) {
catch( call_other( room, "???" ) );
ob = find_object(room);
if( !ob ) return;
}
exit = ob->getExits();
if( exit && sizeof(exit) > 0 ) {
short_name = ob->getShort();
if( !short_name ) short_name = "....";
exit_mark(ob, exit, roomnum, short_name);
}
return;
}
return;
}
mixed CMD(string arg) {
object room;
mapping exits;
string short_name, str;
room = environment(this_player());
if (!room) return notify_fail("* 아무것도 보이지 않습니다.\n");
exits = room->getExits();
if( !exits || sizeof(exits) < 1 ) {
return notify_fail("* 이곳은 출구가 없는 곳입니다.\n");
}
room_num = ({
12,14,16,18,20,
34,36,38,40,42,
56,58,60,62,64,
78,80,82,84,86,
100,102,104,106,108,
});
res = ({
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," ",
" "," "," "," "," "," "," "," "," "," "," "
});
exits = room->getExits();
short_name = room->getShort();
if(exits) exit_mark(room, exits, 60, short_name);
str = "\n"+map()+"[37;0;40m\n";
write(str);
return 1;
}
음 별건아니지만 많은 도움 됬으면좋겟습니다. ㅎㅎ
한엘피 지도명령이랑 쪼금만 비교해보면
모두 아실것이기에 따로 설명은 안할게요
흠흠;; 제가글쓰면서 바로 수정한소스라-_-;;;;
한가지 실수해서 수정했습니다;;
int cmd(string arg) -> mixed CMD(string arg)
이렇게 고쳐줘야죠;;;;
0Comments
-표시할 내용이 없습니다.-
코멘트를 삭제할 비밀번호를 입력하세요.
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 109개 / 검색된 게시물: 109개
글번호 | 제목 | 작성자 | 조회수 | 좋아요 | 싫어요 | 작성일 | |
---|---|---|---|---|---|---|---|
[기타]누구든지 머드 강의를 올리수 있는 곳입니다...^^ | 머드클럽 | 4560 | 0 | 0 | 2003-12-31 | ||
89 | [기타] Dead Souls 2 is now available [2] | Cratylus M. | 3045 | 0 | 0 | 2006-03-14 | |
88 | [mordor] Ctrl + Enter 패치 소스 입니다. | 탈퇴 | 3173 | 0 | 0 | 2005-02-01 | |
87 | [circle] 전투시스템 기초와 실전테크 | 사비 | 3721 | 0 | 0 | 2004-11-24 | |
86 | [기타] HanLP 지도명령 mudos 버젼으로 바꾸기. | 천유 | 3112 | 0 | 0 | 2004-11-21 | |
85 | [circle] 단땅 프로젝트 ^^* [4] | 사비 | 3799 | 0 | 0 | 2004-11-19 | |
84 | [circle] 단땅 공지 3 .(사비님 미르님...~~) [2] | 머드짱 | 3332 | 0 | 0 | 2004-11-17 | |
83 | [circle] 단땅 21 [6] | 머드짱 | 3353 | 0 | 0 | 2004-11-15 | |
82 | [hanlp] input_to 사용에 대한 제 생각. | 추리소설 | 3023 | 0 | 0 | 2004-11-13 | |
81 | [circle] 단땅 공지 2 [7] | 머드짱 | 2913 | 0 | 0 | 2004-11-05 | |
80 | [circle] 단땅 21 [1] | 머드짱 | 3309 | 0 | 0 | 2004-11-05 | |
79 | [circle] 단땅 20(존 제작) | 머드짱 | 3415 | 0 | 0 | 2004-11-04 | |
78 | [circle] 단땅 19 | 머드짱 | 2985 | 0 | 0 | 2004-10-30 | |
77 | [circle] 단땅 18 / 몹 변환된 모습 | 머드짱 | 3378 | 0 | 0 | 2004-10-30 | |
76 | [circle] 단땅 17 / 아이템 변환모습 | 머드짱 | 2965 | 0 | 0 | 2004-10-27 | |
75 | [circle] 단땅 아래소스 설명 16-1 | 머드짱 | 3175 | 0 | 0 | 2004-10-27 | |
74 | [circle] 단땅 16 | 머드짱 | 3006 | 0 | 0 | 2004-10-27 | |
73 | [circle] 단땅 15 [1] | 머드짱 | 3279 | 0 | 0 | 2004-10-26 | |
72 | [circle] 단땅 강좌 공지 [1] | 머드짱 | 3190 | 0 | 0 | 2004-10-25 | |
71 | [circle] suntzu 9월 30일버젼 한글아이디 저장시키기 | 미르 | 3024 | 0 | 0 | 2004-10-24 | |
70 | [기타] 패치파일 제작하기 [1] | 미르 | 2931 | 0 | 0 | 2004-09-27 |