Jump to content
chain

Quote System

Recommended Posts

  • Administrators
;; ___________________________________________________________________________________________________________________________________________________________________________________  
;;/                                                                                                                                                                                   \
;;|           _____                    _____                    _____                    _____                    _____                    _____                    _____             |          
;;|          /\    \                  /\    \                  /\    \                  /\    \                  /\    \                  /\    \                  /\    \            |         
;;|         /::\    \                /::\____\                /::\    \                /::\    \                /::\    \                /::\    \                /::\    \           |          
;;|        /::::\    \              /::::|   |               /::::\    \              /::::\    \              /::::\    \              /::::\    \              /::::\    \          |         
;;|       /::::::\    \            /:::::|   |              /::::::\    \            /::::::\    \            /::::::\    \            /::::::\    \            /::::::\    \         |         
;;|      /:::/\:::\    \          /::::::|   |             /:::/\:::\    \          /:::/\:::\    \          /:::/\:::\    uck\          /:::/\:::\    \          /:::/\:::\    \        |         
;;|     /:::/__\:::\    \        /:::/|::|   |            /:::/__\:::\    \        /:::/__\:::\    \        /:::/__\:::\    \        /:::/  \:::\    \        /:::/__\:::\    \       |         
;;|    /::::\   \:::\    \      /:::/ |::|   |           /::::\   \:::\    \      /::::\   \:::\    \      /::::\   \:::\    \      /:::/    \:::\    \      /::::\   \:::\    \      |         
;;|   /::::::\   \:::\    \    /:::/  |::|   | _____    /::::::\   \:::\    \    /::::::\   \:::\    \    /::::::\   \:::\    \    /:::/    / \:::\    \    /::::::\   \:::\    \     |         
;;|  /:::/\:::\   \:::\    \  /:::/   |::|   |/\    \  /:::/\:::\   \:::\    \  /:::/\:::\   \:::\    \  /:::/\:::\   \:::\____\  /:::/    /   \:::\ ___\  /:::/\:::\   \:::\    \    |         
;;| /:::/__\:::\   \:::\____\/:: /    |::|   /::\____\/:::/__\:::\   \:::\____\/:::/__\:::\   \:::\____\/:::/  \:::\   \:::|    |/:::/____/  ___\:::|    |/:::/__\:::\   \:::\____\   |         
;;| \:::\   \:::\   \::/    /\::/    /|::|  /:::/    /\:::\   \:::\   \::/    /\:::\   \:::\   \::/    /\::/   |::::\  /:::|____|\:::\    \ /\  /:::|____|\:::\   \:::\   \::/    /   |         
;;|  \:::\   \:::\   \/____/  \/____/ |::| /:::/    /  \:::\   \:::\   \/____/  \:::\   \:::\   \/____/  \/____|:::::\/:::/    /  \:::\    /::\ \::/    /  \:::\   \:::\   \/____/    |         
;;|   \:::\   \:::\    \              |::|/:::/    /    \:::\   \:::\    \       \:::\   \:::\    \            |:::::::::/    /    \:::\   \:::\ \/____/    \:::\   \:::\    \        |         
;;|    \:::\   \:::\____\             |::::::/    /      \:::\   \:::\____\       \:::\   \:::\____\           |::|\::::/    /      \:::\   \:::\____\       \:::\   \:::\____\       |         
;;|     \:::\   \::/    /             |:::::/    /        \:::\   \::/    /        \:::\   \::/    /           |::| \::/____/        \:::\  /:::/    /        \:::\   \::/    /       |          
;;|      \:::\   \/____/              |::::/    /          \:::\   \/____/          \:::\   \/____/            |::|  ~|               \:::\/:::/    /          \:::\   \/____/        |         
;;|       \:::\    \                  /:::/    /            \:::\    \               \:::\    \                |::|   |                \::::::/    /            \:::\    \            |         
;;|        \:::\____\                /:::/    /              \:::\____\               \:::\____\               \::|   |                 \::::/    /              \:::\____\           |         
;;|         \::/    /                \::/    /                \::/    /                \::/    /                \:|   |                  \::/____/                \::/    /           |         
;;|          \/____/                  \/____/                  \/____/                  \/____/                  \|___|                                            \/____/            |
;;\___________________________________________________________________________________________________________________________________________________________________________________/     

