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


Фотография

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

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

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

#381 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 05 June 2016 - 17:43

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

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

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

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


Сообщение отредактировал Schatten: 05 June 2016 - 17:53

  • 0

#382 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 05 June 2016 - 23:10

 

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

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


  • 0

#383 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 05 June 2016 - 23:14

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

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

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


  • 1

#384 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 05 June 2016 - 23:24

 

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

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


 

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

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

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

 

Ясненько.


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

 

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


Сообщение отредактировал SteelRat: 05 June 2016 - 23:31

  • 0

#385 OFFLINE   RayteR

RayteR

    Рядовой

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

Отправлено 11 June 2016 - 18:14

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

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


  • 0

#386 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 11 June 2016 - 19:59

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

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

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


Сообщение отредактировал SteelRat: 11 June 2016 - 19:59

  • 0

#387 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 20 June 2016 - 01:56

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


Сообщение отредактировал Ilias: 20 June 2016 - 01:59

  • 0

#388 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

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

Отправлено 20 June 2016 - 02:15

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

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


Сообщение отредактировал Dimon UA: 20 June 2016 - 02:16

  • 1

#389 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 20 June 2016 - 06:50

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

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

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


Сообщение отредактировал Ilias: 20 June 2016 - 06:51

  • 0

#390 OFFLINE   kurganpepper

kurganpepper

    Ефрейтор

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

Отправлено 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 сообщений
  • Откуда:РФ

Отправлено 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";
};


Сообщение отредактировал SteelRat: 25 June 2016 - 18:51

  • 1

#392 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

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

Отправлено 25 June 2016 - 19:19

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


  • 1

#393 OFFLINE   kurganpepper

kurganpepper

    Ефрейтор

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

Отправлено 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;

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

Пример:

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

  • Прикрепленный файл  ML.png   1.12МБ   3 Количество загрузок:

  • 0

#394 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 27 June 2016 - 08:41

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


Сообщение отредактировал Ilias: 27 June 2016 - 08:49

  • 0

#395 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 27 June 2016 - 10:05

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

#396 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 28 June 2016 - 01:13

Ilias, через dll - да

сп


  • 0

#397 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 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 сообщений

Отправлено 04 July 2016 - 07:27

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

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

?


Сообщение отредактировал Ilias: 04 July 2016 - 07:47

  • 0

#399 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 04 July 2016 - 07:49

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

Сообщение отредактировал vlad333000: 04 July 2016 - 07:50

  • 0

#400 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 04 July 2016 - 11:51

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

sad, thanks


  • 0




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