매뉴얼:소개

From Mudlet
Revision as of 01:10, 17 February 2024 by WikiSysop (talk | contribs) (Updating translation from gettext import)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Other languages:
Deutsch • ‎English • ‎Nederlands • ‎Türkçe • ‎français • ‎italiano • ‎polski • ‎suomi • ‎Ελληνικά • ‎русский • ‎العربية • ‎한국어

자동화와 MUD 규칙

게임에서 할 수 있는 모든 것을 수행하는 인공 지능(AI)을 생성할 수 있습니다. 게다가, 작업의 복잡성에 따라 AI는 일상적인 작업에서 당신보다 뛰어날 수도 있습니다. 스크립팅이 강력하기 때문에, 어떤 사람들은 불공정하거나 심지어 부정한 것으로 여길 수 있는 경쟁 우위를 제공할 수 있습니다. 경우에 따라 게임 내에서 인플레이션, 게임 메카닉의 균형 손실 또는 궁극적으로 게임 경제의 완전한 충돌과 같은 훨씬 더 심각한 결과를 초래할 수도 있습니다. 이와 다른 이유들로 인해 일부 게임의 운영자와 소유자들은 자동화 도구의 사용을 금지하거나 제한합니다.

Mudlet에 스크립팅 지원을 포함시킴으로써, 우리는 실제로 AI 툴킷을 생성하고 활용할 수 있는 능력을 제공합니다. 그러나, 당신의 게임에서 금지된 경우에는 자동화의 사용을 지지하거나 장려하지 않습니다! 부정 행위를 통해 동료 플레이어와 자신 모두에게 게임 플레이의 질을 저하시킬 수 있다는 것을 염두에 두세요.

Mudlet의 자동화 기능

Mudlet은 게임 플레이를 자동화하거나 기타 방법으로 향상시키기 위한 다양한 표준 기능을 제공합니다. 이에는 다음이 포함됩니다.

줄임말
사용자가 정의한 텍스트 입력을 MUD로 보내기 전에 다른 입력으로 변환합니다.
예를 들어 gg를 입력하여 get gold from ground;put gold in bag가 게임으로 전송되도록 할 수 있습니다.
핫키라고도 알려져 있으며, 특정 키 조합을 동시에 눌러 사용자가 정의한 명령을 실행할 수 있습니다.
예를 들어 CTRL+H를 눌러 "say Hello Miyuki!"를 MUD로 보내거나 La Marseillaise를 재생할 수 있습니다.
트리거
MUD에서 특정 출력을 받으면 사용자가 정의한 명령을 실행합니다.
예를 들어 MUD가 "You see Elyssa standing here."라는 메시지를 보내면 Mudlet은 자동으로 "poke Elyssa"를 MUD로 보냅니다.
타이머
명령어의 실행을 지연하거나 지정된 시간 이후에 실행합니다.
예를 들어, 가untlet을 던져 Eric에게 3초를 기다린 후에 Let us end this here!라고 외칩니다.
Variables
사용자가 스크립트 내에서 텍스트나 숫자를 쉽게 사용하기 위해 저장할 수 있게 해줍니다.
Events
사용자가 Mudlet이 MUD에 연결되었을 때 또는 복잡한 시스템 제작에 사용할 사용자 정의 이벤트와 같은 특정 이벤트에 대한 트리거를 만들 수 있게 해줍니다.

Mudlet에서 프로그래밍을 시작하려면, 이 동영상 강좌를 시청하세요. 이 동영상은 기본 사항을 설명해주어 기초를 익히는 데 도움이 될 것입니다.

Mudlet의 기능에 대한 소개를 계속 읽어보세요:


줄임말

줄임말은 게임 플레이를 자동화하는 가장 기본적인 방법입니다 - 줄임말을 사용하여 입력해야 하는 양을 줄일 수 있습니다. 자세한 정보는 여기를 참조하세요: Manual:Alias Engine


예제 - Brew’o'Matic 6000

당신은 웨스터샌드의 사악한 화염 용의 에픽 던전을 돌아다니며 뿌리를 모아 물약을 양조하여 베네딕트 농부의 대머리에 머리카락이 다시 자라도록 해야 합니다. 뿌리를 발견하면 다음과 같이 해야 합니다:

도구 가방을 엽니다
저주의 낫을 도구 가방에서 가져옵니다
머리카락 자람의 뿌리를 자릅니다
<wait 5 seconds>
치명적인 뿌리 산성으로 저주의 낫을 깨끗하게 합니다
저주의 낫을 도구 가방에 넣습니다
도구 가방을 닫습니다
마법의 보관 가방을 엽니다
뿌리를 가져옵니다
뿌리를 마법의 보관 가방에 넣습니다
마법의 보관 가방을 닫습니다

그리고 끝나면 똑같은 일을 또 아홉 번… 하루에 세 번씩 해주세요!