;; |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Eneerge's Quote Script v1.2       ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;; ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||   Without all bells and whistles  ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;; ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||                :)                 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 



;; ____________________________________________________________________________________________________ 
;; _________________________________________ POPUPS GUI _______________________________________________ 
;; ____________________________________________________________________________________________________
alias nrg_popupStatus {
  set %nrg_popup true
  var %status $nrg_checkStatus($1,$2)
  unset %nrg_popup

  if ((%status == quote_isOp) || (%status == quote_isVoice) || (%status == quote_isOp) || (%status == quote_isAllowed)) { return allowed }
  if (%status == quote_isBanned) { return banned }

  return false
}
alias nrg_popupStatusExact {
  set %nrg_popup true
  var %status $nrg_checkStatus($1,$2)
  unset %nrg_popup

  if (%status == quote_isAllowed) { return (Allow List) }
  else if (%status == quote_isOp) { return (ChanOP) }
  else if (%status == quote_isVoice) { return (ChanVoice) }

  return $null
}
menu nicklist {
  -
  NRG-Quote
  .Print quote from $1:{
    var %return_value = $nrg_quote($1) 
    if (%return_value == quote_noneExist) { nrg_stdo quote_noneExist $me $1 } 
    else { nrg_stdo quote_outputQuote $chan $1 %return_value }
  }
  .-
  .View $1 $+ 's quote DB:{
    var %return_value = $nrg_quote($1) 
    if (%return_value == quote_noneExist) { nrg_stdo quote_noneExist $me $1 } 
    else { /run $mircdirquotesdb $+ \ $+ $1 $+ .txt }
  }
  .Delete $1 $+ 's quote DB:{
    var %return_value = $nrg_quote($1) 
    if (%return_value == quote_noneExist) { nrg_stdo quote_noneExist $me $1 } 
    else { 
      if ($$?="Are you sure you would like to completely purge $1 $+ 's quotedb (y/n)" == y) {
        /remove $mircdirquotesdb $+ \ $+ $1 $+ .txt 
      }
    }
  }
  .-
  .Add a quote to $1 $+ 's DB:{
    var %nrg_qquote = $$?="What quote would you like to add to $1 $+ 's DB?" 

    var %return_value = $nrg_addquote($1,%nrg_qquote) 

    if (%return_value == quote_Exists) { nrg_stdo quote_Exists $me $1 } 
    else if (%return_value == quote_Added) { nrg_stdo quote_Added $me $1 %nrg_qquote }
  }
  .-
  .$iif($nrg_popupStatus($1,$chan) == banned,$style(1)) Banned:{
    ;;               COMMENT: User is banned, so toggling would unban them
    if ($nrg_popupStatus($1,$chan) == banned) {
      .ruser $1 1
      .nrg_stdo quote_remBan $me $1
    }
    ;;               COMMENT: User is un-banned, so toggling would ban them
    else { 
      .nrg_ban $1 
      .nrg_stdo quote_addBan $me $1
    }
  }
  .$iif($nrg_popupStatus($1,$chan) == allowed,$style(1)) Allowed $nrg_popupStatusExact($1,$chan):{
    if ($nrg_popupStatus($1,$chan) == false) {
      .nrg_allow $1
      .nrg_stdo quote_addAllow $me $1
    }

    else if ($nrg_popupStatus($1,$chan) == banned) {
      .ruser $1 1
      .nrg_stdo quote_remBan $me $1
      if ($nrg_popupStatus($1,$chan) == false) {
        .nrg_allow $1
        .nrg_stdo quote_addAllow $me $1
      }
    }
    else if ($nrg_popupStatus($1,$chan) == allowed) {
      set %nrg_popup true
      var %status $nrg_checkStatus($1,$chan)
      unset %nrg_popup

      if (%status == quote_isAllowed) {
        .ruser $1 1
        .nrg_stdo quote_remAllow $me $1
      }

      else {
        .nrg_allow $1
        .nrg_stdo quote_addAllow $me $1
      }
    }
  }
  .-
  .Open DB Folder:/run $mircdirquotesdb
}

