Currently, we have no way to stop kbTell conversations. Sound always has to finish. If we had way to stop it early, we could create systems for skippable conversations like other games have or reactions to certain user scripted actions. With other sound playing commands like say3D, playSound3D, playMusic...sounds can be stoped by deleting sound source or by playing empty sounds (playMusic "";). I would like to see possibility to do the same with kbTell. I think kbTell should return soundSource like other commands do for ease of scripting. When sound is deleted, lips on talking person should stop moving automatically as the sentence is no longer playing. I don't know the technical aspect, so if that's not possible, new command like kbTerminate would be needed.
Description
Description
Details
Details
- Severity
- Feature
- Resolution
- Open
- Reproducibility
- N/A
- Operating System
- Windows 10 x64
- Operating System Version
- 22H2
- Category
- Scripting
Additional Information
Simple example code in case of soundSource:
[] spawn { _soundSource = player kbTell [BIS_HQ, "myTopic", "playerSentence1"]; sleep 5; deleteVehicle _soundSource;//person that's talking should automatically stop moving the lips //player setRandomLip false;//should stops lips from moving if talking person would not stop moving lips automatically };
In case of command, here is simple example how I imagine to use the command:
[] spawn { private _skippableTalk = [] spawn { player kbTell [BIS_HQ, "myTopic", "playerSentence1"];//sound that's playing for 20 seconds normally waitUntil { player kbWasSaid [BIS_HQ, "myTopic", "playerSentence1", 3]; }; BIS_HQ kbTell [player, "myTopic", "HQSentence1"]; waitUntil { BIS_HQ kbWasSaid [player, "myTopic", "HQSentence1", 3]; }; }; sleep 5; //if Jeep is destroyed finish conversation early if (!alive Jeep) then { terminate _skippableTalk; kbTerminate [player,"myTopic","playerSentence1"];//command would check if sentence from topic is playing or is in queue of sentences to be played }; };
Syntax:
kbTerminate [person,topicName,sentenceClass];
person: Object
topicName: String
sentenceClass: String
kbWasSaid should return false if sentence was terminated
And when you're at it, you could also try to fix the necessarity to have radio in inventory. It's kinda weird that person can't talk directly if assigned radio item is not present.
Thanks for considering this feature.