Jump to content
=sAs= Bellets

[HELP] Script doesn't work properly on dedicated server

Recommended Posts

Hello guys. I made a script that simply activates the simulation to certain units and makes them visible to players (in editor are all set with simulation disabled and models hided).
This script works good in sigleplayer and in local hosted server but when i try it on our clan dedicated server it does work only sometimes.

Another problem is that in multiplayer it runs multiple times istead that only once.

The script is run by a trigger Radio Alpha.

Hope you guys can help me with this.
This are the scripts i made:
 

initServer.sqf

miss1 = 0; publicVariable "miss1";
miss2 = 0; publicVariable "miss2";
miss3 = 0; publicVariable "miss3";
miss4 = 0; publicVariable "miss4";
miss5 = 0; publicVariable "miss5";
miss6 = 0; publicVariable "miss6";
miss7 = 0; publicVariable "miss7";
miss8 = 0; publicVariable "miss8";
miss9 = 0; publicVariable "miss9";
miss10 = 0; publicVariable "miss10";
miss11 = 0; publicVariable "miss11";
miss12 = 0; publicVariable "miss12";
miss13 = 0; publicVariable "miss13";
miss14 = 0; publicVariable "miss14";
miss15 = 0; publicVariable "miss15";
subMiss1 = 0; publicVariable "subMiss1";
subMiss2 = 0; publicVariable "subMiss2";
subMiss3 = 0; publicVariable "subMiss3";
subMiss4 = 0; publicVariable "subMiss4";
subMiss5 = 0; publicVariable "subMiss5";
subMiss6 = 0; publicVariable "subMiss6";
subMiss7 = 0; publicVariable "subMiss7";
subMiss8 = 0; publicVariable "subMiss8";
subMiss9 = 0; publicVariable "subMiss9";

randomMis.sqf

private ["_cassa", "_info", "_ufficiale", "_clear", "_ostaggi","_randomMiss"];

private ["_cassa1", "_cassa2", "_cassa3"];

_randomElement = selectRandom ["_cassa","_info", "_ufficiale", "_ostaggi", "_clear"];

switch (_randomElement) do {
    case "_cassa": {_randomMiss = selectRandom ["_cassa1","_cassa2","_cassa3"];};
    case "_info": {_randomMiss = selectRandom ["_info1","_info2","_info3"];};
    case "_ufficiale": {_randomMiss = selectRandom ["_ufficiale1","_ufficiale2","_ufficiale3"];};
	case "_ostaggi": {_randomMiss = selectRandom ["_ostaggi1,""_ostaggi2","_ostaggi3"];};
    case "_clear": {_randomMiss = selectRandom ["_clear1","_clear2","_clear3"];};
};

switch (_randomMiss) do {
    case "_cassa1": {switch (miss1) do{
	    case 0 : {_script = execVM "script\missione1.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
    case "_cassa2": {switch (miss2) do{
	    case 0: {_script = execVM "script\missione2.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
    case "_cassa3": {switch (miss3) do{
	    case 0 : {_script = execVM "script\missione3.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
    case "_info1": {switch (miss4) do{
	    case 0 : {_script = execVM "script\missione4.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
	case "_info2": {switch (miss5) do{
	    case 0 : {_script = execVM "script\missione5.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
	case "_info3": {switch (miss6) do{
	    case 0 : {_script = execVM "script\missione6.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
    case "_ufficiale1": {switch (miss7) do{
	    case 0 : {_script = execVM "script\missione7.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
    case "_ufficiale2": {switch (miss8) do{
	    case 0 : {_script = execVM "script\missione8.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
    case "_ufficiale3": {switch (miss9) do{
	    case 0 : {_script = execVM "script\missione9.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
	case "_ostaggi1": {switch (miss10) do{
	    case 0 : {_script = execVM "script\missione10.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
	case "_ostaggi2": {switch (miss11) do{
	    case 0 : {_script = execVM "script\missione11.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
    case "_ostaggi3": {switch (miss12) do{
	    case 0 : {_script = execVM "script\missione12.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
    case "_clear1": {switch (miss13) do{
	    case 0 : {_script = execVM "script\missione13.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
    case "_clear2": {switch (miss14) do{
	    case 0 : {_script = execVM "script\missione14.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
	case "_clear3": {switch (miss15) do{
	    case 0 : {_script = execVM "script\missione15.sqf"};
	    case 1 : {execVM "script\randomMis.sqf"};};};
};

missione1.sqf
 

enemy_miss1 = [];
{ if (group _x == group a1 or group _x == group a2 or group _x == group a3 or group _x == group a4 or group _x == group a5 or group _x == group a6 or group _x == group a7 or group _x == group a8 or group _x == group a9) 
then {enemy_miss1 pushback _x} foreach allUnits;

{
_x hideObjectGlobal false;
_x allowDamage true;
_x enableSimulationGlobal true;
} forEach enemy_miss1;

_randomElement = selectRandom [cassa_a1,cassa_a2,cassa_a3,cassa_a4,cassa_a5];
_randomElement hideObjectGlobal false;
_randomElement allowDamage true;
_randomElement enableSimulationGlobal true;

sleep 3;

miss1 = 1; publicVariable "miss1";
obj_miss1 = true; publicVariable "obj_miss1";

 

Share this post


Link to post
Share on other sites
//initServer.sqf
MyMissions = [
	"missione1", "missione2", "missione3",		//casssa
	"missione4", "missione5", "missione6",		//info
	"missione7", "missione8", "missione9",		//ufficiale
	"missione10", "missione11", "missione12",	//ostaggi
	"missione13", "missione14", "missione15"	//clear
];


//randomMis.sqf
if !( isServer ) exitWith {};
if ( MyMissions isEqualTo [] ) exitWith { "WINNER" call BIS_fnc_endMissionServer };	//All mission complete

_missionFile = MyMissions deleteAt ( floor random count MyMissions );

_script = execVM format[ "script\%1.sqf", _missionFile ];

 

enemy_miss1 = [];
{ if (group _x == group a1 or group _x == group a2 or group _x == group a3 or group _x == group a4 or group _x == group a5 or group _x == group a6 or group _x == group a7 or group _x == group a8 or group _x == group a9) 
then {enemy_miss1 pushback _x} foreach enemy_miss1;
16 hours ago, =sAs= Bellets said:

This script works good in sigleplayer and in local hosted server

There is no way this works at all from what you have shown. enemy_miss1 is a blank array, so the foreach will not select any groups and nothing will be unhidden.

 

There is no need to publicVariable everything, all mission setup should be done on the server.

Due to the use of radioTriggers the script will be run on each machine, you need to limit it to only call the function on the server by the use of ( as shown above ).

if !( isServer ) exitwith {};

 

Share this post


Link to post
Share on other sites

Thank you man, i'll try it and then let you know.

 

5 hours ago, Larrow said:

enemy_miss1 = []; { if (group _x == group a1 or group _x == group a2 or group _x == group a3 or group _x == group a4 or group _x == group a5 or group _x == group a6 or group _x == group a7 or group _x == group a8 or group _x == group a9) then {enemy_miss1 pushback _x} foreach enemy_miss1;

 

For this, that's my bad i copied wrong the code. Intead of "enemy_miss1" there schould be "allUnits", like below

enemy_miss1 = []; { if (group _x == group a1 or group _x == group a2 or group _x == group a3 or group _x == group a4 or group _x == group a5 or group _x == group a6 or group _x == group a7 or group _x == group a8 or group _x == group a9) then {enemy_miss1 pushback _x} foreach allUnits;

 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×