또는 단일 명령으로 모든 작업을 수행하는 별칭을 만들 수도 있습니다. 예를 들어, "퀘스트"라는 별칭을 만들면 됩니다. 이를 위해 계속 읽어보세요! 마지막에 가져야 할 내용에 대한 간략한 미리보기입니다:

Quest alias.png


별칭 만들기

먼저, Mudlet에서 줄임말 버튼을 클릭한 다음 추가 버튼을 클릭하세요. 이렇게 하면 비어있는 별칭이 생성됩니다.

별칭 이름 필드는 선택 사항입니다 - 주로 별칭 목록에서 왼쪽에 표시되어 모든 별칭을 구별하는 간단한 방법으로 사용됩니다. 일단 별칭을 "테스트"라고 이름을 지정할 수 있습니다. 패턴 필드에는 새 별칭을 실행할 명령을 설명하는 정규식 패턴을 입력합니다. 새 별칭을 만들어서 "sh"를 입력할 때마다 "say hello" 명령을 보내도록 하려면 정규식 패턴은 ^sh. 그런 다음 대체 필드에 say hello를 입력합니다. "테스트"라는 새 별칭을 저장하고 활성화한 후에는 "sh"를 입력할 때마다 Mudlet이 "sh" 대신에 "say hello"를 보내게 됩니다. 이런 대체 과정을 별칭 확장(alias expansion)이라고 합니다.

Mudlet은 Perl 정규식 별칭을 사용합니다. 정규식은 단어 패턴을 일치시키는 특별한 방법입니다. 초보자에게는 단어 자체와 그 위치를 지정하는 일반적인 방법으로 생각하면 됩니다. 기본 별칭에 대해서는 줄(line)의 시작을 나타내는 ^ 기호와 줄의 끝을 나타내는 $ 기호만 알면 됩니다. "tw"라는 별칭을 만들어서 "take weapon" 명령을 보내려면 일반적으로 위치나 패턴 일치에 대해 신경쓰지 않아도 됩니다. "정규식"이라는 필드에는 ^tw.라고 입력하고 "대체"라는 필드에 take weapon이라고 입력하면 됩니다. 그런 다음 상단 중앙에 있는 "저장" 아이콘을 클릭하여 새 별칭을 저장해야 합니다. 저장되지 않은 항목의 기호가 사라지고 작은 파란색 확인란이 나타납니다. 이 확인란이 선택되어 있으면 별칭이 활성화됩니다. 파란색 확인란이 비어 있으면 별칭이 비활성화되며 "활성화" 토글 자물쇠 아이콘을 누르지 않는 한 작동하지 않습니다. 이제 준비가 되었습니다. 명령어 입력창에 "tw"를 입력하고 엔터 키를 누르세요. Mudlet은 "take weapon"을 MUD에 보냅니다. 별칭은 기본적으로 조금의 입력을 절약해주는 기능입니다(버튼과 마찬가지로 매뉴얼의 다음 섹션에서 자세히 설명됩니다). 더 고급 별칭 사용법은 매뉴얼에서 나중에 설명됩니다.


타겟팅 줄임말 만들기

자신의 타겟을 기억하는 줄임말을 만들려면 - 스킬 사용을 쉽게하고 타겟을 매번 입력하는 번거로움을 덜어줍니다. 다음을 수행하세요:

패턴 필드에 다음을 입력하세요:

^t (.+)$

그렇게 하면 t <any words> 형식으로 입력하는 모든 명령어와 일치합니다. t rat, t tsol'aa, t human 등과 일치할 것입니다.

다음으로, 큰 상자가 이렇게 작동하도록 만드세요:

target = matches[2]
cecho("<light_slate_blue>My target is now: <red>"..target.."\n")
Basic targetting.png

선택적 대상을 가진 별칭을 만들 수도 있습니다:

^dd(?: (.+))?$

이제 대상이 제공된 경우 matches[2]가 될 것입니다. 대상이 제공되었는지 여부를 다음 코드로 확인할 수 있습니다:

send("cast spell at "..(matches[2] or target))


이것으로 끝났습니다 - 이 별칭을 사용할 때마다 대상은 target 변수에 저장됩니다.

다음으로, 이 변수를 활용하고 싶을 것입니다 - 그래서 실제로 공격을 수행할 다른 별칭을 만들어 보겠습니다! 다음은 예시입니다:

패턴:

^atk$

Code:

send("kick "..target)

This alias will kick the target when you type in atk. Feel free to adjust the "trigger" word and the command as you need them.

Basic attack alias.png


Variables

Variables are containers for data. In Lua, they can store numbers or words. You can use variables to store important information like how much gold do you have, or have them remember things for you.

The syntax for making a variable remember a number is the following - create them in the Script editor in a new script:

variable = 1234

Or to make it remember some text:

my_name = "Bob"