;; ____________________________________________________________________________________________________ 
;; _________________________________________ LOADING COMMANDS _________________________________________ 
;; ____________________________________________________________________________________________________
on *:LOAD:{
  if (!$exists($mircdirquotesdb)) { mkdir $mircdirquotesdb }
  set %nrg_active 0

  echo -a 4Successfully loaded Eneerge's quoting system.
  echo -a 4Quotes will be saved to:3 $mircdirquotesdb
}


;; ____________________________________________________________________________________________________ 
;; _________________________________________ ALIAS COMMANDS ___________________________________________ 
;; ____________________________________________________________________________________________________

;; ############# nrg_floodcheck - this command checks to see if the script is being flooded.  If so, it will return true and halt for 30 seconds.
;;                                A flood is defined as receiving more than 5 requests within 60 seconds.
alias nrg_floodcheck {
  if (%nrg_popup == true) { return false }
  inc %nrg_active
  if (%nrg_lastcmd != $null) {
    if ($calc(%nrg_lastcmd + 30) >= $ctime) {
      if (%nrg_active > 7) {
        set %nrg_flood $ctime
        return true
      }  
    }
    else { unset %nrg_flood | set %nrg_active 0 }
  }

  if (%nrg_flood == $null) {
    set %nrg_lastcmd $ctime
    return false
  }
}

;; ############# nrg_clearFlood - This command allows you to clear the flood status
alias nrg_clearflood {
  unset %nrg_flood
  unset %nrg_lastcmd
  set %nrg_active 0
}

;; ############# nrg_checkStatus - This returns the status of a user and/or the script.  A true value allows the script to execute.
;;                                 The script will return true only if all of the following conditions are met:
;;                                 1) Script is NOT disabled
;;                                 2) A flood has NOT been detected
;;                                 3) User is NOT banned

;;                                 and if ONE (not exclusively) of the following conditions are met:
;;                                 1) User is a channel voice/operator  OR
;;                                 2) User is on the allow list

alias nrg_checkStatus {
  if ((%nrg_disabled != true)  && ($nrg_floodcheck != true)) {
    if ($level($address($1,1)) == nrg_banned) { return quote_isBanned }
    else {
      if ($level($address($1,1)) == nrg_allowed) { return quote_isAllowed }
      else if ($1 isop $2) { return quote_isOp } 
      else if ($1 isvoice $2) { return quote_isVoice }
    }
  }
  return false
}

;; ############# nrg_ban - Bans a user from using the system by adding their user@host to the list of banned users.
;;                         NOTE: This command will overwrite nrg_allow so the user will no longer be able to use the script.
alias nrg_ban {
  if ($1 !ison $chan) { nrg_stdo quote_nickNotFound_inChan $me $1 $chan }
  else { .guser nrg_banned $1 1 }
}

;; ############# nrg_allow - Explicitly allows a user to use the quote script, even if they aren't an op or voice
;;                           NOTE: This command will overwrite nrg_ban so the user will regain access to use the script.
alias nrg_allow {
  if ($1 !ison $chan) { nrg_stdo quote_nickNotFound_inChan $me $1 $chan }
  else {
    .guser nrg_allowed $1 1
  }
}

