contact 머드클럽 문의하기 카카오톡
즐겨찾기 추가plus 머드클럽이 새롭게 오픈하였습니다!
sub image
[기타]HanLP 지도명령 mudos 버젼으로 바꾸기.
member photo 천유 0 3,111 0 2004-11-21 23:21:22
얼마전에 지도명령의 필요성을 느껴서
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] = ""+short+"";
      else res[roomnum] = ""+short+"";
  }
  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] = " ─〉 ";
            else res[roomnum+1] = " ── ";
            ch_exit(roomnum+2,tmp);
            break;
        case "서":
            if( res[roomnum-1] == "      " ) res[roomnum-1] = " 〈─ ";
            else res[roomnum-1] = " ── ";
            ch_exit(roomnum-2,tmp);
            break;
        case "남":
            if( res[roomnum+11] == "      " ) res[roomnum+11] = "  ↓  ";
            else res[roomnum+11] = "  │  ";
            ch_exit(roomnum+22,tmp);
            break;
        case "북":
            if( res[roomnum-11] == "      " ) res[roomnum-11] = "  ↑  ";
            else res[roomnum-11] = "  │  ";
            ch_exit(roomnum-22,tmp);
            break;
        case "북동":
            if( res[roomnum-10] == "      " ) res[roomnum-10] = "  ↗  ";
            else res[roomnum-10] = "  /  ";
            ch_exit(roomnum-20,tmp);
            break;
        case "북서":
            if( res[roomnum-12] == "      " ) res[roomnum-12] = "  ↖  ";
            else res[roomnum-12] = "  \  ";
            ch_exit(roomnum-24,tmp);
            break;
        case "남동":
           if( res[roomnum+12] == "      " )  res[roomnum+12] = "  ↘  ";
           else res[roomnum+12] = "  \  ";
           ch_exit(roomnum+24,tmp);
           break;
        case "남서":
            if( res[roomnum+10] == "      " ) res[roomnum+10] = "  ↙  ";
            else res[roomnum+10] = "  /  ";
            ch_exit(roomnum+20,tmp);
            break;
        case "위":
            if( res[roomnum] == "  ∨  " )
                res[roomnum] = "  ↕  ";
            else
                res[roomnum] = "  ∧  ";
        break;
        case "아래":
        case "밑":
        if(res[roomnum] == "  ∧  ")
            res[roomnum] = "  ↕  ";
        else
            res[roomnum] = "  ∨  ";
        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()+"\n";
                write(str);
                return 1;
}



음 별건아니지만 많은 도움 됬으면좋겟습니다. ㅎㅎ

한엘피 지도명령이랑 쪼금만 비교해보면
모두 아실것이기에 따로 설명은 안할게요

흠흠;; 제가글쓰면서 바로 수정한소스라-_-;;;;

한가지 실수해서 수정했습니다;;
int cmd(string arg) -> mixed CMD(string arg)
이렇게 고쳐줘야죠;;;;
0
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
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
내용
쪽지가 도착하였습니다.
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--