It'll then appear in the Variables view, like so:

Variables view.png
Note: The variables view doesn't autoupdate, but it can be refreshed by clicking the Variables button.

You can also do basic maths easily, for example:

To concatenate strings together, you can use the .. expression:

my_full_name = "Bob" .. " the Builder"

Don't forget to use a space when you're concatenating two variables together:

firstname = "Apple"
lastname = "Red"

-- bad: will produce "AppleRed"
full_name = firstname .. lastname

-- good: will produce "Apple Red"
full_name = firstname .. " " .. lastname

You can also edit and delete variables from the variables view. Be careful when changing or deleting existing variables made by third-party scripts - you might break them. If that happens, re-opening the profiles will restore the variables back to working order.

While you can create variables in the Variables view, remember that they won't be saved when Mudlet shuts down - if you'd like them to be more permanent, create scripts with the variables instead.


Sending Commands to the MUD

To send a command to the MUD, you can use the send() function. Data inside the quotes is sent to the MUD.

예를 들어, 다음 코드는 빵을 먹는 명령어를 보냅니다:

send("빵 먹기")

만약 send 명령어에 변수를 포함하고 싶다면, 따옴표 밖에 변수를 두 개의 점으로 앞뒤로 감싸야 합니다. 예를 들어, 다음과 같이 작성하세요:

send("내 이름은 " .. full_name .. "입니다. 당신은 어떻게 되시나요?")

만약 명령어가 변수로 끝난다면, 따옴표 뒤에 두 점은 필요하지 않습니다.

send("안녕, 내 이름은 " .. character)

만약 큰 따옴표를 포함하고 싶다면, 다음과 같이 대괄호를 두 번 사용하세요:

send([[말하기 "안녕, 난 여기 처음이야!"]])

