dive155 0 Posted April 6 Hello! I've ran into a strange issue with the Conversations system. Here is my relevant code: radio.bikb: class Sentences { class Say { text = "%1%2%3%4%5%6%7%8%9%10"; speech[] = {"%1","%2","%3","%4","%5","%6","%7","%8","%9","%10"}; class Arguments {}; }; }; class Arguments{}; class Special{}; startWithVocal[] = {hour}; startWithConsonant[] = {europe, university}; My script: fn_GetTellArrayLocal = { params ["_receiver", "_fileName", "_subtitle"]; _array = [_receiver, "Say", "radio", ["1", {}, _subtitle, [_fileName]], "DIRECT"]; _array }; zeus_indfor kbAddTopic ["Say", "radio.bikb"]; _tellSub = "Cut the bs, Petrovich. You know exactly why we're here."; _tellArr = [Petrovich, "\rs\petro_j2_real.ogg", _tellSub] call fn_GetTellArrayLocal; zeus_indfor kbTell _tellArr; The problem is, on Dedicated Server it only works if zeus_indfor is an AI. It does not work if zeus_indfor is a player. However it always works fine in Singleplayer or Local Multiplayer, even if zeus_indfor is a player. The strange thing is that this code returns true: zeus_indfor kbHasTopic "Say" Is there some special magic that I'm missing when it comes to using kbTell on players on dedicated servers? Share this post Link to post Share on other sites
Larrow 2820 Posted April 6 1 hour ago, dive155 said: The problem is, on Dedicated Server it only works if zeus_indfor is an AI Im going to guess that your script is running on the server. The wiki page says this command is LA ( Local Argument ). So if zeus_indfor is a player, from a dedicated server they will not be local, where as in Single/Local MP they would be. If zeus_indfor is an AI then its likely they are local to the server hence why it works. Try remoteExec'ing the command to where the unit who is to speak is local. ie //Replace //zeus_indfor kbTell _tellArr; //With [ zeus_indfor, _tellArr ] remoteExec[ "kbTell", zeus_indfor ]; Share this post Link to post Share on other sites
dive155 0 Posted April 7 (edited) Hooray, it worked! I thought that since kbTell has global effect it does not matter where it is called from. I guess I should work on my understanding of the argument locality, rather than effect locality. Thank you! PS What's really strange is that I tried executing kbTell from debug console after joining the DS as player. I used the "Local Exec" button but the guy was still mute. Edited April 7 by dive155 Share this post Link to post Share on other sites
Larrow 2820 Posted April 7 You may also want to check kbAddTopic as well. This command is both LA and LE, so if your zeus_indfor is likely to move around ( on server as AI, or could be a player ) then you will need to add the topic on all respective machines. Either just add it everywhere or possibly use Local EH and check with kbHasTopic whether it needs adding. Share this post Link to post Share on other sites