Dictionary Script v1.0 [ XCDictionary ]

By Setever on Dec 17, 2006

This is my first mIRC snippet -- the XCDictionary Script.

You and other users on IRC can define the world as you see it, by adding definitions, voting on them, and enjoying.

There's a ridiculously long admin panel for all your needs, with functions such as reports, deleting of definitions and words, banning, and restricting words.

There's also a $dcolor and $enddcolor alias that can be used as a return colour for those who know how to use it.

---Make sure you look at the admin panel! /dadmin ---

For users help, have them type !dhelp

Hope you all enjoy.

;;;;;;;[ XCdictionary v1.0 ];;;;;;;
;;;;;;;[Written by  Setever];;;;;;;

;Author's Notes: I added a $dcolor and $enddcolor for those of you who'd like to add color to all of the statements in the script. Just add a color and an ending after the 'return' in the aliases. If you don't understand this, don't attempt it!
;Author's Notes Part Two: You MUST view the admin panel! type: /dadmin

alias dcolor { return }

alias enddcolor { return }

alias dadmin {
  //echo -a $dcolor This is the XCdictionary project, or more commonly and plainly, the 'Dictionary'. The following are your commands. $enddcolor
  //echo -a $dcolor BANS - You can ban members, or even addresses from accessing the dictionary. $enddcolor
  //echo -a $dcolor * !nickban - You can ban a person's nick from using the dictionary and its features. $enddcolor
  //echo -a $dcolor * !addressban - You can ban a person's address by just adding their nick afterwards. $enddcolor
  //echo -a $dcolor * !removebans - You can remove a ban you've set. You must add the exact address you find from /viewbans if you are trying to remove an address. $enddcolor
  //echo -a $dcolor * /viewbans - Will show all of the bans you've made, both addresses and nicks. $enddcolor 
  //echo -a $dcolor REPORTS - People can report errors or comments, and you can look or check them with these commands. $enddcolor
  //echo -a $dcolor * /viewreports - Will show all the reported words. The first word in the report is the reported words, and the rest are the report comments. $enddcolor
  //echo -a $dcolor * /clearreport - You can clear the reports that you think have been taken care of. You follow the command with the report number found in /viewreports
  //echo -a $dcolor PROTECTED WORDS - You can protect a word so that nobody can add definitions on it. You can do this to keep the definitions as they are, or restrict a bad word.
  //echo -a $dcolor * /protectword - Just add the word after the command.
  //echo -a $dcolor * /listprotected - You can view all of the protected words you've set with command.
  //echo -a $dcolor * /removeprotect - You can use this to take the protection off of a word. Just add the word after the command.
  //echo -a $dcolor DELETION AND CHECK - You can delete words, or definitions, and check them with these commands.
  //echo -a $dcolor * /ddelete - You can delete a specific definition, or a complete word. If you're deleting a definition, you must use the specific ID, found in the definition, the number that goes after the !UP or !DOWN command. $enddcolor
  //echo -a $dcolor * /dword - You can view the word and all definitions that go along with it by adding the word after the command! $enddcolor 
}

on *:TEXT:!dhelp:#: {
  if ($istok(%dictionary_address_banned_list,$address($nick,4),44)) { notice $nick You have banned banned from the dictionary and its functions. }
  else {
    if ($istok(%dictionary_nick_banned_list,$nick,44)) { notice $nick Your nick has been banned from the dictionary and its functions. }
    else {
      notice $nick $dcolor This is the XCdictionary project made by Setever, to help define the world! $enddcolor
      notice $nick $dcolor Commands: !dictionary [word], !find [word], !define [word] [definition], !report [word] [comments] $enddcolor
    }
  }
}

