Typos Slot Machine

By Typo on Dec 18, 2008

Simple slot machine that includes wilds, adjustable betting, realistic fealing spins and more.

Payouts based on what you match, 3 Plums gets you 3 times the bet all the way up to 3 Wild!'s gets a payout of 10 times the bet. See the Payouts tab for a list of all payouts.

Includes Wild! symbols to make things a little more exciting.

Play items randomly cycle mimicking a real slot machine. This means you see random items cycling in each box and they stop in order from left to right just like real slot machines and the time it takes each to stop is slightly randomized for a more authentic feal.

Adjustable bet from 5-100 credits and betting will be automatically adjusted if credits equal less than the bet so that you dont have to adjust it down to the max available credits when your running low.

The Spin! button changes to a Stop! button when the game is in play so that you can prematurely stop the slots spinning. This is fun for quicker plays or if your just fealing lucky and think stopping the spin sooner may help your odds.

First pic shows a win.
Second pic shows a loss.
Third pic shows mid-spin.

menu * { 
  <[Typos Slot Machine]>:dialog $iif($dialog(TyposSlots),-ev,-md) TyposSlots TyposSlots 
dialog TyposSlots {
  title "Typos Slot Machine"
  size -1 -1 106 120
  option dbu
  box "", 13, 2 10 102 106
  tab "Slot Machine", 21, 0 -2 105 120
  box "", 14, 4 30 98 30, tab 21
  box "", 11, 4 13 98 17, tab 21
  box "", 10, 4 77 98 24, tab 21
  box "", 9, 4 60 98 17, tab 21
  edit "Wild!", 2, 5 65 30 10, tab 21 read center
  edit "Wild!", 3, 38 65 30 10, tab 21 read center
  edit "Wild!", 4, 71 65 30 10, tab 21 read center
  text "Total credits.", 16, 8 37 32 8, tab 21
  text "Current bet.", 19, 8 49 32 8, tab 21
  button "Spin!", 1, 33 83 40 15, tab 21 default
  button "Quit", 6, 41 103 24 10, tab 21 ok cancel
  button "Reset credits", 17, 63 48 34 9, tab 21
  combo 20, 63 48 34 9, tab 21 drop
  edit "", 15, 63 36 34 10, tab 21 read center
  edit "Spin To Win!!!", 12, 20 18 66 10, tab 21 read center
  tab "Payouts", 22
  text "3 4 5 6 7 8 9 10", 25, 75 38 7 53, tab 22 center
  text "X X X X X X X X", 24, 70 38 4 53, tab 22 center
  text "Plum Blueberrys Grapes Orange Banana Apple Cherries Wild!", 23, 24 38 27 53, tab 22 center
  text "Bet Bet Bet Bet Bet Bet Bet Bet", 29, 60 38 8 53, tab 22 center
  text "= = = = = = = =", 28, 51 38 7 53, tab 22 center
  box "", 27, 23 35 60 56, tab 22
on *:DIALOG:TyposSlots:init:0:{
  var %slotbets 5
  did -bh $dname 17
  did -ra $dname 2-4 Wild!
  did -ra $dname 15 $iif(%typosslotscredits,$v1,100)
  while (%slotbets < 101) { 
    did -a TyposSlots 20 %slotbets
    inc %slotbets 5 
  did -c TyposSlots 20 $iif($iif($didwm($dname,20,%typosslotsbet),$v1,1) > $didwm($dname,20,$did($dname,15)),$v2,$v1)
on *:DIALOG:TyposSlots:sclick:*:{
  if ($did == 1) {
    if ($timer(typosslots3)) {
      .timertyposslots* off
      did -ra TyposSlots 1 Spin!
    else {
      if ($did($dname,20) > $did($dname,15)) {
        did -ra $dname 12 !INVALID BET! 
      set %slotitems Plum Pineapple Grapes Orange Banana Apple Cherries Wild!
      did -ra $dname 15 $iif($calc($did($dname,15) - $did($dname,20)) < 0,0,$v1)
      set %typosslotscredits $did(TyposSlots,15)
      did -ra $dname 12 Spinning.....
      did -ra TyposSlots 1 Stop!
      .timerTyposSlots1 -m 0 125 did -ra $dname 2 $!gettok(%slotitems,$r(1,8),32)
      .timerTyposSlots11 0 $r(2,4) .timerTyposSlots1 off 
      .timerTyposSlots2 -m 0 125 did -ra $dname 3 $!gettok(%slotitems,$r(1,8),32)
      .timerTyposSlots22 0 $r(4,6) .timerTyposSlots2 off
      .timerTyposSlots3 -m 0 125 did -ra $dname 4 $!gettok(%slotitems,$r(1,8),32)
      .timerTyposSlots33 0 $r(6,8) .timerTyposSlots3 off
      .timerTyposSlotswol -m 0 125 slotcheck
  if ($did == 17) {
    did -ra $dname 15 100 
    did -ev $dname 1,20
    did -hb $dname 17
    did -c $dname 20 $iif($didwm($dname,20,%typosslotsbet),$v1,1)
    set %typosslotscredits 100
  if ($did == 20) { set %typosslotsbet $did($dname,$did).seltext }
alias slotcheck {
  if (!$timer(TyposSlots3)) {
    .timerTyposSlots* off
    did -ra TyposSlots 1 Spin!
    var %slotwilds $iif($did(TyposSlots,2) == Wild!,2) $iif($did(TyposSlots,3) == Wild!,3) $iif($did(TyposSlots,4) == Wild!,4), %slotpos 2, %slotresult $did(TyposSlots,2) $did(TyposSlots,3) $did(TyposSlots,4)
    if (%slotwilds) {
      if ($numtok(%slotwilds,32) isnum 2-3) { goto Win }
      else {
        while (%slotpos < 5) {
          var %slotmatch %slotmatch $iif(%slotpos !isin %slotwilds,$didtok(TyposSlots,%slotpos))
          inc %slotpos
        if ($gettok(%slotmatch,1,32) == $gettok(%slotmatch,2,32)) { goto Win }
        else { goto Lose }
    elseif ($didtok(TyposSlots,2) == $didtok(TyposSlots,3)) && ($didtok(TyposSlots,3) == $didtok(TyposSlots,4)) { goto Win }
    else { goto Lose }
    var %slotswinperc $iif($numtok(%slotwilds,32) == 3,10,$iif(Plum isin %slotresult,4,$iif(Pineapple isin $v2,4,$iif(Grapes isin $v2,5,$iif(Orange isin $v2,6,$iif(Banana isin $v2,7,$iif(Apple isin $v2,8,$iif(Cherries isin $v2,9,$iif(Wild! isin $v2,10))))))))), %slotwinnings $calc($did(TyposSlots,20) * %slotswinperc)
    did -ra TyposSlots 12 You WIN %slotwinnings credits!
    did -ra TyposSlots 15 $calc($did(TyposSlots,15) + %slotwinnings)
    set %typosslotscredits $did(TyposSlots,15)
    goto End
    did -ra TyposSlots 12 $iif($r(1,3) == 1,Better luck next time!,$iif($v1 == 2,No credits for you.,Please try again.))
    if ($did(TyposSlots,15) < $did(TyposSlots,20)) { did -c TyposSlots 20 $didwm(TyposSlots,20,$v1) }
    if (!$v1) {
      did -bh TyposSlots 20
      did -ev TyposSlots 17
      did -b TyposSlots 1
      did -ra TyposSlots 12 !!YOUR BROKE!!


Sign in to comment.
Lucius   -  Aug 30, 2010

excellent script, neat and looks good, does exactly what it should.
10/10 +like

Jonesy44   -  Aug 30, 2010

&.. what neptune said.. i like :) can i like his comment? ;)

Jonesy44   -  Aug 30, 2010


Warriorii   -  Aug 30, 2010

Well i like it and it works great, it's very neatly done and and i rated it a 7 and a like. I wouldn't worry about the people that that make votes low just because their upset with u or more than likely because they can't do it. keep up the good work and don't let these kind of people get to you :>

Vermillion   -  Dec 19, 2008

Only found one thing wrong with it :P That is that the Reset Credits box is a wee bit too small, it's not wide enough lol. Maybe add about 2 pixels :)

Bullet_Dodger   -  Dec 19, 2008

I dont give a shoot either way everyone hates my scripts lol!

I voted a 10 =X

^Neptune   -  Dec 19, 2008

I think the rating system causes alot of problems, what with users (myself included) complaining about scores. If we just kept the like system, and maybe incorporate a flagging system, that could work imo.

Hawkee   -  Dec 19, 2008

Typo, the "like" system was introduced to address these concerns. It's a public voting system so you can see who likes your snippet. Also, likes are what bump snippets to the front page, not the score. We've even lessened the real estate for the score on the snippet listing page because of these concerns. It's no longer a large number but a small font that requires a little searching to seek out. The "likes" are much more prominent and will be the ongoing currency of the site.

^Neptune   -  Dec 19, 2008

According to Zmodem some time ago, mIRC 6.42 which will be released December 22nd (ish) will have 4 new dialog controls (ProgressBar, TreeView, ListView, RichEdit), with the RichEdit having the ability to change colour, font and size of text in the RichEdit.

Agreed though, and maybe even an option to turn rating off altogether when submitting a snippet. As for the "5 1's = off" thing, maybe have a "Flag" option for unratable snippets?

FYI, I voted 7.

Typo   -  Dec 19, 2008

Someone voted this like a 2 or 3. It was at like 7.6 with 3 votes and is now at 6.0 with 4 votes.

This wouldn't bother me except that this obviously dissatisfied person takes the time to rate my script crappily but can't find it in them to share with the rest of us what it is they find so wrong with with the code.

Even if the score was only 7.0 and is now 6.0 that means that the anon user only voted 3 by my rather hasty calculations and that just seems rude in my opinion.

I know its not a nice script and is just a silly ans useless game and I will even admit the coding could probably be cleaned up a little more but this seems like a personal dig to me and thats not at all what this site is intended for.

Crap like this makes a lot of people just stop posting and honestly even tho I refuse to let it stop me I completely understand why they let it stop them.

Personally, I vote for a rating system where it shows everyone who rated what how much.

Then maybe we can notice patterns of losers voting out of malice and could then weed them out.

Just my two cents.

Typo   -  Dec 18, 2008

Updated to properly track and reset the amount you are betting to the last amount selected when the credits are reset or the dialog restarted.

Kirby: I would have to use mdx or dcx dialog extensions to get a better looking dialog or to make it look really good I would need to do it using picwins. I'm not sure I want to put that kind of time into this script but it is something I am thinking about.

Thanks again everyone for the comments, ratings and likes.

Kirby   -  Dec 18, 2008

Hmm, looks good.
Is there any way to implement colors into the dialog so it looks nicer?

Typo   -  Dec 18, 2008

Thanks for all the comments everyone. I didnt even notice I accidently left blueberry in the payout list instead of pineapple, that has been fixed since it's an easy fix, I will address the zero bet later tho it techincally isnt an issue since you cannot win any credits when you bet 0.

If I want it to remember the bet you had it on then I have to add another variable and I was just avoiding doing that so I let it reset the bet to blank upon credits reset. I will fix that one way or the other and upload a screenshot in an hour or two.

Lazy   -  Dec 18, 2008

Ah the error occurred on 6.21. I just loaded up 6.35 and it didn't give me that error message. Only 2 fixes I can see right now is the one Neptune^ posted and renaming Blueberry to Pineapple in the payout list.

napa182   -  Dec 18, 2008

pwnisher3 all i did was fix up the one you made. I tried to keep it the same way you had it.

pwnisher3   -  Dec 18, 2008

it is pretty good Typo :) sorry i didn't check the forum to see that you replied :P it is better than the one me and napa made. and thanks for the help on that napa :)

Bullet_Dodger   -  Dec 18, 2008

Lazy, What mIRC are you using?

napa182   -  Dec 18, 2008

As i told you on the server Nice work Typo ;x
8/10 + like
and i dont get that error Lazy is talking about

Lazy   -  Dec 18, 2008

Seem to get an error when there is a Wild! in one of the 3 slots. I don't know if it only happens when you don't win or what, but this is what I get.

  • Invalid format: $iif (line 87, slots.mrc)

Line 87 in the 'slotcheck' alias:

var %slotmatch %slotmatch $iif(%slotpos !isin %slotwilds,$didtok(TyposSlots,%slotpos))

The status area stays on Spinning.....

Also, Pineapple isn't in the payout list.

Hawkee   -  Dec 18, 2008

How about a screenshot for us non-mIRC users to see?

Bullet_Dodger   -  Dec 18, 2008

Good script 10/10 i just tested it :D

Bullet_Dodger   -  Dec 18, 2008

Any chance of a Screenshot?

Viper01   -  Dec 18, 2008

there goes ^Neptune, cheating the system again :\

havent had a chance to test yet, if i find time i'll test today

^Neptune   -  Dec 18, 2008

Love the spin effects. However, I could find one tiny little niggle.. if you run out of credits and click the reset credits button, the combo list goes blank. Then you can spin for 0 credits :/

Good job overall though. :]

Cheiron   -  Dec 18, 2008

very very nice Typo. nice and smooth. didnt find any issues with it. gets a 7 and a like :D

Typo   -  Dec 18, 2008

Something I threw together the other day when someone was asking for help on a different one and then didn't need help anymore.

I haven't released anything in so long that I thought why not put this on just for the heck of it.


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.