;; ############# Enable/Disable - These commands allow you to enable or disable the script
alias nrg_disable { set %nrg_disabled true }
alias nrg_enable { unset %nrg_disabled }

;; ____________________________________________________________________________________________________ 
;; _________________________________________ CHANNEL COMMANDS _________________________________________ 
;; ____________________________________________________________________________________________________

;; ############# AddQuote Commands - Commands associated with adding quotes to a database
alias nrg_addquote {
  if ($2 == $null) { nrg_stdo quote_invalidAddQuote $me $1 | halt }

  ;; COMMENT: Make sure if a new file is created that it does not start with a number.  That would mess up everything!  Halt if this is the case.
  if (!$exists($mircdirquotesdb\ $+ $1 $+ .txt)) { 
    if ($2 isnum) { halt }
    else { write $mircdirquotesdb\ $+ $1 $+ .txt $2- | return quote_Added | halt }
  }

  ;; COMMENT: Make sure current quote does not already exist
  $read($mircdirquotesdb\ $+ $1 $+ .txt,s,$2-)
  if ($readn == 0) {
    write $mircdirquotesdb\ $+ $1 $+ .txt $2-
    return quote_Added
  }
  else { return quote_Exists }
}

on *:TEXT:!addquote*:#:{
  if ($len($2) > 15) { halt }
  var %status [ $+ [ $nick ] ] $nrg_checkStatus($nick,$chan)
  if ((%status [ $+ [ $nick ] ] != false) && ($2 != $NULL) && (%status [ $+ [ $nick ] ] != quote_isBanned)) {
    var %return_value = $nrg_addquote($2,$3-)

    if (%return_value == quote_Exists) { nrg_stdo quote_Exists $nick $2 }
    else if (%return_value == quote_Added) { nrg_stdo quote_Added $nick $2 $3- }
  }
}

;; ############### Quote - Commands associated with retrieving a quote from a local database (text file)
;; $1 = nick
alias nrg_quote {
  if ($1 == $null) { nrg_stdo quote_invalidQuote $me $1 }

  if (!$exists($mircdirquotesdb\ $+ $1 $+ .txt)) { return quote_noneExist }
  else {
    if (%nrg_quoteline_ [ $+ [ $1 ] ] >= $lines($mircdirquotesdb\ $+ $1 $+ .txt)) { unset %nrg_quoteline_ [ $+ [ $1 ] ] }

    inc %nrg_quoteline_ [ $+ [ $1 ] ]
    var %nrg_currentQuote [ $+ [ $1 ] ] $read($mircdirquotesdb\ $+ $1 $+ .txt, %nrg_quoteline_ [ $+ [ $1 ] ] )

    return $readn %nrg_currentQuote [ $+ [ $1 ] ] $chr(40) $+ $rand(1,100) $+ $chr(41)
  }
}

on *:TEXT:!quote*:#:{
  var %status [ $+ [ $nick ] ] $nrg_checkStatus($nick,$chan)

  if ((%status [ $+ [ $nick ] ] != false) && ($2 != $NULL) && (%status [ $+ [ $nick ] ] != quote_isBanned)) {
    var %return_value = $nrg_quote($2)

    if (%return_value == quote_noneExist) { .nrg_stdo quote_noneExist $nick $2 | halt }
    else { 
      nrg_stdo quote_outputQuote $chan $2 %return_value
    }
  }
}
on *:INPUT:#:{
  if ($1 == !quote) {  
    var %return_value = $nrg_quote($2)

    if (%return_value == quote_noneExist) { .nrg_stdo quote_noneExist $me $2 | halt }
    else { 
      nrg_stdo quote_outputQuote $chan $2 %return_value
      halt
    }
    halt
  }
}