on *:TEXT:!dictionary*:#: {
  if ($istok(%dictionary_address_banned_list,$address($nick,4),44)) { notice $nick You have banned banned from the dictionary and its functions. }
  else {
    if ($istok(%dictionary_nick_banned_list,$nick,44)) { notice $nick Your nick has been banned from the dictionary and its functions. }
    else {
      if ($2) {
        if ($istok(%defined_words,$2,44)) {
          msg $chan $dcolor %xcdictionary_word_ [ $+ [ $2 ] ] $+ . $2  $enddcolor
          msg $chan $dcolor There are $numtok(%xcdictionary_word_total_definitions_ [ $+ [ $2 ] ],44) definitions for: $2 $+ . To view them, type !find $2 $+ . $enddcolor
        }
        else {
          msg $chan $dcolor The definition of $2 has yet to be recorded! Add your own! $enddcolor
          msg $chan $dcolor To add your own definition, type: !define WORD [definition] $+ . $enddcolor
        }
      }
      else { notice $nick You need to add a word after! Correct Syntax: !dictionary WORD }
    }
  }
}

on *:TEXT:!define*:#: {
  if ($istok(%dictionary_address_banned_list,$address($nick,4),44)) { notice $nick You have banned banned from the dictionary and its functions. }
  else {
    if ($istok(%dictionary_nick_banned_list,$nick,44)) { notice $nick Your nick has been banned from the dictionary and its functions. }
    else {
      if ($istok(%protected_words,$2,44)) { notice $nick That word has been protected. You may not define it! }
      else {
        if (!$2) { notice $nick You must add a word after the !define command! Correct Syntax: !define WORD [definition] }
        elseif (!$3) { notice $nick You must add a definition! Correct Syntax: !define WORD [definition] }
        else {
          if (!$istok(%defined_words,$2,44)) {
            inc %individual_id 1
            set %defined_words $addtok(%defined_words,$2,44)
            set %xcdictionary_word_ [ $+ [ $2 ] ] %individual_id
            inc %individual_id 1
            set %xcdictionary_word_total_definitions_ [ $+ [ $2 ] ] $addtok(%xcdictionary_word_total_definitions_ [ $+ [ $2 ] ],%individual_id,44)
            set %xcdictionary_definition_ [ $+ [ %individual_id ] ] $3-
            set %xcdictionary_definition_adder_ [ $+ [ %individual_id ] ] $nick
            set %total_up_votings_ [ $+ [ %individual_id ] ] 0
            set %total_down_votings_ [ $+ [ %individual_id ] ] 0
            set %total_definition_up_down_possible $addtok(%total_definition_up_down_possible,%individual_id,44)
            msg $chan $dcolor Definition for Word ' $+ $2 $+ ' added. Definition: $3- $+ . To see the definitions, type: !find $2 $enddcolor
            set %xcdictionary_total_definitions $addtok(%xcdictionary_total_definitions,%individual_id,44)
            set %xcdictionary_individual_id_word_ [ $+ [ %individual_id ] ] $2
          }
          else {
            inc %individual_id 1
            set %xcdictionary_word_total_definitions_ [ $+ [ $2 ] ] $addtok(%xcdictionary_word_total_definitions_ [ $+ [ $2 ] ],%individual_id,44)
            set %xcdictionary_definition_ [ $+ [ %individual_id ] ] $3-
            set %xcdictionary_definition_adder_ [ $+ [ %individual_id ] ] $nick
            set %total_up_votings_ [ $+ [ %individual_id ] ] 0
            set %total_down_votings_ [ $+ [ %individual_id ] ] 0
            set %total_definition_up_down_possible $addtok(%total_definition_up_down_possible,%individual_id,44)
            msg $chan $dcolor Definition for Word ' $+ $2 $+ ' added. Definition: $3- $+ . To see the definitions, type: !find $2 $enddcolor
            set %xcdictionary_total_definitions $addtok(%xcdictionary_total_definitions,%individual_id,44)
            set %xcdictionary_individual_id_word_ [ $+ [ %individual_id ] ] $2
          }
        }
      }
    }
  }
}

