Teflor's zMUD Triggers

Scripts and support for your favorite MUD client.
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Teflor's zMUD Triggers

Postby teflor the ranger » Sun Nov 27, 2005 8:18 pm

How to Use Teflor's zMUD Triggers

In order to use these triggers, you must be using a version of zMUD that supports PERL expressions (most versions). Ensure that parsing is ON (it is on by default). Copy the blocks of code desired and simply paste them into your command line (the place at the bottom where you type your commands).

Installment #1 - Automatic Login - Last Updated 07/06/2008

This module automatically logs in your character, depending on the character and password stored for your connection in zMUD.

Code: Select all

#// Automatic Connection Character Login
#REGEX {^By what name do you wish to be known.?} {#CH} "Automatic Login" {nocr|prompt}
#REGEX {^Do you wish to create a new character.? Y/N} {N} "Automatic Login" {nocr|prompt}
#REGEX {^Password:} {#PW} "Automatic Login" {nocr|prompt}
#REGEX {^\*\*\* PRESS RETURN: } {#CR;#WAIT 250;1} "Automatic Login"
#REGEX {^Please enter your term type \(\<CR\> ansi, '\?' help\)\:} {#CR} "Automatic Login" {nocr|prompt}

Developer Notes

- Creates a folder named Automatic Login
- Creates triggers inside Automatic Login
- No aliases.
- No variables.
- Uses Character Name and Password stored in the zMUD connection properties.

* You can replace the #PW and #CH with the password and character name of your choice. This is not secure.

Installment #2 - Communications - Last Updated 07/06/2008

This module captures communications channels, both individual and mudwide and puts them into windows separate from the mud output.

Code: Select all

#// Mudwide Communications Channels (auction, gcc, etc.)
#REGEX {^Acheron:} {#CAP MUDWIDE} "Communications"
#REGEX { > Acheron:} {#CAP MUDWIDE} "Communications"
#REGEX {^\[Acheron\] \a+:} {#CAP MUDWIDE} "Communications"
#REGEX { > [Acheron] \a+:} {#CAP MUDWIDE} "Communications"
#REGEX {^Auction:} {#CAP MUDWIDE} "Communications"
#REGEX { > Auction:} {#CAP MUDWIDE} "Communications"
#REGEX {^\a+ GCC:} {#CAP MUDWIDE} "Communications"
#REGEX { > \a+ GCC:} {#CAP MUDWIDE} "Communications"
#REGEX {^\a+ LFG:} {#CAP MUDWIDE} "Communications"
#REGEX { > \a+ LFG:} {#CAP MUDWIDE} "Communications"
#REGEX {^\a+ OOC:} {#CAP MUDWIDE} "Communications"
#REGEX { > \a+ OOC:} {#CAP MUDWIDE} "Communications"
#REGEX {^(\a+) NHC:} {#CAP MUDWIDE} "Communications"
#REGEX { > \a+) NHC:} {#CAP MUDWIDE} "Communications"
#REGEX {^(\a+) (H) NHC:} {#CAP MUDWIDE} "Communications"
#REGEX { > \a+) (H) NHC:} {#CAP MUDWIDE} "Communications"
#// Incoming and Outging Individual and Group Channels (gsay, tells, etc.)
#REGEX {^\a+ group-say} {#CAP LOCAL} "Communications"
#REGEX { > \a+ group-say} {#CAP LOCAL} "Communications"
#REGEX {^\a+ group-project} {#CAP LOCAL} "Communications"
#REGEX { > \a+ group-project} {#CAP LOCAL} "Communications"
#REGEX {^\a+ project} {#CAP LOCAL} "Communications"
#REGEX { > \a+ project} {#CAP LOCAL} "Communications"
#REGEX {^\a+ say} {#CAP LOCAL} "Communications"
#REGEX { > \a+ say} {#CAP LOCAL} "Communications"
#REGEX {^\a+ tell} {#CAP LOCAL} "Communications"
#REGEX { > \a+ tell} {#CAP LOCAL} "Communications"
#REGEX {^\a+ whisper} {#CAP LOCAL} "Communications"
#REGEX { > \a+ whisper} {#CAP LOCAL} "Communications"
#// Petition Channels (petitions)
#REGEX {^\a+ responds to your petition with} {#CAP PETITION} "Communications"
#REGEX { > \a+ responds to your petition with} {#CAP PETITION} "Communications"
#REGEX {^You petition} {#CAP PETITION} "Communications"
#REGEX { > You petition} {#CAP PETITION} "Communications"

Alternative & Add-On Modules

Code: Select all

#// Incoming ONLY Individual and Group Channels (incoming gsays, incoming tells, etc.)
#REGEX {^\a+ group-says} {#CAP LOCAL} "Communications"
#REGEX { > \a+ group-says} {#CAP LOCAL} "Communications"
#REGEX {^\a+ group-projects} {#CAP LOCAL} "Communications"
#REGEX { > \a+ group-projects} {#CAP LOCAL} "Communications"
#REGEX {^\a+ projects} {#CAP LOCAL} "Communications"
#REGEX { > \a+ projects} {#CAP LOCAL} "Communications"
#REGEX {^\a+ says} {#CAP LOCAL} "Communications"
#REGEX { > \a+ says} {#CAP LOCAL} "Communications"
#REGEX {^\a+ tells} {#CAP LOCAL} "Communications"
#REGEX { > \a+ tells} {#CAP LOCAL} "Communications"
#REGEX {^\a+ whispers} {#CAP LOCAL} "Communications"
#REGEX { > \a+ whispers} {#CAP LOCAL} "Communications"
#// Outgoing ONLY Individual and Group Channels (outgoing gsays, outgoing tells, etc.)
#REGEX {^You group-say} {#CAP LOCAL} "Communications"
#REGEX { > You group-say} {#CAP LOCAL} "Communications"
#REGEX {^You group-project} {#CAP LOCAL} "Communications"
#REGEX { > You group-project} {#CAP LOCAL} "Communications"
#REGEX {^You project '} {#CAP LOCAL} "Communications"
#REGEX { > You project '} {#CAP LOCAL} "Communications"
#REGEX {^You say '} {#CAP LOCAL} "Communications"
#REGEX { > You say '} {#CAP LOCAL} "Communications"
#REGEX {^You tell \a+} {#CAP LOCAL} "Communications"
#REGEX { > You tell \a+} {#CAP LOCAL} "Communications"
#REGEX {^You whisper} {#CAP LOCAL} "Communications"
#REGEX { > You whisper} {#CAP LOCAL} "Communications"

