I am new to Achaea but I played Gemstone a long long time ago. I LOVE text-based rp. I'm thrilled to find this place. The emote system is totally different, though.. and it is taking me a while to get a handle on it. I think it will be marvelous when I'm more comfortable with it. Right now, I'm afraid to do more than 'SAY' for fear I'll get it wrong and disrupt someone else's immersion.
I practiced a bit with the smelly drunken pygmy lady tonight. What I saw was something like.. Magierrah emotes (whatever it was) . I think that's what I read.. but I've been up all night trying to figure some of this out and I could be remembering it incorrectly. At any rate, it looked odd to me.. and scared me a bit, so I was afraid to use it with another player.
I also need to learn Mudlet to develop some shortcuts to all the typing.
At any rate, please be a bit patient with me while I figure all this out. I'll do my very best not to disrupt your immersion.
4
Comments
- With sharp, crackling tones, Kyrra tells you, "The ladies must love you immensely."
- (Eleusian Ranger Techs): Savira says, "Most of the hard stuff seem to have this built in code like: If adventurer_hitting_me = "Sarathai" then send("terminate and selfdestruct")."
- Makarios says, "Serve well and perish."
- Xaden says, "Xaden confirmed scrub 2017."
Emote gives $Magierrah a friendly pat on the back.
I would see : You have emoted : Tharvis gives Magierrah a friendly pat on the back.
you would see : Tharvis gives you a friendly pat on the back.
others would see : Tharvis gives Magierrah a friendly pat on the back.
Yes, it'll take some practice and some getting used to, but the flexibility it offers is nearly endless
Artemis says, "You are so high maintenance, Tharvis, gosh."
Tecton says, "It's still your fault, Tharvis."
There's plenty of people around who are willing to help you with Mudlet, although don't write off the IRE client, you may find that does what you need, and you can script for it too.
As for emoting, dive right in. I'd far rather see someone trying to emote and getting it wrong than someone who doesn't bother to try. Practice makes perfect!
Artemis says, "You are so high maintenance, Tharvis, gosh."
Tecton says, "It's still your fault, Tharvis."
If you want to see what an emote would look like, you can also use SHOWEMOTE <emote> to privately see exactly what it will show to yourself and others before you use it!
Results of disembowel testing | Knight limb counter | GMCP AB files
For example:
showemote emote hangs $tecton_his coat on the coat rack.
Life = 50 times easier now.
Now I can think about all those times when I was too scared to press enter in fear that my emote will come out wrong. :chuffed:
Do not DM on forums unless you're ok with waiting a couple months!
Welcome to Achaea. You've joined Ashtan at a really good time. Seems like RP should be picking up there.
Untested, but this should work for Mudlet.
Results of disembowel testing | Knight limb counter | GMCP AB files
Results of disembowel testing | Knight limb counter | GMCP AB files
YAAAAAAAEEEEEEEEEEEE.
For example: (item: a black hat, container: a leather backpack)
get hat from pack: rummages around in @container for a bit before pulling out @thing
give hat to tahquil: (with a flourish,) presents @thing to $tahquil
would show:
Trevize rummages around in a leather backpack for a bit before pulling out a black hat.
With a flourish, Trevize presents a black hat to Tahquil.
Yet it would also get the hat out and give it! This works with lots of things, including DRAW, SHEATHE, GET <x>, GET <x> FROM <x>, PUT <x> IN <x>, DROP, GIVE, and more!
Site: https://github.com/trevize-achaea/scripts/releases
Thread: http://forums.achaea.com/discussion/4064/trevizes-scripts
Latest update: 9/26/2015 better character name handling in GoldTracker, separation of script and settings, addition of gold report and gold distribute aliases.
With a flourish, Trevize presents a black hat to you.
Alias
Pattern: ^(?:em) (.+)$
Script:
if emoty == nil then
send("showemote emote " ..matches[2])
emoty = matches[2]
elseif emoty ~= matches[2] then
send("showemote emote " ..matches[2])
emoty = matches[2]
elseif emoty == matches[2] then
send("emote " .. emoty)
emoty = nil
end
Do not DM on forums unless you're ok with waiting a couple months!
The biggest problem most people have is that they look at things like this, don't immediately understand it, and throw their hands in the air. If you can resist the temptation to just declare that it's impossible for you to learn (it really isn't - elementary school kids learn this stuff!), you can definitely do it. Don't give up!
For this particular thing, all you need to do is put it in a Mudlet alias. Give the alias a name, put the pattern part in the first pattern box for the alias, switch the pattern type to regex (so it'll know to do special things with all the weird symbols in it), and put the script part in the script box for the alias.
To start understanding how it works:
This is a regular expression. The ^ matches the beginning of a line. Then the em matches the letters "em". Then it matches a space. Then the + means "one or more of that thing", so it'll match one or more spaces. Ignore the parentheses for a moment. Then you have a . which matches anything. It has a + after it, which means "one or more of that thing", so one or more of any character. Then you have $, which matches the end of the line.
The idea here is that the alias will only fire (i.e., run the script) when something you enter matches the regular expression. So it'll fire off of "em sets the table.", but it won't fire off of "emo sets the table." or off of " em sets the table".
The parentheses define something called a "capture group" which just means "save this part, I want to use it later". In Mudlet, that gets saved to the matches table. A table is just a variable that can hold more than one thing (a variable is just a thing that saves a single thing), and its indexed like this: matches[1] or matches[2] or matches[18]. The matches table always saves the entire match to matches[1]. Then it saves each capture group in order to matches[2], then matches[3], etc. So if you have that regex and you enter "em sets the table." then matches[1] is going to be "em sets the table." and matches[2] is going to be "sets the table.".
This is even easier. The "if" tests to see if something is true. In this case, it tests to see if a variable called "emoty" is equal to whatever's in matches[2]. If it is, then it sends some text to the game. The way you send text to the game is with send("the text you want to send"). Here the text you're sending is "emote " and whatever you saved as "emoty". One thing to look at there is that the actual text is in quotes - that's how the script knows that "emote " is actual text and not the name of a variable like emoty, which you can see doesn't have quotes around it. Actual text, which comes in quotes, are called "strings". Then the .. is just a way of gluing strings together - here it's just gluing together the string "emote " and whatever string is saved in emoty.
If whatever string is saved to emoty isn't equal to whatever's saved in matches[2], then the stuff after else happens. In this case, it sends the showemote stuff, which works just like the other send, with a string ("showemote emote ") combined with (..) whatever string is saved in matches[2] (whatever string was in the capture group). Then it just sets the value of emoty to whatever the value of matches[2] was. Notice that when we want to set the value of something we use =, but when we want to ask whether or not something is equal, we use ==. You don't want to mix those up!
So the first time you do "em sets the table." it's going to set matches[2] to "sets the table." and run the script. The script is going to check to see if emoty is equal to "sets the table.". Since emoty isn't anything at all yet, it isn't equal to "sets the table.", so the script will run whatever's in the else part. So it's going to send "showemote emote sets the table." to the game, then it's going to save "sets the table." to the emoty variable.
Next time you do "em sets the table.", it's going to set matches[2] to "sets the table." and run the script. The script is going to check to see if emoty is equal to "sets the table.". Since that's what emoty got set to last time, this time it is equal! So the script is going to run the stuff right there instead of the stuff under else, which means it's going to send to the game "emote sets the table.".
Imagine instead we did "em sets the table.", so emoty gets set to "sets the table.", but then we did "em breaks a glass." afterward instead. That's going to set matches[2] to "breaks a glass." and run our script. The script will check to see if emoty is equal to "breaks a glass.", but it isn't! So the script will do the stuff under else. So it's going to send "showemote emote breaks a glass.", and then set emoty to "breaks a glass.".
Hope that helps you get started! The most important thing is not to convince yourself that you can't do it. Every kind of person can learn to program.
The Mudlet one is at the bottom, the HTML5 one is near the middle.