Перейти к содержимому


Фотография

Работа скриптов и звуков в МП или Кооп


Лучший Ответ 11Varan11 , 18 April 2023 - 16:04

 

точнее наоборот,то что я скинул в примере,работает норм в одиночке,но в сетевой игре действие,которое должно висеть на 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 огромное спасибо,без тебя бы ничего не получилось.Просто от души,что помог.Надеюсь я все правильно написал в файлах и меня не закидают тапками:)))...Но вроде все работает.
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 30

#21 OFFLINE   11Varan11

11Varan11

    Ефрейтор

  • Пользователи
  • 72 сообщений
  • Откуда:Kostroma

Отправлено 15 April 2023 - 18:32

 

Можно если возникнут снова вопросы по этой теме я напишу тебе?

Лучше на форуме, чтобы другие видели.

 

Вопрос все таки возник.Я так и не смог сделать действие на два разных терминала power1 и power2..То что,скинул сейчас работает в одиночке,но в мультиплеере на power один вешается два действие,то висит на power2.Так я и не понял как сделать их на два придмета.Буду рад если поможешь с тим.

Прикрепленные файлы

  • Прикрепленный файл  Power.rar   2.77К   2 Количество загрузок:

  • 0

#22 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1844 сообщений

Отправлено 17 April 2023 - 14:55

Я так и не смог сделать действие на два разных терминала power1 и power2.

Ну так код добавления действия нужно добавить на серверную часть, то есть в файл server.sqf.


  • 0

#23 OFFLINE   11Varan11

11Varan11

    Ефрейтор

  • Пользователи
  • 72 сообщений
  • Откуда:Kostroma

Отправлено 18 April 2023 - 00:21

 

Я так и не смог сделать действие на два разных терминала power1 и power2.

Ну так код добавления действия нужно добавить на серверную часть, то есть в файл server.sqf.

 

тобишь вот это вписать в сервер

  1. TAG_fnc_addHackAction = {
  2. params ["_object"];
  3.  
  4. _actionId = [
  5. _object,
  6. ...
  7. {
  8. params ["_target"];
  9.  
  10. [_target] remoteExecCall ["TAG_fnc_removeHackAction"];
  11. [_target] remoteExecCall ["TAG_fnc_removeHackActionServer", 2];
  12.  
  13. "act1.sqf" remoteExec ["execVM"];
  14. }
  15. ...
  16. ] call BIS_fnc_holdActionAdd;
  17.  
  18. _object setVariable ["hackActionId", _actionId];
  19. };
  20. TAG_fnc_removeHackAction = {
  21. params ["_object"];
  22.  
  23. _actionId = _object getVariable ["hackActionId", -1];
  24.  
  25. if (_actionId >= 0) then {
  26. [_object, _actionId] call BIS_fnc_holdActionRemove;
  27. };
  28.  
  29. _object setVariable ["hackActionId", nil];
  30. };

  • 0

#24 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1844 сообщений

Отправлено 18 April 2023 - 01:47

11Varan11, этот код должен остаться там, где он сейчас расположен, а вот на серверной части должен быть код запуска функции, которая добавляет действие на объект.


  • 0

#25 OFFLINE   11Varan11

11Varan11

    Ефрейтор

  • Пользователи
  • 72 сообщений
  • Откуда:Kostroma

Отправлено 18 April 2023 - 09:56

11Varan11, этот код должен остаться там, где он сейчас расположен, а вот на серверной части должен быть код запуска функции, которая добавляет действие на объект.

тобишь в server2.sqf вписываю это?

 
TAG_fnc_removeHackActionServer = {
    params ["_object"];
 
    _jipId = _object getVariable ["addHackActionJipId", ""];
 
    if (_jipId != "") then {
        remoteExec ["", _jipId];
    };
 
    _object setVariable ["addHackActionJipId", nil];
};
 
_jipId = [power2] remoteExecCall ["TAG_fnc_addHackAction", [0, -2] select isDedicated, power2];
 
power2 setVariable ["addHackActionJipId", _jipId];
 
Но тогда действие которое должно висеть на power1 висит и на power2.Или же надо менять вот это  params ["_object"];,например на  params ["_object1"];?

  • 0

#26 OFFLINE   11Varan11

11Varan11

    Ефрейтор

  • Пользователи
  • 72 сообщений
  • Откуда:Kostroma