Developer Notes

- Creates a folder named Communications
- Creates triggers inside Communnications
- No aliases.
- No variables.

* You can change the name of the windows created for each type of communication. You can also make them use the same window by using the same name.
* You can selectively remove types of communications and channels you do not wish to include.

Installment #3 - Spellout Reporter - Last Updated 07/06/2008

This module alerts the group when your enchantment has worn off. NOTICE: In groups playing at higher operating levels, many of these spellout reports are considered unnecessary spam, as many high operating level spellcasters keep track of when their spells expire. However, for other types of groups, often times these spellout reports are considered helpful as it can be difficult to track so many spells.

Code: Select all

#REGEX {You feel less wooden\.} {#beep;gsay >>> Barkskin Out} "Spellout Reporter"
#REGEX {Your form stops blurring\.} {#beep;gsay >>> Blur Out} "Spellout Reporter"
#REGEX {Your image is no longer displaced\.} {#beep;gsay >>> Displace Out} "Spellout Reporter"
#REGEX {Your displaced form snaps back to your physical location!} {#beep;gsay >>> Displace Out} "Spellout Reporter"
#REGEX {Your dragon scales melt back into your regular flesh\.} {#beep;gsay >>> Dragonscales Out} "Spellout Reporter"
#REGEX {Your body shimmers and sheds its elemental form, returning to normal\.} {#beep;gsay >>> Elemental Embodiment Out} "Spellout Reporter"
#REGEX {The elemental ward protecting you shudders and disappears\.} {#beep;gsay >>> Elemental Ward Out} "Spellout Reporter"
#REGEX {Your globe shimmers, and fades into the air\.} {#beep;gsay >>> Globe Out} "Spellout Reporter"
#REGEX {The world speeds up around you\.} {#beep;gsay >>> Haste Out} "Spellout Reporter"
#REGEX {Your mind seems vulnerable again\.} {#beep;gsay >>> Mind Blank Out} "Spellout Reporter"
#REGEX {Your mental barrier blinks out of existence\.} {#beep;gsay >>> Non-Detection Out} "Spellout Reporter"
#REGEX {Your flesh loses its stony texture\.} {#beep;gsay >>> Stone Skin Out} "Spellout Reporter"
#REGEX {Your vitality drains away\.} {#beep;gsay >>> Vitality Out} "Spellout Reporter"

Developer Notes

- Creates a folder named Spellout Reporter
- Creates triggers inside Spellout Reporter
- No aliases.
- No variables.

* You can edit the gsay commands to say what you want them to say. You can also replace them with a tell command for your specific spellcaster.

Installment #4 - Friends Chat Channel - Last Updated 07/08/2008

B E T A

This module allows you to create and manage a communications channel that only reaches the members you add to the conversation. All participants will need the triggerset for this to work properly.

Code: Select all

