This idea is only about half way conceived. That is part of why I'm
presenting it to you here. The more I talk about it, the more I'm convinced
that this will have a very significant effect on the game. This idea is also
already half way implemented so this will temporarily act as my documentation
(what will eventually become help files). I have enabled macros for all
builders (on the build server, naturally), so they have the ability to
interact with this code to test it (everyone who has access to this test
code and is reading this post, please help test!!) and help build up some
libraries. Even if you do not have a builder, eventually this concept
will impact you, so as a player, it is to your advantage to understand what
you can about macros. Along the way, I hope everyone will contribute more
ideas. I believe one of the most beautiful aspects of this concept, is that
the macros are written (with admittedly some modification) in DL commands
(which everyone knows -- or how do you play?!). I believe there are clearly
a lot of possibilities.
What is a (DL) macro?
In its simplest form, a macro is just a list of DL commands. On a deeper
level, it allows for much more interactive NPCs, Rooms, Items, and in the
end, the overall playing environment. By combining macros and some type
of "macro trigger" we gain the ability to execute a list of commands on
nearly any character. Add in the ability to execute commands that normally
cannot be executed (the "some modification" above), and many more
possibilities are available.
Macro triggers are one of the portions of the concept that is yet to be
completed. I'll add more about my thoughts on macros triggers in a follow up
post. I believe the documentation/tutorial below will be sufficiently
explain my comments above.
If you execute the "macros" command alone, you are provided with a list
of the global macros. At this point (and it will likely not stay this
way) all macros are global, meaning anyone with access to macros can view
or modify them. Please do not modify other people's macros.
> macros
Global Macro Libraries
------------------------
#1 Test Library
#2 Myrrima's Library
#3 Teodoran's Macros
#4 Vulsin's Macros
------------------------
To view the macros in a library, use the macros command along with the
library number.
> macros 1
Macros from library #1 - Test Library
---------------------------------------
#1 Speed Test
#2 Elghin's Macro
#3 Elghin's Wizard
#4 A different Macro
#5 Elghin's Wizard Test
---------------------------------------
If you'd like to create your own macro library (please do!) you can do so
with the macros library command like so:
> macros library <new library name>
To view a macro in a library, you'll use macros show along with the
associated library and macro number.
> macros 1 show 1
#1 Speed Test
---------------
1 > mecho You begin to feel as if you've lost control of your body.
2 > mecho Something is controlling you! You feel your mouth begin to move.
3 > 'This is a macro speed test!
4 > 'Oh dear, a macro is controlling me!
5 > speed 1
6 > 'It can make me talk really fast.
7 > 'So fast that it is difficult to keep up with.
8 > 'Which I suppose could have its purposes...
9 > speed 20
10 > 'Or it could talk slower, like this.
11 > 'Which is much easier to keep up with if you are trying to read along.
12 > 'Slow enough that everyone can read it as long as the room is relatively calm.
13 > smile
14 > bow
15 > 'It can make me do more than talk!
16 > 'This is the end of the macro speed test.
17 > speed 1
18 > mecho The force that was controlling your body seems to have left.
This macro has a couple of examples of the "extra" commands, I referenced
above. Most notably mecho (macro echo -- echos a message to anyone the macro
is played upon) and speed (adjusts the speed of the macro playback -- speed
of 8-10 is approx. 1 second between each command, speed 0 is immediate).
These commands are only available when you are recording, editing, or playing a
macro.
To start recording a macro, you'll use the macro record command along with
the library number and the name of the macro like this (then you'll start
entering commands as I do -- note the prompt change, this allows for editing):
> macros 1 record Yet Another Test Macro
Now recording macro "Yet Another Test Macro".
1 Command> 'This is a test macro?
You say, 'This is a test macro?'
1 Last --> 'This is a test macro?
2 Command> 'Yes, this is a test macro... and people are reading this, so I'm not talking to myself.
You say, 'Yes, this is a test macro... and people are reading this, so I'm not talking to myself.'
2 Last --> 'Yes, this is a test macro... and people are reading this, so I'm not talking to myself.
3 Command> macro record
Finished recording macro "Yet Another Test Macro".
Note: To stop recording or editing, you can use "macro record" or
"macro edit" they are interchangable (and no further arguments are required
to finish). At this point, I've created a new macro that uses the say
command twice:
> macros 1
Macros from library #1 - Test Library
---------------------------------------
#1 Speed Test
#2 Elghin's Macro
#3 Elghin's Wizard
#4 A different Macro
#5 Elghin's Wizard Test
#6 Yet Another Test Macro
---------------------------------------
> macros 1 show 6
#6 Yet Another Test Macro
---------------------------
1 > 'This is a test macro?
2 > 'Yes, this is a test macro... and people are reading this, so I'm not talking to myself.
You can edit a macro in similar fashion:
> macro 1 edit 6
Editing macro "Yet Another Test Macro".
1 Next --> 'This is a test macro?
1 Command> 'Arg, yet another test macro?!
You say, 'Arg, yet another test macro?!'
1 Last --> 'Arg, yet another test macro?!
2 Next --> 'This is a test macro?
2 Command> step end
3 Last --> 'Yes, this is a test macro... and people are reading this, so I'm not talking to myself.
4 Command> step -3
1 Next --> 'Arg, yet another test macro?!
1 Command> macro record
Finished recording macro "Yet Another Test Macro".
Here, I introduced a command that can be executed only when a macro is
being recorded or edited, but it isn't recorded in the macro -- the "step"
command. It is used to move around between the command when you are editing
(or recording) a macro. Note that you can step to the beginning, ending or
with a relative line number (step -2 would try to step back 2 lines in the
macro while step 2 would try to step 2 lines forward). While editing, to
insert commands, you simply type them in.
Macros can be renamed:
> macro 1 name 6 Another Test Macro
Library #1 macro #6 has been changed to "Another Test Macro".
> macro 1 show 6
#6 Another Test Macro
-----------------------
1 > 'Arg, yet another test macro?!
2 > 'This is a test macro?
3 > 'Yes, this is a test macro... and people are reading this, so I'm not talking to myself.
You can execute a macro but using the macro command with the library number
and macro number alone:
> macro 1 6
Playing macro "Another Test Macro".
>
You say, 'Arg, yet another test macro?!'
>
You say, 'This is a test macro?'
>
You say, 'Yes, this is a test macro... and people are reading this, so I'm not talking to myself.'
Finished playing macro "Another Test Macro".
Note that when the macro is executed on a non-staff member, they do not see
the information about the macro starting, finishing or changing speed.
You can use "macro abort" to stop editing/recording a macro and discard any
changes you've made and use "macro unrecord" to remove commands from a macro:
> macro 1 edit 6
Editing macro "Another Test Macro".
1 Next --> 'Arg, yet another test macro?!
1 Command> macro unrecord next
1 Next --> 'This is a test macro?
1 Command> step
1 Last --> 'This is a test macro?
2 Next --> 'Yes, this is a test macro... and people are reading this, so I'm not talking to myself.
2 Command> macro unrecord last
1 Next --> 'Yes, this is a test macro... and people are reading this, so I'm not talking to myself.
1 Command> macro abort
Macro editing/recording aborted.
Here I've just deleted the first 2 commands in the macro and then aborted the
change completely.
Armed with this, and adding a few more tools (such as macro triggers), we
should be able to do things like have a dog start barking if a player claps
their hands, or have a dog sit (if tamed) when a player points at it. It
could give us the capability to have items and rooms that can speak to your
or send you messages in an effort to communicate something. This could be
used to create tasks where you are supposed to rescue the princess by her
follow you safely through a horde of demons (who try to kill her). Using
triggers we could also script conversations back and forth between
NPCs as well as have "keywords" that players can say or even actions they
do to prompt a response macro from a NPC. Further thought needs to be given
to both macro triggers (how many different ways can a macro be triggered??)
and the special commands that can be used to enhance macro functionality
(such as commands that set memory for NPCs, call a macro trigger, or simply
change the way a macro is executed).
More to come on this topic, please post your thoughts!
Best regards to all,
--Nezmar
|