Sign in to follow this  
Followers 0
Stimpak

The Robco Effect

7 posts in this topic

Just a small function to type a character one by one, like the Robco terminals from the Fallout games.

Not sure if this would be useful to anyone, but I was recreating a Robco terminal and decided to share this.

 

Example Usage:

Robco('Robco Industries Unified Operating System', $Terminal, 200)

Function:

Func Robco($string, $control, $time)
   $Temp = ''
   $Str = StringSplit($string, '')
   For $C = 1 To $Str[0]
      GUICtrlSetData($control, $Temp & $Str[$C])
      $Temp &= $Str[$C]
      Sleep($time)
   Next
EndFunc

Full Example:

#include <GUIConstants.au3>

GUICreate("Robco Terminal", 500, 400)
$Terminal = GUICtrlCreateLabel("", 200, 30, 150, 30)
GUISetState()
Robco('Robco Industries Unified Operating System', $Terminal, 200)

While 1
   $Msg = GUIGetMsg()
   Switch $Msg
   Case $GUI_EVENT_CLOSE
      Exit
   EndSwitch
WEnd

Func Robco($string, $control, $time)
   $Temp = ''
   $Str = StringSplit($string, '')
   For $C = 1 To $Str[0]
      GUICtrlSetData($control, $Temp & $Str[$C])
      $Temp &= $Str[$C]
      Sleep($time)
   Next
EndFunc

Share this post


Link to post
Share on other sites



... funny,
I also added a scoreboard effect function....

#include <GUIConstants.au3>

GUICreate("Robco Terminal", 500, 400)
$Terminal = GUICtrlCreateLabel("", 200, 30, 150, 30)
GUISetState()
; Robco('Robco Industries Unified Operating System', $Terminal, 200)
Scoreboard('Robco Industries Unified Operating System', $Terminal, 80)

While 1
    $Msg = GUIGetMsg()
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func Robco($string, $control, $time)
    $Temp = ''
    $Str = StringSplit($string, '')
    For $C = 1 To $Str[0]
        GUICtrlSetData($control, $Temp & $Str[$C])
        $Temp &= $Str[$C]
        Sleep($time)
    Next
EndFunc   ;==>Robco

Func Scoreboard($string, $control, $time)
    Local $Y = StringToASCIIArray($string), $Z[UBound($Y)], $match = 0
    For $i = 0 To UBound($z) - 1
        $z[$i] = 31
    Next
    While $match < UBound($z)
        $match = 0
        For $i = 0 To UBound($z) - 1
            If $z[$i] <> $Y[$i] Then $z[$i] += 1
            $match += $z[$i] = $Y[$i]
        Next
        GUICtrlSetData($control, StringFromASCIIArray($z))
        Sleep($time)
    WEnd
EndFunc   ;==>Scoreboard
1 person likes this

small minds discuss people average minds discuss events great minds discuss ideas.... and use AutoIt....

Share this post


Link to post
Share on other sites

I like that scoreboard effect. I'm gonna use it in some of my scripts and thank you for sharing it.

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Found a little bug where you cant close the window while the text is being typed out.

Fix:

#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>

GUICreate("Robco Terminal", 500, 400)
$Terminal = GUICtrlCreateLabel("", 200, 30, 150, 30)
GUISetState()
Robco('Robco Industries Unified Operating System', $Terminal, 200)

While 1
   $Msg = GUIGetMsg()
   Switch $Msg
   Case $GUI_EVENT_CLOSE
      Exit
   EndSwitch
WEnd


Func Robco($string, $control, $time)
    AdlibRegister("IsClosedPressed", 50);use 50 else the function would be called to late and the GUI wouldn't close. Can be lowered even more but i don't know if the CPU would approve...
   $Temp = ''
   $Str = StringSplit($string, '')
   For $C = 1 To $Str[0]
        GUICtrlSetData($control, $Temp & $Str[$C])
        $Temp &= $Str[$C]
        Sleep($time)
   Next
   AdlibUnRegister("IsClosedPressed")
EndFunc


Func IsClosedPressed()
    $iMsg=GUIGetMsg()
    If $iMsg = $GUI_EVENT_CLOSE Then
        Exit
    EndIf
EndFunc

hope i could help  :thumbsup:  :bye:

Edited by ImOracle

Share this post


Link to post
Share on other sites

Found a little bug where you cant close the window while the text is being typed out.

Fix:

#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>

GUICreate("Robco Terminal", 500, 400)
$Terminal = GUICtrlCreateLabel("", 200, 30, 150, 30)
GUISetState()
Robco('Robco Industries Unified Operating System', $Terminal, 200)

While 1
   $Msg = GUIGetMsg()
   Switch $Msg
   Case $GUI_EVENT_CLOSE
      Exit
   EndSwitch
WEnd


Func Robco($string, $control, $time)
    AdlibRegister("IsClosedPressed", 50);use 50 else the function would be called to late and the GUI wouldn't close. Can be lowered even more but i don't know if the CPU would approve...
   $Temp = ''
   $Str = StringSplit($string, '')
   For $C = 1 To $Str[0]
        GUICtrlSetData($control, $Temp & $Str[$C])
        $Temp &= $Str[$C]
        Sleep($time)
   Next
   AdlibUnRegister("IsClosedPressed")
EndFunc


Func IsClosedPressed()
    $iMsg=GUIGetMsg()
    If $iMsg = $GUI_EVENT_CLOSE Then
        Exit
    EndIf
EndFunc

hope i could help  :thumbsup:  :bye:

That isn't a bug. That is completely normal. Closing the window before completing my desired task seems slightly counter-productive in my view.

Share this post


Link to post
Share on other sites

That isn't a bug. That is completely normal. Closing the window before completing my desired task seems slightly counter-productive in my view.

well back in the days when you were watching porn and youre mom came into the room and you quickly tried closing the browser there wasnt a popup like "dude the video hasnt even finished, why are you closing me ;("

at least thats how i would look at it.

and sorry if that example was a bit weird, harsh whatever.  :thumbsup:  :bye:

Share this post


Link to post
Share on other sites

We grew up completely different.

@Ontpic: Well thanks sharing it otherwise. It could prove useful to me maybe, but I usually use an {ESC} hotkey to close my scripts. I use a laptop, and I find it's just easier to hit Esc rather than touching my mousepad. :thumbsup:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0