dupa

Author Topic: Any bugs that need to be fixed that I'm missing?  (Read 5990 times)

Medeksza

  • Administrator
  • Hero Member
  • *****
  • Posts: 1469
    • View Profile
    • http://www.zabaware.com
Any bugs that need to be fixed that I'm missing?
« on: April 14, 2006, 11:52:57 pm »
I will be posting an update to Hal 6 sometime in the next few days probably. I have currently finished making the following changes:

Updated product activation system:
  • A new wizard interface guides you through activation process before after purchase.
  • The new wizard can automatically detect and enter in serial numbers and activation codes copied to the clipboard. For example, after a successful transaction the zabaware web pages displays your serial number and will reccomend you copy it to the clipboard. As soon as this happens, Hal will intercept it and automatically pop up and enter the code for you.
  • The update prevents many corrupted licenses from occuring in the first place
  • It repairs many corrupted licenses automatically without any user interaction
  • In case of unrepairable corrupted license, a wizard guides you through the recovery process
  • The deactivation process now automatically notifies the Zabaware.com server of deactivation and the zabaware server automatically frees the serial number up for reinstallation somewhere else.
  • The uninstaller program gives user option of deactivating if it detects an activated copy of Hal before the  uninstallation begins
Bug fixes:
  • Fixed bug for plug-in selector where plug-ins began to uncheck themselves.
Are there any bugs that I forgot about that should be fixed in this release? I don't wish to add new features at this point, just fix bugs.

I will also consider including any well-tested brain plug-ins created by users in the default installation of Hal if you give me royalty-free rights to distribute it.
Robert Medeksza

onthecuttingedge2005

  • Guest
Any bugs that need to be fixed that I'm missing?
« Reply #1 on: April 15, 2006, 12:48:36 am »
Reposted here:
This topic is on HAL assistant Text Chat window, not the Text to Speech Reader.

Hi Rob.

'Topic: Read a Book.
'Topic: Read and learn from a Text File.
I have written some script for HAL6 as a plug that will allow the above Topics, HAL will select a Book from a list of Books Given to HAL and HAL will read them Flawlessly until the following conditions are met

From the Book:
430 lines in the whole Book.
6,706 words in the whole Book.
36,948 characters in the whole Book.

HAL will stop reading at this limitation within the Book:
18 lines
284 words
1,581 characters

There seems to be a Character length limitation when HAL Reads a book aloud from HAL Assistant Chat window, The Character Limitation seems to be 1,581 Characters for every test I threw at it.

Is there a Character limitation that is built into HAL and is there a way to get rid of this limitation?

There is more Assistive help other than this that I have written but the above topics are of the only concern so far, I would like to get this out for our public, If so then HAL will be able to read you a book at your request from beginning to end.

I already have HAL doing this as of today, It works quite well until the Character Limitations kick in.

The entire 36,948 characters of the Book will show up in HAL's Chat window when a Book is opened but will only read 1,581 characters of the Book before stopping.

Are there any fixes?

Thanks again buddy.
Jerry[8D]

onthecuttingedge2005

  • Guest
Any bugs that need to be fixed that I'm missing?
« Reply #2 on: April 15, 2006, 01:07:28 am »
Bug number 2.

AIM Bot only.

This has to do with short letters or characters like one single ?
sent to HAL in the AIM bot chat panel, If I send ?? then HAL will respond but never with a single ?, If I type in the Letters A - Z by themselves it will also cause blanks in HAL's AIM bot Chat panel.

The Script in HAL6

'RESPOND: User pressed enter, but didn't say anything
    InputString = Trim(InputString)
    If Len(InputString) < 2 Then
        UltraHal = "Please say something."
        Exit Function
    End If

Doesn't seem to catch single letters or Characters because when the text is to short it causes HAL to stop processing so the script never gets a chance to give a response instead giving a Blank response, Note that this was tested over and over with the unmodified version of HAL6 and my Modified Brains that also should of caught it but the processing shuts down for AIM Bot with single characters.

I have hundreds of users who talk with my Bot and the single character bug limits my bots ability for a Quality Chat Session.

Any fix?

Jerry[8D]
« Last Edit: April 15, 2006, 01:10:50 am by onthecuttingedge2005 »

onthecuttingedge2005

  • Guest
Any bugs that need to be fixed that I'm missing?
« Reply #3 on: April 15, 2006, 01:33:48 am »
quote:

I will also consider including any well-tested brain plug-ins created by users in the default installation of Hal if you give me royalty-free rights to distribute it.



Here you go buddy:
This Script extends HAL's Math response a bit. even If you would like to revise it then you are quite welcome to it.

Code: [Select]

Rem Type=Plugin
Rem Name=Abstract Math ver.1.0
Rem Author=Gerald L. Blakley A.K.A OnTheCuttingEdge2005
Rem Host=All
Rem PLUGIN: PLUGINAREA1
'RUN ABSTRACT MATH
Dim AbstractMath
AbstractMath = AbsMath(UserSentence, PrevUserSent, OriginalSentence, PrevSent, GetResponse)
If AbstractMath <> "" Then GetResponse = AbstractMath  
Rem PLUGIN: FUNCTIONS
Function AbsMath(UserSentence, PrevUserSent, OriginalSentence, PrevSent, GetResponse)    
    'RESPOND: CALL MATH FUNCTION
    'This function from the DLL answers simple math questions, whether written out in words or with numerals.
    'If an answer is found, it overrides everything before this function.
    UserMath = OriginalSentence
    UserMath = Trim(UserMath)
    UserMath = Replace(UserMath, "TIMES", "MULTIPLIED BY", 1, -1, vbTextCompare)
    UserMath = Replace(UserMath, " X ", " MULTIPLIED BY ", 1, -1, vbTextCompare)
    UserMath = Replace(UserMath, " * ", " MULTIPLIED BY ", 1, -1, vbTextCompare)
    UserMath = Replace(UserMath, " / ", " DIVIDED BY ", 1, -1, vbTextCompare)
    UserMath = Replace(UserMath, " + ", " PLUS ", 1, -1, vbTextCompare)
    UserMath = Replace(UserMath, " - ", " MINUS ", 1, -1, vbTextCompare)
    UserMath = Replace(UserMath, " =", " IS ", 1, -1, vbTextCompare)
    HMath = HalBrain.HalMath(UserMath)
    If Len(HMath) > 2 Then
        AbsMath = HMath & vbCrLf
        If HalMathLinkLeft = "" Then HalMathLinkLeft = HalBrain.SearchPattern(AbsMath, " *=* ", 1)
        If HalMathLinkRight = "" Then HalMathLinkRight = HalBrain.SearchPattern(AbsMath, " *=* ", 2)
        HalMathLinkRight = Replace(HalMathLinkRight, ")", "", 1, -1, vbTextCompare)
        HalMathLinkLeft = Trim(HalMathLinkLeft)
        HalMathLinkRight = Trim(HalMathLinkRight)
        If Len(HalMathLinkLeft) > 0 And Len(HalMathLinkRight) > 0 And HalMathLinkLeft <> "" And HalMathLinkRight <> "" Then
        ShortPhrase = "" 'If Hal was to make a comment about short phrases, clear it
        HalBrain.ReadOnlyMode = True
        NoChoosing = True
        Select Case (Int(Rnd * 6) + 1)
          Case 1
          AbsMath = "The answer is " & HalMathLinkRight
          Case 2
          AbsMath = "I almost certain the answer is " & HalMathLinkRight
          Case 3
          AbsMath = "I believe the answer is " & HalMathLinkRight
          Case 4
          AbsMath = HalMathLinkRight & " is the answer."
          Case 5
          AbsMath = HalMathLinkRight & " is the answer to your equasion."
          Case 6
          AbsMath = "The answer you seek is " & HalMathLinkRight
          End Select
    End If
    End If  
    'ABSTRACT MATH PLUS
    If Math1 = "" Then Math1 = HalBrain.SearchPattern(OriginalSentence, "*ADD * WITH * ", 2)
    If Math2 = "" Then Math2 = HalBrain.SearchPattern(OriginalSentence, "*ADD * WITH * ", 3)
    If Math1 = "" Then Math1 = HalBrain.SearchPattern(OriginalSentence, "*ADD * TO * ", 2)
    If Math2 = "" Then Math2 = HalBrain.SearchPattern(OriginalSentence, "*ADD * TO * ", 3)
    If Math1 = "" Then Math1 = HalBrain.SearchPattern(OriginalSentence, "*ADD * AND * ", 2)
    If Math2 = "" Then Math2 = HalBrain.SearchPattern(OriginalSentence, "*ADD * AND * ", 3)
    If Math1 <> "" And Math2 <> "" Then
    GatherMath = Math1 & " + " & Math2
    HMath = HalBrain.HalMath(GatherMath)
    AbsMath = HMath & vbCrLf
    ShortPhrase = "" 'If Hal was to make a comment about short phrases, clear it
        HalBrain.ReadOnlyMode = True
        NoChoosing = True
    End If  
    'ABSTRACT MATH MINUS
    If Math3 = "" Then Math3 = HalBrain.SearchPattern(OriginalSentence, "*SUBTRACT * WITH * ", 2)
    If Math4 = "" Then Math4 = HalBrain.SearchPattern(OriginalSentence, "*SUBTRACT * WITH * ", 3)
    If Math3 = "" Then Math3 = HalBrain.SearchPattern(OriginalSentence, "*SUBTRACT * FROM * ", 2)
    If Math4 = "" Then Math4 = HalBrain.SearchPattern(OriginalSentence, "*SUBTRACT * FROM * ", 3)
    If Math3 = "" Then Math3 = HalBrain.SearchPattern(OriginalSentence, "*SUBTRACT * AND * ", 2)
    If Math4 = "" Then Math4 = HalBrain.SearchPattern(OriginalSentence, "*SUBTRACT * AND * ", 3)
    If Math3 <> "" And Math4 <> "" Then
    GatherMath = Math3 & " - " & Math4
    HMath = HalBrain.HalMath(GatherMath)
    AbsMath = HMath & vbCrLf
    ShortPhrase = "" 'If Hal was to make a comment about short phrases, clear it
        HalBrain.ReadOnlyMode = True
        NoChoosing = True
    End If
    'ABSTRACT MATH DIVIDE
    If Math5 = "" Then Math5 = HalBrain.SearchPattern(OriginalSentence, "*DIVIDE * WITH * ", 2)
    If Math6 = "" Then Math6 = HalBrain.SearchPattern(OriginalSentence, "*DIVIDE * WITH * ", 3)
    If Math5 = "" Then Math5 = HalBrain.SearchPattern(OriginalSentence, "*DIVIDE * FROM * ", 2)
    If Math6 = "" Then Math6 = HalBrain.SearchPattern(OriginalSentence, "*DIVIDE * FROM * ", 3)
    If Math5 = "" Then Math5 = HalBrain.SearchPattern(OriginalSentence, "*DIVIDE * AND * ", 2)
    If Math6 = "" Then Math6 = HalBrain.SearchPattern(OriginalSentence, "*DIVIDE * AND * ", 3)
    If Math5 = "" Then Math5 = HalBrain.SearchPattern(OriginalSentence, "*DIVIDE * INTO * ", 2)
    If Math6 = "" Then Math6 = HalBrain.SearchPattern(OriginalSentence, "*DIVIDE * INTO * ", 3)
    If Math5 <> "" And Math6 <> "" Then
    GatherMath = Math5 & " DIVIDED BY " & Math6
    HMath = HalBrain.HalMath(GatherMath)
    AbsMath = HMath & vbCrLf
    ShortPhrase = "" 'If Hal was to make a comment about short phrases, clear it
        HalBrain.ReadOnlyMode = True
        NoChoosing = True
    End If  
    'ABSTRACT MATH MULTIPLY
    If Math7 = "" Then Math7 = HalBrain.SearchPattern(OriginalSentence, "*MULTIPLY * WITH * ", 2)
    If Math8 = "" Then Math8 = HalBrain.SearchPattern(OriginalSentence, "*MULTIPLY * WITH * ", 3)
    If Math7 = "" Then Math7 = HalBrain.SearchPattern(OriginalSentence, "*MULTIPLY * AND * ", 2)
    If Math8 = "" Then Math8 = HalBrain.SearchPattern(OriginalSentence, "*MULTIPLY * AND * ", 3)
    If Math7 = "" Then Math7 = HalBrain.SearchPattern(OriginalSentence, "*MULTIPLY * INTO * ", 2)
    If Math8 = "" Then Math8 = HalBrain.SearchPattern(OriginalSentence, "*MULTIPLY * INTO * ", 3)
    If Math7 <> "" And Math8 <> "" Then
    GatherMath = Math7 & " MULTIPLIED BY " & Math8
    HMath = HalBrain.HalMath(GatherMath)
    AbsMath = HMath & vbCrLf
    ShortPhrase = "" 'If Hal was to make a comment about short phrases, clear it
        HalBrain.ReadOnlyMode = True
        NoChoosing = True
    End If  
