Jump to content


Photo

Вопросы по скриптингу

Arma3 как плотформа для созда Скритпы

  • Please log in to reply
1486 replies to this topic

#381 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 05 June 2016 - 17:43

а я бы ушел от использования триггеров и сделал бы проверку через while... даже повесил бы проверку на клиента и не находится ли он в требуемой зоне.

Зачем уходить от того, что предназначено для решения таких задач?
 

пока хочется посмотреть на общую картину и уже потом решить - полировать/не полировать. Геометрия в арме это для меня штука сложная. Пока по "простому" пути.

Используйте publicVariable - это, по моему, очень даже уместно.


Edited by Schatten, 05 June 2016 - 17:53.

  • 0

#382 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 05 June 2016 - 23:10

 

Тут надо или создавать глобальные триггеры, затем передавать их игрокам и настраивать на их отслеживание, либо с сервера передавать игрокам координаты, в которых будут создаваться локальные триггеры.

Так, на заметку, не помню точно координаты где, много уважаемый Килзоне гутарил про триггеры, так вот, один из ведущих разработчиков армы донёс один страшный секрет, в ковычках страшный), триггеры не бывают локальными, созданный триггер существует у всех. А фишка в том, что один и тот же триггер можно настроить на каждой машине по разному и персонально для каждого. На сервере для некого триггера своя настройка, а на клиентах своя, и даже этот же триггер может выполнять абсолютно другую задачу чем на сервере. То есть, один и тот же триггер можно настроить для каждой машины персонально и для реализации разных задач.


  • 0

#383 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 05 June 2016 - 23:14

Так, на заметку, не помню точно координаты где, много уважаемый Килзоне гутарил про триггеры, так вот, один из ведущих разработчиков армы донёс один страшный секрет, в ковычках страшный), триггеры не бывают локальными, созданный триггер существует у всех. А фишка в том, что один и тот же триггер можно настроить на каждой машине по разному и персонально для каждого. На сервере для некого триггера своя настройка, а на клиентах своя, и даже этот же триггер может выполнять абсолютно другую задачу чем на сервере. То есть, один и тот же триггер можно настроить для каждой машины персонально и для реализации разных задач.

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

. Такой расклад был до какого-то обновления, после чего появилась возможность создавать локальные триггеры.


  • 1

#384 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 05 June 2016 - 23:24

 

Создавать глобальные триггеры со стороны игрока, как я уже писал, - плохая практика.

Создавать глобальные объекты сетевого геймплея на клиентах - не только плохая практика, но и плохая идея, если с таким объектом взаимодействует не только владелец, существование такого объекта оправданно только созданием в довесок проверки на, а куда делся владелец? Ну, сервер забери себе это, ибо исполнять возложенные на это задачи стало не кому.


 

Так, на заметку, не помню точно координаты где, много уважаемый Килзоне гутарил про триггеры, так вот, один из ведущих разработчиков армы донёс один страшный секрет, в ковычках страшный), триггеры не бывают локальными, созданный триггер существует у всех. А фишка в том, что один и тот же триггер можно настроить на каждой машине по разному и персонально для каждого. На сервере для некого триггера своя настройка, а на клиентах своя, и даже этот же триггер может выполнять абсолютно другую задачу чем на сервере. То есть, один и тот же триггер можно настроить для каждой машины персонально и для реализации разных задач.

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

. Такой расклад был до какого-то обновления, после чего появилась возможность создавать локальные триггеры.

 

Ясненько.


А по вопросу, лучше как советует Шатен publicVariableClient или передать значение переменной через remoteExec.

 

edit: через remoteExec даже предпочтительнее, передать команду вызова кода инициализации самого события, функции или скрипта, по вкусу. Тогда не придётся создавать на клиентах событие для публичной переменной, мелочь, а приятно).


Edited by SteelRat, 05 June 2016 - 23:31.

  • 0

#385 OFFLINE   RayteR

RayteR

    Рядовой

  • Пользователи
  • 1 posts
  • Откуда:Вилючинск

Posted 11 June 2016 - 18:14

