Jump to content

Jamio

Member
  • Content Count

    5
  • Joined

  • Last visited

  • Medals

Posts posted by Jamio


  1. So, I found a solution (of course it would come a few hours after deciding to post on the forums🙄) and figured it was worth updating this just in case anyone else has similar issues:

    I had to set the triggers that were waiting for player activation to "server only" with a remoteExec target of 0.

     

    I assume there is something I dont know about triggers propogating their activations across multiple clients if this setting isn't ticked. I get the feeling that this fix essentially forces the server to be the machine to evaluate the conditions and then run the remoteExec, rather than the activating player who would then get both runs of the script as the "activating machine". Or not, I'm still not entirely sure about triggers and locality in this circumstance...

     

    Hope this helps someone somewhere at some point!


  2. Hello there kind people of the BI forums!

    I need some help with remote execution of a script that is leading to duplication on a dedicated server. I've probably been trying to solve this for a few days now and I've finally hit a wall.

     

    I have a script, that just gets a character called fan1 to say a voice line using say3D, and some text to appear in sideChat. I have the script - called fan2.sqf set up as follows:

     

    systemChat "fan2 executed correctly"; // just a debug thing I will remove to check that the script has been firing correctly
    
    fan1 say3D ["mjrkean", 50, 1, true, 0]; // say3D from position of fan1 with ogg and relevant lip file
    fan1chat sideChat "Hey! Major Kean is just downstairs and to the left - he's expecting you."; // show sideChat from HQ entity with the variable name fan1chat

    The sound files and everything work fine, and I want this to be executed when a player walks into a trigger, and as such I have a simple trigger in the editor that is set to:

    Any Player
    Present

    Not Repeatable

    Not Server only
    Condition: this

    On Activation: ["fan2.sqf"] remoteExec ["execVM", -2, true];

    My thinking was that, both say3D and sideChat have local effects if I am correct, so by executing this on all clients (excluding the server as it's not necessary(?)) with remoteExec targeted with -2, it should work. However, I am running into an issue where both the say3D and sideChat are seemingly duplicated in a locally hosted multiplayer server, and on my dedicated server. Am I missing something obvious here?

     

    Appreciate any help 😄


  3. I've been playing around with the conversation system for a mission. I've set up everything properly, and it works flawlessly in SP. As soon as I load it onto a dedicated server however, the conversation triggers correctly - with lip sync, sounds and everything working, but it's as if the entire conversation takes places in the span of one second.

     

    The two actors in conversation overlap with one another which makes the whole thing feel horrible. Does anyone have any reasons why this may be?

     

    Here's the current setup for the description.ext, brief.bikb and the chat.sqf:

     

    // In description.ext
    
    class CfgSentences
    {
    	class Conversation1
    	{
    		class Briefing
    		{
    			file = "brief.bikb";
    			#include "brief.bikb"
    		};
    	};
    };
    // in brief.bikb
    
    class Sentences
    {
    	class Brief_Line_1
    	{
    		text = "Welcome Able Squad, we are refueling the trucks that will take you to Gryzbow. For now, have a quick rest and check your equipment."
    		speech[] = { "\chat\t1.ogg", db };
    		class Arguments {};
    		actor = "c1";
    	};
    
    	class Brief_Line_2
    	{
    		text = "We've brought in some extra munitions and medical supplies - feel free to take what you need from the crate."
    		speech[] = { "\chat\t2.ogg" };
    		class Arguments {};
    		actor = "c2";
    	};
    
    	class Brief_Line_3
    	{
    		text = "Yes sir."
    		speech[] = { "\chat\t3r.ogg" };
    		class Arguments {};
    		actor = "sl1";
    	};
    };
    
    class Arguments {};
    class Special {};
    startWithVocal[] = {hour};
    startWithConsonant[] = {europe, university};
    // in chat1.sqf
    
    ["Briefing", "Conversation1"] call bis_fnc_kbtell;

    The whole thing is activated via a trigger for any player:

    null = execVM "chat1.sqf";

    At this point, I don't believe it's an error within the scripts, I feel like it's something I'm missing from a server/MP environment perspective but I'm kind of stumped. At this point I feel like it would probably be easier writing a script that sideChat's each line of text and using say3D to get the audio across, then sleeping between each sentence but grr. Anyone have any experience with this?


  4. Hi there,

    I'm attempting to unhide a layer that I have previously hidden using the following code in the mission init.sqf, with "layer_checkpointwest" being my layer:

     

        {
            _x hideObjectGlobal true;
        } forEach (getMissionLayerEntities "layer_checkpointwest" select 0);

    I want to unhide everything in this layer at some point later on in the mission. Originally I had it set up in an addAction for a Zeus player to trigger:
     

    zeus1 addAction ["4. Unhide Checkpoint Ambush Scene", {{_x hideObjectGlobal false;} forEach (getMissionLayerEntities "layer_checkpointwest" select 0);}, nil, 1.5, false, true, "", "true", 3];

    For SP and locally hosted MP this works fine, however on a dedicated server nothing seems to happen. I am thinking it's something to do with the way hideObjectGlobal needs to be called on the server - but even using a trigger to remoteExec a script > "[] remoteExec ["unhidecheckpoint.sqf", 2, false];" with essentially the opposite of the init.sqf code doesn't seem to work either.

    I've been reading so much on this and I don't feel like I'm fully understanding what I'm missing!

    Any help or advice with this is much appreciated.

×