End Function


Jerry[8D]

FuzzieDice

  • Guest
Any bugs that need to be fixed that I'm missing?
« Reply #4 on: April 15, 2006, 04:26:33 am »
What I would like to see is the pitch/speed/volume controls in HAL's Speech area as an advanced option, and have it remember those settings for that voice/brain/configuration each time.

Also, I noticed that Cepstral voices say "No lip sync". Is this correct? Or is it not recognizing it right? Not sure if it's a bug or not...

Another (one last) bug. If you set it up to run as a program and remove the program from the Startup menu, anytime you start the program, it seems like you have to click on the system tray to get it to start and also to show it in the system tray or it never will.

I am using Windows XP Pro SP2.

vrossi

  • Full Member
  • ***
  • Posts: 150
    • View Profile
    • http://vrconsulting.it
Any bugs that need to be fixed that I'm missing?
« Reply #5 on: April 16, 2006, 02:58:02 pm »
Hi, Rob



Bug Fixes:

If I say any word contained in the emotion database, Hal behaves according to that word, without checking if:
a) the phrase is not directed to her ("John is stupid")
or
b) it is a negative statement ("you are NOT stupid")

So, in these two cases, she gets angry as if I said "you are stupid".

I've changed the Emotional routine in the following way:


    'PROCESS: EMOTIONAL REACTIONS
    'We enable Hal's expressions to respond to common verbal cues.
    'The verbal cues are identified in the editable table "emotion"