Ребята, вот недавно только начал скриптинг изучать, работаю над сервером Altis Life. И вот хочу реализовать паспорт, пока чтобы от чего-то отталкиваться, решил пока сделать так: Изначально у игроков не показывает ники над персонажем, но каждый друг другу может показать паспорт и вот если кто-нибудь кому-нибудь показывает паспорт, то над тем игроком который показал паспорт появляется ник. И так первое что пришло в голову так это каждому скажем игроку присвоить addAction, уже в самом редакторе, каждому гражданскому и полицейскому и т.д., но при этом, этот же игрок может и себе скажем показать паспорт, что мне и не нужно, можно ли от этого избавится? Или же есть другой вариант? И вот насчет появления ника, и вообще как это реализовать хотя бы по простому? А то как понял элемент который отвечает за показ ника, не существует. И вот насчет опять же ника, мне нужно сделать чтобы через какое-то время исчезалось, допустим показал паспорт, и через 5 минут у того игрока не показывает твой ник нейм, или я думаю, сделать это не так, а вот если на какое-то расстояние отойти, то ник исчезает, скажем до следующего просмотра пасспорта.

P.S. Если хотите можете целый скрипт кинуть с паспортом, но мне желательно чтобы кто-нибудь объяснил как все делается, чтобы мне в будущем скажем помогло, решать другие задачи... 


  • 0

#386 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 11 June 2016 - 19:59

https://arma3.ru/for...kriptopisaniiu/

Там же и про ники над головами найдёте, и много чего ещё полезного и интересного, а самое главное, того без знакомства с чем у вас будет ещё много и много вопросов, на которые нет смысла отвечать ибо хороший человек запилил целую ветку, на самом возможном из понятных языке изложения, и даже с юморком.

Давайте дружно воздадим хвалу AVI, аминь!


Edited by SteelRat, 11 June 2016 - 19:59.

  • 0

#387 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 20 June 2016 - 01:56

кто нибудь пожалуйста, надеюсь простой вопрос, есть два числа (могут быть отрицательными), нужно получить разницу между ними как положительное число самым быстрым способом


Edited by Ilias, 20 June 2016 - 01:59.

  • 0

#388 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 posts
  • Откуда:Севастополь

Posted 20 June 2016 - 02:15

ммм... abs (разница= (-2) - (-1))?

или я не так понял?


Edited by Dimon UA, 20 June 2016 - 02:16.

  • 1

#389 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 20 June 2016 - 06:50

ммм... abs (разница= (-2) - (-1))?

или я не так понял?

abs , да, спасибо


Edited by Ilias, 20 June 2016 - 06:51.

  • 0

#390 OFFLINE   kurganpepper

kurganpepper

    Ефрейтор

  • Пользователи
  • 58 posts
  • Откуда:Курган

Posted 25 June 2016 - 13:49

Подскажите, почему маркер не исчезает через 15 минут:

Игрок, полицейский(лайф сервер), открывая свое меню нажимает кнопку, на карте появляется синий, круглый маркер 1000х1000 в той области где он находится.

Но не исчезает после: sleep 900;//15 минут

if ("marshalLaw" in allMapMarkers) exitWith {hint "Время маркера не истекло!"};

deleteMarker "marshalLaw";
deleteMarker "marshalLawtext";

_marker = createMarker ["marshalLaw", position player];
"marshalLaw" setMarkerColor "ColorBlue";
"marshalLaw" setMarkerType "Empty";
"marshalLaw" setMarkerShape "ELLIPSE";
"marshalLaw" setMarkerSize [1000,1000];

_markerText = createMarker ["marshalLawtext", position player];
"marshalLawtext" setMarkerColor "ColorBlack";
"marshalLawtext" setMarkerText "НАЗВАНИЕ МАРКЕРА НА КАРТЕ";
"marshalLawtext" setMarkerType "mil_warning";

_msg = parseText format ["<t size='1.2'><t color='#FF0000'>Внимание!!!</t></t><br/><br/><t size='1'>Зона в квадрате</t> %1 продлится 15 минут!", mapGridPosition player];
[_msg] call TON_fnc_cell_marshallawall;

[] spawn {
	sleep 900;//15 минут
	deleteMarker "marshalLaw";
	deleteMarker "marshalLawtext";
};

  • 0

#391 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 25 June 2016 - 18:43

if ("marshalLaw" in allMapMarkers) exitWith {hint "Время маркера не истекло!"};

_marker = createMarker ["marshalLaw", position player];
"marshalLaw" setMarkerColor "ColorBlue";
"marshalLaw" setMarkerType "Empty";
"marshalLaw" setMarkerShape "ELLIPSE";
"marshalLaw" setMarkerSize [1000,1000];

_markerText = createMarker ["marshalLawtext", position player];
"marshalLawtext" setMarkerColor "ColorBlack";
"marshalLawtext" setMarkerText "НАЗВАНИЕ МАРКЕРА НА КАРТЕ";
"marshalLawtext" setMarkerType "mil_warning";

_msg = parseText format ["<t size='1.2'><t color='#FF0000'>Внимание!!!</t></t><br/><br/><t size='1'>Зона в квадрате</t> %1 продлится 30 секунд!", mapGridPosition player];
hint _msg;