#// Friends Chat Channel, Version 0.3 Beta
#// Creates FCC Folder
#CLASS {FCCBETA}
#// Creates FCC Commands
#// FLIST: Lists the friends in the current list you are using or holding.
#ONINPUT {^FLIST} {#GAG;#SHOW FADMIN FCC: 'Your Current Friends List: @FriendsList'} "" {regex}
#// FHELP: Lists commands.
#ONINPUT {^FLIST} {#GAG;#SHOW FADMIN FCC: 'ALL: FLIST, FHELP, FLEAVE  HOLDER: FADD FDEL'} "" {regex}
#// FDEL: Removes a friend from your list IFF you are the list holder.
#ONINPUT {^FDEL (\a+)} {#IF (@FriendsListStatus = "1") {FCC Friend Removed: %1;#DELITEM FriendsList %1;#SHOW FADMIN FCC: '%1 has been removed from your Friends List.'};#IF (@FriendsListStatus = "2") {#GAG;#SHOW FADMIN FCC: 'You are currently using somebody else's friends list. Type FLEAVE to abandon current friendslist.'}} "" {regex}
#// FLEAVE: Allows you to drop ONLY your list - other people may still have you on their lists.
#ONINPUT {^FLEAVE} {#GAG;FriendsList = %null;FriendsListStatus = 1;#SHOW FADMIN FCC: 'You have abandoned your friends list and may now create your own list. You may still receive FCC messages from former list members.'} "" {regex}
#// FCC: This is the FCC chat command, like tell or ooc.
#ONINPUT {^FCC (.*)} {#GAG;#FO @FriendsList {#GAG;#SEND "tell %i FCC %1"};#SHOW "";#SHOW "";#SHOW You FCC: '%1'} "" {regex}
#// FADD: Allows you to add a friend IFF you are the list holder.
#ONINPUT {^FADD (\a+)} {#IF (@FriendsListStatus = "1") {#GAG;FCC Friend Added: %1;#ADDITEM FriendsList %lower( %1);#send "tell %1 You are invited to join my friends chat channel. Reply with 'join' to accept my friends list. Reply with 'FCCHelp' to get help with installing FCC triggers."};#IF (@FriendsListStatus = "2") {#GAG;#SHOW FCC FADMIN: 'You are currently using somebody else's friends list. Type FLEAVE to abandon current friendslist.'}} "" {regex}
#// Recieves FCC Messages
#REGEX {^(\a+) tells you 'FCC (.*)'} {#GAG;#SHOW "";#SHOW %1 FCC: '%2'}
#REGEX {> (\a+) tells you 'FCC (.*)'} {#GAG;#SHOW "";#SHOW %1 FCC: '%2'}
#// Processes list refresh requests from list members.
#REGEX {^(\a+) tells you 'join'} {#IF ((%ismember( %lower( %1), @FriendsList)) & (@FriendsListStatus = "1")) {#DELITEM FriendsList %lower( %1);tell %1 FCCJoin @FriendsList;#ADDITEM FriendsList %lower( %1)};#IF (!(%ismember( %lower( %1), @FriendsList)) OR !(@FriendsListStatus = "1")) {tell %1 Get the fuch outta here!}}
#REGEX { > (\a+) tells you 'join'} {#IF ((%ismember( %lower( %1), @FriendsList)) & (@FriendsListStatus = "1")) {#DELITEM FriendsList %lower( %1);tell %1 FCCJoin @FriendsList;#ADDITEM FriendsList %lower( %1)};#IF (!(%ismember( %1, @FriendsList)) OR !(@FriendsListStatus = "1")) {tell %1 Get the fuch outta here!}}
#// Processes list refresh response from list holder.
#REGEX {^(\a+) tells you 'FCCJoin (.*)'} {FriendsList = %2;#ADDITEM FriendsList %1;FriendsListStatus = "2"}
#REGEX { > (\a+) tells you 'FCCJoin (.*)'} {FriendsList = %2;#ADDITEM FriendsList %1;FriendsListStatus = "2"}
#// Initiates new members.
#REGEX {^(\a+) tells you 'FCCHelp'} {tell %1 Goto http://www.torilmud.org/phpBB2/viewtopic.php?f=4~&t=17343 and scroll down to Installment ~#4, FCC.}
#REGEX {> \a+ tell (\a+) 'FCC (.*)'} {#GAG}
#REGEX { > (\a+) tells you 'FCCHelp'} {tell %1 Goto http://www.torilmud.org/phpBB2/viewtopic.php?f=4~&t=17343 and scroll down to Installment ~#4, FCC.}
#REGEX {^\a+ tell (\a+) 'FCC (.*)'} {#GAG}
#// Updates list members on changes to friends list.
#REGEX {^(\a+) tells you 'FCC Friend Added: (\a+)'} {#GAG;#SEND "tell %1 join";#SHOW FADMIN FCC: 'Friends List Updated.'}
#REGEX { > (\a+) tells you 'FCC Friend Added: (\a+)'} {#GAG;#SEND "tell %1 join";#SHOW FADMIN FCC: 'Friends List Updated.'}
#REGEX {^(\a+) tells you 'FCC Friend Removed: (\a+)'} {#GAG;#SEND "tell %1 join";#SHOW FADMIN FCC: 'Friends List Updated.'}
#REGEX { > (\a+) tells you 'FCC Friend Removed: (\a+)'} {#GAG;#SEND "tell %1 join";#SHOW FADMIN FCC: 'Friends List Updated.'}
#// End Class
#CLASS 0


User Notes

The FCC is tells based, larger FCC lists will make sending FCC messages more laggy and difficult. It is not recommended for use while in combat.

FOR ALL USERS:
FLIST - displays the currently list you are using to send FCC messages.
FLEAVE - deletes your current friends list, however, your friends may still have you on their lists. This also restores you as the list holder for yourself (with a blank list of friends.)
FCC Hello - Works like OOC, in that your friends will have CharacterName FCC: 'Hello' appear on their screens.

FOR LIST HOLDERS/STARTERS:
FADD Teflor - adds Teflor to your friends list.
FDEL Teflor - removes Teflor from your friends list (however, he still may have you on his friends list).

Developer Notes

- Creates a folder named FCC
- Creates triggers inside FCC
- No aliases.
- No variables.

* Be very careful as each user should have the same set of triggers.
Last edited by teflor the ranger on Wed Jul 09, 2008 5:24 am, edited 29 times in total.
Teflor does. Teflor does not.
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Postby teflor the ranger » Mon Nov 28, 2005 7:48 am

To come in installments. All triggers are in Perl Regular Expressions - you'll need them to be eventually.

Needed: zMUD, a version that supports perl (5.5 and up i believe)
Copy the code into a text file and use 'import text' setting in the settings editor. (this must be done or zMUD will parse out certain symbols)

Installment #1: Communication (this will create a communications subfolder)

Code: Select all

