A TinyMUX RP Approval System
I didn't expect this to be a stand-alone system, but in all the years I've coded for RP Mu*s here is a system that covers everything that I was asked to (and sometimes not asked to do):
The setup instructions are in the file, and though it currently is buried within my GMC (nWoD v2) chargen.
WHAT IS THIS FOR?
This is to make a user-defined function and a system to keep track of the various approval states of characters. This system can keep track of:
- chargen (never approved ever)
- approved (a-ok for the RP)
- unapproved (no longer ok for RP; a revoked 'approve')
- npc (approved + npc)
- storyteller (approved + storyteller)
- frozen (unapproved + frozen)
- dead (unapproved + dead)
The states of 'npc', 'storyteller', and probably 'frozen' are for other systems to access. You don't have to use them if you don't want to.
You're going to need a few things, the most important of which is access to the server account. User-defined flags are relied upon, and you'll need to be the one to make them.
Depending on your install, you're probably looking for
<gamename>.confin which you'll want to make sure you're not clobbering flags made by other people. You'll need four.
Suffice it to say, re-name the 'marker*<x>*' to the free flag markers. You only get nine.
## flags ######################################## ## flags: approval flag_name marker0 approved flag_name marker1 NPC flag_name marker2 unapproved flag_name marker3 storyteller flag_access marker0 wizard flag_access marker1 wizard flag_access marker2 wizard flag_access marker3 wizard
Each game has a slightly different way of defining functions, that is, of using the
@functionwiz-only command. After you install the system, make sure that
isapproved()is not using the
This system makes only one function,
isapproved(), but like most of my code, I use it to death. Even
Because this is currently buried in the GMCCG, you'll need to make an object for it first. From someone who is wizard-endowed:
@create Character Generation Approval System <cg>=10 @set cg=inherit safe
Finally, make sure that
&ufunc.isapprovedis caught by whatever
@functionmachine you have on your game.
Then drop the object in your master room and
TWEAKING THE APPROVAL TYPES
Each approval type has its own command, and each approval type can be tweaked. After doing the usual log-handling stuff, the system triggers an attribute specifically for that command/approval type.
cg/freeze, which is probably the one that will be tweaked the most.
&trig.approval.switch/freeze cg= @set %1=unapproved !approved !npc !storyteller; @set %1=_approval.frozen:%2;
You might want to rename the character, or teleport them, or do other things to them. Add it here. Let's add the semi-standard re-name:
@name %1=[name( %1 )]_[rest( %1, # )]; @teleport/quiet %1=#<my freezer>; @trigger %!/trig.unapprove.foo=%1;
TWEAKING THE CG/LOG
I'm not currently a huge fan of the timestamp output for
cg/log, or adding the dbref to the enacting staffer for that log entry, so I made each column of output flexible.
&format.approval.<thing>is where you want to look:
&format.approval.timestamp cg= timefmt( $H:$M $d.$m.$y, %0 )
A NOTE ABOUT DISPLAY WIDTH
wheader()et al. because it stretches across the player's screen, and the rest of the code in this system expects to know how wide the user's screen is. Use it. Thanks.
A HELP FILE
I don't really have one written yet. Sorry!
Maybe you want to know how long someone has spent approved, so I created a function to pull that information from the middle of this code (but not, yet, via the
isapproved()function). It hasn't been tested, yet, but I'm sure it will be.