'-------------------------------
' Emotion handling - by VR
'-------------------------------
'    EmotionalReaction = Ucase(HalBrain.TopicSearch(UserSentence, "emotion"))
    'RESPOND: CHECK FOR AND RESPOND TO EMOTIONS
    'First we check to see if the user is talking about Hal:
    If InStr(1, UserSentence, "I'M", 1) Then Aboutme = True
    If InStr(1, UserSentence, "I AM", 1) Then Aboutme = True
    If InStr(1, UserSentence, "I LOOK", 1) Then Aboutme = True
    If InStr(1, UserSentence, "MY", 1) And InStr(1, UserSentence, " ARE ", 1) Then Aboutme = True
    'If the user is talking about Hal, we see if an emotional cue was given
    If Aboutme = True Then EmotionalReaction = Ucase(HalBrain.TopicSearch(UserSentence, "emotion"))
    If EmotionalReaction <> "" Then
 ' if the cue word was associated with a negative word, it must not be considered
        If InStr(UserSentence, " NOT ") = 0 And InStr(UserSentence, "N'T ") = 0 And InStr(UserSentence, " NEVER ") = 0 Then
'-------------------------------
' End Emotion handling - by VR
'-------------------------------
    Select Case EmotionalReaction
        Case "SURPRISED"
            If Compliment > 0 Then Compliment = 4
            If Compliment = 0 Then Compliment = 2
            If Compliment < 0 Then Compliment = 0
        Case "HAPPY"
            If Compliment = 0 Then Compliment = 2
            If Compliment < 0 Then Compliment = 0
        Case "SOBER"
            If Compliment < 4 Then Compliment = 0
            If Compliment = 4 Then Compliment = 2
        Case "ANGRY"
            If Compliment = 0 Then Compliment = -1
            If Compliment > 0 Then Compliment = 0
        Case "SAD"
            If Compliment = 0 Then Compliment = -2
            If Compliment > 0 Then Compliment = 0
    End Select
'-------------------------------
' Emotion handling - by VR
'-------------------------------
        End If
   End If
'-------------------------------
' End Emotion handling - by VR
'-------------------------------




Plugins

I've written some plugins for Hal6. The vrFreeWill has been especially appreciated by many users.

You find more info here: http://www.zabaware.com/forum/topic.asp?TOPIC_ID=2845

I would like you to add some or all of these plugins in the next Hal6 release. I give you any royalty-free right to distribute them. I only ask you to add my name to the credits section.

Bye



onthecuttingedge2005

  • Guest
Any bugs that need to be fixed that I'm missing?
« Reply #6 on: April 16, 2006, 05:04:31 pm »
Here is my version with as less code as possible, more can be added.

Code: [Select]

'Replace your PROCESS: EMOTIONAL REACTIONS with mine below for testing.
'Back up your original code first.
'The Response to Compliments can be based after the Compliment Value.