#REGEX { > Acheron:} {#CAP MUDWIDE} "Communications"
#REGEX { > [Acheron] \a+:} {#CAP MUDWIDE} "Communications"
#REGEX { > Auction:} {#CAP MUDWIDE} "Communications"
#REGEX { > You group-say} {#CAP LOCAL} "Communications"
#REGEX { > You group-project} {#CAP LOCAL} "Communications"
#REGEX { > You say '} {#CAP LOCAL} "Communications"
#REGEX { > You project '} {#CAP LOCAL} "Communications"
#REGEX { > You tell \a+} {#CAP LOCAL} "Communications"
#REGEX { > \a+ GCC:} {#CAP MUDWIDE} "Communications"
#REGEX { > \a+ group-says} {#CAP LOCAL} "Communications"
#REGEX { > \a+ group-projects} {#CAP LOCAL} "Communications"
#REGEX { > \a+ LFG:} {#CAP MUDWIDE} "Communications"
#REGEX { > \a+ OOC:} {#CAP MUDWIDE} "Communications"
#REGEX { > \a+ says} {#CAP LOCAL} "Communications"
#REGEX { > \a+ projects} {#CAP LOCAL} "Communications"
#REGEX { > \a+ tells you} {#CAP LOCAL} "Communications"
#REGEX { > \a+ whispers} {#CAP LOCAL} "Communications"
#REGEX { > \a+) NHC:} {#CAP MUDWIDE} "Communications"
#REGEX { > \a+) (H) NHC:} {#CAP MUDWIDE} "Communications"
#REGEX {^Acheron:} {#CAP MUDWIDE} "Communications"
#REGEX {^\[Acheron\] \a+:} {#CAP MUDWIDE} "Communications"
#REGEX {^Auction:} {#CAP MUDWIDE} "Communications"
#REGEX {^You group-say} {#CAP LOCAL} "Communications"
#REGEX {^You group-project} {#CAP LOCAL} "Communications"
#REGEX {^You say '} {#CAP LOCAL} "Communications"
#REGEX {^You project '} {#CAP LOCAL} "Communications"
#REGEX {^You tell \a+} {#CAP LOCAL} "Communications"
#REGEX {^\a+ GCC:} {#CAP MUDWIDE} "Communications"
#REGEX {^\a+ group-says} {#CAP LOCAL} "Communications"
#REGEX {^\a+ group-projects} {#CAP LOCAL} "Communications"
#REGEX {^\a+ LFG:} {#CAP MUDWIDE} "Communications"
#REGEX {^\a+ OOC:} {#CAP MUDWIDE} "Communications"
#REGEX {^\a+ says} {#CAP LOCAL} "Communications"
#REGEX {^\a+ projects} {#CAP LOCAL} "Communications"
#REGEX {^\a+ tells you} {#CAP LOCAL} "Communications"
#REGEX {^\a+ whispers} {#CAP LOCAL} "Communications"
#REGEX {^(\a+) NHC:} {#CAP MUDWIDE} "Communications"
#REGEX {^(\a+) (H) NHC:} {#CAP MUDWIDE} "Communications"
#REGEX {^\a+ responds to your petition with} {#CAP LOCAL} "Communications"
#REGEX { > \a+ responds to your petition with} {#CAP LOCAL} "Communications"
#REGEX {^You petition} {#CAP LOCAL} "Communications"
#REGEX { > You petition} {#CAP LOCAL} "Communications"


FUNCTION
This segment captures (copies) single line says, tells, group-says, whispers, OOC's, LFGC's, GCC's, Auction, and Acheron messages and sends them to one of two seperate windows: local and mudwide.

EDITING
You may create different windows to sort messages as you please, simply change the #CAP (name of window) and your messages will appear in the new window name.

APPLICATION
You can shift around your windows, resize, tab them, etc, through the zMUD interface.

NOTES
Low priority for improvement
no double capture ie foo ooc 'poo tells you' will ony capture as OOC

POSTING INFORMATION
Last Updated 11/27/05

REVISION #1
Added illithid projects and group-projects.
12/17/05

REVISION #2
Fixed Acheron capture. Added petitions and responses.
10/19/06

REVISION #3
Added NHC and Helper captures.
01/06/08


Installment #2: Automatic Login (this will create an AutoLogin subfolder)

Code: Select all

#REGEX {^By what name do you wish to be known.?} {#CH} "AutoLogin" {nocr|prompt}
#REGEX {^Do you wish to create a new character.? Y/N} {N} "AutoLogin" {nocr|prompt}
#REGEX {^Password:} {#PW} "AutoLogin" {nocr|prompt}
#REGEX {^\*\*\* PRESS RETURN: } {#CR;#WAIT 250;1} "AutoLogin"
#REGEX {^Please enter your term type \(\<CR\> ansi, '\?' help\)\:} {#CR} "AutoLogin" {nocr|prompt}


FUNCTION
This segement automatically logs a character into the mud, assuming that character name and password are correctly entered into the zmud connection dialog.

EDITING
If you do not wish to store a character name or password in the zmud connections dialog, you can directly type your character name and password into the triggers, replacing #CH and #PW.

APPLICATION
Once implemented, take the time to store your character name and password. At the zMUD connection dialog, right click on your TorilMUD connection icon and hit edit (depending on version). Also ensure that any other automatic login triggers you have are either disabled or deleted.

NOTES
Low priority for improvement.

POSTING INFORMATION
11/28/05
Last edited by teflor the ranger on Mon Jul 07, 2008 12:38 am, edited 2 times in total.
Teflor does. Teflor does not.
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Postby teflor the ranger » Mon Nov 28, 2005 3:39 pm

Installment #3: Body Position and Action Detection

Code: Select all

#REGEX { P: std } {@chBodyPosition = std} "CharacterStatus"
#REGEX { P: sit } {@chBodyPosition = sit} "CharacterStatus"
#REGEX { P: knl } {@chBodyPosition = knl} "CharacterStatus"
#REGEX { P: rcl } {@chBodyPosition = rcl} "CharacterStatus"

#REGEX { > You climb on and ride} {@chBodyMounted = true} "CharacterStatus"
#REGEX {^You climb on and ride} {@chBodyMounted = true} "CharacterStatus"

#REGEX {You close your eyes and relax\.} {@chBodyStatus = rest} "CharacterStatus"
#REGEX {You sit down and relax\.} {@chBodyStatus = rest} "CharacterStatus"
#REGEX {You wake up\.} {@chBodyStatus = rest} "CharacterStatus"
#REGEX {You wiggle to find the most comfortable position\.} {@chBodyStatus = rest} "CharacterStatus"
#REGEX {Your prayers are complete\.} {@chBodyStatus = rest} "CharacterStatus"
#REGEX {Your studies are complete\.} {@chBodyStatus = rest} "CharacterStatus"


Being worked on.
Teflor does. Teflor does not.
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Postby teflor the ranger » Fri Dec 16, 2005 3:19 am

