MU Soapbox

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Muxify
    • Mustard

    A TinyMUX RP Approval System

    How-Tos
    1
    2
    3779
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Thenomain
      Thenomain last edited by

      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):

      A TinyMUX RP Approval System

      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.

      <GAMENAME>.CONF

      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>.conf in 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
      

      USER-DEFINED FUNCTIONS

      Each game has a slightly different way of defining functions, that is, of using the @function wiz-only command. After you install the system, make sure that isapproved() is not using the /privileged switch!

      This system makes only one function, isapproved(), but like most of my code, I use it to death. Even isapproved() uses isapproved()!

      INSTALLATION

      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
      

      Then, go to the link above. Copy all of it. Paste it in @Glitch's Muxify.

      Finally, make sure that &ufunc.isapproved is caught by whatever @function machine you have on your game.

      Then drop the object in your master room and @restart. Viola!

      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.

      Here is 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

      I use 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!

      “If you wish to make an apple pie from scratch, you must first invent the universe.”
      ― Carl Sagan, Cosmos

      1 Reply Last reply Reply Quote 4
      • Thenomain
        Thenomain last edited by

        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.

        Here's the commit.

        “If you wish to make an apple pie from scratch, you must first invent the universe.”
        ― Carl Sagan, Cosmos

        1 Reply Last reply Reply Quote 0
        • 1 / 1
        • First post
          Last post