WPM Finder

By vegeto079 on Mar 29, 2008

Simple WPM script. Type /wpm in #mywpm to start. I may let you change the channel later on, since multiple people might be in one channel and it could get irritating!
NOTE: You MUST load the script !OR! type /loadwpm before you start!

For somebody to see what your highest/current WPM scores are, they must type !wpm

For you to show a channel what your highest/current WPM scores are, type /wpmcheck in a channel

Updates:

Saturday, March 29, 2008
3:25AM EST
You can now type /wpmcheck [channel] to display to a different channel than your active one.

3:33AM EST
You now must goto #[your nick]wpm to see your WPM instead of #mywpm.
Though you can also type /mywpm to switch this between the two.

You also can now type /loadwpm instead of having to actually load the script
Script also slighly shortened

4:53AM EST
The #[your nick]wpm feature now works correctly.

5:02AM EST
Fixed problem where it tends to erase your incorrect words and will not display how many you got incorrect, or which ones.

Monday, March 31, 2008
3:19PM EST
Timers now silenced (thanks to comments)

Monday, April 07, 2008
6:49AM EST
Fixed a few spelling errors
Deleted some unneeded parts of the script
Made /wpmcheck work, instead of you having to type /wpmshow. You now can type either.

Friday, April 11, 2008.
3:44AM EST
Timers actually silenced now..shouldve been earlier, not sure why they werent. Thanks to comments (again).

Wednesday, July 09, 2008.
8:39AM EST
Script now works properly, as before it would start tracking your time BEFORE you were allowed to type!
8:47AM EST
Spelling error fixed.

Wednesday, December 10, 2008.
3:44PM EST
Long time no update. Just cut like 50 lines of code in 'alias wpmz'. I did this by eye and cannot test it right now, so please tell me if it doesn't work.

