// Устанавливаем дату и время на клиентах // Код вызывается с клиентов, на сервере должно быть установлено дата и время, перед вызовом [[[player],{ [[[date],{setDate (_this select 0);}],"BIS_fnc_spawn",owner (_this select 0),false] spawn BIS_fnc_MP; }],"BIS_fnc_spawn",false,false] spawn BIS_fnc_MP;
Синхронизация даты и времени в мультиплеере
#1 OFFLINE
Отправлено 10 April 2014 - 17:32
#2 OFFLINE
Отправлено 01 June 2015 - 13:38
это получается, что у одних может быть ночь, а у других день?
или зачем это нужно?
#3 OFFLINE
Отправлено 01 June 2015 - 13:57
TankiSD, если менять во время игры - да, особенно у JIP. Для наглядности создайте сервер с Зевсом, поиграйте с погодой и эффектами и перезайдите, а иногда даже сразу у других игроков не будет ваших изменений (один раз ждали 10 минут когда у нас появится дождик выставленный в Зевсе)
#4 OFFLINE
Отправлено 01 June 2015 - 14:34
ужас)))
А если не менять?
т.е. какие установил я ещё в редакторе параметры.
То будет ли у JIP меняться погода с учётом пройденного времени игры на серваке?
#6 OFFLINE
Отправлено 01 June 2015 - 15:22
это уже идиотизм если честно(
#7 OFFLINE
Отправлено 02 June 2015 - 19:00
это получается, что у одних может быть ночь, а у других день?
или зачем это нужно?
Это нужно для геймплея в котором на сервере при старте устанавливается, как вариант, локальное время сервера, то есть время того региона где размещена физически серверная машина. Отличное от прописанных даты и времени в миссии.
И при таком раскладе, клиентам при подключении к игре нужно дать об этом знать.
Или по другому, клиента нужно синхронизировать при подключении, в плане даты и времени на сервере.
Сообщение отредактировал SteelRat: 02 June 2015 - 19:04
#8 OFFLINE
Отправлено 03 June 2015 - 09:47
Только что доделал общую для всех игроков на сервере погоду и время. У меня вот так выглядит:
в init.sqf
Привожу куски отвечающие за туман и время дабы не загромождать
//Смена даты и времени "var_changeTime" addPublicVariableEventHandler {setDate var_changeTime}; //Туман "var_changeFog" addPublicVariableEventHandler { _array = _this select 1; _time = _array select 0; _fog = _array select 1; _time setFog _fog };
Дальше любым способом вызываем вот такой скрипт:
Для смены даты и времени setDate [1986, 2, 25, 1, 0]; var_changeTime = [1986, 2, 25, 1, 0]; publicVariable "var_changeTime"; Для смены погоды 5 setFog 1; var_changeFog = [5,1]; publicVariable "var_changeFog";
В скриптах команда дублируется т.к. у того кто инициирует смену параметров окружения они не отрабатывают
P/s спасибо Блендеру и КиллЗоне Киду, без них у меня бы ничего не получилось.
Сообщение отредактировал Ave_Ursus: 03 June 2015 - 09:49
#9 OFFLINE
Отправлено 03 June 2015 - 12:08
Ребят я вас обрадую
#10 OFFLINE
Отправлено 03 June 2015 - 15:10
Теперь это комикс...
#11 OFFLINE
Отправлено 03 June 2015 - 16:43
В ACE3 есть модуль синхронизации погоды.
#12 OFFLINE
Отправлено 03 June 2015 - 18:41
Ребят я вас обрадую
/* Description: Instantly set date and share it across network. Parameter(s): 0: ARRAY - date in format [Y,M,D,H,M] NUMBER - hours to skip 1: BOOL - true for global execution (default: true) 2 (Optional): BOOL - true to show a transition effect instead of immediate skip (default: false) Returns: ARRAY */ #define VALUEVAR "bis_fnc_setdate_value" // я так понимаю публичная переменная которая и вызывает на клиентах код изменяющий дату
В результате, я так думаю, имеем вот что, тело подключившееся джипом должно получить эту переменную с уже определённым в этой переменной значением. Это значит будет достаточно в мультике выполнить на серверной стороне это один раз, и больше не париться.
[date, true] call BIS_fnc_setDate;
ЗЫ
А может я и ошибаюсь)
#13 OFFLINE
Отправлено 03 June 2015 - 18:48
ЗЫ_2
Посмотрел в функцию, да я ошибаюсь. Подключившихся позже придётся настраивать при ините.
#14 OFFLINE
Отправлено 03 June 2015 - 19:05
~
Сообщение отредактировал SteelRat: 03 June 2015 - 21:41
#15 OFFLINE
Отправлено 15 April 2018 - 12:15
#16 OFFLINE
Отправлено 16 April 2018 - 17:42
согласно информации с вики, команда setData перешла в группу серверных команд, и должна исполняться на сервере.
screenday_01.jpg 89.33К 0 Количество загрузок:
#17 OFFLINE
Отправлено 24 November 2018 - 00:53
В связи с этим и спрашивал собственно). как теперь это дело рассинхронить? Чтоб на конкретном клиенте установить время отличное от того что задается сервером.
#20 OFFLINE
Отправлено 24 November 2018 - 03:33
vlad333000,Это будет очень очень не очень, фризы будут дикие. Незнаю как setDate, но skipTime синхронизируется каждые 5 сек, и когда ты используешь эту команду, у тебя игра замирает примерно на секунду, и в итоге это становиться неиграбельным. Это еще без учета просадки из за проверки каждого кадра...
Сообщение отредактировал nIkRon: 24 November 2018 - 04:03