본문으로 바로가기

zmud 메뉴얼

category 끄적끄적 2014. 1. 21. 15:31

zmud_menual.txt


****************************************************************************

zMUD Manual 지머드 매뉴얼

 

본 매뉴얼은 마법의대륙의 푸로님께서 번역하신 것입니다.

****************************************************************************

 


zMUD WWW Site : http://www.zuggsoft.com/zmud

zugg Email Add: zugg@zuggsoft.com

 

 

*****************************************************************************

zMUD 전체 개요

*****************************************************************************


zMUD는 머드 초보자 및, 파워유저, 그리고 TINTIN 같은 머드 클라이언트에 익숙한

개발자들에게도 모두 편리하도록 만들어졌다.

주된 기능과 특징 들은 다음과 같다.


(참고: 아래중 몇가지는 앞에 A-F까지를 넣었는데, 이것은 역자가 임의로 중요도

를 표시하였다.

단, 중요도란 아주 기본적인 것일수록 A에 가깝게 지정한 것이다.

파워유저라면 모두를 알아야 할 것이다.

단, X로 표시된 것은 국내 한글 머드에선 조금 맞지 않는 것을 뜻한다.)


A) Macro Keys - 키보드 상의 어떠한 키(단독키, 조합키)라도 모두 명령을 정의해

넣을 수 있다.

B) Alias - 어떤 일련의 명령을 임의의 이름의 줄임말로 만들 수 있다.

A) Triggers - 머드에서 어떤 패턴에 반응하여 지정 명령을 수행케 할 수 있다.

B) Variables - 문자 및 숫자를 임의의 이름에 저장할 수 있다.

C) Buttons - 어떤 기능을 GUI(그래픽)형의 버튼으로 화면에 표시하여, 마우스

로 버튼을 클릭함으로써 트리거 등을 켜고 끄는 등의 작동을 할

수 있다.

E) Paths - 움직이는 경로를 녹화하고, 또 거꾸로 움직이게 할 수 있다.

일부에서는 speedwalking라고 불리우는 기능이다.

X) Mappers - 내부적으로 머드의 한 지도를 통째로 기억시킨다. 이로써 이동,

현위치 제어 등을 할 수 있다.

(참조: 한글 머드는 신뢰도 좀 떨어 질 수 있슴)

Multiple Chars - 동시에 각 다른 창을 띄워 멀티로 게임을 할 수 있다.

창 사이 이동이 간편하며, 각 창 별/모두 에게 명령을 전달 할

수 있다.

Spam protection - 동일한 어떤 명령이 너무 많이 머드로 보내지는것을 막을 수

있다.

ANSI - 모든 안시가 지원되며, 색깔은 임의로 조절 할 수 있다.

VT100 - VT100 기준의 터미널 상태를 만들 수 있다.

이동키, 화면줄수 등을 모두 포함한다.

Telnet - 줄단위 머드 모드와, 글자 단위 텔넷 모드를 모두 지원한다.

zMUD를 이용, 유닉스 쉘어카운트(계정)에 접속하는데 이용할 수

있다.

Multimedia - sound(WAV), MIDI, movies 등을 실행 할 수 있다.

Script - 스크립트로 이용할 수 있도록 텍스트 형식으로 저장할 수 있다.

Character Database - 접속하는 모든 머드 캐릭터를 저장해 놓는다.

각 항목별로 메모도 할 수 있다.

Tab completion- 긴 단어 등을 입력할 경우, 첫자정도만 치고 TAB, Shift-TAB를

누름으로써 모든단어가 쳐지도록 하는 기능

History - 기입력된 명령들이 제한내에서는 기억되어 재이용할 수 있다.

Logging - 접속한 기록을 로그화일에 기록하여 뒤에 다시 볼 수 있다.

안시칼라지원

Timer - 틱을 제어할 수 있도록 타이머 기능을 제공한다.

Status line - 변수나 트리거 등을 나타내도록 상태라인을 정의해 넣을 수 있다.

Customizeable - 칼라, 폰트, 소리, 특수제어문자 등을 모두 수정하고 그 상태를

저장할 수 있다.

Setting files - 알리아스, 트리거등 모든 셋팅상태를 저장한다. 여러 캐릭에서

같은 셋팅화일을 이용할 수 있다.

Online Help - 참조와 예제 모두를 보여주는 온라인 도움말기능을 제공한다.

Command Wizard- 명령과 함수들을 정의/입력하기 쉽도록 명령/함수 위저드가 문법

형식을 보여준다.

X) Connection Wizard - 주된 머드리스트들에 대한 항목이 미리 제공되어 쉽게

접속가능하도록 한다. (외국산 머드 뿐임)

Compatability - TINTIN,TINTIN++ 의 명령과 90% 호환되며, TINTIN++ 의 스크립트

화일을 직접 읽거나(import), 그 형식으로 저장할 수 있다.

Winsock - Winsock 네트워킹을 이용하여 트럼펫위속을 이용한 Slip/PPP 처럼

모든 시스템에서 공동 사용이 가능하다.

Fast - 어느 윈도즈용 머드/텔넷 클라이언트에 비해서도 빠른 스크롤을

---- 제공한다.

GUI - 코멘드라인 환경뿐 아니라 뛰어난 GUI 환경을 제공한다.

Word-wrapped기능(긴 줄을 스크롤을 넘기지 않고 잘라내는 기능)을

제공하여 원치않는 스크롤을 막을수도 있으며,

멈추지 않은 상태로 백스크롤하여 볼 수 있다.

백스크롤은 최대 16000 라인까지 가능하다(32bit는 무제한)

Windows 95 - Windows95 응용프로그램으로 16bit, 32bit 모두 제작되었으며 테

스트 되었다.

16bit 는 물론 Windows 3.x에서도 동작하며,

32bit는 Windows NT 4.0에서 테스트 되었다.

 

 


*****************************************************************************

zMUD 시작하기

*****************************************************************************


[순 서]


시작하기는 다음의 순서로 설명이 된다.

1. 빨리 시작하기

2. 새로운 캐릭터 만들기

3. 캐릭터 데이타베이스

4. 기본적인 용도

5. 매크로 소개

6. 알리아스 소개(줄임말)

7. 변수 소개

8. 경로/스피드워킹의 정의와 이용법

9. 트리거 소개

10.버튼 소개

11.멀티플레이 소개

12.매핑 기능 소개

 


[1. 빨리 시작하기]


(Connection Wizard를 이용하는 법이 적혀 있다.

이곳에는 주요 외국 머드들이 총 막라되어 그를 선택함으로써 쉽게 접속하는 법

을 나타낸다.

그러나 한국에서는 거의 쓸모 없는듯. skipped....)

 


[2. 새로운 캐릭터 만들기]


새로운 캐릭터를 만들려면, 처음 시작 다이얼로그박스에서 "Character" 버튼을

누르거나, File 메뉴에서 "Another Character"를 선택한다.

그러면 Character Database 다이얼로그가 화면에 나타난다.

zMUD에서는 모든 머드 캐릭터들을 데이타베이스로 저장을 하며, 처음 시작했다면

아무것도 없을 것이다. 새로운 캐릭터를 만들기 위해서는 "New"버튼을 클릭한다.

각란을 채운다.

a. ID - 머드에 대한 임의의 이름을 적는다

