Author Topic: Multiple values for conditional statements, token for TTS, & cmd kill immunity  (Read 2495 times)

MrHazardous

  • Guest
Hello!

Firstly, I'm grateful for voice attack, it's been great fun for me to create a profile for Star Citizen. I'm working on a big "AI" here with wiki integration, personality, more personality, and even a recommendation engine so it can help players find the right ship or weapon for them. It's been a blast and I'm always amazed at the results I can get with this. THANK YOU!


Suggestions:
  • A way to have commands be immune to kill commands.
  • A way to prevent text-to-speech interrupting other text-to-speech or a "time since last command" or "time since 'launch missiles' was executed" token
  • Put multiple values for one conditional statement (ie: Begin Text Compare : [usersaid] Equals 'no' OR 'cancel')
For the second suggestion, I understand I can make an "AI is talking" variable that changes during text-to-speech, but I'm dreading going through every command and finding all my text-to-speech.

The first suggestion may sound risky (removing complete user control) but hear me out, maybe there's another solution you can think of, I've posted some of my ideas for solutions below.



Here's my use case:
I want the profile or "AI" to engage with the player too, so I've created a command that runs every time a command is not recognized. This command checks if the "small talk" command is already running and if not, runs it. The small talk command has a long timer on it after which Atlas, my baby, says one of many random, interesting things. The way the unrecognized catch-all clutters the log is a minor inconvenience. more importantly, I cannot create a reliable way to have this command always running and only running one instance, here's why:

1. within that "already running check" command, there's this code:
   
Code: [Select]
  Begin Small Integer Compare : [smalltalkrunning?] Has Not Been Set
     Execute command, '~`random small talk'
  End Condition - Exit when condition met


2. Within the "small talk" command to be executed there's this smalltalkrunning? variable that I set to 1 to let the rest of the code know its already running and doesnt need to start another instance:
     
Code: [Select]
   Set small int (condition) [smalltalkrunning?] value to 1
   Pause 999 seconds
   Pause 621 seconds
   Say, 'blah'  (and wait until it completes)
   Set small int (condition) [smalltalkrunning?] value to 0


3. The problem comes when the player runs a stop all command and the smalltalkrunning? command is left on 1.


4. An unrecognized phrase sets off the check command but doesn't run the small talk command because the condition is not met.


Without this "Begin Small Integer Compare : [smalltalkrunning?] Has Not Been Set" check, it could lead to too many, possibly hundreds of this command, running at once and also Atlas talking over himself when those pauses are done.



In conclusion, here are some solutions that could really help me as a creator:
Solution to conflicts and errors arising from commands being killed early by stop all commands:
  • a check box in the command edit window that makes a command (perhaps limit to 1 command) immune to kill all commands
Solutions to text-to-speech interrupting other text-to-speech:
  • a check box in the command edit window that limits a command to 1 instance, prevents multiple of one. This would also be useful for my story-telling commands, so he's not telling two stories at once
  • a token that states the time since last command, so I can avoid interrupting commands and have the small talk come only after a good amount of silence.
  • a way to subtract computer time from computer time to find the difference between now and a date value saved earlier, essentially, same as the previous suggestion, different approach
  • a token that indicates the text-to-speech or sound playing currently or a check box for text-to-speech dialogue that says "wait until currently playing text to speech is complete" or "do not interrupt other text-to-speech" so we can avoid interruptions or overlap.

Gary

  • Administrator
  • Hero Member
  • *****
  • Posts: 2827
Ah!  You had emailed me recently.  Sorry... I haven't had a chance to reply to it, as I wanted to create at least a decent reply.