on *:TEXT:!find*:#: {
  if ($istok(%dictionary_address_banned_list,$address($nick,4),44)) { notice $nick You have banned banned from the dictionary and its functions. }
  else {
    if ($istok(%dictionary_nick_banned_list,$nick,44)) { notice $nick Your nick has been banned from the dictionary and its functions. }
    else {
      if (!$2) { notice $nick $dcolor You must add a word after the !find command! Correct Syntax: !find WORD $enddcolor }
      else {
        if (!$istok(%defined_words,$2,44)) {
          notice $nick $dcolor The definition of $2 has yet to be recorded! Add your own! $enddcolor
          notice $nick $dcolor To add your own definition, type: !define WORD [definiton] $+ . $enddcolor
        }
        else {
          notice $nick $dcolor Definitions of $2 $+ :
          var %x = $numtok(%xcdictionary_word_total_definitions_ [ $+ [ $2 ] ],44)
          var %newdefinition 0
          while (%newdefinition < %x) {
            inc %newdefinition 1
            var %superx = $gettok(%xcdictionary_word_total_definitions_ [ $+ [ $2 ] ],%newdefinition,44)
            notice $nick Definition %newdefinition $+ : %xcdictionary_definition_ [ $+ [ %superx ] ] (Added by: %xcdictionary_definition_adder_ [ $+ [ %superx ] ] $+ ) [Ratings: Up: $calc( $numtok(%total_up_votings_ [ $+ [ %superx ] ],44) - 1) . Down: $calc( $numtok(%total_down_votings_ [ $+ [ %superx ] ],44) - 1) To UP this definition, type !UP %superx $+ . To DOWN this definition, type !DOWN %superx $+ . ] 
          }
        }
      }
    }
  }
}

on *:TEXT:!up*:#: {
  if ($istok(%dictionary_address_banned_list,$address($nick,4),44)) { notice $nick You have banned banned from the dictionary and its functions. }
  else {
    if ($istok(%dictionary_nick_banned_list,$nick,44)) { notice $nick Your nick has been banned from the dictionary and its functions. }
    else {
      if (!$2) { notice $nick You must add the specific ID number after your command! Correct Syntax: !up NUMBER }
      else {
        if ($2 !isnum) { notice $nick You must add only numbers after your command! Correct Syntax: !up NUMBER }
        else {
          if (!$istok(%xcdictionary_total_definitions,$2,44)) { notice $nick That is not a proper ID number! Type !find WORD to find the right number. }
          else {
            if ($istok(%total_up_votings_ [ $+ [ $2 ] ],$nick,44)) { notice $nick You have already voted Number $2 Up! }
            else {
              if ($istok(%total_down_votings_ [ $+ [ $2 ] ],$nick,44)) { 
                set %total_up_votings_ [ $+ [ $2 ] ] $addtok(%total_up_votings_ [ $+ [ $2 ] ],$nick,44)
                set %total_down_votings_ [ $+ [ $2 ] ] $remtok(%total_down_votings_ [ $+ [ $2 ] ],$nick,44)
                msg $chan $dcolor $nick changed their vote from Down to Up for definition $2 $+ ! $enddcolor
              }
              else {
                set %total_up_votings_ [ $+ [ $2 ] ] $addtok(%total_up_votings_ [ $+ [ $2 ] ],$nick,44)
                msg $chan $dcolor $nick voted Up for definition $2 $+ ! $enddcolor
              }
            }
          }
        }
      }
    }
  }
}

on *:TEXT:!down*:#: {
  if ($istok(%dictionary_address_banned_list,$address($nick,4),44)) { notice $nick You have banned banned from the dictionary and its functions. }
  else {
    if ($istok(%dictionary_nick_banned_list,$nick,44)) { notice $nick Your nick has been banned from the dictionary and its functions. }
    else {
      if (!$2) { notice $nick You must add the specific ID number after your command! Correct Syntax: !up NUMBER }
      else {
        if ($2 !isnum) { notice $nick You must add only numbers after your command! Correct Syntax: !up NUMBER }
        else {
          if (!$istok(%xcdictionary_total_definitions,$2,44)) { notice $nick That is not a proper ID number! Type !find WORD to find the right number. }
          else {
            if ($istok(%total_down_votings_ [ $+ [ $2 ] ],$nick,44)) { notice $nick You have already voted Number $2 Up! }
            else {
              if ($istok(%total_up_votings_ [ $+ [ $2 ] ],$nick,44)) { 
                set %total_down_votings_ [ $+ [ $2 ] ] $addtok(%total_down_votings_ [ $+ [ $2 ] ],$nick,44)
                set %total_up_votings_ [ $+ [ $2 ] ] $remtok(%total_up_votings_ [ $+ [ $2 ] ],$nick,44)
                msg $chan $dcolor $nick changed their vote from Up to Down for definition $2 $+ ! $enddcolor
              }
              else {
                set %total_down_votings_ [ $+ [ $2 ] ] $addtok(%total_down_votings_ [ $+ [ $2 ] ],$nick,44)
                msg $chan $dcolor $nick voted Down for definition $2 $+ ! $enddcolor
              }
            }
          }
        }
      }
    }
  }
}

