<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE muclient>
<!-- Saved on Friday, March 19, 2004, 12:02 PM -->
<!-- MuClient version 3.46 -->

<!-- Plugin "Gag" generated by Plugin Wizard -->

<muclient>
<plugin
   name="Gag"
   author="Nick Gammon"
   id="36e75e5c438fcd6f6c9f994d"
   language="VBscript"
   purpose="Gags annoying players"
   save_state="y"
   date_written="2004-03-19 11:58:21"
   requires="3.46"
   version="1.0"
   >
<description trim="y">
<![CDATA[
This plugin will automatically customise a trigger to gag players who are annoying you.

You need to specify the regular expression that matches the text to be gagged, where "!!" represents the list of players whose names are to be gagged.

Usage
-----

gagsetmatch (regular expression)

eg.  gagsetmatch (!!) (says|whispers|tells you).*$

gag (player)      <-- gags a player

eg. gag turkey

ungag (player)    <-- ungags a player

eg. ungag turkey

gagshow           <-- shows list of gagged players

gaginfo           <-- shows information about the gag plugin

gaghelp           <-- show this information





]]>
</description>

</plugin>

<!--  Get our standard constants -->

<include name="constants.vbs"/>

<!--  Triggers  -->

<triggers>
  <trigger
   custom_colour="1"
   enabled="n"
   match="will be replaced when you gag someone"
   name="gags"
   omit_from_output="y"
   regexp="y"
   sequence="100"
  >
  </trigger>
</triggers>

<!--  Aliases  -->

<aliases>
  <alias
   script="OnUnGag"
   match="ungag *"
   enabled="y"
   echo_alias="y"
   sequence="100"
  >
  </alias>
  <alias
   script="OnGag"
   match="gag *"
   enabled="y"
   echo_alias="y"
   sequence="100"
  >
  </alias>
  <alias
   script="OnShowGags"
   match="gagshow"
   enabled="y"
   sequence="100"
  >
  </alias>
  <alias
   script="OnGagInfo"
   match="gaginfo"
   enabled="y"
   sequence="100"
  >
  </alias>
  <alias
   script="OnGagSetMatch"
   match="gagsetmatch *"
   enabled="y"
   sequence="100"
  >
  </alias>
</aliases>

<!--  Variables  -->

<variables>
  <variable name="regexp">(!!) (says|tells you).*$</variable>
</variables>

<!--  Script  -->


<script>
<![CDATA[
Sub OnPluginInstall

  ArrayCreate "gags"
  ArrayImport "gags", GetVariable ("gags"), "|"
'
'  Set up trigger after install
'
  Call MakeTrigger
  
  ColourNote "white", "maroon", "Gag plugin installed."
  OnShowGags "","",""

End Sub

Sub OnGag (name, line, wildcards)
dim who

  who = Trim (Lcase (wildcards (1)))

  If ArrayKeyExists ("gags", who) Then
    ColourNote "white", "red", who & " is already gagged."
  Else
    ArraySet "gags", who, ""  ' add to array of gagged players
    ColourNote "white", "blue", who & " added to list of gagged players."
    Call MakeTrigger
  End If  

End Sub

Sub OnUnGag (name, line, wildcards)

dim who

  who = Trim (Lcase (wildcards (1)))

  If Not ArrayKeyExists ("gags", who) Then
    ColourNote "white", "red", who & " is not gagged."
  Else
    ArrayDeleteKey "gags", who  ' remove from array of gagged players
    ColourNote "white", "blue", who & " removed from list of gagged players."
    Call MakeTrigger
  End If  

End Sub

Sub MakeTrigger
 
'
'  remember gag list in variable for plugin state save
'
  SetVariable "gags", ArrayExport ("gags", "|")
'
'  enable/disable trigger depending on whether we have gagged players
'
  EnableTrigger "gags", ArraySize ("gags") <> 0
'
'  change the trigger match text - replace !! by the gag list
'
  If SetTriggerOption ("gags", "match", _
     Replace (GetVariable ("regexp"), "!!", _
     ArrayExportKeys ("gags", "|"))) = eBadRegularExpression Then
    ColourNote "white", "red", _
      "Could not set trigger - check regular expression syntax"
    ColourNote "white", "red", "Regular expression is currently: " _
      & GetVariable ("regexp")
  End If

End Sub

Sub OnShowGags (name, line, wildcards)
dim gaglist

  If ArraySize ("gags") = 0 Then
    ColourNote "white", "blue", "No gagged players."
  Else
    gaglist = Replace (ArrayExportKeys ("gags", ","), ",", ", ")
    ColourNote "white", "maroon", "You have gagged: " & gaglist
  End If

End Sub

Sub OnGagSetMatch (name, line, wildcards)

  SetVariable "regexp", wildcards (1)
  Call MakeTrigger

End Sub

Sub OnGagInfo (name, line, wildcards)

  ColourNote "white", "blue", "Number of gagged players = " & _
      ArraySize ("gags")
  ColourNote "white", "blue", "Gagging regular expression = " & _
      GetVariable ("regexp")
  ColourNote "white", "blue", "(""!!"" will be replaced by gagged player names)"
  ColourNote "white", "blue", "Number of times gag trigger matched = " & _
      GetTriggerInfo ("gags", 21)

End Sub
]]>
</script>


<!--  Plugin help  -->

<aliases>
  <alias
   script="OnHelp"
   match="gaghelp"
   enabled="y"
  >
  </alias>
</aliases>

<script>
<![CDATA[
Sub OnHelp (sName, sLine, wildcards)
  world.Note world.GetPluginInfo (world.GetPluginID, 3)
End Sub
]]>
</script> 

</muclient>