on *:load:{
  wpmload
  echo -a WPM Script loaded! Type "wpm" in any channel to start!
  halt
}
alias loadwpm {
  wpmload
  echo -a WPM Script loaded! Type "wpm" in any channel to start!
  halt
}
alias -l wpmload {
  unset %wpm*
  set %wpm1 You are about to embark on a new career that is both challenging and rewarding.
  set %wpm2 Your ability to type as fast as possible will be an important aspect of your success.
  set %wpm3 A good way to help ensure this success is to make the keyboard your friend.
  set %wpm4 You will spend many long hours in the future, just you and your keyboard, and for these hours to be tolerable they have to be enjoyable.
  set %wpm5 Consider your keyboard an invaluable tool that requires persistence and patience to master.
  set %wpm6 As a vitally important tool of your trade it needs to be treated with respect; don't make it the recipient of your frustrations. 
  set %wpm7 The more at ease you are with your keyboard, the more successful you will be.
  set %wpm0 %wpm1 %wpm2 %wpm3 %wpm4 %wpm5 %wpm6 %wpm7
  set %mywpm #mywpm
}
alias wpma {
  set %wpm ( $+ $time $+ ) < $+ 10WPM Bot>
  echo -a %wpm This script will test you on your WPM based on an average of 5 letters per word.
  echo -a %wpm To begin, simply type "Begin" in this channel and follow further directions.
  halt
}
on *:input:#:{
  set %wpmsay $1-
  if ($active == %mywpm) { wpmb %wpmsay }
  set %wpm ( $+ $time $+ ) < $+ 10WPM Bot>
  if ($1- == wpm) && ($active != %mywpm) {
    if ($active != %mywpm) {
      echo -a %wpm You must be in %mywpm to use this script. Type /mywpm to switch this.
    }
  }
}
alias wpmb {
  set %wpm ( $+ $time $+ ) < $+ 10WPM Bot>
  if ($1- == wpm) {
    echo -a %wpm Starting script...
    wpmunsets
    .timer 01 01 wpma
    halt
  }
  if ($1- == Begin) {
    echo -a %wpm To see instructions, type Instruct. To begin the test, type Go.
    halt
  }
  if ($1- == Instruct) {
    echo -a %wpm This will show a series of words to say in @wpm. You must make the channels smaller so you can see what you need to type.
    echo -a %wpm To type what is shown, you must hit enter after every sentence to confirm how long it has taken you.
    echo -a %wpm To begin the test, type Go.
    halt
  }
  if ($1- == Go) {
    echo -a %wpm Starting test...
    echo -a %wpm I will give you 20 seconds to rearrange your windows after @wpm pops up.
    wpmstart
    halt
  }
  wpmz %wpmsay
}
alias wpmstart {
  window @wpm
  echo @wpm %wpm %wpm0
  set %wpmtotal 0
  set %wpminc 0
  set %wpminc2 0
  unset %wpmbad*
  set %wpmbad 0
  .timerwpm3 1 15 echo -a %wpm 5 Seconds left.
  .timerwpm2 1 20 echo -a %wpm Timer is now starting. Start typing now. Feel free to press enter after every sentence or only at the end.
  .timerwpm1 1 20 set %wpmcount 0
  .timerwpm4 1 20 wpmstart2
}
alias wpmstart2 {
  .timerwpm 0 0.01 inc %wpmtotal 0.01
}
alias wpmz {
  if (%wpmcount == $null) {
    echo -a %wpm Please wait until I say the test starts before you start typing!
    halt
  }
  if (pie == bad) {
    :again1
    inc %wpminc
    if ($gettok(%wpm [ $+ [ %wpminc2 ] $+ ] ,%wpminc,32) != $gettok(%wpmsay,%wpminc,32)) {
      inc %wpmbad 1
      set %wpmbad [ $+ [ %wpminc2 ] $+ ] - [ $+ [ %wpminc ] ] $gettok(%wpmsay,%wpminc,32)
    }
    if ($gettok(%wpm [ $+ [ %wpminc2 ] $+ ] ,$calc(%wpminc + 1),32) == $null) {
      goto next1
    }
    goto again1
    :next1
    inc %wpmcount
    set %wpminc 0
    inc %wpminc2
    halt
  }
if (%wpmcount > 6) || (%wpmcount < 0) {
goto end
}
    :again
    inc %wpminc
    if ($gettok(%wpm [ $+ [ $calc(%wpmcount + 1) ] ],%wpminc,32) != $gettok(%wpmsay,%wpminc,32)) {
      inc %wpmbad 1
      set %wpmbad [ $+ [ $calc(%wpmcount + 1) ] ]- [ $+ [ %wpminc ] ] $gettok(%wpmsay,%wpminc,32)
    }
    if ($gettok(%wpm [ $+ [ $calc(%wpmcount + 1) ] ],$calc(%wpminc + 1),32) == $null) {
      goto next
    }
    goto again
    :next
    inc %wpmcount
    set %wpminc 0
    halt
:end
}
alias -l wpmend {
  echo -a %wpm Test finished.
  echo -a %wpm Please wait while I find your WPM...
  .timer 01 03 wpmend2
}
alias -l wpmend2 {
  .timerwpm off
  window @wpm
  set %wpmminute $calc((%wpmtotal + %wpmbad) / 60)
  set %wpmz $calc($len(%wpm0) / %wpmminute /5)
  set %wpmminute2 $calc(%wpmtotal / 60)
  set %wpmz2 $calc($len(%wpm0) / %wpmminute2 /5)
  wpmstatus
}
alias -l wpmstatus {
  wpmunsets
  window @wpmstatus
  echo @wpmstatus %wpm Here you will see your WPM results.
  echo @wpmstatus %wpm Time taken: %wpmtotal $+ secs
  if (%wpmbad < %wpmbadb) || (%wpmbadb == $null) {
    echo @wpmstatus %wpm New Record! Incorrect words: %wpmbad
    set %wpmbadb %wpmbad
  }
  if (%wpmbad > %wpmbadb) {
    echo @wpmstatus %wpm Incorrect words: %wpmbad
  }
  if (%wpmz2 > %wpmz2b) || (%wpmz2b == $null) {
    echo @wpmstatus %wpm New Record! WPM (no deduction): %wpmz2
    set %wpmz2b %wpmz2
    goto next
  }
  if (%wpmz2 <= %wpmz2b) {
    echo @wpmstatus %wpm WPM (no deduction): %wpmz2
  }
  :next
  if (%wpmz > %wpmzb) || (%wpmzb == $null) {
    echo @wpmstatus %wpm New Record! WPM (deduction): %wpmz
    set %wpmzb %wpmz
    goto next2
  }
  if (%wpmz <= %wpmzb) {
    echo @wpmstatus %wpm WPM (deduction): %wpmz
  }
  :next2
  wpmcheck
  echo @wpmstatus %wpm Words wrong in sections:
  echo @wpmstatus %wpm Section: Amount : Words wrong
  if (%wpmbad1) /echo @wpmstatus %wpm One: %wpmbad1 : %wpmbada1
  if (%wpmbad2) /echo @wpmstatus %wpm Two: %wpmbad2 : %wpmbada2
  if (%wpmbad3) /echo @wpmstatus %wpm Three: %wpmbad3 : %wpmbada3
  if (%wpmbad4) /echo @wpmstatus %wpm Four: %wpmbad4 : %wpmbada4
  if (%wpmbad5) /echo @wpmstatus %wpm Five: %wpmbad5 : %wpmbada5
  if (%wpmbad6) /echo @wpmstatus %wpm Six: %wpmbad6 : %wpmbada6
  if (%wpmbad7) /echo @wpmstatus %wpm Seven: %wpmbad7 : %wpmbada7
  echo @wpmstatus %wpm To show these results to somebody, simply type:
  echo @wpmstatus %wpm /wpmshow
}
alias wpmcheck {
  wpmshow $1-
}
alias wpmshow {
  if ($1 == $null) {
    msg $active 11My WPM Scores:12 WPM (no deduction): %wpmz2 11|12 WPM (deduction): %wpmz 11|12 Words wrong: %wpmbad
    msg $active 11Best Scores:12 WPM (no deduction): %wpmz2b 11|12 WPM (deduction): %wpmzb 11|12 Words wrong: %wpmbadb
    halt
  }
  msg $1 11My WPM Scores:12 WPM (no deduction): %wpmz2 11|12 WPM (deduction): %wpmz 11|12 Words wrong: %wpmbad
  msg $1 11Best Scores:12 WPM (no deduction): %wpmz2b 11|12 WPM (deduction): %wpmzb 11|12 Words wrong: %wpmbadb
  halt
}
on *:text:!wpm*:#:{
  .notice $nick 11My WPM Scores:12 WPM (no deduction): %wpmz2 11|12 WPM (deduction): %wpmz 11|12 Words wrong: %wpmbad
  .notice $nick 11Best Scores:12 WPM (no deduction): %wpmz2b 11|12 WPM (deduction): %wpmzb 11|12 Words wrong: %wpmbadb
}
alias mywpm {
  set %blah $chr(35) $+ $me $+ wpm
  if (%mywpm != #mywpm) { set %mywpm #mywpm | goto mywpm }
  if (%mywpm == #mywpm) { set %mywpm %blah | goto mywpm }
  :mywpm
  echo -a %wpm You now must join %mywpm to use Peach's WPM script.
  halt
}
alias -l wpmcheck {
  set %wpminc -1
  :next
  inc %wpminc
  set %wpminc2 -1
  if (%wpminc > 7) { goto end }
  :next2
  inc %wpminc2
  if (%wpmbad [ $+ [ %wpminc ] $+ ] - [ $+ [ %wpminc2 ]  ] != $null) {
    inc %wpmbad [ $+ [ %wpminc ] ]
    if (%wpmbada [ $+ [ %wpminc ] ]) /set %wpmbada [ $+ [ %wpminc ] ] %wpmbad [ $+ [ %wpminc ] $+ ] - [ $+ [ %wpminc2 ]  ] $+ , %wpmbada [ $+ [ %wpminc ] ]
    if (!%wpmbada [ $+ [ %wpminc ] ]) /set %wpmbada [ $+ [ %wpminc ] ] %wpmbad [ $+ [ %wpminc ] $+ ] - [ $+ [ %wpminc2 ]  ]
  }
  if (%wpminc2 > $gettok(%wpm [ $+ [ %wpminc ] ],0,32)) { goto next }
  goto next2
  :end
}
alias -l wpmunsets {
  ; unset %wpmbad*
}

Comments

Sign in to comment.
vegeto079   -  Apr 11, 2008

Fixed...again. Not sure why they weren\'t silenced when I had done it before (possibly it didnt save?), but they are now.

 Respond  
HoNdAx707   -  Apr 07, 2008

you didnt silence the timers...


.timer 01 01 wmpa

thats how you would do it

 Respond  
vegeto079   -  Mar 31, 2008

Fixed, thanks.

 Respond  
Jonesy44   -  Mar 30, 2008

add a \".\" to the start: .timer x y /bla

 Respond  
vegeto079   -  Mar 29, 2008

how do i do that >.<?

 Respond  
napa182   -  Mar 29, 2008

you should really silence ur timers.

 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.