변수를 삽입할 때에는 ]]와 [[를 적절하게 사용해야 합니다:

send([[poke ]]..victim)

To send many directions, use speedwalk():

speedwalk("n;e;s;w;")

To send many actions, use sendAll():

sendAll("attack", "cast magic missile")

화면에 텍스트 표시하기

자신에게 텍스트를 표시하려면 echo() 또는 insertText() 함수를 사용할 수 있습니다. 예를 들어, 다음 코드는 "저녁식사 시간입니다!"라는 메시지를 화면에 표시합니다:

echo("저녁식사 시간입니다!")

만약 에코에 변수를 포함시키고 싶다면, 변수의 값과 텍스트를 연결(concatenate)합니다:

my_gold = 5
echo("나는 " .. my_gold .. "개의 금을 가지고 있어!\n")

만약 텍스트에 새 줄을 포함시키고 싶다면, \n을 삽입하세요:

echo("이 에코\n는\n세 줄에 있어요!")

-- 나오는 위치:
이 에코
는
세 줄에 있어요!


코드에서 오류 보기

코딩할 때 틀릴 수밖에 없어요! 인간은 실수를 하니까요. 일반적으로 두 가지 종류의 오류가 있어요: 입력한 단어들이 Lua에게 전혀 의미가 없는 경우와 의미는 있지만 실제로 생각하고 의도한 대로 동작하지 않거나 다른 상황에서 동작하지 않는 경우입니다.


구문 오류 aka Ladybugs

Lua에게 의미가 없는 것을 입력하면 구문 오류(또는 오류)라고 합니다. Mudlet은 이를 인식하고 작은 레이디버그를 보여주며 어느 줄에서 오류가 발생했는지도 알려줍니다. 예를 들면 이렇습니다:

Syntax error.png

3번 줄에 있는 echo() 함수는 닫는 괄호가 빠져 있습니다 - Lua에서 초록색이 아닌 모든 괄호는 닫혀야 합니다. Mudlet은 문제가 있는 줄에 레이디버그 기호를 보여주었고, ( 괄호가 3번 줄에서 닫혀야 한다는 것도 보여줬습니다. 이를 고치기 위해 ')를 추가하고 저장하면 모두 해결됩니다.


런타임 오류 aka 오류 보기

다른 종류의 실수는 입력한 내용이 Lua에서는 의미를 가지지만, 코드를 실행할 때 문제가 발생하는 경우입니다. 예를 들어, Lua에 eecho("hey!")라고 요청했습니다 - 이것은 유효하고 올바르게 입력한 것이지만, 한 가지 문제가 있습니다 - eecho가 존재하지 않습니다. 따라서 별다른 일이 일어나지 않습니다. 왜냐하면 eecho가 없기 때문입니다.

Mudlet는 (실행 오류)가 발생하는 모든 문제를 오류 보기에 표시합니다. 기본적으로 숨겨져 있으며, 왼쪽 하단에 보이는 오류 버튼을 눌러서 열 수 있습니다. 여기에 오류가 기록되므로, 주 창이 아닌 곳에 기록되므로 코드에서 자주 실수하는 경우에 스팸 메시지가 표시되지 않습니다.

열면 다음과 같이 표시됩니다:

Runtime error.png

표시된 메시지를 분석해 보겠습니다. object:<Some random alias>은 문제가 발생한 Mudlet 이름이 Some random alias인 것을 의미합니다. functionAlias, Trigger, Script 또는 다른 것을 알려줍니다. 이를 통해 문제가 있는 항목을 찾을 수 있습니다.

다음 빨간 줄은 실제 오류입니다. 여기서는 라인 2 (실제로는 라인 1)에서 eechonil 값이라고 나와 있습니다. Lua에서 nil은 존재하지 않음을 의미합니다. 따라서 여기서는 eecho가 실제로 존재하지 않는다는 것을 알려주고 있습니다! 이를 echo로 변경한 후 다시 실행하면 행복해질 것입니다.

지금은 여기까지입니다. 이 페이지는 시간이 지남에 따라 오류를 빠르게 진단할 수 있는 일반적인 기술 등으로 개선될 것입니다. 이와 관련된 내용을 알고 있다면 언제든지 추가해 주세요!


트리거

트리거는 모든 MUD 클라이언트에서 제공하는 자동화 기능입니다. 트리거를 사용하면 특정 상황에 더 빠르게 대응할 수 있으며, 일반적으로 많은 수작업을 줄여주어 편리함을 제공합니다. 이를 통해 게임의 중요한 측면에 더 집중할 수 있으며, 스트레스를 줄일 수 있습니다.

트리거의 작동 방식은 간단합니다. 트리거 패턴이라고 하는 특정 텍스트를 정의하고, 이 텍스트가 MUD 출력에서 "보이면" 지정한 명령을 실행합니다.

간단한 예제: 토끼를 보면 (못된 녀석!) 공격하고 싶습니다.

  1. 당신은 "1"이라는 데이터 필드에 "bunny"라고 입력하여 이 트리거가 동작하는 텍스트 목록에 이 단어를 추가합니다. 옆의 드롭다운 메뉴가 "substring"로 설정되어 있는지 확인하세요.
  2. 이제 "Command"라고 불리는 필드에 "kill bunny"라고 입력합니다. 이것은 트리거가 동작할 때마다 게임에 보낼 명령입니다.
  3. 마지막으로 "Save Item"을 클릭하여 새로운 트리거를 저장하고 "Activate"를 클릭하세요. 이렇게 하면 왼쪽에 있는 트리거 트리에서 트리거 이름 앞에 있는 파란색 체크박스 아이콘이 선택됩니다. 트리거가 활성화됩니다.
Trigger intro.png

트리거가 활성화되어 있으면 MUD 출력에 "토끼"라는 단어가 나타날 때마다 트리거가 자동으로 "토끼를 죽여라"라는 명령어를 실행합니다. 트리거가 활성 상태인 동안 이 작업을 반복합니다. 토끼 사냥을 멈추려면 토끼 트리거를 선택한 후 자물쇠 아이콘을 클릭하여 트리거를 비활성화할 수 있습니다. 체크 표시가 사라지고 트리거는 비활성화되어 다시 활성화할 때까지 동작하지 않습니다.

트리거를 그룹에 넣고 그룹 전체 또는 전체 트리거 브랜치를 잠글 수도 있습니다. 그렇게 하면 이 그룹이나 브랜치에 있는 모든 트리거가 잠금 상태가 됩니다. 잠금은 트리의 루트부터 끝까지 시작됩니다. 잠금이 있는 브랜치가 만나면 트리거 엔진은 잠긴 브랜치를 건너뜁니다. 플레이 중에 신경 써야 하는 가장 일반적인 작업 중 하나는 브랜치를 잠그거나 잠금을 해제하는 것입니다. 예를 들어 전투에 참여할 때 방어 트리거를 켜고, 그 후에 끄거나, 수확 트리거는 수확할 때만 켜는 등의 작업을 할 수 있습니다.

초보자는 처음에 Mudlet의 자동 강조 트리거를 사용하여 트리거가 작동한 텍스트를 강조 표시하여 다양한 트리거 및 패턴 유형에 익숙해질 수 있습니다. "강조 트리거" 옵션을 클릭하고 트리거를 강조 표시할 전경색과 배경색을 선택하세요. 트리거가 일치하면 해당 패턴이 자동으로 강조 표시됩니다. 이것은 현재 중요한 단어를 강조하는 데 가장 많이 사용되는 트리거 형식입니다. 스크립팅, 정규 표현식 등에 대해 알 필요가 없습니다. 강조 트리거를 사용하려면 강조 표시할 단어를 입력하고 적절한 색상을 선택하고 새로운 트리거를 저장하고 활성화하면 됩니다.


알 수 없는 단어 하나 찾기

스켈레톤이 무기, 금화 또는 그들과 함께 가지고 있을 수 있는 무엇이든 모으기 위해 트리거를 설정할 수도 있습니다. 아직 루팅이 정확히 무엇인지 모르기 때문에 트리거를 설정하여 해당 줄과 일치하는 루팅을 식별하고 드롭된 것을 가져와야 합니다.

받은 메시지 예시:

 스켈레톤이 반지를 드랍했습니다.
 스켈레톤이 금화를 드랍했습니다.
 스켈레톤이 시미터를 드랍했습니다.
 스켈레톤이 나무 열쇠를 드랍했습니다.

"스켈레톤이 드랍한 " (마지막 공백 문자 포함)은 줄의 일반적인 세그먼트입니다. 하지만 드랍된 전리품은 다양합니다. 따라서, 우리는 클라이언트에게 스켈레톤이 드랍한 것을 가져가도록 알려주어야 합니다. 이를 위해 정규식이라고 불리는 것을 설정합니다:

  1. "1"이라는 데이터 필드에 다음과 같은 perl regex 타입 패턴을 작성하세요:
    ^The skeleton drops (.+)\.$
  2. 이 줄의 드롭다운 메뉴도 "perl regex"로 변경하세요.
  3. 아래 큰 스크립트 상자에 다음 lua 코드를 작성하세요:
    send("take " .. matches[2])
Trigger intro 2.png

정규 표현식 (.+)은 클라이언트가 "The skeleton drops "(참고: 끝에 공백/공백 문자가 있는지 확인하세요)와 문장을 끝내는 마침표 기호 사이에 받은 모든 문자와 일치합니다. 변수 matches[2]는 검색 기준에 맞는 첫 번째 일치하는 텍스트를 출력으로 전달합니다. 이 예제에서는 우리가 자동으로 가져갈 드롭된 전리품입니다. 이 텍스트는 실제로 네 번째 예제와 같이 하나 이상의 단어를 포함할 수도 있습니다.

궁금하신 경우, matches[1]에는 일치한 텍스트가 발견된 전체 줄이 포함되고, matches[2]에는 첫 번째 캡처 그룹만 포함됩니다. 이에 대해서는 매뉴얼의 두 번째 섹션에서 더 자세히 설명합니다. 기호 ^와 $는 전체 줄의 시작과 끝을 나타냅니다.

여러 개의 알 수 없는 항목 일치

이제 우리는 해골에서만 전리품을 가져가는 것이 아니라 다양한 소스에서 가져오고 싶지 않습니다.

예시들은 다음과 같을 수 있습니다:

 해골은 반지를 드랍합니다.
 거인은 골드를 드랍합니다.
 왕은 시미터를 드랍합니다.
 상자는 나무 열쇠를 드랍합니다.

그러니 누구나의 전리품을 모을 수 있는 트리거를 만들어 봅시다:

  1. 데이터 필드 "1"에 다음을 작성하세요:
    ^(.+) drops (.+)\.$
  2. 다시 perl regex 타입 패턴을 선택하세요.
  3. 아래에 다음 lua 코드를 작성하세요:
    send("take " .. matches[3])
Trigger intro 3.png

이 경우에는 누군가가 무언가를 "드롭"할 때마다 클라이언트가 그것을 줍게 됩니다. 이번에는 matches[2] 대신에 matches[3]를 사용했는데, 이렇게 하면 두 번째 일치된 항목을 가져올 수 있습니다. 만약 matches[2]를 사용하면 해골의 시체를 주워들일 것입니다.

알려진 변형 일치

영어로 MUD를 플레이하고 있다면, 이러한 트리거들이 영어 문법 때문에 작동하지 않을 것입니다. 비교해 보세요:

 해골은 반지를 드랍합니다.
 해골은 반지를 드랍합니다.

아마도 뒤의 경우를 더 자주 볼 것입니다. 우리가 이전의 정규식을 사용한다면, 트리거는 다음과 같은 결과를 만들어 낼 것입니다.

 트리거가 작동된 라인: 해골은 반지를 드랍합니다.
 우리의 반응: 반지를 가져갑니다

하지만 대부분의 MUD는 사용자 입력에서 관사 (예: a, an, the)나 양화사 (예: five, some, each)와 같은 한정사를 처리할 수 없습니다. 결과적으로, 우리의 트리거 반응은 충분하지 않을 것입니다. 대신에 우리는 "take ring"으로 반응해야 합니다.

이와 같은 줄을 올바르게 처리하기 위해, 모든 가능한 관사에 맞는 여러 개의 트리거를 생성할 수도 있지만, 이는 매우 번거로울 수 있습니다. 대신에 모든 이러한 단어와 구를 걸러내는 하나의 정규식을 만듭니다:

  1. 새로운 perl regex 유형 패턴을 작성하세요:
    (.+) drops (a|an|the|some|a couple of|a few|) (.+)\.$
  2. 이 스크립트와 함께:
    send("take " .. matches[4])
Trigger intro 4.png

다시 한 번, 이번에는 matches[4]를 통해 세 번째 일치 그룹을 사용하고 있음에 유의하세요.

Note Note: 영어보다 풍부한 형태론을 가진 특정 다른 언어는 다른 접근 방식이 필요할 수 있습니다. 굳이 막힌 상황이라면, MUD 관리자가 트리거 사용을 금지하지 않는다면, 해당 월드의 포럼에서 질문해보세요.

자세한 정보는 정규 표현식 장을 참조하세요.

기본 정규식 문자

이미 알고 있는 (.+) 은 정규식에 따라 줄 끝이나 다른 특정 텍스트까지 이어지는 모든 문자와 일치합니다. 특정 유형의 문자와 일치하고 싶다면 어떻게 해야 할까요?


트리거에서 숫자 가져오기

트리거에서 와일드카드는 matches[] 테이블에 저장됩니다. 첫 번째 와일드카드는 matches[2]에 들어가고, 두 번째는 matches[3]에 들어가며, 이렇게 트리거에 있는 와일드카드의 개수에 따라 계속해서 들어갑니다.

예를 들어, 당신은 죽은 몬스터로부터 얼마나 많은 골드를 주웠는지 소리내어 말하고 싶습니다. 당신이 골드를 주웠을 때 받는 메시지는 다음과 같습니다:

 당신은 16 골드를 주웠습니다.

이 패턴과 일치하는 트리거를 만들 수 있습니다:

  1. Perl Regex:
    ^You pick up (\d+) gold\.$
  2. Script:
    echo("나는 " .. tonumber(matches[2]) .. " 골드를 얻었습니다!")

당신의 코드에서 matches[2] 변수에는 주워온 골드의 양이 포함될 것입니다 - 이 경우에는 16입니다. 이제 주워온 골드의 양을 소리내어 말하세요. 또한 (\d+)는 숫자만 인식하고 글자나 공백은 인식하지 않음에 주목하세요.


영숫자 문자 검색

Heiko에 의한 더 고급진 예시입니다. 이 예시는 당신이 요다처럼 말하게 만듭니다:

  1. Perl Regex:
    ^say (\w+) *(\w*) .*?(.*)
  2. Script:
    send( "say "..matches[4].." "..matches[2].." "..matches[3] )

이 트리거는 당신이 무언가를 말한다는 것을 인식하고, 첫 번째 단어, 두 번째 단어, 그리고 나머지 텍스트를 별도의 그룹으로 저장합니다. 여기서 \w 와일드카드는 숫자나 글자를 매칭하지만 비영숫자 문자는 매칭하지 않습니다. 그런 다음 나머지 텍스트를 먼저, 첫 번째 단어를 그 다음에, 마지막으로 두 번째 단어를 표시합니다. 이것은 당신 자신에게 표시되는 텍스트에만 영향을 미칠 것입니다. 다른 플레이어에게 보내는 텍스트도 조정하고 싶다면, 줄임말에 대한 장을 참조하세요.


단어 강조

MUD 출력물에서 무언가를 강조하려면, 트리거를 만들고 일치하는 트리거 패턴을 강조하는 "강조 트리거" 옵션을 사용하세요.

선택적으로, 스크립팅에서 bg()fg() 함수를 사용하여 강조할 수도 있습니다.


키 바인딩

키 바인딩(또는 핫키 또는 매크로라고도 함)은 많은 면에서 별로 다르지 않은 줄임말과 매우 유사합니다. 그러나 원하는 작업을 입력하고(추가 매개변수를 포함할 수도 있음) Enter를 누르는 대신, Mudlet이 작업을 수행하도록 하려면 단일 키(또는 키 조합)를 누르기만 하면 됩니다.

예시 - 당신은 차를 마시지 않고, 한 모금씩 마십니다! 게임 내 차 마시기 대회에 참가하고 있습니다. 우승자는 퀴즈 마스터가 튜브에 대한 애매한 언급을 하거나, 그가 특정 상대성 이론에 대해 이야기하기 시작할 경우 얼그레이를 한 모금 마신 첫 번째 사람이 됩니다. 경쟁 우위를 확보하기 위해 두 개의 키 바인딩을 정의할 것입니다:

핫키: F1 버튼을 누르면 실행되는 명령어: sip earl gray

핫키: F2 버튼을 누르면 실행되는 명령어: sip ceylon mint 이제 주의 깊게 듣거나, 정확히는 읽고, F1 또는 F2를 눌러 상금을 획득하세요.

키 바인딩의 또 다른 실용적인 용도는 MUD에서 자동 공격이 없는 호박 인형 군단을 제거하는 "타겟팅 시스템"을 생성하는 것입니다. 자세한 내용은 변수 장에서 확인하세요.

키패드를 바인딩하는 설정 세트에 대한 키 바인딩을 만드는 방법에 대한 예시 지침:

  1. Keys 버튼을 클릭하세요: File:Keys button.jpg
  2. 그룹으로 묶고 싶다면 그룹 추가 버튼을 클릭하세요
  3. 그룹 이름을 입력하세요. 예를 들어 키패드라고 이름을 지정합니다
  4. 그룹을 선택한 후 항목 추가 버튼을 클릭하세요
  5. 이름: 위젯에 북쪽과 같이 이름을 지정하세요
  6. 예를 들어 북쪽과 같이 하나의 명령어만 필요한 경우, 명령어: 위젯에 입력하세요. 그렇지 않은 경우, 단계 9로 건너뛰세요
  7. 새 키 가져오기 버튼을 클릭하세요
  8. 키 바인딩에 사용할 버튼 시퀀스를 클릭하세요. 예를 들어 북쪽은 키패드 8입니다
  9. 이제 키 바인딩을 클릭할 때 실행할 추가 코드가 필요한 경우 또는 더 복잡한 코드가 필요한 경우, 이를 거대한 코드 상자에 입력하세요.
  10. 완료한 경우 항목 저장 버튼을 클릭하거나, 아직 완료하지 않은 경우 새 항목 버튼을 클릭하세요
  11. 작업을 마치면 활성화 버튼을 클릭하여 작동 여부를 확인하세요.

다음은 포럼에서 결과 키바인딩 XML 파일에 대한 링크입니다: [1]



타이머

= 타이머 =라는 이름에서 알 수 있듯이, 특정 시간에 특정 명령을 실행하거나 일정한 시간마다 한 번씩 실행하는 데 사용할 수 있습니다. "타이머" 편집기를 클릭하거나 스크립트에서 직접 사용할 수 있습니다.

일정 기간 후에 무언가를 수행하는 간단한 타이머를 사용하려면 다음과 같이 작성하십시오:

tempTimer(초, [[코드]])

초는 타이머가 시작되기까지의 시간이어야 하며, 코드는 실행하려는 명령어입니다.

Note Note: Seconds can be a decimal, so 0.5 for half a second, or 1 for a full second will both work as expected.

다음은 직접 코드에 복사하여 넣을 수 있는 완성된 예시입니다:

-- 이 타이머는 생성된 후 정확히 2초 뒤에 인사합니다.
tempTimer(2, [[ echo("안녕하세요!\n") ]])

일반적인 명령어와 타이머 명령어를 혼합하여 별칭이나 키바인딩의 코드로 사용할 수 있습니다:

-- 이 코드는 즉시 북쪽으로 이동한 다음, 2초 후에 동쪽으로 이동합니다. 
send("n")
tempTimer(2, [[ send("e") ]])

Note Note: 동시에 생성된 모든 타이머는 서로에 상대적이지 않고 공통 시점에서 시작하여 계산됩니다. 따라서 다른 타이머가 1초 후에 작동하도록 하려면, 이렇게 하지 마세요:

-- 잘못된 예시:
tempTimer(1, [[ echo("안녕하세요!\n") ]])
tempTimer(1, [[ echo("어떻게 지내세요?\n") ]])

두 타이머는 동시에 작동합니다, 왜냐하면 둘 다 동시에 시작되었기 때문입니다! 대신, 이렇게 하세요:

-- 올바른 예시:
tempTimer(1, [[ echo("안녕하세요!\n") ]])
tempTimer(2, [[ echo("어떻게 지내세요?\n") ]])

Note Note: 만약 모든 타이머 코드를 [[ 괄호 ]] 안에 넣고 싶지 않다면, 같은 예시를 다른 방법으로 작성할 수 있습니다. (이 기능은 Mudlet 3.5부터 사용 가능합니다)

-- 이 타이머는 만들어진 후 정확히 2초 후에 인사할 것입니다.
tempTimer(2, function() echo("안녕하세요!\n") end)

기본적인 스크립트 가능한 Mudlet 타이머에 대한 내용은 여기까지입니다. 더 알고 싶으신가요? 여기 Mudlet의 타이머에 대한 자세한 설명이 있습니다.

버튼

Mudlet을 사용하여 화면에 간단한 버튼을 만들 수 있습니다. 거의 코딩할 필요가 없습니다 - 버튼 바를 화면의 위쪽, 왼쪽 또는 오른쪽에 붙일 수 있습니다. 이 위치 각각은 활성화되면 표시되거나 비활성화되면 숨겨질 수 있는 무한한 수의 버튼 바를 포함할 수 있습니다. 또한 드롭다운 메뉴나 이중 상태 버튼을 만들 수도 있습니다 - 클릭하면 눌린 상태로 유지되는 버튼입니다.

버튼을 시작하려면, 그룹을 만들어야 합니다 (버튼은 표시되기 위해 그룹에 속해야 함) 그리고 그 안에 버튼을 추가하세요. 보이게 하려면 활성화된 버튼 또는 그룹이 필요합니다. 다음은 예시입니다 - 새로운 그룹을 만들고 그 안에 버튼을 추가하고 둘 다 활성화하면 버튼이 생성됩니다:

Buttons Start.png

버튼은 표시되는 순서대로 표시됩니다 - 따라서 하나의 버튼이 다른 버튼 위에 표시되길 원한다면, 에디터에서 시각적으로 드래그하여 위치를 조정하세요!


메뉴

버튼의 중요한 사용 사례는 스크립트 구성이나 기타 옵션을 빠르게 설정하기 위해 여러 개의 체크박스 버튼이나 하위 메뉴를 포함하는 다양한 메뉴를 가지는 것입니다. 버튼 메뉴를 시작하려면, 툴바 그룹 안에 또 다른 그룹을 생성하고 개별 버튼을 그 안에 추가하세요. 다음과 같이 작성하세요:

Buttons Menu.png

버튼이 사용하는 Mudlet의 측면을 변경하려면, Dock area <side> 옵션을 변경하고 저장하세요. 또한 버튼을 위에서 아래로 또는 왼쪽에서 오른쪽으로 정렬할 수 있도록 Orientation <horizontal or vertical> 옵션을 사용할 수 있습니다.

Changing button group position.png


버튼에 기능 추가하기

버튼은 단순히 존재하는 것보다는 더 유용합니다. 버튼을 누르면 명령어를 실행하도록 할 수도 있습니다! 버튼이 명령어, 줄임말 또는 다른 것을 실행하도록 하려면 Command on Button Down 필드에 입력하세요. 버튼을 누르면 해당 명령어가 실행됩니다:

Button command.png

또한 버튼을 두 가지 작업을 수행하도록 만들 수도 있습니다. 이를 위해 Push Down Button 옵션을 활성화하고, 버튼이 릴리즈될 때 수행할 명령어를 Command on Button Up 필드에 입력하십시오.

Alternating button.png

Note Note:

버튼 이름에 &를 포함하려면 &&를 입력하십시오. 단일 &는 바로 가기 키의 밑줄을 표시하는 니모닉으로 작동합니다.


버튼 색상 및 사용자 정의

버튼의 모양을 변경하려면 CSS 스타일 시트 필드에 <a word describing something>: <how it should look>; 형식으로 설명을 입력하십시오. 예를 들어, 버튼을 빨간색으로 만들려면 background-color: red;을 CSS 상자에 입력하십시오.

Red button.png

버튼 뷰를 사용자 정의하기 위해 사용할 수 있는 이름의 전체 목록은 여기에서 확인할 수 있습니다. 이 페이지에서 설명은 {} 괄호 내에 있음에 유의하십시오. 괄호는 필요하지 않으며, Mudlet에는 괄호 내부에 있는 내용만 붙여넣으면 됩니다.

일부 기술을 적용하여 버튼을 더욱 아름답게 만들 수 있습니다:

Sexy Buttons.png

이 코드를 사용했으니, 버튼을 시작할 때 자유롭게 사용하세요:

color: white; background-color: orange; font-size: 12px;
padding: 6px;
border-radius: 5px;


관리되는 레이아웃

버튼을 행 또는 열로 정렬하려면(방향에 따라 달라짐), 열 또는 행의 수 필드에 숫자를 추가하세요. 다음은 왼쪽에 두 개의 열이 있는 예시입니다:

Two row alignment.png

다음은 왼쪽에 세 개의 열이 있는 예시입니다:

Three column alignment.png

Note Note:

버튼이 행 내에서 어떻게 정렬되는지는 버튼 그룹을 클릭하여 다양한 가능한 구성을 순환합니다.


내장된 줄임말

다음의 줄임말들은 새 Mudlet 프로필에서 기본으로 제공됩니다.

Alias Description Examples
lua Run Lua code from the input line. lua print("hello")
lua 2+2
lua clearWindow()
`echo Simulate text from the game to test your triggers.
You can use $ for a new line.
`echo You see a rabbit cross the road.
`echo line1$line2
: Send a command to all open profiles. :hello
:follow alice
:e

If an alias on the list isn't working for you - try copying it from a new profile, since existing profiles will not get new aliases as they're introduced to Mudlet.

Misc examples

Here are some more miscellaneous examples.

Mud syntax: get coins from corpse and also get coins from corpse 3. Alias Pattern: ^gcc(?:\s(\d+))?$ (can accept simply gcc and also gcc 3 for example).

send("get coins from corpse " .. (matches[2] or "") )

Mud syntax: unlock northwest with steel key Alias Pattern: ^un (\w+) (.*)$

send("unlock " .. matches[2] .. " with " .. matches[3] )

See also: Mudlet Technical Manual