Installment #4: Group Spellout Reporter

Code: Select all

#REGEX {You feel less wooden\.} {#beep;gsay >>> Barkskin Out} "CharacterStatus" {prompt}
#REGEX {Your form stops blurring\.} {#beep;gsay >>> Blur Out} "CharacterStatus" {prompt}
#REGEX {Your image is no longer displaced\.} {#beep;gsay >>> Displace Out} "CharacterStatus" {prompt}
#REGEX {Your displaced form snaps back to your physical location!} {#beep;gsay >>> Displace Out} "CharacterStatus" {prompt}
#REGEX {Your dragon scales melt back into your regular flesh\.} {#beep;gsay >>> Dragonscales Out} "CharacterStatus" {prompt}
#REGEX {Your body shimmers and sheds its elemental form, returning to normal\.} {#beep;gsay >>> Elemental Embodiment Out} "CharacterStatus" {prompt}
#REGEX {The elemental ward protecting you shudders and disappears\.} {#beep;gsay >>> Elemental Ward Out} "CharacterStatus" {prompt}
#REGEX {Your globe shimmers, and fades into the air\.} {#beep;gsay >>> Globe Out} "CharacterStatus" {prompt}
#REGEX {The world speeds up around you\.} {#beep;gsay >>> Haste Out} "CharacterStatus" {prompt}
#REGEX {Your mind seems vulnerable again\.} {#beep;gsay >>> Mind Blank Out} "CharacterStatus"
#REGEX {Your mental barrier blinks out of existence\.} {#beep;gsay >>> Non-Detection Out} "CharacterStatus" {prompt}
#REGEX {Your flesh loses its stony texture\.} {#beep;gsay >>> Stone Skin Out} "CharacterStatus" {prompt}
#REGEX {Your vitality drains away\.} {#beep;gsay >>> Vitality Out} "CharacterStatus" {prompt}


FUNCTION
This segement automatically reports to the group when a beneficial spell has expired. (most spells covered.)

EDITING
I suggest adding your character name before each spell effect in order to make it easier to read at a glance.

APPLICATION
Fairly stand alone. Depending on the class of your character, you will want to take any spells you can cast yourself and remove the gsay command.

NOTES
Support casters please make suggestions on how to make certain spell out messages either easier to read or suggestions for other critical spell effects.

POSTING INFORMATION
12/15/05

REVISION #1

Added additional displace out trig.
Last edited by teflor the ranger on Sat Aug 12, 2006 9:22 pm, edited 2 times in total.
Teflor does. Teflor does not.
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Postby teflor the ranger » Fri Dec 16, 2005 3:49 am

Installment #5: Character Flee Direction Recording and Return Direction

Code: Select all

#REGEX {You flee downward!} {lastFlee = down;lastFleeReturn = up} "CharacterLocation"
#REGEX {You flee eastward!} {lastFlee = east;lastFleeReturn = west} "CharacterLocation"
#REGEX {You flee northward!} {lastFlee = north;lastFleeReturn = south} "CharacterLocation"
#REGEX {You flee southward!} {lastFlee = south;lastFleeReturn = north} "CharacterLocation"
#REGEX {You flee upward!} {lastFlee = up;lastFleeReturn = down} "CharacterLocation"
#REGEX {You flee westward!} {lastFlee = west;lastFleeReturn = east} "CharacterLocation"
#KEY DEC {@lastFleeReturn} "CharacterLocation"


FUNCTION
This segement automatically remembers the direction you last fled in and stores two variables containing the last direction of your flee and the opposite (or return) direction.

EDITING
Wouldn't suggest it. You may chose to assign another key for the macro, currently set at the decimal key on the numberpad.

APPLICATION
Stand alone and supplementary. If you flee out of the room and want to make a quick return, you can use the macro. You may also write other triggers that need to know where you fled, for example, if you are an elementalist and you flee out on switches from your pet, a trigger that makes you wait outside the room long enough to make the mob switch back to your pet, then returns you to the room may be desirable.

NOTES
BBlllaaahhhhh I hate studying for finals.

POSTING INFORMATION
12/15/05
Teflor does. Teflor does not.
Disoputlip
Sojourner
Posts: 956
Joined: Thu Feb 21, 2002 6:01 am
Location: Copenhagen

Postby Disoputlip » Sat Dec 17, 2005 2:04 am

In zMud there is a function
%reversedir( %1)
that reverses a direction. it can take inputs either as complete names or first letter: n | north.

then you just make a trigger: You flee (%w)ward.
and store reversedir.
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Postby teflor the ranger » Sat Dec 17, 2005 3:17 pm

It's written out in case you're ever doing something in a zone where rooms don't necessarily link back to the same room - you can place your own path in the string by seperating directions with ;
Teflor does. Teflor does not.
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Postby teflor the ranger » Wed Jul 26, 2006 11:01 pm

Installment #6: Re-Meditate Without the Stupid Endless Looping

ATTENTION: This trigger is no longer necessary due to mud code changes.

Code: Select all

#REGEX {You stop meditating\.} {#T- Meditate;med;#wait 500;#T+ Meditate} "Meditate"


FUNCTION
This segement sends the meditate command when you have broken meditate (ex: sending a tell, etc.) without all the #@!$ of typing 'med' and watching a dumb trigger loop endlessly on a dumb response from the mud.

EDITING
If you have an incredibly laggy connection, try increasing the "wait" number. 500 is 1/2 second. 1000 is one second.

APPLICATION
Stand alone by request. I use a more comprehensive status triggerset that will be put out eventually.

NOTES
Who loves air conditioning?

POSTING INFORMATION
07/26/06
Last edited by teflor the ranger on Sun Jan 06, 2008 4:43 am, edited 1 time in total.
Teflor does. Teflor does not.
Gizep
Sojourner
Posts: 150
Joined: Thu Mar 10, 2005 4:34 pm
Location: Menzoberranzan
Contact:

Postby Gizep » Thu Jul 27, 2006 9:19 am

what a freaking hack!
do it right!
As long as we live in this world we are bound to encounter problems. If, at such times, we lose hope and become discouraged, we diminish our ability to face difficulties. If, on the other hand, we remember that it is not just ourselves but everyone who has to undergo suffering, this more realistic perspective will increase our determination and capacity to overcome troubles.
-- The Dali Lama
Gizep
Sojourner
Posts: 150
Joined: Thu Mar 10, 2005 4:34 pm
Location: Menzoberranzan
Contact:

Postby Gizep » Thu Jul 27, 2006 9:27 am

I think that's everything, cept i reduntantly have a @Ranger variable that actually equals "Ranger" etc. for each class.

Code: Select all

#VAR WisCasters {Cleric|Shaman|Druid|Paladin|Anti-Paladin|Ranger|Dire Raider}
#VAR IntCasters {Invoker|Necromancer|Enchanter|Illusionist|Lich|Elementalist}
#VAR Casters {Invoker|Enchanter|Elementalist|Lich|Necromancer|Illusionist|Cleric|Shaman|Druid|Paladin|Anti-Paladin|Dire Raider|Ranger}

#ALIAS mem {#IF (@IntCaster = 1) {#IF (@Resting = 1) {#VARIABLE Memming 1;#VARIABLE Needmem 1;#VARIABLE Medding 1};memo %0};#IF (@WisCaster = 1) {#IF (@Resting = 1) {#VARIABLE Memming 1;#VARIABLE Needmem 1;#VARIABLE Medding 1};pray %0}}
#ALIAS med {#IF (@Medding = 0 & @Resting = 1 & @Standing = 0) {medi;#VARIABLE Medding 1}}

#TRIGGER {You stop meditating.} {#var Medding 0}
#TRIGGER {You start chanting...} {#VARIABLE Casting 1;#ADD @subtract -1}
#TRIGGER {You abort your spell before it's done!} {#VARIABLE Casting 0}
#TRIGGER {And you are currently {memorizing|praying for} the following spells:} {#VARIABLE Needmem 1;#VARIABLE time 0}
#TRIGGER {You start meditating...} {#var Medding 1}
#TRIGGER {Who should the spell be cast upon?} {#VARIABLE Casting 0;#VARIABLE Fighting 0}
#TRIGGER {You abandon your {studies|praying}.} {#VARIABLE Memming 0;#VARIABLE Medding 0;st}
#TRIGGER {You continue your {study|praying}~.} {#VARIABLE Memming 1;#VARIABLE Needmem 1;#VARIABLE Medding 0;#IF (@IntCaster = 1) {get all.book @bag}}
#TRIGGER {You can {pray|memorize} no more spells.} {#VARIABLE Needmem 0;#VARIABLE Memming 0;#VARIABLE Medding 0}
#TRIGGER {^$} {#IF (@IntCaster = 1 | @WisCaster = 1) {#IF (@Memming = 1 & @Resting = 1 & @Medding = 0 & @Needmem = 1) {med}};#IF (@Caster = 1) {#IF (@Standing = 0 & @Stqueue = 0 & @Needmem = 0 & @Autostand = 1) {st}} {#IF (@Standing = 0 & @Stqueue = 0 & @Autostand = 1) {st}}}
#TRIGGER {You {clamber|rise} to your feet.} {#VARIABLE Resting 0;#VARIABLE Medding 0;#VARIABLE Needmem 0;#VARIABLE Casting 0;#VARIABLE Stqueue 0;#VARIABLE Standing 1}
#TRIGGER {You sit down and relax.} {#VARIABLE Resting 1;#VARIABLE Standing 0;mem}
#TRIGGER {Level:{(%s)}&%dLevel{(%s)}Race:{(%s)}&Race{(%s)}Class:{(%s)}&Class} {#VARIABLE Caster 0;#VARIABLE IntCaster 0;#VARIABLE WisCaster 0;#VARIABLE Race {%trim( @Race)};#VARIABLE Class {%trim( @Class)};#IF (%ismember( @Class, @IntCasters) > 0) {#T+ IntCaster;#VARIABLE IntCaster 1;#T+ Caster;#IF (@Class = @Invoker) {#T+ Invoker};#IF (@Class = @Illusionist) {#T+ Illusionist};#IF (@Class = @Enchanter) {#T+ Enchanter};#IF (@Class = @Necromancer) {#T+ Necromancer};#IF (@Class = @Elementalist) {#T+ Elementalist}};#IF (%ismember( @Class, @Tanks) > 0) {#IF (@Class = @Warrior) {#T+ Tank};#IF (@Class = @Direraider) {#T+ Tank};#IF (@Class = @Ranger) {#T+ Tank};#IF (@Class = @Paladin) {#T+ Tank};#IF (@Class = @Antipaladin) {#T+ Tank}};#IF (%ismember( @Class, @Casters) > 0) {#VARIABLE Caster 1;#IF (@Class = @Cleric) {#T+ Caster};#IF (@Class = @Shaman) {#T+ Caster};#IF (@Class = @Druid) {#T+ Caster};#IF (@Class = @Direraider) {#T+ Caster};#IF (@Class = @Ranger) {#T+ Caster};#IF (@Class = @Paladin) {#T+ Caster};#IF (@Class = @Antipaladin) {#T+ Caster};#IF (@Class = @Invoker) {#T+ Caster};#IF (@Class = @Illusionist) {#T+ Caster};#IF (@Class = @Enchanter) {#T+ Caster};#IF (@Class = @Necromancer) {#T+ Caster};#IF (@Class = @Elementalist) {#T+ Caster}};#IF (%ismember( @Class, @WisCasters) > 0) {#VARIABLE WisCaster 1;#IF (@Class = @Cleric) {#T+ WisCaster};#IF (@Class = @Shaman) {#T+ WisCaster};#IF (@Class = @Druid) {#T+ WisCaster};#IF (@Class = @Paladin) {#T+ WisCaster};#IF (@Class = @Antipaladin) {#T+ WisCaster};#IF (@Class = @Ranger) {#T+ WisCaster};#IF (@Class = @Direraider) {#T+ WisCaster}}}
#TRIGGER {You are already standing.} {#VARIABLE Stqueue 0;#VARIABLE Standing 1;#VARIABLE Resting 0}
#TRIGGER {P: std ~>({%s})$} {#VARIABLE Resting 0;#VARIABLE Standing 1}
#TRIGGER {P: sit ~>({%s})$} {#VARIABLE Resting 1;#VARIABLE Standing 0;#IF (@Memming = 0 & @Stqueue = 0) {st}}
#TRIGGER {P: rcl ~>({%s})$} {#VARIABLE Resting 1;#VARIABLE Standing 0;#IF (@Memming = 0 & @Stqueue = 0) {st}}
#TRIGGER {P: knl ~>({%s})$} {#VARIABLE Resting 1;#VARIABLE Standing 0;#IF (@Memming = 0 & @Stqueue = 0) {st}}
#TRIGGER {You complete your spell...} {#VARIABLE Casting 0}
As long as we live in this world we are bound to encounter problems. If, at such times, we lose hope and become discouraged, we diminish our ability to face difficulties. If, on the other hand, we remember that it is not just ourselves but everyone who has to undergo suffering, this more realistic perspective will increase our determination and capacity to overcome troubles.
-- The Dali Lama
Marthammor
Staff Member - Areas
Posts: 834
Joined: Tue Jul 15, 2003 9:00 am
Location: On a Rocky Tor Overlooking a Storm-Ridden Landscape
Contact:

Postby Marthammor » Thu Jul 27, 2006 4:12 pm

Gizep must work for Microsoft or something.
Gizep
Sojourner
Posts: 150
Joined: Thu Mar 10, 2005 4:34 pm
Location: Menzoberranzan
Contact:

Postby Gizep » Fri Jul 28, 2006 12:15 am

Nah they won't hire me, i got a framed rejection letter. But, i did want to mention, i am sort of impressed to see teflor using perl expressions for his triggers, i just broke down and learned the language, cuz if i wanted to write my triggers with code, i'd use wintin, they have C# and VB.net extensions for their triggers now :p
As long as we live in this world we are bound to encounter problems. If, at such times, we lose hope and become discouraged, we diminish our ability to face difficulties. If, on the other hand, we remember that it is not just ourselves but everyone who has to undergo suffering, this more realistic perspective will increase our determination and capacity to overcome troubles.
-- The Dali Lama
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Postby teflor the ranger » Fri Jul 28, 2006 12:22 am

Placing sixteen triggers and three aliases for the job of one trigger is a hack as well. I already run each line of the mud through about a thousand triggers - each slows zMUD's response.

I will eventually put up my full status/condition triggerset (as well as my group status/condition/buff set), but I'm lazy and working slowly.
Teflor does. Teflor does not.
Gizep
Sojourner
Posts: 150
Joined: Thu Mar 10, 2005 4:34 pm
Location: Menzoberranzan
Contact:

Postby Gizep » Fri Jul 28, 2006 12:54 am

right i just started over myself, i originally wrote that as a multi-class, but like you said it's slowing me down. I didn't mean to sound like i was dissin ya, hah :p Still using the idea behind that on my new one, just way smaller.
As long as we live in this world we are bound to encounter problems. If, at such times, we lose hope and become discouraged, we diminish our ability to face difficulties. If, on the other hand, we remember that it is not just ourselves but everyone who has to undergo suffering, this more realistic perspective will increase our determination and capacity to overcome troubles.
-- The Dali Lama
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Postby teflor the ranger » Fri Jul 28, 2006 1:04 am

I don't mean to sound like I'm dissin ya either. I'm always impressed by mudders that write their own trigger sets.

The hard part was figuring how much my triggers need to know, and better yet, if constantly checking for things could be avoided.
Teflor does. Teflor does not.
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Re: Teflor's zMUD Triggers

Postby teflor the ranger » Sat Jul 05, 2008 3:58 pm

Question, anyone interested in a friends/foe list triggerset? Could also create friends chat channel entirely using triggers.
Teflor does. Teflor does not.
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Re: Teflor's zMUD Triggers

Postby teflor the ranger » Mon Jul 07, 2008 2:46 am

Friends Chat Channel

Notice, this module is still in development and is in a beta mode. Please feel free to install it for testing. I would like to hear your comments and suggestions, please feel free to PM or to respond to this thread.
Teflor does. Teflor does not.
teflor the ranger
Sojourner
Posts: 3923
Joined: Fri Jul 26, 2002 5:01 am
Location: Waterdeep

Re: Teflor's zMUD Triggers

Postby teflor the ranger » Wed Jul 09, 2008 3:43 am

Installment #4 - Friends Chat Channel B E T A - Last Updated 07/08/2008

This module allows you to create and manage a communications channel that only reaches the members you add to the conversation. All participants will need the triggerset for this to work properly.

Code: Select all