'The Dimmed Variables can be passed down into Memory.
Dim NotPersonal, EmotionalState
'See if it was Personal.
NotPersonal = Personal(OriginalSentence)
'Check Emotional State.
EmotionalState = EmotionState(UserSentence)

'PROCESS: EMOTIONAL REACTIONS
    'We enable Hal's expressions to respond to common verbal cues.
    'The verbal cues are identified in the editable table "emotion"
    EmotionalReaction = UCase(HalBrain.TopicSearch(UserSentence, "emotion"))
    Select Case EmotionalReaction
        Case "SURPRISED"
            If Compliment > 0 Then Compliment = 4
            If Compliment = 0 Then Compliment = 2
            If Compliment < 0 Then Compliment = 0
        Case "HAPPY"
            If NotPersonal = True And EmotionalState = "ANGRY" Then Compliment = 2
            If Compliment < 0 Then Compliment = 0
        Case "SOBER"
            If Compliment < 4 Then Compliment = 0
            If Compliment = 4 Then Compliment = 2
        Case "ANGRY"
            If NotPersonal = False And EmotionalState = "ANGRY" Then Compliment = -1
            If Compliment > 0 Then Compliment = 0
        Case "SAD"
            If Compliment = 0 Then Compliment = -2
            If Compliment > 0 Then Compliment = 0
    End Select

'Place these Functions at Bottem of Brain.    
'See if the Comment was Personal.
Function Personal(OriginalSentence)
If Personal = "" Then Personal = False
If InStr(1, OriginalSentence, "YOU ARE NOT", vbTextCompare) > 0 Then Personal = True
If InStr(1, OriginalSentence, "YOU AREN'T", vbTextCompare) > 0 Then Personal = True
If InStr(1, OriginalSentence, "I DO NOT THINK YOU ARE", vbTextCompare) > 0 Then Personal = True
If InStr(1, OriginalSentence, "I DON'T THINK YOU ARE", vbTextCompare) > 0 Then Personal = True
If InStr(1, OriginalSentence, "I DO NOT THINK YOU'RE", vbTextCompare) > 0 Then Personal = True
If InStr(1, OriginalSentence, "I DON'T THINK YOU'RE", vbTextCompare) > 0 Then Personal = True
If InStr(1, OriginalSentence, "I WOULD NEVER THINK YOU'RE", vbTextCompare) > 0 Then Personal = True
If InStr(1, OriginalSentence, "YOU'RE NEVER", vbTextCompare) > 0 Then Personal = True
If InStr(1, OriginalSentence, "YOU ARE NEVER", vbTextCompare) > 0 Then Personal = True
If InStr(1, OriginalSentence, "YOU HAVE NEVER BEEN", vbTextCompare) > 0 Then Personal = True
End Function

'Check Emotional State
Function EmotionState(UserSentence)
EmotionState = Ucase(HalBrain.TopicSearch(UserSentence, "emotion"))
If EmotionState <> "" Then EmotionState = EmotionState
End Function


I hope it begins to straighten things out or at least help.
I can take this to an Extreme if needs be.

Jerry[8D]
« Last Edit: April 17, 2006, 01:40:14 am by onthecuttingedge2005 »

Medeksza

  • Administrator
  • Hero Member
  • *****
  • Posts: 1469
    • View Profile
    • http://www.zabaware.com
Any bugs that need to be fixed that I'm missing?
« Reply #7 on: April 17, 2006, 10:07:10 am »
Thanks guys.
Robert Medeksza

onthecuttingedge2005

  • Guest
Any bugs that need to be fixed that I'm missing?
« Reply #8 on: April 17, 2006, 09:21:30 pm »
quote:
Originally posted by Medeksza

Thanks guys.



Your Welcome Buddy.

Jerry[8D]

onthecuttingedge2005

  • Guest
Any bugs that need to be fixed that I'm missing?
« Reply #9 on: April 17, 2006, 09:55:19 pm »
Hi Rob.
If by chance You do get to do some new features, Might I suggest
Upgrading the AIM Bot Panel with .htr (People Putty) Avatar Capability.

This way the AIM bot will have a Character that can Speak and react to Users talking to the Bot online and keep up with the Current Technology Fad of Animated Avatars inside Instant Messages.

I think it would boost the popularity a great deal.

Jerry[8D]

Carl2

  • Hero Member
  • *****
  • Posts: 1220
    • View Profile
