точнее наоборот,то что я скинул в примере,работает норм в одиночке,но в сетевой игре действие,которое должно висеть на power2 вешается и на power1
Ну потому что там появились файлы client2.sqf и server2.sqf, плюс всякий бред кое-где написан, поэтому и работает не так, как нужно. А нужно почитать теорию, изучить мой код и сделать так, как уже сделано для power1, или как я писал -- разместить на серверной части код запуска функции, которая добавляет действие на объект.
Все спасибо,разобрался,работает и в одиночке и в мультиплеере...Тестил один,но у меня все норм работает.Мб потестим сегодня в двоем,что б знать наверняка.
в Perec1.sqf вписал это
TAG_fnc_addHackAction1 = {
params ["_object"];
_actionId1 = [
_object,
localize "$STR_Obig1",
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa",
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa",
"(_this distance _target) < 3",
"(_caller distance _target) < 3",
{
},
{}, // codeProgress
{
params ["_target"];
[_target] remoteExecCall ["TAG_fnc_removeHackAction"];
[_target] remoteExecCall ["TAG_fnc_removeHackActionServer", 2];
"Power.sqf" remoteExec ["execVM"];
},
{ }, // codeInterrupted
[], // arguments
2, // duration
0, // priority
true, // removeCompleted
false // showUnconscious
] call BIS_fnc_holdActionAdd;
_object setVariable ["hackActionId", _actionId1];
};
в Perecserver1.sqf это
TAG_fnc_removeHackActionServer = {
params ["_object"];
_jipId = _object getVariable ["addHackActionJipId", ""];
if (_jipId != "") then {
remoteExec ["", _jipId];
};
_object setVariable ["addHackActionJipId", nil];
};
_jipId = [power1] remoteExecCall ["TAG_fnc_addHackAction1", [0, -2] select isDedicated, power1];
power1 setVariable ["addHackActionJipId", _jipId];
в Perec2.sqf и в Perecserver2.sqf собственно это
Perec2.sqf
TAG_fnc_addHackAction2 = {
params ["_object"];
_actionId2 = [
_object,
localize "STR_Zapis1",
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa",
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_connect_ca.paa",
"(_this distance _target) < 3",
"(_caller distance _target) < 3",
{
},
{}, // codeProgress
{
params ["_target"];
[_target] remoteExecCall ["TAG_fnc_removeHackAction"];
[_target] remoteExecCall ["TAG_fnc_removeHackActionServer", 2];
"interkom1.sqf" remoteExec ["execVM"];
},
{ }, // codeInterrupted
[], // arguments
2, // duration
0, // priority
true, // removeCompleted
false // showUnconscious
] call BIS_fnc_holdActionAdd;
_object setVariable ["hackActionId", _actionId2];
};
Perecserver2.sqf
TAG_fnc_removeHackActionServer = {
params ["_object"];
_jipId = _object getVariable ["addHackActionJipId", ""];
if (_jipId != "") then {
remoteExec ["", _jipId];
};
_object setVariable ["addHackActionJipId", nil];
};
_jipId = [power2] remoteExecCall ["TAG_fnc_addHackAction2", [0, -2] select isDedicated, power2];
power2 setVariable ["addHackActionJipId", _jipId];
и в init.sqf это
TAG_fnc_removeHackAction = {
params ["_object"];
_actionId1 = _object getVariable ["hackActionId", -1];
if (_actionId1 >= 0) then {
[_object, _actionId1] call BIS_fnc_holdActionRemove;
};
_object setVariable ["hackActionId", nil];
};
TAG_fnc_removeHackAction = {
params ["_object"];
_actionId2 = _object getVariable ["hackActionId", -1];
if (_actionId2 >= 0) then {
[_object, _actionId2] call BIS_fnc_holdActionRemove;
};
_object setVariable ["hackActionId", nil];
};
if (!isDedicated) then {
call (compileScript ["Perec1.sqf"]);
};
if (isServer) then {
call (compileScript ["Perecserver1.sqf"]);
};
if (!isDedicated) then {
call (compileScript ["Perec2.sqf"]);
};
if (isServer) then {
call (compileScript ["Perecserver2.sqf"]);
};
Собственно все заработало и в одиночке и в мультиплеере.Ну по крайне мере я тестил один и у меня все работало хорошо. Испытаю ещё с несколькими людьми но думаю все будет работать нормально.Может кому пригодиться, поэтому и выложил,что у меня получилось.
А тебе Schatten огромное спасибо,без тебя бы ничего не получилось.Просто от души,что помог.Надеюсь я все правильно написал в файлах и меня не закидают тапками
))...Но вроде все работает.