on *:TEXT:!report*:#: {
  if ($istok(%dictionary_address_banned_list,$address($nick,4),44)) { notice $nick You have banned banned from the dictionary and its functions. }
  else {
    if ($istok(%dictionary_nick_banned_list,$nick,44)) { notice $nick Your nick has been banned from the dictionary and its functions. }
    else {
      if (!$2) { notice $nick You must add the word of which you're reporting! Correct Syntax: !report WORD [comments] }
      else {
        if (!$3) { notice $nick You must add a description of what you're reporting. Add your command! Correct Syntax: !report WORD [comments] }
        else {
          if ($istok(%defined_words,$2,44)) {
            var %report_number 1
            :new
            while ($gettok(%xcdictionary_reports_number,%report_number,47)) {
              inc %report_number
              goto new
            }
            set %xcdictionary_reports_number $addtok(%xcdictionary_reports_number,%report_number,47)
            set %xcdictionary_reports_direct $addtok(%xcdictionary_reports_direct,$2-,47)
            msg $chan $dcolor Report for word $2 added: $3- $+ ! $enddcolor
          }
          elseif ($2 == GENERALREPORT) { 
            var %report_number 1
            :new
            while ($gettok(%xcdictionary_reports_number,%report_number,47)) {
              inc %report_number
              goto new
            }
            set %xcdictionary_reports_number $addtok(%xcdictionary_reports_number,%report_number,47)
            set %xcdictionary_reports_direct $addtok(%xcdictionary_reports_direct,$2-,47)
            msg $chan $dcolor A general report has been recorded: $3- $+ ! $enddcolor
          }       
          else { notice $nick That word has not been defined; therefore, there does not need to be a report on it. If you'd like to make a general report, type: !report GENERALREPORT [comments] }
        }
      }
    }
  }
}

alias viewreports {
  var %report_number2 0
  :neww
  while ($gettok(%xcdictionary_reports_number,%report_number2,47)) {
    inc %report_number2
    //echo -a $dcolor Current report( $+ %report_number2 $+ ): $gettok(%xcdictionary_reports_direct,%report_number2,47) $enddcolor
    goto neww
  }
}

on *:INPUT:#: {
  if ($1 == !nickban) { 
    if ($istok(%dictionary_nick_banned_list,$2-,44)) { /timer 1 1 //echo -a $dcolor That nick has already been banned. $enddcolor }
    else {
      set %dictionary_nick_banned_list $addtok(%dictionary_nick_banned_list,$2-,44)
      /timer 1 1 /msg $chan $dcolor The Nick Restricted List has a new addition: $2- $+ ! $enddcolor
    }
  }
  elseif ($1 == !addressban) {
    if ($istok(%dictionary_address_banned_list,$address($2,4),44)) { /timer 1 1 //echo -a $dcolor That address has already been banned. $enddcolor }
    else {
      set %dictionary_address_banned_list $addtok(%dictionary_address_banned_list,$address($2,4),44)
      /timer 1 1 /msg $chan $dcolor The Address Restricted List has a new addition: $2- $enddcolor
    }
  }
  elseif ($1 == !removeban) {
    if ($regex($2-,/\@/) == 1) { 
      if ($istok(%dictionary_address_banned_list,$2-,44)) { 
        set %dictionary_address_banned_list $remtok(%dictionary_address_banned_list,$2-,44)
        /timer 1 1 /msg $chan $dcolor The Ban of $2- has been removed! $enddcolor
      }
      else { /timer 1 1 //echo -a That ban is not listed. To view the bans, type /viewbans }
    }
    else {
      if ($istok(%dictionary_nick_banned_list,$2-,44)) {
        set %dictionary_nick_banned_list $remtok(%dictionary_nick_banned_list,$2-,44)
        /timer 1 1 /msg $chan $dcolor The Nick ban of $2- has been removed! $enddcolor
      }
      else { /timer 1 1 //echo -a $dcolor That nick ban is not listed. To view the bans, type /viewbans $enddcolor }
    }
  }
}

alias viewbans {
  //echo -a $dcolor Addresses Banned: %dictionary_address_banned_list $enddcolor
  //echo -a $dcolor Nicks Banned: %dictionary_nick_banned_list  $enddcolor
}

alias clearreport { 
  if ($gettok(%xcdictionary_reports_number,$1,44)) {
    var %part1 = $gettok(%xcdictionary_reports_number,$1,44)
    set %xcdictionary_reports_number $remtok(%xcdictionary_reports_number,%part1,44)
    var %part2 = $gettok(%xcdictionary_reports_direct,$1,44)
    set %xcdictionary_reports_direct $remtok(%xcdictionary_reports_direct,%part2,44)
    //echo -a Report of ' $+ %part2 $+ ' cleared.
  }
  else { //echo -a $dcolor You didn't select a correct number. $enddcolor }
}

alias dword {
  if ($istok(%defined_words,$1,44)) {
    //echo -a $dcolor Definitions of $1 $+ :
    var %x = $numtok(%xcdictionary_word_total_definitions_ [ $+ [ $1 ] ],44)
    var %newdefinition 0
    while (%newdefinition < %x) {
      inc %newdefinition 1
      var %superx = $gettok(%xcdictionary_word_total_definitions_ [ $+ [ $1 ] ],%newdefinition,44)
      //echo -a $dcolor Definition %newdefinition $+ : %xcdictionary_definition_ [ $+ [ %superx ] ] (Added by: %xcdictionary_definition_adder_ [ $+ [ %superx ] ] $+ ) [Ratings: Up: $calc( $numtok(%total_up_votings_ [ $+ [ %superx ] ],44) - 1) . Down: $calc( $numtok(%total_down_votings_ [ $+ [ %superx ] ],44) - 1) To UP this definition, type !UP %superx $+ . To DOWN this definition, type !DOWN %superx $+ . ]  $enddcolor
    }
  }
  else { //echo -a $dcolor That word has not yet been defined. $enddcolor }
}

alias ddelete {
  if ($1 isletter) {
    if ($istok(%defined_words,$1,44)) {
      set %defined_words $remtok(%defined_words,$1,44)
      var %word_number = $numtok(%xcdictionary_word_total_definitions_ [ $+ [ $1 ] ],44)
      var %delete_definition = 1
      while (%delete_definition <= %word_number) {
        var %ddelete = $gettok(%xcdictionary_word_total_definitions_ [ $+ [ $1 ] ],%delete_definition,44)
        unset %xcdictionary_definition_ [ $+ [ %ddelete ] ]
        unset %xcdictionary_definition_adder_ [ $+ [ %ddelete ] ]
        unset %total_up_votings_ [ $+ [ %ddelete ] ]
        unset %xcdictionary_word_total_definitions_ [ $+ [ $1 ] ]
        unset %total_down_votings_ [ $+ [ %ddelete ] ]
        unset %xcdictionary_word_ [ $+ [ $1 ] ]
        set %total_definition_up_down_possible $remtok(%total_definition_up_down_possible,%ddelete,44)
        set %xcdictionary_total_definitions $remtok(%xcdictionary_total_definitions,%ddelete,44)
        inc %delete_definition
        unset %xcdictionary_individual_id_word_ [ $+ [ $1 ] ]
        //echo -a $dcolor Definition of ' $+ $1 $+ ' has been deleted! $enddcolor
      }
    }
    else { //echo -a $dcolor Word ' $+ $1 $+ ' is not a definition. $enddcolor }
  }
  elseif ($1 isnum) {
    if ($istok(%xcdictionary_total_definitions,$1,44)) {
      var %current_deletion = %xcdictionary_individual_id_word_ [ $+ [ $1 ] ]
      if ($numtok(%current_deletion,44) == 1) { 
        set %defined_words $remtok(%defined_words,%current_deletion,44)
        unset %xcdictionary_word_ [ $+ [ %current_deletion ] ]
        unset %xcdictionary_word_total_definitions_ [ $+ [ %current_deletion ] ]
      }
      set %total_definition_up_down_possible $remtok(%total_definition_up_down_possible,$1,44)
      set %xcdictionary_total_definitions $remtok(%xcdictionary_total_definitions,$1,44)
      var %current_deletion = %xcdictionary_individual_id_word_ [ $+ [ $1 ] ]
      set %xcdictionary_word_total_definitions_ [ $+ [ $1 ] ] $remtok(%xcdictionary_word_total_definitions_ [ $+ [ $1 ] ],$1,44)
      unset %xcdictionary_definition_ [ $+ [ $1 ] ]
      unset %xcdictionary_definition_adder_ [ $+ [ $1 ] ]
      unset %total_up_votings_ [ $+ [ $1 ] ]
      unset %total_down_votings_ [ $+ [ $1 ] ]
      set %total_definition_up_down_possible $remtok(%total_definition_up_down_possible,$1,44)
      set %xcdictionary_total_definitions $remtok(%xcdictionary_total_definitions,$1,44)
      unset %xcdictionary_individual_id_word_ [ $+ [ $1 ] ]
      unset %xcdictionary_word_total_definitions_ [ $+ [ $1 ] ]
      //echo -a $dcolor Definition Number ' $+ $1 $+ ' has been deleted! $enddcolor
    }
    else { //echo -a $dcolor That is not a correct definition ID. Type /dword WORD to see the ID. $enddcolor }
  }
}

alias protectword { 
  if ($istok(%protected_words,$1,44)) { //echo -a $dcolor This word has already been protected. $enddcolor }
  else {
    set %protected_words $addtok(%protected_words,$1,44)
    //echo -a $dcolor The word ' $+ $1 $+ ' has been protected. $enddcolor
  }
}

alias listprotected {
  if (%protected_words !== $null) { //echo -a $dcolor Protected Word List: %protected_words $enddcolor }
  else { //echo -a $dcolor There are no protected words that you've set. $enddcolor }
}

alias removeprotect {
  if (!$istok(%protected_words,$1,44)) { //echo -a $dcolor The word ' $+ $1 $+ ' has not been protected. $enddcolor }
  else {
    set %protected_words $remtok(%protected_words,$1,44)
    //echo -a $dcolor The word ' $+ $1 $+ ' has been removed from the protected list! $enddcolor
  }
}

Comments

Sign in to comment.
Metallboy100   -  Aug 20, 2007

omfg nice one! i love this script , thank you.

 Respond  
bvalis   -  Jun 30, 2007

at line 220 he give this error : line too long... yes the definition was too long, but atfer that... i can\'t do !define on other words... same errore guve\'s me

 Respond  
mysterycool   -  Jan 01, 2007

I didn\'t use it but I can see from the scripting that it would work fine! Nice! Good Job!

 Respond  
Disturbed   -  Dec 31, 2006

:o gl :\

 Respond  
Setever   -  Dec 21, 2006

I never really got into hash tables... so perhaps I should go learn them.

 Respond  
Disturbed   -  Dec 21, 2006
 Respond  
xDaeMoN   -  Dec 21, 2006

I suggest using hash tables instead of variables.

 Respond  
Setever   -  Dec 20, 2006

:( Thanks, CaptainHollyShort. I was hoping for a better score, but I guess a 6.5 will suffice, as long as I get some feedback.

 Respond  
Naemuti   -  Dec 20, 2006

This deserves WAY more than a 6.5 =/

Hawkee really needs scorers that don\'t just hit 5/10

 Respond  
Brandon   -  Dec 18, 2006

Uh.... Very nice butttttt....

dadmin < For that CMD, Why not use a window, so i dunt have to see this in my channel. Thanks,....

~ Very Nice

 Respond  
Lindrian   -  Dec 18, 2006

nice, very nice!

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.