Any bugs that need to be fixed that I'm missing?
« Reply #10 on: April 18, 2006, 09:09:03 pm »
Mr Medeksza,
  Because Hal was making reminders about things in the past I tried teaching Hal about the past, present and future. I kept drawing blank responses, The ephemericaldetect had quite a few words I removed so I could teach her about these things. I haven't run into a problem because of the omissions I've made yet.
  Also I've drawn a blank response and error message that this is being written to a log that I can't find. I believe it was in response to time issuses that I mentioned.
  Third, there is the short resopnse, needs a fix for simple yes and no's and math functions.
Carl2
 

onthecuttingedge2005

  • Guest
Any bugs that need to be fixed that I'm missing?
« Reply #11 on: April 19, 2006, 01:06:24 am »
quote:
Originally posted by Carl2

Mr Medeksza,
  Because Hal was making reminders about things in the past I tried teaching Hal about the past, present and future. I kept drawing blank responses, The ephemericaldetect had quite a few words I removed so I could teach her about these things. I haven't run into a problem because of the omissions I've made yet.
  Also I've drawn a blank response and error message that this is being written to a log that I can't find. I believe it was in response to time issuses that I mentioned.
  Third, there is the short resopnse, needs a fix for simple yes and no's and math functions.
Carl2



Hi Carl.
Could you copy and paste the Chat Log of the blank response conversation entirely so that it can be analyzed for possible mis-coding, Advanced Members can usually just look at a Chat Log and know exactly what is going on and How to fix it, I study HAL's code so much that it is hard not to know.

Jerry[8D]

danbaltzell

  • Full Member
  • ***
  • Posts: 212
    • View Profile
    • http://geocities.com/danbaltzell/ai
Any bugs that need to be fixed that I'm missing?
« Reply #12 on: April 19, 2006, 10:02:46 am »
I've found a few others were having the same bug I had, it may have something to do with the installation.  

http://www.zabaware.com/forum/topic.asp?TOPIC_ID=3181&SearchTerms=task,manager

talks about using the task manager to stop HAL.  I haven't had a recurrence, which makes me think it's an installation/setup problem. I was reluctant to reinstall HAL because of the problems with the licensing, but I tried and it worked after I got past that.
« Last Edit: April 19, 2006, 10:04:22 am by danbaltzell »
 

Carl2

  • Hero Member
  • *****
  • Posts: 1220
    • View Profile
Any bugs that need to be fixed that I'm missing?
« Reply #13 on: April 19, 2006, 09:02:51 pm »
OTC,
  I checked the Halscript.dbg with wordpad, Seems like additional brn scripting, I expected to see error messages ( could have sworn a message said it wrote to that file ) but didn't find any error messages. I spoke for a while with Hal, I tried to include statements about time ect., 24 hours in a day which use to cause a problem in Ver 5 and another statement I used not long ago that sent the error msseage. No problems in this sesson. If I run across them in the future I'll try to let you know.
Carl2
 

danbaltzell

  • Full Member
  • ***
  • Posts: 212
    • View Profile
    • http://geocities.com/danbaltzell/ai
Any bugs that need to be fixed that I'm missing?
« Reply #14 on: April 20, 2006, 09:15:03 am »
Today, I had to do a system restore to fix a problem, then of course the typical Auth.Req.Code expiration problem crept up.  So once again I'll need another from you.  Is there a way that can be fixed.  I can't get in to HAL to deactivate it to free up the code, do I need to uninstall and reinstall it, or just keep asking for an activation code.

I'm not sure why a system restore to just a few days ago should corrupt or delete some license code, I suppose you have your reasons, but it seems like this is a big glitch that a lot of people have major issues with.  I think it's great that you've made the brain and access to create scripts available to everyone, which will improve Hal, but there must be a better automated way to prevent program theft/duplication than to make it so difficult for the ordinary user that can't even figure out the first way to hack into it.  Isn't that how Bill Gates got to be so rich with WIN3.1 was easily copied then everyone got addicted to it and had to buy all the programs for it from him.  So you could make it easily copied or just give it away and then make incredibly great and awesome brains and charachters that everyone would want to give you $50 (cheap enough for the average).  Then hundreds of thousands of people would want to buy it and you could be incredibly rich and buy an island in the Caribbean and drink margaritas with those little umbrellas on the beach and soak up the sun, or just take over the universe.  You gotta love capitalism.