;; ############# nrg_stdo - This command consolidates all standard messages so that they can be easily modified from one spot.
;;                      $1            $2               $3                 $4
;; syntax: nrg_stdo <error_id> <recipient nick> <requested nick> (optional)<extra text>
alias nrg_stdo {
  var %error_id = $1
  var %recipient_nick = $2
  var %requested_nick = $3

  if (%recipient_nick == $me) { .alias /nrg_output .echo -a $chr(36) $+ 1- }
  else if (%recipient_nick ischan) { .alias /nrg_output /msg %recipient_nick $chr(36) $+ 1- }
  else { .alias /nrg_output .notice %recipient_nick $chr(36) $+ 1- }

  if ($1 == quote_addAllow) { nrg_output Added %requested_nick to the allowed list }
  else if ($1 == quote_addBan) { nrg_output Added %requested_nick to ban list! }
  else if ($1 == quote_Added) { nrg_output Successfully added quote: < $+ %requested_nick $+ > $4- }

  else if ($1 == quote_deleted) { nrg_output Deleted Quote $chr(35) $+ $4 for %requested_nick $+ : $5- }

  else if ($1 == quote_Exists) { nrg_output That quote already exists for %requested_nick $+ ! }

  else if ($1 == quote_invalidAddQuote) { nrg_output 4An invalid call was made to addquote.  The correct syntax is /nrg_addquote <nick> <quote> }
  else if ($1 == quote_invalidQuote) { nrg_output 4An invalid call was made to quote.  The correct syntax is /nrg_quote <nick> }
  else if ($1 == quote_invalidRemQuote) { nrg_output 4An invalid call was made to remquote.  The correct syntax is /remquote <nick> <quoteid> }

  else if ($1 == quote_nickNotFound_inChan) { nrg_output Unable to find %requested_nick in $4 }
  else if ($1 == quote_noneExist) { nrg_output Database for %requested_nick does not currently exist! }
  else if ($1 == quote_notFound) { nrg_output Quote ID $4 not found for %requested_nick $+ ! }

  else if ($1 == quote_outputQuote) { nrg_output Famous quotes from %requested_nick $+ : ( $+ $chr(35) $+ $4 $+ ) $5- }

  else if ($1 == quote_remAllow) { nrg_output Removed %requested_nick from the allowed list }
  else if ($1 == quote_remBan) { nrg_output Removed %requested_nick from ban list! }

  .alias /nrg_output
}

;; ############### RemQuote - Commands associated with removing quotes
;; $1 = nick   ;   $2 = quoteid
alias nrg_remquote {
  if ($2 == $null) { nrg_stdo quote_invalidRemQuote $me $1 | halt }
  else {

    if (!$exists($mircdirquotesdb\ $+ $1 $+ .txt)) { return quote_noneExist }
    if ($lines($mircdirquotesdb\ $+ $1 $+ .txt) < $2) { return quote_notFound }
    else {        
      var %quote $read($mircdirquotesdb\ $+ $1 $+ .txt,$2)
      .write -dl $+ $2 $mircdirquotesdb\ $+ $1 $+ .txt
      if ($lines($mircdirquotesdb\ $+ $1 $+ .txt) == 0) { .remove $mircdirquotesdb\ $+ $1 $+ .txt }  ;; COMMENT: Remove database if nothing exists in the file
      return quote_Deleted %quote
    }
  }
}
on *:TEXT:!remquote*:#:{
  var %status [ $+ [ $nick ] ] $nrg_checkStatus($nick,$chan)
  if ((%status [ $+ [ $nick ] ] != false) && ($3 != $NULL) && (%status [ $+ [ $nick ] ] != quote_isBanned)) {
    var %return_value $nrg_remquote($2,$3)
    if (%return_value == quote_noneExist) { .nrg_stdo quote_noneExist $nick $2 }
    else if (%return_value == quote_notFound) { .nrg_stdo quote_notFound $nick $2 $3 }
    else if (quote_deleted isin %return_value) { .nrg_stdo quote_deleted $nick $2 $3 $right(%return_value,-13) }
  }
}

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...


×
×
  • Create New...