Отправлено 18 April 2023 - 10:31

 
 

11Varan11, этот код должен остаться там, где он сейчас расположен, а вот на серверной части должен быть код запуска функции, которая добавляет действие на объект.

точнее наоборот,то что я скинул в примере,работает норм в одиночке,но в сетевой игре действие,которое должно висеть на power2 вешается и на power1

Прикрепленный файл  Power.rar   2.77К   2 Количество загрузок:


  • 0

#27 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1844 сообщений

Отправлено 18 April 2023 - 11:21

точнее наоборот,то что я скинул в примере,работает норм в одиночке,но в сетевой игре действие,которое должно висеть на power2 вешается и на power1

Ну потому что там появились файлы client2.sqf и server2.sqf, плюс всякий бред кое-где написан, поэтому и работает не так, как нужно. А нужно почитать теорию, изучить мой код и сделать так, как уже сделано для power1, или как я писал -- разместить на серверной части код запуска функции, которая добавляет действие на объект.


  • 0

#28 OFFLINE   11Varan11

11Varan11

    Ефрейтор

  • Пользователи
  • 72 сообщений
  • Откуда:Kostroma

Отправлено 18 April 2023 - 12:49

 

точнее наоборот,то что я скинул в примере,работает норм в одиночке,но в сетевой игре действие,которое должно висеть на power2 вешается и на power1

Ну потому что там появились файлы client2.sqf и server2.sqf, плюс всякий бред кое-где написан, поэтому и работает не так, как нужно. А нужно почитать теорию, изучить мой код и сделать так, как уже сделано для power1, или как я писал -- разместить на серверной части код запуска функции, которая добавляет действие на объект.

 

ничего не понятно,но попробую поковыряться.Хотя вряд ли получиться.Но все равно спасибо.


  • 0

#29 OFFLINE   11Varan11

11Varan11

    Ефрейтор

  • Пользователи
  • 72 сообщений
  • Откуда:Kostroma

Отправлено 18 April 2023 - 16:04   Лучший Ответ

 

точнее наоборот,то что я скинул в примере,работает норм в одиночке,но в сетевой игре действие,которое должно висеть на 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 огромное спасибо,без тебя бы ничего не получилось.Просто от души,что помог.Надеюсь я все правильно написал в файлах и меня не закидают тапками:)))...Но вроде все работает.

  • 0

#30 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1844 сообщений

Отправлено 18 April 2023 - 16:37

11Varan11, я же ссылки на BIKI не просто так публиковал. Если бы ты разобрался, то ты бы достиг желаемого просто добавив в server.sqf это:

_jipId = [power2] remoteExecCall ["TAG_fnc_addHackAction", [0, -2] select isDedicated, power2];

power2 setVariable ["addHackActionJipId", _jipId];

Да, всего лишь эти строки (не считая, конечно же, размещение на карте какого-либо объекта и задание ему названия power2).


  • 0

#31 OFFLINE   11Varan11

11Varan11

    Ефрейтор

  • Пользователи
  • 72 сообщений
  • Откуда:Kostroma

Отправлено 18 April 2023 - 18:39

11Varan11, я же ссылки на BIKI не просто так публиковал. Если бы ты разобрался, то ты бы достиг желаемого просто добавив в server.sqf это:

_jipId = [power2] remoteExecCall ["TAG_fnc_addHackAction", [0, -2] select isDedicated, power2];

power2 setVariable ["addHackActionJipId", _jipId];

Да, всего лишь эти строки (не считая, конечно же, размещение на карте какого-либо объекта и задание ему названия power2).

Просто времени мало на все...А так то что я скидывал работает только для одного,другой игрок не может активировать действие,оно у него даже не высвечиваться.


11Varan11, я же ссылки на BIKI не просто так публиковал. Если бы ты разобрался, то ты бы достиг желаемого просто добавив в server.sqf это:

_jipId = [power2] remoteExecCall ["TAG_fnc_addHackAction", [0, -2] select isDedicated, power2];

power2 setVariable ["addHackActionJipId", _jipId];

Да, всего лишь эти строки (не считая, конечно же, размещение на карте какого-либо объекта и задание ему названия power2).

К сожалению у меня так и не получалось.


  • 0




Яндекс.Метрика