[] spawn {
	sleep 30;
	deleteMarker "marshalLaw";
	deleteMarker "marshalLawtext";
};


Edited by SteelRat, 25 June 2016 - 18:51.

  • 1

#392 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 posts
  • Откуда:Севастополь

Posted 25 June 2016 - 19:19

я типа мимо проходил и не сильно вникал: мб удалять просто нужно на сервере?


  • 1

#393 OFFLINE   kurganpepper

kurganpepper

    Ефрейтор

  • Пользователи
  • 58 posts
  • Откуда:Курган

Posted 25 June 2016 - 20:03

if ("marshalLaw" in allMapMarkers) exitWith {hint "Время маркера не истекло!"};

_marker = createMarker ["marshalLaw", position player];
"marshalLaw" setMarkerColor "ColorBlue";
"marshalLaw" setMarkerType "Empty";
"marshalLaw" setMarkerShape "ELLIPSE";
"marshalLaw" setMarkerSize [1000,1000];

_markerText = createMarker ["marshalLawtext", position player];
"marshalLawtext" setMarkerColor "ColorBlack";
"marshalLawtext" setMarkerText "НАЗВАНИЕ МАРКЕРА НА КАРТЕ";
"marshalLawtext" setMarkerType "mil_warning";

_msg = parseText format ["<t size='1.2'><t color='#FF0000'>Внимание!!!</t></t><br/><br/><t size='1'>Зона в квадрате</t> %1 продлится 30 секунд!", mapGridPosition player];
hint _msg;

[] spawn {
	sleep 30;
	deleteMarker "marshalLaw";
	deleteMarker "marshalLawtext";
};

 

 

Спасибо за помощь SteelRat), но должно быть так где:

_msg = parseText format ["<t size='1.2'><t color='#FF0000'>Внимание!!!</t></t><br/><br/><t size='1'>Зона в квадрате</t> %1 продлится 30 секунд!", mapGridPosition player];
hint _msg;

Для глобального сообщения и сообщение всем игрокам:

_msg = parseText format ["<t size='1.2'><t color='#FF0000'>Внимание!!!</t></t><br/><br/><t size='1'>Зона в квадрате</t> %1 продлится 30 секунд!", mapGridPosition player];
[_msg] call TON_fnc_cell_marshallawall;

Но это уже не важно! Ещё раз спасибо!!!

Пример:

Attached Files

  • Attached File  ML.png   1.12MB   3 downloads

  • 0

#394 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 27 June 2016 - 08:41

возможно ли из игры посылать информацию куда нибудь через интернет, принимать от туда в игру и выполнять?


Edited by Ilias, 27 June 2016 - 08:49.

  • 0

#395 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 27 June 2016 - 10:05

Ilias, через dll - да
  • 0

#396 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 28 June 2016 - 01:13

Ilias, через dll - да

сп


  • 0

#397 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 28 June 2016 - 17:20

Спасибо за помощь SteelRat), но должно быть так где:
_msg = parseText format ["<t size='1.2'><t color='#FF0000'>Внимание!!!</t></t><br/><br/><t size='1'>Зона в квадрате</t> %1 продлится 30 секунд!", mapGridPosition player];
hint _msg;

Для глобального сообщения и сообщение всем игрокам:
_msg = parseText format ["<t size='1.2'><t color='#FF0000'>Внимание!!!</t></t><br/><br/><t size='1'>Зона в квадрате</t> %1 продлится 30 секунд!", mapGridPosition player];
[_msg] call TON_fnc_cell_marshallawall;

Но это уже не важно! Ещё раз спасибо!!!

Видимо это так, потому что у меня нет

[_msg] call TON_fnc_cell_marshallawall;

я прекрасно понял о чём эта функция).

 

Но это уже не важно, вы всё прекрасно поняли).


  • 0

#398 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 04 July 2016 - 07:27

возможно ли удалить часть array имея ссылку на неё e.

 a=[0,[0]]; _a=a select 1; |delete| _a; a==[0]

?


Edited by Ilias, 04 July 2016 - 07:47.

  • 0

#399 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 04 July 2016 - 07:49

Ilias, нет, нужно знать местонахождение элемента в массиве и сам массив, а не просто ссылку на сам элемент
<array> deleteAt <index>

Edited by vlad333000, 04 July 2016 - 07:50.

  • 0

#400 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 04 July 2016 - 11:51

Ilias, нет, нужно знать местонахождение элемента в массиве и сам массив, а не просто ссылку на сам элемент
<array> deleteAt <index>

sad, thanks


  • 0




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