#// Friends Chat Channel, Version 0.3 Beta
#// Creates FCC Folder
#CLASS {FCCBETA}
#// Creates FCC Commands
#// FLIST: Lists the friends in the current list you are using or holding.
#ONINPUT {^FLIST} {#GAG;#SHOW FADMIN FCC: 'Your Current Friends List: @FriendsList'} "" {regex}
#// FDEL: Removes a friend from your list IFF you are the list holder.
#ONINPUT {^FDEL (\a+)} {#IF (@FriendsListStatus = "1") {FCC Friend Removed: %1;#DELITEM FriendsList %1;#SHOW FADMIN FCC: '%1 has been removed from your Friends List.'};#IF (@FriendsListStatus = "2") {#GAG;#SHOW FADMIN FCC: 'You are currently using somebody else's friends list. Type FLEAVE to abandon current friendslist.'}} "" {regex}
#// FLEAVE: Allows you to drop ONLY your list - other people may still have you on their lists.
#ONINPUT {^FLEAVE} {#GAG;FriendsList = %null;FriendsListStatus = 1;#SHOW FADMIN FCC: 'You have abandoned your friends list and may now create your own list. You may still receive FCC messages from former list members.'} "" {regex}
#// FCC: This is the FCC chat command, like tell or ooc.
#ONINPUT {^FCC (.*)} {#GAG;#FO @FriendsList {#GAG;#SEND "tell %i FCC %1"};#SHOW "";#SHOW "";#SHOW You FCC: '%1'} "" {regex}
#// FADD: Allows you to add a friend IFF you are the list holder.
#ONINPUT {^FADD (\a+)} {#IF (@FriendsListStatus = "1") {#GAG;FCC Friend Added: %1;#ADDITEM FriendsList %lower( %1);#send "tell %1 You are invited to join my friends chat channel. Reply with 'join' to accept my friends list. Reply with 'FCCHelp' to get help with installing FCC triggers."};#IF (@FriendsListStatus = "2") {#GAG;#SHOW FCC FADMIN: 'You are currently using somebody else's friends list. Type FLEAVE to abandon current friendslist.'}} "" {regex}
#// Recieves FCC Messages
#REGEX {^(\a+) tells you 'FCC (.*)'} {#GAG;#SHOW "";#SHOW %1 FCC: '%2'}
#REGEX {> (\a+) tells you 'FCC (.*)'} {#GAG;#SHOW "";#SHOW %1 FCC: '%2'}
#// Processes list refresh requests from list members.
#REGEX {^(\a+) tells you 'join'} {#IF ((%ismember( %lower( %1), @FriendsList)) & (@FriendsListStatus = "1")) {#DELITEM FriendsList %lower( %1);tell %1 FCCJoin @FriendsList;#ADDITEM FriendsList %lower( %1)};#IF (!(%ismember( %lower( %1), @FriendsList)) OR !(@FriendsListStatus = "1")) {tell %1 Get the fuch outta here!}}
#REGEX { > (\a+) tells you 'join'} {#IF ((%ismember( %lower( %1), @FriendsList)) & (@FriendsListStatus = "1")) {#DELITEM FriendsList %lower( %1);tell %1 FCCJoin @FriendsList;#ADDITEM FriendsList %lower( %1)};#IF (!(%ismember( %1, @FriendsList)) OR !(@FriendsListStatus = "1")) {tell %1 Get the fuch outta here!}}
#// Processes list refresh response from list holder.
#REGEX {^(\a+) tells you 'FCCJoin (.*)'} {FriendsList = %2;#ADDITEM FriendsList %1;FriendsListStatus = "2"}
#REGEX { > (\a+) tells you 'FCCJoin (.*)'} {FriendsList = %2;#ADDITEM FriendsList %1;FriendsListStatus = "2"}
#// Initiates new members.
#REGEX {^(\a+) tells you 'FCCHelp'} {tell %1 Goto http://www.torilmud.org/phpBB2/viewtopic.php?f=4~&t=17343 and scroll down to Installment ~#4, FCC.}
#REGEX {> \a+ tell (\a+) 'FCC (.*)'} {#GAG}
#REGEX { > (\a+) tells you 'FCCHelp'} {tell %1 Goto http://www.torilmud.org/phpBB2/viewtopic.php?f=4~&t=17343 and scroll down to Installment ~#4, FCC.}
#REGEX {^\a+ tell (\a+) 'FCC (.*)'} {#GAG}
#// Updates list members on changes to friends list.
#REGEX {^(\a+) tells you 'FCC Friend Added: (\a+)'} {#GAG;#SEND "tell %1 join";#SHOW FADMIN FCC: 'Friends List Updated.'}
#REGEX { > (\a+) tells you 'FCC Friend Added: (\a+)'} {#GAG;#SEND "tell %1 join";#SHOW FADMIN FCC: 'Friends List Updated.'}
#REGEX {^(\a+) tells you 'FCC Friend Removed: (\a+)'} {#GAG;#SEND "tell %1 join";#SHOW FADMIN FCC: 'Friends List Updated.'}
#REGEX { > (\a+) tells you 'FCC Friend Removed: (\a+)'} {#GAG;#SEND "tell %1 join";#SHOW FADMIN FCC: 'Friends List Updated.'}
#// End Class
#CLASS 0


User Notes

The FCC is tells based, larger FCC lists will make sending FCC messages more laggy and difficult. It is not recommended for use while in combat.

FOR ALL USERS:
FLIST - displays the currently list you are using to send FCC messages.
FLEAVE - deletes your current friends list, however, your friends may still have you on their lists. This also restores you as the list holder for yourself (with a blank list of friends.)
FCC Hello - Works like OOC, in that your friends will have CharacterName FCC: 'Hello' appear on their screens.

FOR LIST HOLDERS/STARTERS:
FADD Teflor - adds Teflor to your friends list.
FDEL Teflor - removes Teflor from your friends list (however, he still may have you on his friends list).

Developer Notes

- Creates a folder named FCC
- Creates triggers inside FCC
- No aliases.
- No variables.

* Be very careful as each user should have the same set of triggers.
Teflor does. Teflor does not.

Return to “MUD Client Help”

Who is online

Users browsing this forum: No registered users and 6 guests