(공백X, 뒤에 #Session 명령에서 사용할 수 있다.)

b. Title - 부가 설명을 마음대로 적는다.

c. Host - 머드의 접속지 주소를 적는다.

d. Port - 접속 포트번호를 적는다.

(Host란에 숫자주소(147.46.45.234)가 아닌 글자주소(heliport.snu.ac.kr)을

적었다면, 바로 밑의 계산기 버튼을 눌러 그 주소를 계산하도록 한다.

맨 밑의 Character 와 Password는 머드 게임의 캐릭이름과, 비번을 말한다.

이 란이 공백이라면, 접속할때 zMUD가 자동접속 트리거를 만들어주고,

캐릭이름,비번을 저장하며

여기 쓰여진 캐릭이름과, 비밀번호는 #CH (%char), #PW (%pw) 명령(함수)로 이용

---------------------------------------------------------------------------

할 수 있다.

-----------


][ 셋팅 화일


선택사항,색깔지정,트리거,알리아스,매크로 등 모든 정보는 각 셋팅화일에 모두

저장된다.

zMUD는 지정한 머드 타이틀에 따른 이름을 자동으로 연결시켜주며, Settings 탭에

들어가면 수동으로 바꿀 수 있다.

화면에 두가지 주셋팅화일(Primary Setting file)과, 보조셋팅화일(Inherited..)을

볼 것이다.

실제적으로 zMUD는 각 머드 캐릭마다 세개의 셋팅화일을 읽는다.

첫째는, DEFULT.MUD가 읽혀진다. 이는 프로그램 전체적으로 칼라,폰트 등을 기본

값으로 셋팅한다.

둘째는, 보조셋팅화일이다. 보조셋팅화일은 당신이 정한 머드 타입(LP,DICU,MUSH등)

에 따른다.

마지막으로, 주셋팅화일이다. 여기에는 현재 캐릭터에 지정된 트리거,알리아스,

매크로등이 있다.


몇몇 선택 박스에서 "Using Inherited Settings"와, "Using Primary Settings"라는

옵션을 보았을 것이다.

당신이 보통 수정하는 것들은 주셋팅화일(Primary)임을 기억하자.

만일 보조셋팅화일(Inherited..)를 고치려면,

빈 윈도를 열은 후(Character에서 Empty 버튼 이용) Settings-Load 메뉴로 원하는

화일을 불러서 수정한 후 Settiings-Save 로 저장한다.

나머지 빈칸(days)는 접속안한 날짜를 지정한다. 이 지정날짜 이상 동안 접속

안한것은 빨간색으로 표시되어 당신이 함부로 지우지 못하게, 그리고 오랜동안

접속 안했다는것을 알려준다.

 


[3. 캐릭터 데이타베이스]


(겹치는 설명이나 상식적인것으로 생략, 참고로

Connect - 실제 접속 개시

Offline - 실제접속을 안하고 창만 열고 설정화일등을 읽어들여 수정할 수 있도

록 함)

 


[4. 기본적인 용도]


보통 접속을 하게 되면 캐릭터이름과 비밀번호를 입력하게 된다. 이때, 앞의 데이

타베이스에서 아이디와 비밀번호 란을 비워 놓았다면, zMUD에서는 자동으로 패턴

을 찾아서 자동접속 트리거를 만들어 준 후, 선택박스를 띄운다.

OK를 누른다면 이대로 저장이 되어 다음접속때 자동으로 이름과 비번을 입력시킨다.

Cancel을 선택하면 당연히 만들지 않을 것이고, 다음 접속때 다시 시도를 할 것이

다.

이 기능을 중지시키려면 데이타베이스상의 이름,비번 란을 채워넣는다.

당신이 직접 패스워드를 입력할 경우 화면에 친 글자가 나올것이다.

이것을 막으려면(남이 못보게) #PW 를 입력한다. 이러면 데이타베이스에 저장된

------------------------------

비밀번호가 화면에 에코 없이 머드로 입력된다.

# 문자는 명령특수문자 기본값인데 이는 뒤에 더 자세히 설명된다.


][ 명령라인


당신이 입력한 모든 글자는 명령라인에 보인다.

이는 백스페이스 등 으로 지워서 수정할 수 있다.

만일 당신이 키패드의 화살표를 매크로 정의했다면 화살표는 쓸 수가 없음을 주의

하자.

엔터키를 치면 머드로 입력되며, Echo Command 옵션을 켜 놓았다면 입력한 글자

가 지정한 색깔로 화면에 표시될 것이다.


분리문자(기본값으 세미쿨론 ;)를 이용하면 동시에 두개 이상의 명령을 입력할

-------------------------------------------------------------------------

수도 있다.

곧, "회복; 허브 마셔" 이런식으로 입력하며, 각 명령의 끝에는 엔터표시가 자동

으로 들어간다.

세미쿨론을 분리문자가 아닌 그대로 입력하려 한다면 틸드(물결표시 ~)를 세미쿨

--------------------------------------------------------------------

론의 바로 앞에 삽입한다.


][ 출력 윈도


PgUP, PgDN 키를 누르거나, 마우스로 오른쪽 스크롤바를 누르면 화면이 갈라지면

서 백스크롤할 수 있다. 가운데 갈라지는 선은 마우스로 마음대로 크기를 조절할

수 있으며,

이 화면 가름을 없애려면 Ctrl-Z를 누르거나 마우스로 윈도의 우하단 끝의 "-"부

---------------------------------------------------------------------------

분을 누른다.

------------

명령행상에서 #freeze를 입력함으로써 화면 갈림을 조절할 수 도 있다.

------------------------------------------------------------------


Edit-Find 메뉴나, 단축기 Ctrl-F 를 눌러서 텍스트 검색을 할 수 있다.

버퍼에 저장된 내용을 뒤로(기본값) 또는 앞으로 검색이 가능하다.

저장되는 버퍼는 상당히 크기 때문에(특히나 32bit 버젼은), Find 명령은 지나간

글을 빨리 손쉽게 찾을 수 있게 하여준다. 원하는 글자가 있다면 화면은 자동으

로 분할되고, 원하는 글을 볼 수 있을 것이다.

(실제 해본 결과 그 위치로 안가데요. 음. 암튼 색깔이 변하여 찾기는 쉬움.

그 색깔은 Color버튼에서 정의해 놓은 색으로 바뀜)


출력창에서 일부 텍스트를 복사하여 다른데 붙일 수 있다.

--------------------

선택방법은 1.마우스로 끌어서 선택, CTL-C 키

-------------------------------------------

2.시작위치 마우스 클릭, Shift 누른채로 끝 위치 클릭.

-----------------------------------------------------

저장된 글은 일반형식과 안시칼라형식 모두 저장되어 있다.

복사하는 장소에 따라서 적절히 복사된다.


][ 매크로 안내


zMUD를 일반 텔넷프로그램과는 달리 쓰는 첫번째 방법은 키보드의 각 키를 어떠

명령으로 지정하는 것이다.


키보드에 명령을 할당하려면, Ctrl-K를 누르거나, Action-Define Key 메뉴를 선택

한다.

먼저 할당하려는 키보드 조합을 누른 후(대부분 모두의 키가 가능하다. 조합/단독),

명령을 입력한다. 단, 안되는 키 즉, zMUD내부에서 미리 할당된 키(Ctrl-K 등)과

------------------------------------------------------------

윈도즈에서 쓰이는 키 (Enter, Alt-A, F10, Alt-F4 등)은 제외해야한다.

-------------------------------------------------------------------

또한 키패드를 할당 할 수 있도록 zMUD는 자동으로 NUMLOCK를 켜 놓는다.

----------------------------------------------------------------------

이렇게 정의해 놓은 키보드를 이용한 제어는 수동 입력보다 훨신 빠른 입력을 가

능케 한다.


== 매크로 연결 ==

만일 키조합에 설정한 명령이 머드로 직접 보내지기보다 명령입력줄에 프린트

-------------------------------------------------------------------------

되길 원한다면, 명령의 맨 끝에 틸드(~)를 붙인다.

------------------------------------------------

또한 이를 이용해 적절한 조합이 가능하다.

예를 들면 (한글로 딱히 예제가 안떠올라서 원문예제를 그대로 인용)

F8 에 "open door~"를 입력하였다면, 먼저 F8을 치면 명령입력라인에 open door 이

라고 프린트될 것이다 그 담에 바로 이어 "south"를 설정한 키패드2번을 누르게

되면 결국 "open door south"가 머드로 보내지게 된다.

(참고로 모르는 분을 위해, 영문모드의 파싱은 한글과 반대순서이다.

한글 머드는 "목적어 동사" 의 형태이나, 영문은 "동사 목적어"의 순이다.

즉, "허브 마셔" <-> "drink hub" 영문프로그램인지라 영문기준으로 모든 파싱

이 됨으로 한글머드에 적용을 하려면 약간의 머리를 써야 할듯 ^^)

 

][ 알리아스 안내


(알리아스는 일부 머드에 있는 줄임말 기능과 비슷하다.

그러나 단지 긴 명령을 줄이는것뿐만이 아니라 여러개의 명령도 몰아넣을 수 있고,

파라메터도 가능하다.)

알리아스 역시 머드 플레이를 간단하게 하는 방법중의 하나이다. 기본적으로 알리

아스란 어느 명령이든 한 단어로 축약해서 쓸 수 있도록 해준다.


알리아스를 정의하는 가장 쉬운 방법은 먼저,축약할 명령을 쓰고 Ctrl-A를 누르면,

알리아스 정의 다이알로그 박스가 뜨는데 거기서 축약 이름을 입력해주면 된다.


알리아스 이름은 맨 첫칸부터 써야만 알리아스로 인식됨을 기억하자.


== 알리아스 선택사항 조절 ==

모든 알리아스는 View-Aliases 메뉴를 선택하면 뜨는 다이얼로그 박스에서 모두

수정/입력/삭제가 가능하다. 왼쪽엔 리스트가 보이고 선택한 알리아스를 수정할

수 있도록 그 내용은 오른쪽에 보이게 된다.

COPY버튼으로 기존의 알리아스를 복사하여 이용할 수 있고 쓰레기캔 모양의 버튼

으로 삭제한다.


== 알리아스 명령 ==


#ALIAS 를 이용한다.

#ALIAS 알리아스이름 {명령텍스트}

알리아스는 파라메터값을 포함할 수 있다.

"관찰"이라고 알리아스가 있다면, "관찰 시민 인디오" 에서 시민이 첫번째

파라메터, 인디오가 두번째 파라메터이다.

이 파라메터는 %1-%99까지로 연결시킨다.

---------------------------------------

예를 들어, #ALIAS 잡자 { %1 공격} 이란 정의를 내렸다면 "잡자 시민"이라고

입력하면 실제로 "시민 공격"이 들어가게 된다.

(영문의 파싱 순서라면, 잡자 - 공격 %1일 것이다. 이렇게 단순히 뒤에 그대로

붙일때는 파라메터를 안쓰고 그냥 #ALIAS 잡자 { 공격} 이것으로 끝이다.

그러나 한글 머드는 관계 없는 말들.. -.-)

또 다른 예로서, #ALIAS 잡자 { %1 공격; %1 헬파이어} 이런식으로 두개이상도

가능하다.


특수하게 지정된 알리아스 이름이 있는데 atconnect, atexit, atdisconnect 세가지

이다.

(atconnect 는 도스의 autoexec.bat 과 비슷한 개념..)

이는 atconnect 는 접속될때, atexit 는 zMUD를 마칠때, atdisconnet 는 접속을

마칠때 자동으로 실행되는 알리아스이다.

 


][ 변수 안내


변수는 알리아스와 매우 흡사하다. 둘간의 가장 중요한 차이점은 알리아스는 맨

처음에 나올때만 확장이 되는데 반해, 변수는 아무데서나 가능하다는 점이다.

변수를 확장시키기 위해서는 @ 문자 를 변수이름 앞에 붙인다.

----------------------------------------------------------

이 문자는 TINTIN의 경우에는 $를 이용한다. 이것 역시 상태설정 다이얼로그

에서 마음대로 바꿀 수 있다.


변수를 정의하기 위해서는 #VARIABLE 명령을 이용한다.

----------------------------------------------

예를 들어 "#VAR magic 문따기" 라고 정의 하였다면 magic 변수에 '문따기'라는

내용을 정의한 것이며, 이 변수의 내용을 리턴하기 위해서는 @ 문자를 변수이름

앞에 붙인다. 즉, "동 @magic" 라는 명령은 확장되어 "동 문따기" 가 된다.


다른 정의방식도 있다. 다른 프로그래밍 언어처럼 변수=변수값 의 문법을 이용

할 수도 있다.

이때 모든 변수는 알리아스처럼 내부적으로 문자열로 저장된다.

또한 변수를 알리아스의 정의내용에 포함시켜 이용할 수도 있다.


명령입력라인에 쓰인 변수는 항상 확장되는것은 아니다.

이는 General 선택사항에서 Expand Vars 옵션에 따라 다르다.

만일 이 옵션이 꺼져 있을때 강제 확장을 시키려면 변수 양쪽으 <>로 둘러싼다.

--------------------------------------------

예를 들어 위의 예에서 "동 @magic" 대신에 "동 <@magic>"를 이용한다.

 

== 시스템 변수 ==

미리 정의되어 있는 시스템 변수가 몇가지 있다. 이 변수들은 % 문자로 시작한다.

-----------------------------

이 변수들은 물론 수정 할 수 없으며 @ 문자 대신 % 문자를 쓴다는 점을 제외하고

는 사용법은 똑 같다.


모든 변수들의 현재 값은 셋팅화일에 저장된다. 굳이 따로 세이브를 묻지 않는다.

 


][ 패스/스피드워킹 안내


패스기능은 방향을 위치에 저장하고, 다음에 매우 빠른 스피드를 가능하게 하는

---------------------------------------------------------------------

아주 강력한 기능이다. 이것은 또한 다른 머드클라이언트에서 스피드워킹이라

불리운다.


이 기능은 일반 지역뿐이 아니라 선공몹의 지역도 지나칠 수 있을만큼 빠르게

------------------------------------------------------------------------

재생된다.

----------

그러나, 무조건 때리게 되 있는 높은 선공능력을 지닌 몹이 있는 일부 머드에선

확신할 수 없고, 또 무리플중에는 때론 몹이 당신의 그룹멤버를 계속 치는때에도

그렇다.

그러나, 이 기능은 대부분 제대로 작동하며, 당신은 꽤 쉽게 이 기능을 이용할

수 있을 것이다.


길을 녹화하기 위해서는 #MARK 명령을 이용하거나 Action-Speedwalking 에서

-----------------------------------------

Start Recording 버튼을 이용한다. 그리고, 목적지까지 일반적인 이동을 한다.


그 후에 #PATH 명령으로 현재 경로를 저장하거나(#PATH 경로이름),

-----------------------------------------

Action-Speedwalking 메뉴들 들어가서 Stop Recording 버튼을 누른 후,

경로이름을 입력하면 된다.


경로를 알리아스처럼 이용하기 위해서는 이동문자라 불리는 특수문자를 이용한다.

----------------------------------------------------------------------------

(기본값 [.])

------------

".경로이름" 과 같이 입력하면 매우 빠른 속도로 이동할 것이다.


또한, 직접 입력 할 수도 있다.

-----------------

예를 들어 .neesuwd (e,w,s,n:동/서/남/북, u,d:위/아래) 또는

줄여서 .n2esuwd 와 같이 입력하여도 된다.


#MARK 명령을 이용하여 경로를 녹음하는 중에 #PATH를 이용하면 현재 경로를

아무때나 확인할 수 있다.

만일 잘못된 방향으로 움직였다면 #BACKUP 명령으로 마지막의 이동을 삭제할 수

---------------------------------------------------------------------

있다.

또한 이 명령은 당신을 그 전의 위치로 이동시켜 준다. 즉, 실수로 북쪽으로

이동했다면, #BACKUP명령을 입력하면 남쪽으로 다시 이동된다.


패스 기능의 예를 하나 들어보자.

점집에서 마법가게로 가는 길은 2s2wn 이고 이것을 magic 라는 변수에 저장했다

고 할때, 현재 점집 위치에서 ".magic"를 치면 마법가게로 이동한다.

그런데 만일 마법가게에서 할게 없거나, 일을 마친 후 점집으로 되 이동하려면,

"#REVERSE magic" 또는 "..magic" 를 입력하면 된다.

실제 많은 경우에서 좀 특이한 경로들이 있다. 동쪽으로 간 후에 서쪽으로 가는

것이 반대가 아닌일들. 이런 경우는 고려되지 않느다. #REVERSE 명령은 유클리드

-------------------------

기하학적인 정상적 지역에서만 가능하다.

---------------------------------

 

][ 트리거 안내


트리거는 좀 까다롭다 할 수 있다. 그러나 zMUD의 가장 강력한 기능중의 하나이다.

트리거(다른 클라이언트에서는 actions 라고도)는 머드에서 오는 어떤 문자열에

반응하여 정해진 명령을 보낼 수 있게 한다.

단순하게 들릴진 몰라도 상당히 논리적이고 함축적인 강력한 기능이다.


트리거를 정의하기 위해서는 #TRIGGER (또는 #ACTION) 명령을 사용한다.

형식은 #TRIGGER {반응문(패턴)} {실행명령}.

머드에서 지정 패턴이 입력될때마다 명령이 실행된다.

이 외에도 View-Triggers 메뉴를 선택하거나 Ctrl-T 를 눌러서 트리거

다이얼로그를 띄워 할 수 있다.


간단한 예제로 시작해보자.

그룹플레이 중에는 그룹말은 매우 중요하나 잘 안보이는 수가 있다.

그런 말은 색깔을 다르게 나오도록 트리거로 설정 할 수 있다.


(여기 예제는 보통의 국내 머드와 약간 차이가 있다. 임의로 설명을 한다)


만일 그룹말이 나오는 형식이 "푸로(그룹) [ 이말저말" 이런식일때,

변하지 않는 부분만 잡으면, "(그룹) ["까지 이므로 이 부분을 잡는다

(뒷부분은 굳이 필요 없을지 모른다 (그룹) 이것만해도.)

다음의 명령으로 그룹말이 빨간색으로 나오도록 바꿀 수 있다.


#TRIGGER {(그룹) [} {#COLOR red} (<-- 이대로 해서는 안되는때가 있다 옵션을

조절하거나, 패턴을 조금 수정해야한다.

뒤에 다시 설명)


트리거를 이용하면 머드플레이능력을 향상시킬 수 있다. 또 다른 예제를 하나

들면,


#ALIAS {물마시자} {@container 마셔} 라고 정의 한 상태로,


#TRIGGER {목이 마릅니다} {물마시자}


== 머드화면에서 문자열 추출 ==

패턴은 좀 더 복잡한 표현과 와일드카드 문자 등을 넣을 수 있고, 그 부분을

파라메터로 받아서 명령부분에서 이용할 수 있다.

파라메터는 알리아스부분에서 일차 언급한 바가 있다.


(이 부분 역시 국내머드에선 조금 제한이 있다.

실제 쓸 수 있는 파라메터 문자는 열몇가지 이지만 국내머드에서 가능한 문자

는 *, %d, %s, %x, ? 정도뿐이다.


(*) 문자,숫자,공백 모두 포함

------------------------------

(%d) 숫자

----------

(%s) 공백문자(스페이스)

------------------------

(%x) 문자

-----------

(?) 한글자(영문기준, 한글1문자=영문2문자, 한글두자=(????))

---------------------


나오는 예제는 새로 수정해서 적는다.)


#TRIGGER {(%x)님이 '(*)'라고 속삭입니다} {%1 저는 지금 바빠요 속삭임}

----------------------------- --------------------------

누가 자기에게 귓속말을 해오면 대답을 하게 작동.


== 트리거 클래스(그룹) ==

트리거를 그룹지을 수가 있다. 형식은 #TRIGGER {반응} {실행} 클래스이름 이다.

이를 정의해 놓으면 #T+, #T- 명령을 이용, 그 클래스별로 트리거를 ON/OFF할 수

있게 된다.

 


][ 버튼 안내


알리아스, 트리거, 변수 등을 묶어놓을 수 있는 것이 버튼이다.

버튼은 초보자에게 이러한 기능들을 쉽게 이용할 수 있게 할 뿐만 아니라,

TINTIN같은 텍스트기반 에선 볼 수 없는 아주 인상적인 기능성을 파워유저에게

제공한다.

버튼을 마우스로 클릭함으로써 어떤 명령을 수행케 할 수 있으며,

그 제목에 변수등의 값을 표시할 수도 있다.

그리고, 트리거 클래스를 쉽게 켜고 끄는데도 이용할 수 있다.


버튼을 정의하기 위해서는 수정을 원하는 버튼에 대고 마우스 오른쪽 버튼을

클릭하거나, Action-Button 메뉴를 선택하여 다이얼로그를 띄우고 수정한다.

버튼에는 Push 버튼(누르는 버튼) 과 Toggle 버튼(ON/OFF버튼) 두가지가 있다.

Push 버튼은 눌려졌을때 명령을 실행하고, 마우스를 떼자 마자 다시 버튼이 풀린다.

반면, Toggle 버튼은 OFF(up)과 ON(DOWN)사이가 누를때마다 바뀌는 형태이다.

버튼 정의부분에서 Varible 란이 있는데 이 란에 어떤 변수이름을 채울 경우,

그 버튼이 토글 버튼이라면, 그 변수에는 버튼의 상태가 항상 저장된다.

(또한 변수값을 바꾸면 버튼이 눌러진 효과)


(다음은 토글 버튼에서 조금 주의해야할, 생각해야할 사항인데,

임의로 줄여서 설명한다.

잘못하면 헤깔림.

 

버튼의 제목에 나오는 글과 실행과의 관계인데,

토글 버튼 경우 제목을 두가지 방법으로 쓸 수 있다.

1. 제목에 현재의 ON/OFF상태가 나타난다.

2. 제목에 버튼을 누를면 동작할 상태가 나타난다.

이 두가지를 이해하기를 바란다.

zMUD 자체에서는 2번 방식으로 설명이 되어 있다.

그래서 버튼 수정을 들어가보면 제목은 ON, OFF 의 순서인데 명령은

OFF command, ON command로 서로 반대로 바뀌어 있다.

가만히 생각하고 이해하기 바란다.


자칫 헷갈리는 부분이므로 세심함을 요한다.)


== 향상된 설정부분 ==

Advanced settings 탭을 들어가면 버튼 상태를 조절하는 많은 옵션들이 있다.

색깔, 크기, 위치, 그리고 BMP화일 형태의 그래픽화일로 연결시키는 것 등.

이들은 버튼 바를 좀 더 복잡하게 만들 수 있도록 한다.

 


][ 멀티플레이 안내


한개의 캐릭터 또는 한개의 머드 이상을 동시 접속하면

(File-Another Chaarcter 메뉴 이용),

그 각각의 출력은 서로 다른 창으로 나타난다.

이로써 다중 캐릭터를 조종 할 수 있다.

(이를 멀티플레이라 부르며, 많은 머드들에서 금지한다)


이때에, 명령입력라인에서 친 글은 현재 활성화된(맨 앞에 나와있는) 창으로

보내진다.

현재의 창을 바꾸는 방법은 여러가지가 있다.


1. Window 메뉴에서 선택

2. 화면 밑쪽에 있는 탭(라벨)을 선택

3. Ctrl-N 또는 Ctrl-Tab 키를 이용

------------

각 창들은 이름들이 있다. 기본이름은 데이타베이스에서 적어 놓은 ID에 따른지만,

#NAME 명령으로 바꿀 수도 있다.


현재 창이 아닌 다른 창으로 명령을 보내는 방법은 그 이름을 이용한다.

-----------------------------------------------

포커스(촛점) 문자(기본값 [:])를 이용하며, 형식은 "이름:명령"의 형태이다.

---------

이렇게 명령을 주고 나면 명령을 보낸 창이 맨 앞으로 나오게 된다.

이를 막으려면 ":이름:명령" 형식을 이용한다.

창의 이름을 지정하지 않는다면 그 명령은 모든 창으로 나간다.


예를 들면 ":안녕하세요 잡담"

참고로, 창의 이름을 적을때 이름 모두를 적을 필요는 없다. 다른 창과 구분이

될정도만 적으면 된다.

예를 들어 zugg란 창이 있다면 "z:하이 잡" 으로 된다.

만일 @tank 란 변수에 zugg를 입력했다면 "@tank:하이 잡담" 의 형식도 가능하다.


한줄에 두개 이상의 창으로 동시 전달도 가능하다.

예를 들어 "zugg:풀 먹;land:허브 마셔"


풀 먹;zugg:봐 <- 현재창에 풀 먹, zugg창에 봐, zugg창으로 변경


마지막으로 "창이름:" 를 입력후 TAB키를 치면 현재 포커스가 그 창으로 바뀐다.


== 윈도우 활동상태 ==

두개 이상의 창이 떠 있는 경우 밑에 나온 이름 탭 옆의 기호는 다음과 같은 상태

를 나타낸다.


빨간점 현재 접속중단상태

녹색점 머드에서 새 입력이 들어왔슴

노란점 접속중단 상태이고, 자동 재접속 진행중

------ -------------------------------------

노란번개 현재 접속중

 

 

][ 매퍼 소개


( Mapping 기능, Auto Mapper 란 기능을 쓰는 부분이다.

한글 머드에선 100프로 신뢰할 수가 없다 현재로서는(4.62버젼)

본인도 굳이 많이 연구를 안했고, 번역을 모두 생략한다.

단, 간단히 소개만 하면

어느 존의 방 설명, 출구 등을 지도형태로 모두 기억시켜 놓고선, 이동,

현위치 파악, 등을

완벽하게 하는 기능이다. 가히 환상적인데 약간의 노가다가 필요한듯

개인에 따라 연구해봄직한 기능이다)

 

][ 진보(향상)된 기능들


zMUD는 매우 복잡한 프로그램이다. 트리거와 변수, 알리아스 등의 조합으로 매우

강력한 이벤트 프로그래밍을 구현할 수 있다.

이런 언어적 기능을 향상시키는 기능을 여기 간단히 소개한다.


물로, zMUD는 단순히 사용자용만을 위한 것이 아니고, 존 에디터와, 코드제작자 등

을 위한 많은 기능들도 포함하고 있다.

이 중 하나가 여러줄을 동시에 보내거나 ANSI 칼라 배열을 보낼 수 있는

ANSI 에디터창 같은 것이다.


밑에 진보된 에디트와 진보된 프로그래밍에 대해 더 설명을 한다.


== 진보된 에디팅 ==

명령 입력라인처럼 한줄 입력이 아닌, 아주 긴 메시지 같은 것을 위한

ANSI 입력창이 있다.

이 창을 열려면, Window-Editor 메뉴를 이용하거나 Ctrl-Enter 키를 친다.


이 명령 에디터는 일반 에디터같이 작동한다.

입력과 마우스 또는 화살표키를 이용하여 이동, 잘라내기,복사,

그리고 에디터 내부로 붙여넣기, 머드창에서 복사하여 에디터창에 붙여넣기

등을 할 수 있다. 라인 수는 제한이 없으며, 스크롤바를 이용 다른 부분도

가능하다.

에디터창의 크기는 출력창과 같다. 16bit 버젼의 경우 16000라인.


에디트창 내의 메뉴를 이용하면 텍스트 화일을 읽어들이거나 저장할 수 있다.

에디트 윈도 메뉴중 Import 는 텍스트 화일을 현 커서 위치에 삽입한다.

(Open 은 완전 대치)

Send 명령은 현재 에디트 창의 내용을 머드로 보낸다.

Ctrl-Enter을 누르거나, 위의 스피드 버튼을 마우스로 클릭하여도 되며,

Option-select Strings 메뉴를 이용하여 줄 단위로 보낼수도 있다.

빈줄(blank line)를 보내는 방법도 변경할 수 있다.

보통 각 줄은 머드로 보내기 전 해석되어 보내지지만, Parse speed 버튼을 토글하

면 비해석모드 (verbatim)로 그대로 보낼 수도 있다.


Capture 명령을 쓰면 머드에서 오는 마지막 줄을 에디터로 보낼 수가 있다.

(트리거에서 이용한다)

스피드 버튼을 조절하면 에디트 중에도 계속 캡춰 하는가 여부를 지정할 수 있다.

텍스트 메뉴를 이용하거나 스피드 버튼을 이용하여 직접 안시 칼라, 상태를

에디트 할 수 있다.


== 진보된 프로그래밍 ==

트리거와 변수 부분에서 zMUD프로그래밍의 기본에 대해 얘기한 바가 있다.

그러나, zMUD는 더욱 강력한 이벤트위주 프로그래밍 언어이다.

지금까지 무엇이 가능한가에 대해 약간 보았을 뿐이다.

여기서는 더 세밀한 명령해석기능 설명과 함수에 대해 나올 것이다.

만일 zMUD의 명령해석을 완전히 이해한다면, zMUD로 원하는 대부분의 모든 일이

가능하다는 것을 알게 될 것이다.


-명령문법과 해석기능

명령을 입력하고 엔터를 칠때마다 그 입력된 명령은 해부(해석)된다.

이 해석기능은 몇가지 단계를 거친다 :


명령구분자(;)로 분리

명령의 포커스 결정

명령 실행


명령이 실행될때는, 각각의 파라메터들은 그 타입에 따라 확장될지, 평가될지,

있는 그대로 보내 질지가 결정된다.

zMUD 프로그래밍 문법의 기본을 위해서, 웹에 있는 프로그래밍 언어 매뉴얼

을 읽는것이 좋다. (http://www.zuggsoft.com/zmud/prog.htm)

(해당 웹페이지는 맨 끝에 해석 첨부해놓았다)


예를 들어, #VAR 명령이 문자 파라메터를 가지고 있다면,

이것은 해석단계를 거치게 된다.


#VAR temp 5 - 변수 temp에 숫자 5를 연결

#VAR hp {100/@temp}

#SHOW @hp - 결과는 "100/5"가 출력


그러나, #MATH 명령을 이용한다면, 평가(계산)단계까지 거친다.


#VAR temp 5

#MATH hp 100/@temp

#SHOW @hp - 결과는 "20"이 출력


#FUNC 명령은 어떠한 해석작용도 안하고 그대로 받는다.


#VAR temp 5

#FUNC hp 100/@temp

#SHOW @hp - "100/@temp" 출력


정확한 해석을 위하여 해석(파싱)이나, 변수 확장에서 한개의 단어는 보통

공백(space)문자로 구분된다.

그래서, 만약 @a 에 "test" 란 값이 들어가 있다면, @a ing 에서는 @a가 번역

된다.

그러나 @aing라고 쓴다면 zMUD는 변수 aing 로 인식한다.

이를 해결하려면 중괄호({})를 변수이름을 둘러쌓아서 구분을 시켜주어야 한다.

즉, @{a}ing 는 정상적으로 확장되어 "testing"를 나타내게 된다.


위의 문법을 이용하여 간접변수지정도 가능하다.

만일 @b 가 a 란 값을 가지고 있다면, @{@b} -> @{a} -> test 라는 결과가

가능하다.


만약 zMUD에서 사용하는 특수문자(@, % 등)을 확장이 아닌 그대로 이용하려면,

그 앞에 틸드 문자(~)를 붙여준다.

즉, zugg~@zuggsoft.com 이라 쓴다면 여기의 @는 변수를 가리키는 특수문자로

취급되지 않는다.


- 함수 (Function)

변수에 덧붙여, zMUD에서는 함수를 정의 할수도 있다.

함수를 파라메터가 붙은 변수라고 생각해보자. 파라메터는 명령문자열 내부에

서도 확장이 된다는 점을 빼고는 알리아스와 같은 식으로 이용된다.

함수를 호출하는 문법은 약간 차이는 있다.


함수를 정의하려면 변수와 같은 #VARIABLE 명령을 이용한다.

그러나, 변수의 내용부분에서 %1, %2 등 파라메터를 쓴다는 점은 약간 차이가 있다.


예를 들어 #VARIABLE kk { %1 공격; %1 헬파이어} 와 같이 함수를 정의했다면,

------------------------------------

함수 @kk 는 1개의 파라메터를 취한다. 함수를 확장하고, 실행하기 위해서는

함수명 앞에 @ 문자를 넣고, 필요한 파라메터를 뒤의 괄호 안에 넣는다.

(대부분의 프로그래밍 언어들이 취하는 방식)

곧, @kk(좀비) 는 번역되어서 좀비 공격; 좀비 헬파이어 가 된다.

---------- --------------------------------

가만히 살펴보면 알리아스와 거진 비슷하다고 볼 것이다.

그러나, 알리아스경우는 맨 처음에 나올때만 이런 동작을 하지만,함수는 문장

중간이든 어디에들 있더라도 확장을 하게 된다.


zMUD를 더 강력하게 하기 위하여, 미리 설정된 몇가지 함수가 제공된다.

이 함수들은 매우 강력한 트리거 를 만드는데 꼭 필요하다.

당신이 만든 함수에 이런 미리 설정된 함수들을 넣는다면..

 


][ 매뉴 설명


File Edit View Settings Actions Window Help


== File ==

Connection Wizard 머드 리스트(영어권)를 보여준다.

Another char 새로운 캐릭터나 호스트를 사용자 정의하거나 접속한다.

Reconnect 현재 캐릭터를 재접속

Disconnect 현재 세션을 접속종료

New Log 새로운 로그파일을 연다.

Appent Log 기존의 로그화일에 덧붙인다.

Log toggle 로그기능 토글

Print Setup 현재 프린터 셋업

Print 현재 화면, 버터, 또는 선택한부분을 프린트 한다.

(흑백/칼라 토글가능)

Exit 접속종료하고 zMUD를 끝낸다.


== Edit ==

Cut 명령입력라인에서 텍스트를 잘라낸다.

Copt 명령입력라인에서 텍스트를 복사낸다.

Paste 명령입력라인에 텍스트를 붙인다.

Select All 명령입력라인의 모든 내용을 선택한다.

Clear 명령입력라인을 지운다.

Find 백스크롤 부분에서 원하는 문자열을 찾는다.


== View ==

Preferences 일반사항,칼라,폰트,사운드,특수문자,메모리셋팅을 보거

나 수정한다.

Alias 알리아스 셋팅을 보거나 수정한다.

Variable 변수 셋팅을 보거나 수정한다.

Triggers 트리거 셋팅을 보거나 수정한다.

Macro keys 매크로키 셋팅을 보거나 수정한다.

Buttons 버튼 셋팅을 보거나 수정한다.

Tab Completion 탭컴플리션(앞부분 치고 TAB 치면, 단어가 완성) 셋팅을

보거나 수정한다.

Speed Menu 스피드메뉴 셋팅을 보거나 수정한다.

-----------

Speed Walking 스피드워킹 셋팅을 보거나 수정한다.

--------------

Directions 스키드워킹 방향을 보거나 수정한다.

----------


== Settiongs ==

New 모든 셋팅 지운다.

Load 화일에 저장된 셋팅을 불러온다.

Save 현재 셋팅을 저장한다.

Saveas 현재 셋팅을 다른 화일로 저장한다.

Import 아스키 스크립트화일이나,

TINTIN++스크립트 화일을 읽어들인다.

Export 매크로,알리아스,트리거 등을 아스키스크립트형태로

변환저장한다.

Parse 파싱모드를 켜거나 끈다.

----- (화면 오른쪽 아래 컴퓨터모양 아이콘과 동일)


== Actions ==

Make Alias

Make Trigger

Define Keys

Make Button ------ 이상 네가지 각각 해당 다이얼로그 에디터를 띄운다 ------

Add Tab Word 탭컴플리션 리스트에 단어 추가

Speedwalking 경로조절, 스피드워킹 다이얼로그

------------

Timer 틱 타이머를 조절

-----

Synch Timer 틱 타이머 조절. 일치시킴 (synchronize)

-----------

Define Status bar 정보라인, 정보창을 수정한다.


== Window ==

Tile

Cascade

Arrange ------ 이상 세개는 일반 윈도우 정리 제어 명령 -----

Freeze 화면을 분할한다. (백스크롤)

------

Refresh 현재 창을 다시 그림

Clear 현재 창을 지움

Empty 백스크롤 버프를 모두 지우고 메모리 재정의

Command Buffer 전화면 명령 에디터를 연다.

History 명령버퍼를 보여준다. (지금까지 입력된 명령 저장된것)

Status 정보창을 보이게/안보이게 한다.

Automapper 오포매퍼 창을 보여준다.


== Help ==

..... 생략 ....


(이하 각 다이얼로그 박스등 설명이 간단하게 나오는데 대부분 생략함.

그정도는 스스로도 충분)


][ Preferences

이 다이얼박스에서는 일반적인 시스템 세팅을 조정한다.


== General Settiongs ==

ANSI Color 안시 색깔명령 해석을 켜고 끈다.

Word Wrap 창의 경계끝에서 잘라내는 기능을 켜고 끈다.

칼럼수를 지정하거나 Auto Wrap 를 선택한다.

Auto Clear Input 명령입력라인에서 어느 명령을 친 후에 그 명령이

계속 남아 있게 되는데,

그것을 안하고 없어지게 하려면 여기를 선택한다.

Show Trigger 디버깅(수정)을 위해서 해당 트리거들이 화면에

그때 그때 나오게 한다.

Echo Commands 명령을 입력할때, 이들을 화면에 한번 출력시키고

머드로 보낸다.

Connection Timer 접속시간을 계산한다.

----------------

Help Ballons 마우스 커서가 위의 제어버튼으로 갈때 풍선 도움말을

보여준다.

Speed Buttons 스피드 버튼을 켜고 끈다.

-------------

Auto NumLock zMUD가 처음 시작할때 NumLock 키를 자동으로 켜준다.

a=b syntax 변수 입력할때 = 형식의 문법을 사용 가능하게 한다.

-----------

Gag Password 암호가 포함된 줄은 보여주지 않게 해준다.

------------

Clock 명령라인의 시계

Window Tabs 여러개의 창을 띄웠을 때 맨 밀에 보이는 탭(라벨표시)를

켠다.

Clean Scrolling 다른 한 윈도우가 zMUD윈도우를 가리고 있더라도 정상적

으로 스크롤을 하도록 한다.

그러나 지머드 스크롤을 느리게 한다

Caputre Commands 명령입력라인에서 나가는 모든 명령은 #C+명령으로

캡춰되게 한다.

Auto rebonnect 접속종료시 재접속 다이얼로그 박스가 뜨는것을 토글한다.

Spam Count 스패머(이 스팸 기능)의 신호 없이,

동일명령 안전 반복 횟수를 지정한다.

Spam Length spam count 내에서 여기서 지정한 길이보다 길거나

짧은 명령은 무시.

Spam Command spam count 횟수 만큼 다른 명령을 반복한 후에

실행할 명령

Tick Interval 틱 타이머의 시간 간격

-------------

Scroll Amount zMUD가 얼마나 자주 화면을 갱신하는가를 결정한다.

------------- 0 이면, 들어온 데이타가 없을때만 갱신한다.

이것이 가장 빠른 셋팅이며,

자칫 화면의 글을 못볼 수가 있다.

그 외의 숫자는, 그 숫자만큼 데이타가

왔을때 화면을 갱신한다. 기본값은 5이다.

Tab Limit 동적인 탭컴플리션 기능에 기억되는 단어의 최소크기를

조절한다.

각 단어들은 여기 정한 수치보다 짧을때는 무시된다.


== Special Characters ==

이 특수문자들은 여러가지 기능들을 제어하기 위하여 zMUD 해석기가 이용하는

글자들이다.

파싱기능을 불가로 만들때, Setting-Parse 메뉴를 이용하거나, 여기 특수문자를

---------------------------------------------------------------------------

바꿀 수 있다.

-------------

또한, 각 체크 부분을 꺼놓음으로써 특수 문자만을 단독으로 불가로 만들수도 있다.


Command Char 명령 문자, 기본값 #

Separator Char 명령분리문자, 기본값 ;

Variable Char 변수 문자, 기본값 @ (틴틴에서는 $를 쓰죠)

Parameter Char 파라메터 참조 문자, 기본값 %

Movement Char 경로변수나 명령의 시작 문자, 기본값 .

History Char 명령입력 버퍼에서 되부르는 문자, 기본값 !

Focus Char 특정윈도를 지정하는 포커스 문자, 기본값 :


(** 그 외의 메뉴등은 스스로 파악해보기 바람.

너무 자잘한 것들이라 귀찮아서 빼버려씀 ^^;)

 


][ 명령 소개


모든 명령은 명령특수문자(기본값 #)으로 시작해야한다.

각 명령들은 앞부분만으로 줄여서 쓸 수 있다.


[숫자] 지정 숫자만큼 반복

ABORT 현재 명령 라인에서 더이상 파싱작용을 안하게 한다.

ACTION 트리거액션을 만들거나 보여준다.

ADD 변수에 값을 더한다.

ALARM 알람 트리거를 만든다.

ALIAS 알리아스를 보여주거나 만든다.

ALL 모든 윈도로 명령을 보낸다.

BACKUP 현재 경로에서 마지막 이동한 방향을 삭제

BEEP 스피커로 비프음을 내거나 WAV 화일을 연주

BUTTON 버튼을 작동시킨다.

C+ 윈도로 캡춰 시작

C- 윈도로 캡춰 끝

CAPTURE 한 라인을 캡춰해서 에디터나 윈도로 보낸다.

CASE 리스트 에서 한개의 명령을 선택

CHARACTER 당신의 캐릭터 이름을 보낸다.

CLOSE 화일을 닫는다.

CLR 화면을 지운다.

COLOR 마지막 줄의 색깔을 바꾼다.

CONNECT 현재 세션을 재접속시킨다.

CR new line (엔터기호)를 보낸다.

CW 마지막 줄에서 맞는 단어를 색깔을 바꾼다.

DDE DDE 매크로를 서버로 보낸다.

DEFAULT 특수 제어 문자를 모두 기본값으로 바꾼다.

DISCONNECT 현재 세션을 접속종료 시킨다.

ECHO 현재 윈도에 문자열을 출력한다.

ERASE 화일을 지운다.

EXEC 명령을 실행한다

FILE 화일을 읽기/쓰기용으로 연다. (번호로 할당)

FIND (** AUTOMAPPER관련 **)

FORALL 현재 명령을 리스트에 있는 각각을 모두 넣어 실행한다

FREEZE 화면을 백스크롤하도록 나눈다

GAG 화면에서 마지막 라인을 삭제한다

----

HELP 명령 도움말

H+ 명령 히스토리 버퍼에서 다음 명령을 복구

H- 명령 히스토리 버퍼에서 이전 명령을 복구

HISTORY 이전 명령들을 보여준다

HILIGHT 마지막줄을 강조한다(지정한 HILIGHT색상으로)

HOST 현재 호스트 이름을 리턴한다.

IF 비교실행 명령

IGNORE 트리거작동을 불가/가능 하게 토글한다.

INPUT 명령 버퍼로 글을 넣는다.

KEY 매크로 키를 정의한다.

KILLALL 모든 알리아스,매크로,트리거,탭컴플리션 단어들을 삭제

LMAP (** AUTOMAPPER관련 **)

LOAD 셋팅화일을 읽는다.

LOOK (** AUTOMAPPER관련 **)

LOOP 지정 명령을 몇회 반복한다.

LOG 로그 화일을 시작하거나 로그 작동을 토글한다.

MAP 한 방향을 현재 경로에 추가

MATH 복잡한 수학적 표현을 계산한다

MARK 경로의 시작점을 표시한다.

MEDIA 멀티미디어 장치로 명령을 보낸다.

MEMORY 남은 메모리를 표시한다.

MENU 메뉴 명령을 실행

MESSAGE 작은 윈도를 띄워 메시지를 보여준다

NAME 현재 세션 이름을 바꾼다

NOOP 명령을 무시한다 (주석처리, 보류 용)

NODEF #DEF로 저장된 특수 문자를 읽어들인다.

NOMAP (** AUTOMAPPER관련 **)

OK 슬로우워크에서 한 단계를 확인

PATH 현재 경로를 저장하거나 보여줌

PICK 리스트 내에서 명령을 선택

PLAY WAV, MID, AVI, CD 등 외 멀티미디어를 플레이시킴

PROMPT 알리아스나 변수 값 입력 윈도가 뜬다

PW 현재 비밀번호를 리턴

READ 화일에서 스크립트나 기록을 읽고 실행하거나 읽는다

RECALL (** AUTOMAPPER관련 **)

RECORD 알리아스를 기록

RESET 화일의 처음 위치로 돌아간다

RETRACE 경로를 다시 추적한다.

SAY 화면에 문자열을 출력

SAVE 현재 셋팅 화일을 저장

SCROLL 백스크롤 버퍼에서 일치되는 줄을 표시한다.

SEND 머드로 텍스트 화일을 보낸다.

SESSION 새로운 세션을 연다

SHOW 문자열을 화면에 보여준다

SLOW 경로를 Slow Walk 모드로 실행한다

STATUS 상태라인을 정의한다. (status bar)

STEP 중단된 Slow Walk 를 계속하여 다음 단계를 진행한다.

STOP Slow Walk 를 중단한다.

STW 상태창을 정의한다.

T+ 트리거 그룹을 켠다.

T- 트리거 그룹을 끈다.

T? 타이머의 남은시간을 표시한다.

TAB 탭컴플리션 리스트에 단어를 추가한다.

TELEPORT (** AUTOMAPPER관련 **)

TIMER 타이머를 토글한다.

TRIGGER 트리거를 보이게 하거나 만든다

TS 타이머를 기점으로 되돌린다.

---

TYPE 지정번호 화일의 전부나 일부를 화면에 출력

TZ 틱 타이머를 0으로 셋팅

--

UNALIAS 알리아스 제거

UNGAG GAG 되는 라인을 방지

UNKEY 매크로 키 삭제

UNTRIGGER 트리거 삭제

UNVAR 변수 삭제

UNTIL 표현식이 참이 될때까지 명령 실행

URL 웹브라우져로 지정 URL을 연다

VARIABLE 변수에 값을 입력

VERSION 현재 zMUD 버젼 표시

VERBATIM 파싱모드를 토글한다

WAIT 다음라인이 읽히기 전 일정시간 딜레이를 준다

WALK (** AUTOMAPPER관련 **)

WHILE 표현식이 참인 동안 명령 실행

WINDOW 새 창을 연다

WIZLIST zMUD의 제작자(출처)를 보여준다

WRAP word wrapping 을 설정한다

WRITE 화일에 기록을 저장한다

YESNO 버튼있는 확인용 다이얼로그를 표시한다


(각 명령당 자세한 설명은 뒤에 나옴)

 


][ 지원 함수


%abs(i)

i 의 절대값

%additem(s,list)

문자열 s를 지정 문자열리스트에 추가

%alias(s)

알리아스 s 를 확장시킴

%ansi(fore,back)

주어진 색깔의 안시코드를 리턴

%begins(s1,s2)

만일 s1이 s2로 시작한다면 참

%btncol(button,back,fore)

버튼 색깔 바꿈

%btnimage(button,filename)

버튼에 이미지 화일 연결

%case(i,s1,s2,s3,...)

i 가 1 이면 s1, i 가 2 이면 s2, ... 등. 최대 8개까지 가능

%char(i)

지정 숫자의 아스키 코드 문자.

이 항수는 시스템제어문자들(;:@%!. 등)이 바뀌어 있을때 현재 값으로

바꿔주는데 쓰이기도 한다.

%color(fore,back)

지정 색깔 을 상태값으로 바꾼다

%concat(s1,s2,s3...)

모든 문자열을 합친다(최대 9개)

%copy(s,i,n)

문자열 s에서 i 위치부터 n개의 문자를 꺼낸다


(*** DDE 관련 몇가지가 나오는데 DDE 이해를 못하겠슴.

이런게 국내에선 있나도 몰게씀. 생략)


%delete(s,i.n)

문자열 s 에서 i 위치부터 n 개 문자를 지운 나머지 문자열

%delitem(s,list)

문자열 리스트에서 아이템 s 삭제

%ends(s1,s2)

문자열 s1 이 s2 로 끝나면 참

%exec(s)

문자열 s 에 있는 명령 수행하고, 그 결과를 '|' 문자로 나눈 상태로 반환

%expand(s)

문자열 s에 있는 함수나 변수를 확장한다

%eval(p)

문자열 s에 있는 함수나 변수를 평가한다

%format(f,a,b,c,d...)

포멧문자열 'f'를 이용하여 a,b,c.. 등의 값을 포멧한다.

(형식을 잡음. 디스크포멧아님)

포멧문자열 형식 "%w.dx" - w : 총 길이

- d : 소숫점 윗 길이

- x : 타입 - s(문자열), n(숫자, 3자리마다 콤마찍힘),

f(실수형), m(돈단위)

%getglobal(name)

전역 변수의 값 (INI화일 내의 변수)

%grep(i,s)

i 번 화일에서 패턴 s 와 같은 줄을 찾아 리턴

%if (expression, true-value, false-value)

표현식이 참이면 true-value, 거짓이면 false-value 리턴

%insert (p,s,i)

문자열 s의 i 위치에 p 를 삽입

%ismember(s,list)

s 가 리스트 list의 구성원중 하나이면 참

%isnumber(s)

s 가 숫자이면 참

%len(s)

문자열 s 의 길이

%lower(s)

문자열 s 를 소문자로

%max(a,b,c,d,...)

a,b,c,d... 중 최대값

%min(a,b,c,d,...)

a,b,c,d... 중 최소값

%mod(a,b)

a / b 의 나머지값

%null(s)

s 가 널 스트링 이면 참

%numwords(s,d)

문자열 s 내에서 구분문자 d 로 구분된 단어 갯수

(d 가 없으면 스페이스가 기본값)

%pick(s1,s2,s3,...)

리스트를 보여주고 그 중에 한개나 여러개를 선택하게 한다.

선택한 것을 | 로 구분하여 리턴(#PICK 참조)

%pos(p,s)

문자열 s 내에서 p 패턴이 있는 위치 리턴, 못찾으면 0 리턴

%proper(s)

올바른 문자로 바꿈(첫문자를 제외한 소문자)%3S/FONT>


변수 v 의 값을 묻는다. 만일 p 가 있으면 패스워드 모드

(친 글자가 안보임. 에코안됨)

%random(i,j)

i ~ j 사이 중 랜덤값. 만일 j 가 없으면, 0 ~ i 까지

%read(i,rec)

i 번 화일에서 지정한 rec를 읽는다.

만일 rec가 없으면 0 로 한걸로 인식.

텍스트 화일의 경우 rec 는 읽을 줄의 수

(0은 바로 다음줄을 읽는다)

%remove(p,s)

문자열 s 내에서 스트링 p 부분을 삭제

%repeat(s,n)

스트링 s 를 n 회 반복

%replace(s,p,r)

스트링 s 내에서 p 로 된 부분을 r 로 대치하여 리턴

%right(s,n)

스트링 s 에서 n 개 글자 뒤의 오른쪽 나머지 부분 리턴

%rightback(s,n)

스트링 s 에서 오른쪽부터 n 개 글자 리턴

%setglobal(name,value)

전역변수를 셋팅(INI화일에 저장)

%time(format)

현재 날짜,시간을 리턴. format 가 엄으면 긴형식으로 잡힘

format 에는 dd, mm, mmm, yy, hh, nn, ss 등이 쓰인다.

%trigger(class)

지정 트리거 class 가 켜져 있는지 안켜져 있는지 리턴

%trim(s)

문자열 s 의 앞 뒤의 공백 제거

%trimleft(s)

문자열 s 의 앞부분 공백 제거

%trimright(s)

문자열 s 의 뒷부분 공백 제거

%upper(s)

문자열 s 를 대문자로 변환

%word(s,i,d)

문자열 s 에서 구분자 d (기본값 공백)로 구분된 것들 중,i 번째 단어

%write(i,s,rec)

i 번 화일에 문자열 s 를 rec 필드에 쓴다.

일반 텍스트 화일에선 rec 는 무시되고 그냥 화일에 첨가되며,

0일때는 화일의 끝에 써진다.

%yesno(s)

프롬프트 s 에 대해서 질문을 하고, 버튼의 눌림에 따라 참/거짓을

리턴한다.

#YESNO 명령에서 더 자세한 옵션을 참조하라.

버튼이 두개 이상인 경우 결과값은 버튼의 번호가 리턴된다.

이 경우 #CASE 명령이 유용하다.

버튼 두개일때는 0이나 1이 리턴되며 #IF 명령을 쓰면된다


(** 이하 맵퍼에서 쓰이는 함수가 있는데 생략 **)

 


][ 기본 지원 변수


%action 마지막 트리거에서 실행된 액션

%char 머드 캐릭터 이름

%cr 엔터키

%ctime 머드 접속후 경과 시간(초)

------

%def 현재 정의된 특수문자 리스트

----

%host 현재 머드의 호스트 이름

%i %repeatnum 과 같음

%lastcom 마지막으로 실행된 명령

%lastcom2 두번째 마지막으로 실행된 명령

%lastcom3 세번째 마지막으로 실행된 명령

%lastinput 마지막으로 실행된 명령 라인 입력내용

%line 머드로부터 마지막으로 받은 줄

%line2 머드로부터 두번째 마지막으로 받은 줄

%line3 머드로부터 세번째 마지막으로 받은 줄

%param1..%param99 마지막 트리거에서 반응된 파라메터들

%port 현재 접속 포트

%random 0-99 사이의 랜덤 숫자

%repeatnum 반복이나 loop 명령에서 쓰인 반복숫자 현재값

%selected 명령버퍼나 게임창에서 선택된 문자열

%selline 현재 선택된 줄

%selword 현재 선택된 단어

%title 현재 머드의 제목

%trigger 마지막 트리거가 작동한 라인

%window 현재 윈도우의 이름

 


][ 지머드 명령들


** 반복

#숫자 명령 명령을 지정된 숫자만큼 반복한다.

숫자는 반드시 상수(변수안됨), 변수를 쓰려면

LOOP명령을 쓴다.

현재 반복횟수는 %repeatnum 에 있으니 따로 이용

가능하다


#10 시민 헬파이어 "시민 헬파이어" 를 10회 반복

 

** ABORT

#AB 현재 명령 라인 작동을 더이상 못하도록 중지


예제: 모두 가져; #AB; 모두 버려 "모두 가져" 실행 후, 중지되어서

"모두 버려" 명령은 실행안됨


** ACTION

#AC 패턴 명령 [클래스] 관련 : #TRIGGER, #T+, #T-, #IGNORE


지머드의 가장 강력한 기능중의 하나이다.

머드에서 어떠한 글이 왔을때마다 지정명령을 수행하게 한다.


첫번째, 패턴이 반응문이다.

만일 이 반응문에 공백문자가 섞였을 경우는 {}으로 묶는다.

패턴에는 특수 기호나, 와일드카드가 가능하다.

두번째는 실행될 명령이다. 이 명령은 대부분 한단어 이상으로 되

있으므로 {}로 묶어준다.

세번째는 옵션인데, 몇몇 트리거들을 같은 그룹으로 묶는것이다.


더욱 자세한 옵션을 조절하려면 트리거 다이얼로그를 들어간다.

여기서는 각각의 트리거가 각 줄이 끝난 후에 반응할지,

아니면 프롬프트(이름이나 패스워드 등)같이 그 줄이 끝나지 않은 상태

에서 반응할지를 결정할 수 있다.

그 외에도 처음 읽혀질때 켜진상태로 할지 아닐지나, 그룹별로 켜고 끌

수 있다.


예제: #ac {잡담} {#COLOR red}

전체말이 "누구님의 잡담 : 어쩌구"이런식으로 나온다면

위와같이 할 경우 "잡담"이란 글자가 나올때 그 줄 전체를

빨간색으로 바꿈

#ac {^Username:} {#CH}

#ac {^Password:} {#PW}

다이얼로그에서 Newline 끄고, Prompt 를 켜야한다.

아이디와, 비밀번호를 묻는것에 대답하는 예제이다.

맨 앞의 ^ 는 위의 반응문이 첫칼럼부터 시작되는것만 반응하게

-----------------------------------------------------------

하는 기호이고, #CH, #PW 는 캐릭터데이타베이스에 저장된

아이디와 비밀번호를 내보내는 명령

#ac {^당신은 (%d) 만큼의 돈을 가집니다} {푸로 %1 줘} autogive

돈을 가질때마다 그 만큼의 돈을 착한 천사 푸로에게로 주는

트리거(^^)

끝의 autogive 는 이 트리거의 클래스(그룹)을 설정한것

클래스 이름은 #T+, #T- 명령으로 단독으로 ON/OFF 할 수 있다.


패턴 : (** 패턴에는 많은 종류가 지원되나 한글환경에선 몇가지가

제한된다 가능한것만 **)

* - 모든숫자,문자,공백. 갯수무관

? - 문자단위로 1개 문자만

%d - 모든 숫자를 읽음

%s - 모든 공백을 읽음(칸수무관)

%x - 모든문자,숫자(공백제외)를 읽음

(** %s+%x = * 라고 보면 이해가.. **)

[범위] - 나오는 문자 범위 설정(영어)

^ - 줄의 처음에 나올때만 반응하게 함

$ - 줄의 맨 뒤에 나올때만 반응하게 함

~ - 바로 뒤의 문자 한개가 지머드번역되지 않고 글자 그대로 인식

되도록

{값A|값B|값C|...} - 나열된것중 아무거나 맞으면 됨

{^문자열} - 지정문자열과 틀린것


보충 : [abc] 는 [a-c] 와 같다. a, b, c 중의 하나

"[test]" 라는 패턴을 그대로 읽게 하려면 ~[test~] 라고 쓴다


** ADD

#ad 변수 값 값은 - + 아무거나 가능


지정 변수에 [값]을 더한다. (** 값이 - 이면 빼기가 되게쪄 ^^ **)

[값] 에는 숫자나, 숫자가 들어간 변수만이 가능하다.

지머드에만 있는 유일한 수학계산 명령이다.

TINTIN의 MATH란 명령역시 가능하다


예제 : #ad moves 1

@moves 란 변수에 1을 더한다

#ac {당신은 (%d)의 돈을 가졌습니다} {#ad gold %1}

돈을 가질때 @gold 변수에 계속 누적합산 시키는 트리거

 

** ALARM

#ala 시간패턴 명령 관련 : #TRIGGER


머드에서 받는것과 달리 실제 시간에 관련하는 트리거를 만든다

시간패턴에는 지정시간이나 와일드카드가 가능하다

앞에 - 가 들어가면 실제 시간이 아닌 접속시간으로 취급된다

일반적인 시간패턴 형식은 "시간:분:초" 이다.

시간이 빠진다면 매시간마다의 몇분몇초, 분도 빠지면 매 몇초

를 얘기한다. (와일드카드를 넣은것과 같음)

"|" 기호를 이용하여 OR 연산이 가능하다.

예제 : #ala -30:00 {저장}

시간이 없으므로 *로 취급된다.

매 접속시간 기준 30분마다 저장 명령을 실행한다

#ala 3:00:00 {잠좀 잡시다 잡담}

오전 3시에 "잡좀 잡시다" 라는 잡담을 하게 한다

#ala -59:{55|56|57|58|59} {#show 60-%1}

접속시간 기준 매시간 59분 55초부터 59초까지 60-초,

즉 5,4,3,2.1을 출력

 

** ALIAS

#al [알리아스이름] [문자열] 관련 : #VARIABLE


지정 문자열(명령)을 일종의 줄임말인 알리아스이름으로 연결한다.

알리아스 정의 내용에서 변수는 자동 확장되며,

이를 늦추려면 변수문자(@)를 두개 쓴다.


파라메터 없이 #al 만 쓰면 모든 알리아스 리스트를 화면에 보여준다.

파라메터 한개만 쓰면 그 알리아스 정의 내용을 보여준다


알리아스 이름역시 탭컴플리션으로 확장이 가능하다


알리아스 이름 뒤에 쓰는 말들은 파라메터 문자로 저장된다 (%1~%99)

%-1~%-99 와같이 앞에 - 가 붙으면 현재 번호 파라메터 이하 모든

파라메터를 말한다

곧, %-1 은 모든 파라메터 이며, %-2 는 첫째를 제외한 모든 파라메터를

말한다.

파라메터 예를 들면 "이름 파라메터1 파라메터2"라고 명령을 내렸다면,

%1=파라메터1, %2=파라메터2 를 말하고,

%-1 은 파라메터1 파라메터2, %-2는 파라메터2.


예제 : #al 허마 { 허브 마셔}

허마 를 치면 "허브 마셔"라는 명령이 머드로 보내진다

#al 허마 { @container 마셔}

변수 @container 은 확장되어 그 값이 만일 "허브"라면 역시

허브 마셔가 된다

#al 공겨억 { 푸로 공격; 푸로 헬파이어}

공겨억이라고 치면 푸로 공격, 푸로 헬파이어 두개의 명령이

보내진다

#al 알리만들기 { #al %1 { %1 %%1}}

(** 조금 복잡한 면이.. 예를 들어 설명함 **)

알리아스를 만들도록 하는 알리아스 예제이다

만일 "알리만들기 회복" 이라고 쳤다면, #al 회복 { 회복 %1} 이

입력된어,

회복이란 알리아스가 하나 생기게 된다.

 

** ALL

#all 명령


모든 창으로 명령을 보낸다


예제 : #all quit

열려진 모든 창으로 quit 명령을 내린다.

(끝 일 경우 모든창 접속을 중단하게된다)

 

** BACKUP

#ba 관련 : #PATH, #RETRACE

현재 기록되는 경로에서 마지막 방향을 취소(삭제,원위치)

 

** BEEP

#beep [값] 관련 : #play


현재 설정된 beep 음을 연주한다. 값이 없다면 윈도즈의 이벤트 음을 낸다.

(기본값 0)


음악이 연주되는 중이라도 지머드는 멈추지 않는다.

한줄에 두개의 연주명령이 들어갔다면

한개만 연주된다. 두개를 다 연주시키려면 그 사이에 WAIT 명령으로

딜레이를 준다.


예제 : #beep 16

윈도즈 16번 이벤트 음을 연주

#beep; #wait 500; #beep

0.5초 딜레이를 주어서 두번 소리를 낸다

 

** BUTTON

#bu 숫자


버튼번호 1-16중 지정 번호를 실행한다. 보통 매크로키에 연결된다.

숫자에는 변수도 가능하지만, 평가는 안되므로 계산식은 불가하다

예제 : #bu 1

마우스로 클릭한 것처럼 첫번째 버튼을 작동시킨다

 

** C+

#c+ [이름] 관련 : #C-


캡춰를 시작하여 지정 윈도로 보낸다.

이름이 없을경우 에디터윈도로 보내진다.

그런 이름의 윈도가 없을땐 새로 만들어지며,

설정에서 Capture Commands 가 켜져 있다면

명령입력줄에서 입력된 명령도 캡춰된다.

(** 이야기나 새롬에서의 갈무리 같은 기능 **)

예제 : #c+ temp

머드에서 오는 글자들을 temp 라는 윈도로 모두 캡춰시작한다.

 

** C-

#c- 관련 : #C+


C+ 과 반대로 캡춰를 중지한다

 

** CAPTURE

#cap [숫자] [이름] 관련 : 에디터 윈도


지정이름의 윈도로 지정숫자만큼의 줄이 캡춰되어 복사된다.

숫자가 빠지면 마지막 1라인이 복사되고,

이름이 빠지면 에디터윈도로 가게 된다

숫자가 -1 이면 모든 라인이 복사된다.


예제 : #cap

마지막 줄을 에디터 윈도로

#trigger {라고 말합니다.} {#cap tell; #gag}

말하는 글을 tell 이란 윈도로 복사하고,

현재 윈도에서는 gag 시킨다.

 

** CASE

#ca 번호 명령1 [..명령n]


실행될 명령 리스트중에서 선택할 수 있게 한다.

번호가 명령의 숫자보다 클 경우 다시 앞으로 돌아온다.

예를 들어 명령의 수가 4개이고 번호가 5번이라면 1번째 명령이 리턴된다.

(1-2-3-4-1-2..)

그러므로 %random 변수를 이용하면 랜덤명령을 선택할 수 있다.


만일 번호가 - 음수이면, 아무 명령도 선택되지 않는다.


예제 : #case 2 {first command} {second command} {third command}

"second command" 가 머드로 보내진다

#case @joincmd {join} {rescue}

@joincmd 가 1(또는 3,5,7,.. 모두 같음)이라면 "join" 이 선택

되며, 다른 경우는

"rescue"가 리턴된다.

#case %random {Hello} {Hi there} {Hiya} {Hi}

주어진 네가지중 랜덤으로 머드로 보내진다

 

** CHARACTER

#ch 관련 : #HOST, #PW


Character Database에 적힌 캐릭터 이름을 리턴한다.

 

** CLOSE

#cl 화일번호 관련 : #FILE


주어진 화일 번호의 화일을 닫는다.

번호는 이전에 FILE명령으로 열린 번호여야 한다.


예제 : #cl 1

1 번 화일을 닫음

 

** CLR

#clr


화면을 지운다.

백 스크롤 버퍼는 영향을 받지 않는다.

백스크롤버퍼까지 모두 지우려면 메뉴에서 Empty 명령을 써야한다.

 

** COLOR

#co 속성 [패턴] 관련 : #HIGHLIGHT


패턴 부분이 없다면 머드에서 마지막 받은 줄의 색을 변경한다.

색깔 속성은 숫자속성(DOS의 텍스트 모드 속성값과 호환)은 물론,

콤마(,)로 구분된 밑에

있는 글자들도 가능하다.


만일 패턴이 있다면 그에 맞게 트리거가 한개 생성된다


색상값 :

black 0

blue 1

green 2

cyan 3

red 4

magenta 5

brown 6

grey 7


yellow 14

white 15


bright 8

bold 128


밝은 색상을 만드려면 8을 더한다. 예를 들어 9 (1+8) 은 밝은 파랑이다.

배경색으로 만드려면 16을 곱한다. 예를 들어 64 (4*16) 은 빨간 배경색

전경색을 굵은체(bold)로 하려면 128을 더한다


고로, 파란배경색에 굵은 흰색 글자는

128(굵은체) + { 1(파랑) * 16(배경색) } + { 15(흰색) } = 159


예제 : #co red

마지막 줄을 빨간색으로

#co bold,red

마지막줄을 굵은 빨간색으로

#co 159

마지막줄을 파란배경에 굵은 파란색으로

#co red {~(그룹~) ~[}

#ac {~(그룹~) ~[} {#cw red} 와 같은 의미이다


위의 패턴이 빨간색으로 나오도록 트리거 추가

 

** CONNECT

#con 관련 : #DISCONNECT


접속종료(disconnect)후에 다시 접속한다(reconnect).

File-Reconnect 메뉴와 같은 작용

 

** CR

#cr


빈줄을 머드로 보낸다 (엔터표시기호)

 

** CW

#cw 색깔 관련 : #COLOR


트리거에서 이용되어 지정색깔로 변화시킨다.


예제 : #trigger {푸로} {#cw red}

'푸로' 라는 글자는 모두 빨간색으로 바뀜

 

** DEFAULT

#de [특수문자스트링] 관련 : #NODEF


현재 특수문자 셋팅을 기본값으로 바꿈

스크립트 내에서 기본 특수문자를 쓴 경우 맨 처음에 이 명령이 유용하다.

#NODEF 명령을 끝에 쓰면 이전 특수문자 셋팅으로 환원된다


스트링은 9개 특수문자를 {}으로 싼다.


순서는 다음과 같다


1. 명령문자 (#)

2. 분리문자 (;)

3. 변수문자 (@)

4. 히스토리 (!)

5. 파라메터 (%)

6. 이동문자 (.)

7. 윈도촛점 (:)

8. 파싱금지 (~)

9. 빈공백 (끝임을 표시함)


예제 : #def

기본값으로 복원

#def {xx$xxxxx }

기본값으로 하되 3번째 변수문자는 $ 로 한다

 

** DISCONNECT

#di 관련 : #CONNECT


현재 세션을 중단시킨다. (진심인지 확인을 하지 않으므로 주의한다.)


예제 : #trigger {당신은 피를 흘리고 있습니다} {#di}

별로 좋은 예제는 아니다.

피를 흘릴 정도 큰 상처(PK 나 기타 전투중)입을 메시지를 보면

접속을 끊는 예제


** ECHO

#ec 문자열 관련 : #say


문자열을 현재 탑 윈도로 출력한다.

SAY 명령이랑 유사하나, SAY명령은 명령이 유래된

윈도로 출력하는 차이가 있다.

다시 말해, 이 명령을 트리거에서 이용한다면,

SAY 는 트리거 반응문이 발생한 윈도로

출력하지만, ECHO는 현재 보는 윈도로 출력한다.


예제 :

#trigger {(*)님이 죽었습니다} {#ECHO {%window 창으로 출력됩니다.}}

위의 반응문이 나왔을때 echo 다음에 나오는 문장

(%window 는 현재창 이름)이 현재 창에 출력된다.

%window 변수를 확장하기 위해서 {}로 둘러싼다.

 

** ERASE

#ERA 화일번호 관련 : #FILE


지정번호의 화일을 삭제한다.


예제 : #FILE 1 old.log

#ERA 1

old.log 라는 화일을 1번으로 연결한 후, 그 화일을 삭제한다

(FILE명령은 지머드 디렉토리 내의 화일만 가능하며,

EXE,HLP,MUD 화일은 불가)

 

** EXEC

#exec 명령


지정명령(도스명령)을 수행한다. 변수가 포함되어 있으면 확장된다.

이 명령은 매우 강력하다.


만일 이 트리거를 이용한다면,

다른 플레이어에게 당신을 조종하려는 사람을 허용하게된다.


예제 : #trigger {^저그님이 당신에게 '(*)' 라고 속삭입니다} {#exec %1}

저그라는 사람이 당신에게 무언가를 말하면 그대로 실행하게 된다.

이때 맨 앞에 ^ 기호는 매우 중요하다.

"오로라님이 당신에게 '저그님이 당신에게 '자살' 이라고 속삭입니다'라

고 속삭입니다" 와 같은 글이 트리거 작동하는것을 방지한다.

 

** FILE

#file 숫자 화일이름 관련 : #READ, #WRITE


지정화일을 읽거나 쓰기용으로 연다.

10개까지 화일을 열 수 있으며, 1-5번은 텍스트화일

이며, 순차로 읽기나 추가를 할 수 있고, 6-10은 기록화일(record file)

로, 랜덤읽기,쓰기가 가능하다.

만일 지정화일이 이미 열려 있으면, 이전 열린 번호는 닫히게 된다.

화일이름은 ZMUD.EXE가 있는 디렉토리의 화일만이 가능하며,

이중에서 EXE,HLP,MUD 화일은 불가능하다.

이는 어느 중요한 화일을 건드는 것을 방지하기 위함이다.

예제 : #file 1 test.txt

test.txt 화일을 1번에 연결

 

** FORALL

#fo 리스트 명령


리스트에는 '|'로 구분된 항목들이 나뉘어 있다.

이 명령은 명령부분에 있는 %i 가 리스트의 항목들이

모두 각각 다 대체되어 실행된다


예제 : list="검|반지|방패"

#fo @list { %i 수리}

검 수리, 반지 수리, 방패 수리 <-- 세가지 명령 나감

 

** FREEZE

#fr [값]


출력윈도 를 반으로 가른다 그 위의 반은 백스크롤 버퍼를 출력함.

이 상태에서 머드로의 입력도 계속 받으며, 트리거도 계속 작동한다.

[값]이 있을때, 0이면 화면이 다시 닫히며, 그 외의 값일땐 나뉘어진다.

[값]이 빠져 있을때는 두가지 상태가 토글된다.

Ctrl-Z 키를 누르거나 Window-Freeze 메뉴선택이나,

마우스로 윈도 오른쪽 맨 아래의

'-' 버튼을 클릭하는 것과 같은 작동을 한다.

 

** GAG

#ga [패턴]


패턴이 없다면 마지막 들어온 줄을 삭제한다.

패턴이 있다면 이에 해당하는 트리거를 생성한다.

이 경우 #act {패턴} {#gag} 와 같은 뜻이 된다


예제 : #ga

마지막 줄을 없앤다.

#ga 숲속여행

'숲속여행' 이라는 단어가 포함된 줄을 안보이게 한다.

 

** H+

#h+ 관련 : #H-


다음 명령을 명령 히스토리에서 불러낸다.

이 명령은 #H- 로 이전 명령을 불러낸 후에야 사용 가능하다.

일반적으로 down 화살표에 이 명령이 연결되어 있다.


예제 : test1

test2

#h-

#h+

#h- 명령으로 test1 이 호출되며, #h+ 는 다시 test2 명령을 부른다.

 

** H-

(** #H+ 명령 참조 생략 **)

 


** HELP

#he [명령]


뒤에 아무것도 없다면 help 표를 보여주고, 어떤 명령을 뒤에 쓰면

그 명령의 도움말을 출력한다.


예제 : #help alias

알리아스 명령에 대한 도움말 출력

 

** HILIGHT

#hi [패턴] 관련 : #COLOR


패턴이 없으면 마지막 줄을 굵게 표시한다.

패턴이 있으면 트리거를 하나 생성한다. (#act 패턴 {#HIGHLIGHT})

 

** HISTORY

#his


출력 윈도로 20개의 지난 명령 출력한다.


예제 : #hi

지난 명령 20개 출력

!!

바로 전 명령 다시 수행

!3

명령 저장 버퍼에서 세번째 지난 명령 수행

!k

지난 명령 중에 k 로 시작하는 명령 수행

!k

지난명령중에 k 로 시작하는 명령을 복구(명령라인에 출력)하여, 다시 수정가능하게

 

** HOST

#ho 관련 : #CHAR, #PW


머드 호수트 이름을 보냄

 

** IF

#if 표현식 참명령 [거짓명령]


조건실행을 수행한다.

표현식이 참이면 참명령을, 거짓이면 거짓명령을 수행한다.

(거짓명령은 없을수도 있다)

표현식에는 변수나, 연산자가 포함이 가능하다


예제 : #if @autogive {푸로 @gold 원 줘}

@autogive(자동주기on/off변수)가 0이 아니면(참이면),

@gold 만큼의 돈을

착한 푸로에게 주는 명령을 보낸다.(^^~)

#if (@gold<100000) { 나는 거지당 잡담} { 나는 부자당 잡담}

@gold 가 10000보다 작고 큼에 따라 두가지 잡담을 머드로 보낸다.

#if (@line=~"당신은 (%d)원의 돈을 받았습니다") { 오우 예에 %1 원 받았다 잡담}

@line 의 내용이 "당신은 (%d)원의 돈을 받았습니다" 내에 포함(=~, ~=)되어

있다면 다음 명령 실행한다.

%d에서 받은 액수를 뒤의 실행문에서 %1로 이용하는 점을 주의깊게 보자


표현 : 단순히 크다 작다는 비교뿐 아니라 관계연산까지 가능하다.

각 표현식을 정의해본다

(v1 과 v2 는 변수나 그 외 다른 표현식이 가능하다)

(** 아주 기본적이라 생각되는 부분은 설명 제외해씀 **)


v1 + v2

v1 - v2

v1 * v2

v1 / v2

v1 v2 v1/v2 의 나머지값

v1 & v2 논리적 AND 값

v1 and v2 (위와 동일)

v1 | v2 논리적 OR 값

v1 or v2 (위와 동일)

v1 xor v2 논리적 XOR 값

v1 = v2

v1 > v2

v1 < v2

v1 >= v2

v1 <= v2

v1 <> v2 서로 다를때

v1 != v2 (위와 동일)

v1 =~ v2 v1 이 v2 안에 포함

(** 한글에서는 '='가 안되고 이표현으로 가능한것 같다 **)

v1 ~= v2 (위와 동일)

-v1 v1의 음수값

!v1 논리적 NOT 값 (참<->거짓)


o 표현식에 =~ 이 쓰였을때는 위의 예제와 같이 파라메터(%1...)을 쓸

수 있다.


o 각종 상수값 : true, yes, on = 1

false, no, off = 0

 

** IGNORE

#ig 관련 : #T+, #T-


모든 트리거 액션을 켜고 끈다.

 

** INPUT

#in 문자열


문자열 부분을 현재 명령행 버퍼에 넣고, 현재 명령입력 라인에 출력한다.


예제 : #in get @item

@item 을 확장하고 그 명령을 명령버퍼에 출력한다.

(** @item 이 'sword' 라면 위 명령을 치면 명령입력 라인데 "get sword" 라고 나옴 **)

 

** KEY

#key 키이름 명령


매크로 키를 정의한다.

키이름은 완전한 이름을 적어야 한다.

예를 들어 F1, CTRL-A, ALT-F2 등등

<키이름>=명령 의 형식으로 해도 된다


예제 : #key F1 풀 먹

F1 키에 "풀 먹" 할당

<ALT-D>={ 허브 마셔}

ALT-D 키에 할당

 

** KILLALL

#killall


모든 매크로키, 알리아스, 변수, 트리거, 탭컴플리션단어들 삭제

 

** LMAP

#lm 경로 명령 관련 : #LOOP


speedwalk 경로대로 가면서 각 방마다 지정 명령을 수행한다.

변수 %i 는 각 방의 번호를 표시한다


예제 : #lm '3sn' {#show %roomname(%i)}

3 동, 북 으로 움직이면서 각각 단계 마다 방의 이름을 표시한다

 

** LOAD

#loa 화일이름 관련 : #SAVE


지정 셋팅화일을 로드 한다. (주의!! 현재 설정화일이 자동 저장되지 않는다)

화일이름 안의 변수는 모두 확장된다


예제 : #loa dc

dc.mud 셋팅화일이 로드 된다 (.MUD가 기본 셋팅화일 확장자)

<F1>={#LOAD combat}; ={#LOAD normal}

F1 키를 누르면 combat.mud 화일이 로딩 되며, F2 키를 누르면 normal.mud 화일이

로드 된다

 

** LOG

#lo [화일이름]


지정화일 이름으로 로그 화일을 생성한다.

그 화일이 이미 존재한다면, 그 화일에 추가하게 되고, 없다면 새로 만든다

화일이름을 안주면, 로그 할지 안할지가 토글된다.

 

** LOOP

#loo 범위 명령


주어진 명령은 범위에 따라 몇회 반복한다.

범위는 최소값과 최대값으로 이루어진다.

최소값이 없다면, 1로 취급된다. (이 경우 결국 최대값 만큼 반복하는게 된다)

현재 반복값은 %i 변수로 저장되므로, 이 변수를 명령부분에서 이용할 수 있다.


예제 : #loo 3 북

북 3

#loo 1,4 { %i.검 가져}

1.검 가져, 2.검 가져, 3.검 가져, 4.검 가져

#loo @num { 풀 먹}

@num 횟수 만큼 "풀 먹"

 

** MARK

#ma 관련 : #PATH


경로의 시작위치임을 지정한다. 현재까지 저장된 경로는 지워진다.

 

** MATH

#mat 변수 표현식 관련 : #ADD


주어진 표현식의 값을 변수에 계산해 넣는다.

표현식에는 숫자, 논리적값, 함수 등이 가능하다.

표현식 내의 모든 변수는 확장된다.


예제 : #mat test (1+3)*4

변수 test 에 16을 계산해 넣는다.

#math test2 @test-4

@test 가 16이라면 @test2에 12가 들어간다

#ali add {#MATH value %1+%2}

add 라는 알리아스를 하나 생성한다.

add 3 4 라고 명령을 내리면 @value 에 7이 들어간다

 

** MEDIA

#me 기능 관련 : #PLAY


멀티미디어 장치로 명령을 보낸다.

보통 PLAY 명령으로 연주를 시작한 후에 사용한다.

기능 부분의 모든 변수는 확장되며, 가능한 기능은 다음과 같다.


back close eject nect pause play prev

resume rewind step stop


예제 : #media next

CD 를 연주중이라면, 다음 트랙으로 이동한다.

 

** MEMORY

#mem


남은 윈도즈 메모리를 보여준다. 디버깅할 목적으로 이용된다.


예제 : #mem

16575234 bytes available

 

** MENU

#men 명령


메뉴 명령을 실행한다.

각 메뉴명령은 메뉴에 있는 보여지는 그대로이다.

서브메뉴경우, '|'로 구분하여 나열하면 된다.

곧 Exit 같은 경우 File|Exit .

이 명령으로는 입력기능은 불가능하다.

단지 사용자가 마우스로 클릭하는 동작만 실행


예제 : #men {File|Exit}

#men {Actions|Make Button}

 

** MESSAGE

#mes 문자열


지정된 문자열을 보여주는 작은 메시지 박스를 띄워 보여준다.

그 윈도는 빨간색 외곽선으로 된 작은 윈도이다.

맨 오른쪽에는 닫기 위한 버튼이 한개 달려 있고, 가만 놔두면

10초후에 자동으로 닫힌다.


예제 : #mess 숲속여행 나갔다!! 꺄아~~~~

위의 메시지를 표시하는 경고 윈도를 한개 보여준다

 

** NAME

#na 이름


현재 창의 이름을 바꾼다.

(** 밑에 보이는 탭, 윈도 타이틀에 써지는 이름 **)

기본값은 머드 캐릭터 이름이다.

이 명령으로 바꾼 이름은 캐릭터와 함께 저장된다.

 

** NODEF

#NODEF 관련 : #DEFAULT


#DEF 명령에 의해 수정된 특수문자셋을 원상복구 시킨다.

보통 스크립트의 맨 끝에 이용된다.

 

** NOOP

#no


이 뒤에 나오는 모든 명령을 무시한다. (주석문 처리, 디버깅시 이용)

 

** OK

#ok 관련 : #SLOW, #STOP


현재 진행중인 슬로우워크 방향을 확인한다.

보통 매크로에서 바로 전의 이동이 성공했슴을 알리는데 사용된다


예제 : #trigger {^~[출구} {#OK}

위의 패턴이 나오면 이동을 확인하고,

슬로우워킹을 계속하게 한다.

 

** PATH

#pa [경로이름] 관련 : #MARK, #RETRACE, #MAP


경로이름이 빠지면, 현재까지 기록된 경로가 표시된다.

경로이름이 주어지면 현재까지 기록된 경로가 지정한 이름으로 저장된다.

이동문자 (.)이 자동으로 변수이름에 붙는다.


예제 : #pa

현재 경로 보여줌

#pa magic

현재 경로를 변수 .magic 에 저장

 

** PICK

#pi 값1 [값2 [값3 ...]]


각 줄별로 값1, 값2, 값3 ... 이 표시되는 선택박스를 띄운다.

(최대 99개)

사용자는 한개나 그 이상의 줄을 선택하여 리턴 할 수 있다.

선택된 명령들은 구분문자(;)로 분리되어 모두 실행된다.

만일 키를 눌렀다면 아무일도 하지 않는다.


PICK 명령은 두개의 특수한 아규먼트를 인식한다.

p:문자열 다이얼로그의 타이틀(프롬프트)

o:숫자 최대 동시 지정 가능 갯수

또한 각 값들의 맨 앞에 * 가 들어가면 기본값을 의미한다.


각 항목마다 캡션을 주고 싶다면 { 캡션:명령 }의 형식을 이용한다.


예제 : #pi { 모두 가져} { 모두.동전 가져} { 모두 버려}

세개의 리스트 선택박스가 뜨고, 선택한 것은 모두 실행된다.

#pi {p:할 일을 선택하세요: } {o:1} { @mob 공격} { @mob 헬파이어} { *@mob 비교}

역시 세개의 박스가 뜬다. 맨 위에는 "할 일을 선택하세요" 라는 프롬프트가 있다.

o:1 이란 옵션이 있으므로 한개만 선택이 가능하며, 기본값은 맨 끝의 @mob 비교

이므로 그냥 엔터만 친다면 맨 마지막 것이 실행된다.

#pi {p:할 일을 선택하세요:} {o:1} {일반공격:@mob 공} {마법공격:@mob 헬파이어}

{탐색먼저:@mob 비교}

위와 같은 예제이다.

각 명령들 앞에 캡션만 붙여놓았다.

 

** PLAY

#pl 화일이름 관련 : #MEDIA


지정 멀티미디어 화일을 실행한다.

화일확장자에 따라 화일 타입이 결정된다. (WAV, MID, AVI)

화일이름에 드라이브(D:)가 있다면 CDROM 에 들어있는 일반 음악씨디로

인식한다.


참고로 지정한 미디어가 연주되는 중이라도 지머드는 계속 동작한다.


예제 : #pl start.wav

start.wav 화일을 연주

#pl D:

D드라이브의 CD를 연주

sound=ouch.wav

#trigger { 당신이 맞았습니다.} {#pl @sound}

맞을때마다 ouch.wav 를 연주한다. (일종의 효과음)

 

** PROMPT

#pr 알리아스이름


지정된 알리아스나 변수의 값을 묻는 팝업박스를 한개 띄운다.


예제 : #pr tank

변수 @tank 를 입력받는 박스를 하나 띄운다.

변수의 현재값이 기본값으로 나타난다.

 

** PW

#pw 관련 : #CHAR


현 캐릭터의 패스워드를 머드로 보낸다.

이 패스워드는 출력 창으로 나오지 않는다.

 

** READ

#rea 화일이름

#rea n [rec]


화일을 열고, 줄단위로 한줄씩 읽으면서 실행한다.

스크립트 명령을 화일로 저장했다가 실행할때 이 명령을 쓴다.

보통 화일을 읽기 전에 KILLALL 명령으로 메모리를 청소한 후에 실행한다.


두번째 형식은 FILE 명령으로 열린 n 번호의 화일을 읽는다.

번호 n 이 1-5이면 뒤의 rec 는 읽을 줄번호를 얘기하며,

rec가 0이거나 없으면

순서대로 다음 줄을 읽는다.

만일 n 이 6-10이면, 구조체 화일이므로, rec가 가리키는 기록을 읽는다.


예제 : #rea mud.txt

mud.txt 화일을 줄단위로 읽어서 직접 입력한 것처럼 실행한다.

#file 1 mudlist.txt

#rea 1 10

mudlist.txt 화일의 10번째 줄을 읽는다.

 

** RECORD

#rec [알리아스이름]


알리아스의 기록시작/중지 를 토글한다.

처음 #record 명령을 치면, 그 후로 입력되는 모든 명령을 알리아스로

기록하기 시작한다.

기록과정 중에 #record 명령을 다시 쳐서 현재 과정을 모니터 할 수 있다.

끝내고 저장할때는 "#record 알리아스이름" 을 친다

저장을 취소하려면 "#record off" 라고 친다


예제 : #rec

기록 시작

북 열

#rec

현재 기록된 알리아스 내용을 출력한다. 즉 "북; 서; 북 열"

#rec temple

현재까지 기록된 내용을 temple 란 이름의 알리아스로

저장하고 기록을 끝낸다

 

** RESET

#res n 관련 : #FILE


n 번째 화일을 처음 시작 상태로 리셋한다.

이전에 미리 FILE명령으로 열린 화일이어야 한다.

 

** RETRACE

#re [경로명] 관련 : #PATH


지정 경로를 거꾸로 실행한다.

기하학적인 공간에 있는 이상, 지금까지 온 길을 거꾸로 되추적 할 수

있게 한다.

경로명이 빠져 이쓰면, 현재 기록된 경로를 이용한다.


예제 : #re magic

만일 .magic 의 내용이 .2s2wn 이라면 이 명령으로 .s2e2n 이

실행된다

 

** SAVE

#sav [화일이름] 관련 : #LOAD


현재의 셋팅 화일을 저장한다. 저장화일이름을 따로 지정하면 그 화일

로만 저장된다.

현재 캐릭터에 셋팅화일로 설정 이름은 변하지 않는다.

 

** SAY

#say 문자열


SH 명령과 동일하다.

지정된 문장을 화면에 출력한다. (머드로 보내지는 않는다)


예제 : #sa 현재 가진돈은 @gold 입니다.

 

** SCROLL

#sc 패턴 [줄수]


백스크롤 버퍼에서 지정된 패턴과 같은 줄을 보여준다.

줄수 가 없다면 모든 줄을 보여준다.


예제 : #sc Zugg

Zugg 란 글자??? 포함한 줄을 모두 보여준다

#sc Zugg

Zugg 란 글자가 포함된 마지막 4줄을 보여준다.

 

** SEND

#se 화일이름 [머릿말] [꼬릿말]


화일 내용을 머릿말과 꼬릿말이 있을경우는 각 줄마다 처리를 해서

머드로 보낸다.


예제 : #se notes.txt {tell zugg}

 

** SESSION

#ses [캐릭이름|호스트이름 포트]


지정한 캐릭이름이나, 지정호스트로 새로 접속을 연다.

파라메터가 하나이면 그것은 이름으로 인식되어 현재 캐릭터

데이타베이스에서 검색하여 실행된다.

두개의 파라메터라면 앞부분은 호스트 이름이나 IP 주소,

뒷부분은 포트번호로 인식된다.


예제 : #ses 마대

데이타베이스에서 ID 가 마대 인 정보대로 새로운 세션을 연다.

#ses heliport.snu.ac.kr 4001

 

** SHOW

#sh 문자열


문자열을 화면에 출력한다. SAY 명령과 비슷하나,

트리거에 의한 반응 동작일 경우,

그 트리거가 발생한 창으로 출력되고, 평가과정도 거친다.

 

** SLOW

#sl 경로명 관련 : #STEP, #STOP, #OK


슬로우워킹모드로 지정 경로를 실행

이 모드에서는 한 방향씩 머드로 보내진다.

매번 다음 방향이 보내지기 전 확인과정을

거친다. #OK 로 확인을 하며, #STOP 로 중단을 한다.

만일 중단?을 경우 #STEP 로 재개시킬 수 있다.

 

** STATUS

#st 문자열


현 출력창의 상태라인을 정의한다.

변수를 포함할 수 있으며, 각 변수는 확장되어 표시된다.

이 상태라인은 각 변수값이 변할때마다 갱신된다.

 

예제 : #st {지금 가진 돈 : @gold 물통 : @tank}

@gold 에 1234, @tank에 Zugg 란 내용이 들어있다면 다음과 같이 나타난다.

"지금 가진 돈 : 1234 물통 : Zugg"

 

** STEP

#ste 관련 : #SLOW, #STOP, #OK


이전에 중단된 슬로우워킹을 재개한다.

 

** STOP

#sto 관련 : #SLOW, #STEP, #OK


현재 슬로우워킹을 중단시킨다. 보통 트리거에서 이용된다.


예제 : #trigger {오우거가 있습니다.} {#STOP; 오우거 헬파이어}

몹(오우거)가 있는 메시지를 보면 슬로우 워킹을 중단하고

공격을 시작한다.

죽인 후에 #STEP 명령으로 다시 재개 할 수 있다.

 

** STW

#stw 문자열 관련 : #STATUS


상태창을 정의한다.

상태창은 상태라인과 비슷하나, 한줄이 아닌 여러줄이 가능하며,

%ansi 를 이용한 색깔 표현이 가능하다.

상태창은 위치와 크기를 마음대로 조절할 수 있으며,

조정된 상태는 기억된다.

%CR 함수를 이용하여 새로운 줄을 추가할 수 있으며

%ANSI 함수를 이용 색깔을 표현할수 있다.

상태창에서 마우스의 오른버튼을 클릭하면 역시 정의할 수 있다.


예제 : #stw { HP: @hp %cr EXP : @exp %cr %ansi(red) Tank : @tank}

세줄을 정의한다.

 

** SUBSTITUTE

#su 문자열


마지막 나온 줄을 다른 말로 바꾸어 출력한다. (** 트리거에서 이용 **)

화면 메시지를 간결하게 하는데 유용하다.


예제 : #trigger {(*)님이 '(*)' 라고 말합니다.} {#sub {%1 : %2}}

 

** T+

#t+ 클래스이름


지정 클래스(그룹)의 트리거를 모두 켠다.

 

** T-

#t- 클래스이름


지정 클래스(그룹)의 트리거를 모두 끈다.

 

** T?

#t? 관련 : #TIMER, #TS


타이머에서 남은 시간을 알려준다.

 

** TAB

#ta 단어


탭컴플리션에 지정 단어를 추가한다.

 

** TIMER

#ti 관련 : #T?, #TS


타이머를 토글한다.

현재 타이머에 남은 시간은 변하지 않는다.

 

** TRIGGER

#tr 패턴 명령 [클래스명]


지머드의 강력한 기능중 하나이다.

머드에서 받은 어느 패턴에 반응하여 지정 명령을 수행하게 한다.


첫번째 파라메터는 맞춰볼 문장이다.

공백이 들어있다면, {}으로 양쪽을 싼다.

이 패턴에는 특수문자나 와일드카드를 넣을수 있다.


두번째 파라메터는 실행할 명령이다.

보통 명령은 한개 이상의 단어일 경우가 많으므로

역시 {}으로 양쪽을 싼다.


세번째 파라메터는 없어도 되는것이며,

트리거를 그룹으로 구분하는 클래스명이다.

이 클래스 단위로 동시에 켜고 끌 수 있다.


더 자세한 옵션은 트리거 다이얼로그에서 조절한다.

(여기서 개별로 켜고 끌 수도 있다)

(** 이하 겹치는 설명이 많으므로 생략 **)

 

** TS

#ts [값] 관련 : #TIMER, #T?


타이머의 시간을 셋팅한다.

지정시간의 5초 전에 "TICK IN 5 SECONDS."란 말이 나온다.

값이 빠져 있다면 원래의 시간으로 리셋한다.


이 타이머는 보통 머드에서 틱용으로 사용한다.

시작은 #TS 값 을 입력한다. (값은 틱간 소요 초단위)

실제 틱이 왔을때 #TS 만 입력하여 정확히 틱을 맞춘다.

실제 이용은 TICK IN 5 SECONDS. 라고 나오는 말에 트리거를 만들어

사용한다.

 

** TYPE

#ty 화일번호 [패턴] 관련 : #FILE


패턴이 없으면 지정번호의 화일의 모든 내용이 출력된다.

패턴이 존재하면.. 화일 내용중 지정 패턴을 포함한 줄만 출력된다.

 

** TZ

#tz 관련 : #TS


타이머의 남은 시간을 0 로 바꾼다.

틱 시간 재조정을 위해 쓰인다. (틱간 시간 간격은 못바꾼다)

 

** UNALIAS

#una 알리아스 관련 : #ALIAS


지정한 알리아스를 삭제한다.

(되돌릴 수 없으니 주의한다.)

 

** UNGAG

#ung 관련 : #GAG


현재 gag 되는 것을 막는다. 보통 바로 이전 gag 액션을 실행취소한다.


예제 : #trigger {숲속여행} {#gag}

#trigger {당신에게 말했습니다.} {#ungag}

첫 줄에서 숲속여행 이란 글이 들어간 줄을 모두 gag 한다.

그러나 두번째 줄에서 당신에게 말했습니다. 라는 문장이 나온

줄을 ungag 함으로,

숲속여행님이 당신에게 말했습니다 라는 줄은 보이게 된다.

 

** UNKEY

#unk key 관련 : #KEY


매크로 키정의를 삭제한다.

다시 복구는 안되므로 주의를 요한다.


예제 : #unk

F1 키에 정의된 매크로 내융을 제거한다.

 

** UNTIL

#un 표현식 명령


표현식이 참값일때 지정명령을 수행한다.


예제 : #var a 10

#un (a=0) {#show @a; #add a-1}

변수 a 를 이용하여 10부터 1까지 카운트를 한다.

변수 a 의 값이 0 일때 루프는 중지한다.

 

** UNTRIGGER

#UNT 패턴 관련 : #TRIGGER


정의된 트리거를 삭제한다.

복구가 안되므로 주의한다.

 

** UNVAR

#unv 변수 관련 : #VAR


변수정의 삭제

 

** URL

#url url주소


지정된 URL 주소를 웹브라우져로로 자동으로 접속한다.

.HTM 화일이 셋업되어 있고, Open_URL DDE 호출을 지원하는 웹브라우저

가 필요하다.

(Windows 95에서 Netscape와, Internet Explorer 로 테스트 되었다)


예제 : #URL http://www.zuggsoft.com/~~zugg/zmud.html

지머드 홈페이지를 각각의 웹브라우져로 접속한다.

~~ 는 파싱을 거치면 ~ 한개로 된다.

 

** VARIABLE

#va 변수이름 값


ALIAS 명령이랑 비슷하다.

변수에 값을 넣는다.

변수문자 (@) 는 넣지 않는다.

따라서 개인별로 변수문자를 무엇으로 셋팅했냐에 관계

없이 정의할 수 있다.


또 다른 표현으로 "변수 = 값" 이나 "변수 := 값" 등이 가능하다


예제 : #va coins 1000

@coins 에 1000을 입력

coins = 1000

위와 같음

 

** VERBATIM

#verb [값]


파싱모드를 토글한다.

값이 정의되 있으면, 그대로 파싱모드를 세팅한다.

0이 아닌 값이 있을때 파싱이 켜진다.


예제 : #verb

Settiongs-Parse 메뉴 며령을 한 것과 같은 작용

 

** VERSION

#ve


현재 zMud 버젼과 날짜를 보여준다.

 

** WAIT

#wa [시간]


일정시간 딜레이를 준다.

이 명령을 이용하여 다음 명령이 실행되는걸 조금 늦출 수 있다.


시간이 정의되 어 있다면, 늦출 시간을 지정할 수 있다.

단위는 밀리세컨드(1000 = 1초) 이다.


이 딜레이 도중에 다른 명령도 실행된다.

WAIT 명령이 실행중에 다른 WAIT 명령이 다시 입력되면 첫번것은 취소된다.


예제 : 서; #wa; 시민 공격

#wa 명령이 없다면, 일부 머드에서는 실제로 서쪽으로 움직이기

전에 시민 공격

이 먹기도 한다. 이런 경우를 방지한다.

#wa 2000; 시민 공격

2초 후에 시민 공격을 보낸다.

 

** WHILE

#wh 표현식 명령


표현식이 참값일동안 명령을 수행


예제 : #var a 10

#wh (a<>0) {#show @a; #add a-1}

10-1까지 카운트를 한다. @a 가 0이되면 루프가 멈춘다.

 

** WINDOW

#win 이름 [문자열]


다른 윈도에 텍스트를 보여준다.

해당 윈도가 없는 경우 새로 생성된다.

어느 윈도가 첨 만들어질때는 윈도이름.ZSC 나 윈도이름.MUD가 자동

로드 된다.

(ZSC 는 텍스트 스크립트 화일, MUD는 바이너리 셋팅화일)

뒤의 문자열이 정의되어 있으면 그 윈도에 보여준다


예제 : #win tell

'tell' 이란 이름의 윈도를 생성한다.

자동으로 tell.zsc 나 tell.mud 이 있다면 로딩된다.

#forall @eqlist {#win status %i}

status 라는 윈도가 없다면 생성한 후에, @eqlist 내용을 표시한다.

 

** WIZLIST

#wi


zMUD의 권한을 보여준다

 

** WRAP

#wr [칼럼수]


자동 word wrap 모드를 토글한다.

칼럼이 정의되어 있으면 지정 칼럼만큼 wrapping 한다.

(** word wraping : 한 줄이 일정칼럼을 넘어서면 다음줄로 연결하여

표시할지 않고 잘라 내는 모드 **)

 

** WRITE

#wr n value [rec] 관련 : #READ


n 번 화일에 값을 쓴다.

n의 값이 1-5 이면 텍스트 화일이고, 해당 내용은 rec 값에 무관하게

맨 뒤로 추가된다.

만일 6-10일때는 주어진 rec (레코드)에 따라 써진다.

rec 가 0 이거나 빠져 있다면 value 는 그 화일에 맨 뒤에 추가된다.


예제 : #wr 1 {마대에 접속됨}

1번 텍스트 화일에 위의 문자열을 추가한다

#wr 6 {이것은 3번 레코드이닷} 3

6번 화일 세번째 레코드에 위의 내용 추가

 

** YESNO

#ye 질문 참명령 거짓명령


질문 내용이 써진 다이얼로그 박스를 띄운다.

Yes 버튼을 클릭하면 참명령이 실행되고 No 버튼은 거짓명령이 실행된다.

만일 가 눌러지면 아무것도 실행되지 않는다.


각 명령부분에 캡션을 넣을수 있다.

(캡션 - 버튼에 YES, NO 대신 다른말을 넣음)

버튼 갯수는 더 추가할 수 있다.

명령중 앞에 * 표가 붙은 값이 기본값이 된다.


예제 : #yesno "숲속을 구조해줄까요?" { 숲속 구조}

Yes/No 다이얼로그가 뜨며, Yes 를 클릭할때만 구조를 한다.

#yesno "어디로 모실까요?" {약초가게:.hub} {점집:.temple}

{*Microsoft:#URL http://www.microsoft.com}

세개의 버튼이 나온다.

각 버튼에는 약초가게, 점집, Microsoft 라는 캡션이 있다.

 

 

 

************************************************************************

** 아래의 내용은 프로그래밍 부분에 관한 조금 심화된 내용이다. **

** 파워유저라면 이해해보자 **

************************************************************************

 

*************************************************************************

[고급] zMUD 프로그래밍 언어

*************************************************************************

 

[개요]


zMUD에는 세가지 모드가 있다

1. Vervatim 모드 (직역모드)

2. Parse 모드 (분석/해석모드)

3. Script 모드

4. Trigger pattern 모드


모드1 과 2 는 명령입력라인에서 사용이 가능하다.

모드3은 스크립트중이거나 명령실행중에만 가능하다


이야기창에서 입력된 줄은 파싱세팅이 켜있을때는 모드2로, 꺼져 있을때는

모드1로 해석된다

(파싱모드는 화면 오른쪽 아래 귀퉁이의 컴퓨터모양 아이콘으로 조절)

#read 명령으로 실행한 스크립트나, 트리거, 알리아스가 실행될때는 모드3으로

실행된다


모드1에서는 모든 입력문장이 아무런 변형 없이 그대로 보내진다.

이것을 Vervatim 모드라 한다


모드2에서는 입력문은 명령구분문자(기본값은 ;)로 각각 분리되어 해석되어진다.

단, 각 명령은 "", '', [], <>, {} 등으로 둘러싸인 명령구분문자(;)는 갈라지지

않는다.


예를 들면,


#say {a;b} <-- 이것은 한개의 명령이고,

#say a;b <-- 이것은 두개의 명령이다.


모드3은 모드2와 한가지 차이점을 제외하곤 흡사하다.

모드3에서는 모든 변수값은 머드로 보내지기 전에 확장해석된다.

(덧붙임 : 예를들어 변수 kk 의 값이 "점수"일때

트리거내부(모드3)에서 @kk 는 "점수"로 나가지만

입력라인(모드2)에서 @kk 를 치면 글자 그대로 나감<-확장 안됨)


모드4는 트리거의 패턴(반응문)에서 쓰여진다.

이 형식은 보통의 zMUD명령들과는 조금 틀린데,

변수표시문자(@)만이 확장해석되어진다


총체적으로 설명하면,

모드1은 제작자나, 코드입력자에게 꼭 필요한 모드이다.

(코드등 입력이 zMUD와 충돌 없이 입력한 그대로 보내지므로)

모드2와 3은 일반 사용자가 쓰는 모드이며,

(모드3에서 @를 해석하지 않는게 모드2)

모드2가 필요한 예를 들면


zugg@zuggsoft.com 으로 메일 보내주세요 잡담

(위와 같이 입력했을때 @zuggsoft 가 변수명으로 인식되어 확장이 된다면

안될것이다.)

(참고로 마대에서는 @문자 자체가 찍히지 않는다. 그래서 안보이는것)


#alias 마시자 {@container 마셔} <-- container = 허브티

(알리아스를 정의하기 위해서 입력라인에서 위와같이 쳤을때 @container 이

해석되어 버리면

#alias 마시자 {허브 마셔}로 입력된다 변수자체로 입력이 안되고.

모드2에서는 위의글 그대로

변수자체 그대로 정의가 가능)

 


[변수의 확장해석]


zMUD 프로그래밍에서 expansion(확장) 과 evaluation(평가) 는 내용상 중요한

차이가 있다.


Expantion은 입력이 해석(parsing) 되어지고, 함수(%함수이름) 과

변수(@변수이름)은

내부적 참조로 2차해석까지 행해진다.

(C 언어를 해본 사람은 pointer 랑 비슷한 개념, 특정부분에선 더 해석범위가 넓음)


단, @나 % 글자가 따옴표("", '')로 둘러쌓였을때는 무시된다.


보통경우, % 와 @ 바로 뒤에는 변수이름이나 함수이름이 따라온다.

(사이에 공백이나 그 외 다른문자가 없어야함)

이때, @{이름} 또는 %{이름} 은 확장해석되어진다.

예를 들어 변수 test 가 abc라는 문자열일경우 (test="abc")


@{test}def

위의 명령은 확장되어 @abcdef (변수 abcdef)로 대체된다.


(다음 더 복잡한 예제가 한개 있는데 이해가 안됨 흑. 간단히만 말함)

@a 가 abc, @b 가 "123 @a", @c가 "@a @b"일때

@c 의 1차 확장 결과 -> "abc 123 @a"

@c 의 2차 확장 결과 -> "abc 123 abc" : 최종결과 (반복확장됨)

 

변수 Evaluation의 경우에, 확장(expansion)이 수행되고 난 후

수학적 표현(+-*/<>= 등)이 숫자,문자열,참거짓 등으로 계산되어진다(평가).


#if 명령문에서 예를 들면,


#if (표현식) {참일때 명령} {거짓일때 명령}


변수나 함수가 위의 표현식에 쓰일 경우, 그 문장은 먼저 저 위에 설명한

확장(expanded)이 된 후,또 다시 evaluate 된다.

예를 들면 @a 가 "1+1"이고, 표현식이 (@a*10) 이라면,

먼저 @a 가 1+1로 확장되고, 수학적 표현으로서 evaluate된어서

결과적으로 2가 되어, 결국 최종적으로 (2*10) -> 20으로 된다.


zMUD로 최적의 프로그래밍을 하기 위해선, 해당 문장이 단순히 확장(expansion)만

되는지, 평가(evaluate)까지 되는지 꼭 이해해야한다.

@a 가 100이고, @b가 20이라면, 확장된 @a/@b 는 100/20이고,

평가된 @a/@b는 5가 된다.

만일 평가상태에서 확장의 결과와 같은 결과가 나오게 하려 한다면,

%concat(@a,"/",@b) 와 같이 해야한다.

(정리: 평가=확장+수학적계산)


어떤 명령에서의 파라메터가 확장만 되는지, 평가가 되는지를 알려면

command(명령) 도움말과, function(함수) 도움말 (command or function Wizards)

를 살펴보아야한다.

각 명령/함수 설명에서 보면 각 파라메터들이 표현되는

이름들(string, number, expression 등)이 있는데,

Expression, FileNumber 평가(evaluated)

String, Color 완전확장(full expansion)

Name, Filename, WindowName, TriggerClass 1차 확장(first class expansion,반복확장안됨)

 

이런 기본 규칙을 무시하고 강제적으로 제어할 수도 있다.


양옆을 "" 로 쌓면 모든 확장,평가를 막는다.(비해석모드 Varbatim 모드처럼)

양옆을 <> 로 쌓면 확장동작을 하게 한다.(변수확장)

양옆을 [] 로 쌓면 평가동작을 하게 한다.(수학계산이 되도록)


위의 모든 경우가 처리되고 난 후 구분자들("",<>,[])는 벗겨진다.

단, 모드2(parse mode)에서는 "" 는 명령줄 전체를 쌓지 않는 이상 없어지지

않는다.

(모드3 script mode에서는 사라짐)


예를들어, @a 가 100, @b 가 5 라면


"정답은 @a/@b" <-- 모드2,3 : 정답은 @a/@b


정답은 "@a/@b" <-- 모드2 : 정답은 "@a/@b"

모드3 : 정답은 @a/@b


정답은 <@a/@b> <-- 모드2,3 : 정답은 100/5 (강제 확장 작동)


정답은 [@a/@b] <-- 모드2,3 : 정답은 20 (강제 평가 작동)

 

"[" 문자를 벗기지 말고 유지하려면 앞에 물결표시를 쓴다 즉,


정답은 ~[@a/@b] <-- 모드2 : 정답은 [@a/@b]

모드3 : 정답은 [100/5]


중괄호 {} 는 parsing(해석)에 전혀 관계가 없다.

단지 한뭉퉁이로 처리하라고 묶는 기호이다.


외 따옴표 ''는 쌍따옴표 ""와 같은기능을 한다.

단 외따옴표는 벗거지지 않는 차이가 있다.

General 버튼에서 Strip ' quoto 옵션에서 이를 조절할 수 있다.

 

 

[Variables(변수) 와 Functions(함수)]


#var 명령은 세개의 파라메터를 가진다.

첫번째는 변수의 이름이며 Name 타입이다.

두번째는 변수의 값이며 역시 Name 타입이다.

세번째는 기본값을 말하고 Name 타입이며, 옵션이므로 안써도 상관없다.


#var b @a : @a=100 일 경우 @a 가 확장되어, 결과로 b 에 100이 들어간다.


#var @x @a : @x=y 일때 @x가 확장되어 y 로 되어서, 결과로 y에 100이 들어간다.


#var c @a/@b : @a=100, @b=5 일때, c <- 100/5 (문자열)


#var c [@a/@b]: c <- 20


#var c "@a/@b": c <- @a/@b


#var c <@a/@b>: c <- 100/5 (아무것도 안썼을 경우와 동일. 강제 확장만. Name타입이기 때문)


위와 같이 강제로 시키는 번거로움을 피하기 위해서 #math 와 #function 이 있다.

#math 는 #var에서 []를 넣은것과 같으며(강체 평가),

#func 는 #var에서 ""를 넣은것과 같다(강제 verbatim)


#math c @a/@b : c <- 20

#func c @a/@b : c <- @a/@b


이를 이해하면 매우 강력한 동작이 가능하다. 예를 들면

#status hp: @hp 라고하여서 hp 값을 계속 보이도록 정의 해 놓았을 경우,

@a=100, @b=5 라면,


#var hp @a/@b

위와 같이 하면 status line에는 "hp: 100/5"가 보일것이다. 그런데 여기서

@b=10 으로 바꾸었다면, 이런 변화에도 hp 값은 변화가 없다.

100/5라는 문자열이기 때문이다.


#func hp @a/@b (또는 #var hp "@a/@b")

위와 같이 정의를 한다면. @b의 값에따라 @hp 의 값도 변하게 된다.


#math hp @a/@b (또는 #var hp [@a/@b])

위와 같이 정의를 했다면 hp 값은 20으로, @b의 값이 바뀌더라도 바뀌지 않는다.


강제 동작을 시킬때는 그 구분자들([],<>,"")는 벗겨지게 됨을 명심하자.

즉,


#var hp "@a/@b" : hp <-- @a/@b


#func hp @a/@b : 위와 동일, 강제구분자를 넣을 필요가 없다.


#func hp "@a/@b" : hp 에는 "@a/@b" 가 들어간다.

이 경우 @hp 를 확장하면 @a/@b가 되어

status line 에는 hp: @a/@b 와 같이 나타나게 된다.

(초과됨)

이는 #var hp ""@a/@b"" 와 같다.


#var a one two : a 에는 one 만 들어간다 (two 는 들어가지 않는다)


#var a {one two} : a 에는 one two 가 들어간다 ({}가 한개의 파라메터로 인식시킨다.)


#func a one two : a 에는 one two 가 들어간다

(func 는 무조건 2개의 파라메터만 인식한다.

one two 가 한개로 인식)


#func a {one two} : func 에서는 그룹을 만들기 위해 "",'',<>,[]를 쓰지

않도록 한다.

 

 


[함수(Function) 호출]


파라메터로 사용하는 변수들 (%1, %2, 등)을 function(함수) 이라고 부른다.

(#function 명령과는 다른 뜻이다. 혼동하지 말것.

단, #function 명령으로 zMUD function을 만들 수는 있다)


#var로 만든 함수와 #func로 만든 함수를 비교해보자. @a=100이라고 가정하면,


#var test {@a %1 %2}


위에서 #var 은 변수들을 확장시키므로 곧 #var test {100 %1 %2}와 같은 결과를

낳는다.

곧, test(1,2) 는 100 1 2 의 결과를 낳는다.

만일 @a의 값이 바뀌더라도 결과는 바뀌지 않는다.

펑션이 정의될때 이미 @a는 확장이 이미 되었기 때문이다.

그러나 #function 을 이용한다면,


#func test @a %1 %2 : @a 의 값이 바뀌면 따라서 결과값도 바뀐다.


사용자정의함수들에서는 각각의 파라메터는 함수로 보내지기 전에 확장이 된다.

다시 말해, @temp 가 50 이라면, test(@temp,2) 는 100 50 2 의 결과가 된다.

기존함수들에서는 파라메터의 확장이나 평가여부는 그 파라메터의 형(type)에

따른다.

각 파라메터의 형은 Function Wizard(함수도움말)에 잘 설명되어 있다.


String, color - 완전 확장 (Fully ezpanded)

Name, FileName, WindowName, TriggerClass - 1 차 확장 (반복확장 안함)

Expression, FileNumber, Range - 평가 (Evaluated)


%min, %max 등의 일부 함수는 Pre Expanded 라는 형의 파라메터 리스트를 사용한다.

이것은 모든 파라메터 리스트를 1차 확장 시킨 후에, 그 결과를 새로운 리스트로

사용한다.

다시 설명하면,


#var a 1,2,3

#var b 4,5,6


일때,


%max(@a,@b) -> 6 %min(@a,@b) -> %min(1,2,3,4,5,6) -> 1


의 결과가 나온다. 이런 작용을 막으려면 중첩 소괄호를 사용한다. 즉,


%min((@a),(@b)) -(확장)-> %min((1,2,3),(4,5,6)) -(결과)-> 1,2,3

 

 


[알리아스(Aliases)]


o 파라메터 1 : 알리아스 이름 , Name 형(확장)

o 파라메터 2 : 명령 리스트 , Literal(확장안됨)


두번째 파라메터가 확장이 안된다는것에 주의하자.


#alias dr {@container 마셔}


여기서 container가 확장되어 치환되는게 아니라는 것을 뜻한다.

dr <- @container 마셔

강제로 확장을 시키기 위해서는 (@container 가 허브티라면)


#alias dr {<@container> 마셔}


위와같이 하며, 곧 dr은 허브 마셔 로 정의된다