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


Фотография

Собранная миссия работает косячно


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

#1 OFFLINE   gizmo

gizmo

    Ефрейтор

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

Отправлено 03 June 2014 - 15:08

Добрый день! Создал миссии в которой русской пехотой с русским оружием надо сесть в вертушку и полететь в форт. Там в башне уничтожить VIP-цель и взорвать патроны. В редакторе проверил. Всё отлично работает. Сам лично через TeamViewer установил моды другу, то есть всё стало отлично. Он скачал мою миссию, хостует. Стартуем и оп, он во всём русском, а вот я в американском. Перезахожу, оп и я в русской форме, но с американским оружием. Или может быть так, что заспавнимся в трусах. По разному. Вторая проблема: Карта Черноруссия. Расставил 2 вертолёта на островке, в чистом поле, но у друга на экране есть деревья из-за которых невозможен взлет.А у меня их нет.Третья проблема: Ящике бессмертные: заложили 5 подрывных зарядов, башня рухнула но ящики живые, добавили 3 гранаты и 2 РПГ, но они живые.В чём проблемы?

 

Вторая миссия: На карте Заргабада появляюсь в русской форме, но в ящике в котором должно быть всё русское, лежит всё американское. Только у друга всё русское и чтобы получить оружие мне надо просить его скинуть мне. И ни с того ни с сего FPS падает до 8-12, хотя было всё нормально.


Сообщение отредактировал gizmo: 03 June 2014 - 15:19

  • 0

#2 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 03 June 2014 - 17:48

Выходит что, эти ящики по конфигурации бессмертные.


  • 0

#3 OFFLINE   gizmo

gizmo

    Ефрейтор

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

Отправлено 03 June 2014 - 17:49

 

Выходит что, эти ящики по конфигурации бессмертные.

 

 

Но в редакторе они же взрывались. Это ящики с оружием


  • 0

#4 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 03 June 2014 - 17:53

А вообще Сударь, корректная работа миссии в редакторе, не гарантирует корректную работу этой миссии в мультриплеере.

Если вы делаете миссию для мультиплеера, то и тестить во время разработки надо в мультиплеере.


Ну, миссию в студию)


И так , первое, униформа, её настоятельно рекомендуется менять на сервере, при подключении клиента к серверу, это избавит от вида в трусах)


  • 0

#5 OFFLINE   gizmo

gizmo

    Ефрейтор

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

Отправлено 03 June 2014 - 23:19

А вообще Сударь, корректная работа миссии в редакторе, не гарантирует корректную работу этой миссии в мультриплеере.

Если вы делаете миссию для мультиплеера, то и тестить во время разработки надо в мультиплеере.


Ну, миссию в студию)


И так , первое, униформа, её настоятельно рекомендуется менять на сервере, при подключении клиента к серверу, это избавит от вида в трусах)

 

 

Всмысле надо менять на сервере? 

Вот миссия: 

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


  • 0

#6 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 03 June 2014 - 23:52

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



Всмысле надо менять на сервере?
Вот миссия:

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

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

Сообщение отредактировал vlad333000: 03 June 2014 - 23:53

  • 0

#7 OFFLINE   gizmo

gizmo

    Ефрейтор

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

Отправлено 04 June 2014 - 00:03

 

 

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



Всмысле надо менять на сервере?
Вот миссия:

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

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

 

 

Как?Всмысле? Друг хостует, одежда меняется скриптом.Хост ничего сделать не может же


  • 0

#8 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 04 June 2014 - 17:06

Цитата

Как?Всмысле? Друг хостует, одежда меняется скриптом.Хост ничего сделать не может же

В мультике всё не много по другому чем сингле, позже примерчик кину как.

Я здесь, продолжим. И так.

Создайте в папке миссии папку под названием "functions", в этой папке создайте файл "fn_addUniformCore.sqf ", и скопируйте в этот файл этот код

/*
	Смена униформы юнита, при инициализации клиента на сервере

	Вызывать функцию из файла init.sqf миссии, перед загрузкой инвентаря, если такое будет требоваться.

	Вызов:
	
	if !(isDedicated) then {
		//	Если функция не инициализирована, инициализируем
		if (isNil "PTm_fnc_addUniformCore") then {PTm_fnc_addUniformCore = compile preprocessFileLineNumbers "functions\fn_addUniformCore.sqf"};

		//	Отправляем данные на сервер
		_isChange = [player, "класс униформы"] call PTm_fnc_addUniformCore;

		// 	debug info
		if !(_isChange) then { diag_log format ["AddUniformCore: %1, %2", player, "something went wrong"]};
	};

	Импровизировал: SteelRat
*/

_unit 		= _this select 0;
_uniformClass	= _this select 1;
_code		= {if (isServer) then {(_this select 0) addUniform (_this select 1)}};

// Функция BIS_fnc_MP существует для взаимодействия сервера с клиентами и наоборот, а так же между клиентами, на БИКЕ есть описание как ей пользоваться.
// Отправляем данные и исполняемый код на сервер
[[[_unit, _uniformClass], _code],"BIS_fnc_spawn",false,false] spawn BIS_fnc_MP;

_timer = time + 60;

// Приостонавливаем исполнение кода, до тех пор пока на клиенте не сменится униформа, то есть ожидаем синхронизации.
// Это необходимо, если вы собираетесь перетряхнуть и инвентарь юнита, что бы всё прошло корректно, ожидаем.
WaitUntil {sleep 0.2; (((uniform _unit) == _uniformClass) or (time > _timer))};

if ((uniform _unit) == _uniformClass) then {
	true
} else {
	false
};

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

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

Попрошу вас принять это как руководство к действию, а не конечный продукт), собственно у меня на выделенном сервере, код выше работает.


Сообщение отредактировал SteelRat: 04 June 2014 - 18:47

  • 0

#9 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 04 June 2014 - 19:13

 

А вообще Сударь, корректная работа миссии в редакторе, не гарантирует корректную работу этой миссии в мультриплеере.

Если вы делаете миссию для мультиплеера, то и тестить во время разработки надо в мультиплеере.


Ну, миссию в студию)


И так , первое, униформа, её настоятельно рекомендуется менять на сервере, при подключении клиента к серверу, это избавит от вида в трусах)

 

 

Всмысле надо менять на сервере? 

Вот миссия: 

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

 

 

Не очень удобный способ, получить файлы миссии, я открою вам страшную тайну), но только вам, больше ни кому, ни ни), вы можете залить файлы на этом сайте.


  • 0

#10 OFFLINE   gizmo

gizmo

    Ефрейтор

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

Отправлено 05 June 2014 - 00:09

 

Цитата

Как?Всмысле? Друг хостует, одежда меняется скриптом.Хост ничего сделать не может же

В мультике всё не много по другому чем сингле, позже примерчик кину как.

Я здесь, продолжим. И так.

Создайте в папке миссии папку под названием "functions", в этой папке создайте файл "fn_addUniformCore.sqf ", и скопируйте в этот файл этот код

/*
	Смена униформы юнита, при инициализации клиента на сервере

	Вызывать функцию из файла init.sqf миссии, перед загрузкой инвентаря, если такое будет требоваться.

	Вызов:
	
	if !(isDedicated) then {
		//	Если функция не инициализирована, инициализируем
		if (isNil "PTm_fnc_addUniformCore") then {PTm_fnc_addUniformCore = compile preprocessFileLineNumbers "functions\fn_addUniformCore.sqf"};

		//	Отправляем данные на сервер
		_isChange = [player, "класс униформы"] call PTm_fnc_addUniformCore;

		// 	debug info
		if !(_isChange) then { diag_log format ["AddUniformCore: %1, %2", player, "something went wrong"]};
	};

	Импровизировал: SteelRat
*/

_unit 		= _this select 0;
_uniformClass	= _this select 1;
_code		= {if (isServer) then {(_this select 0) addUniform (_this select 1)}};

// Функция BIS_fnc_MP существует для взаимодействия сервера с клиентами и наоборот, а так же между клиентами, на БИКЕ есть описание как ей пользоваться.
// Отправляем данные и исполняемый код на сервер
[[[_unit, _uniformClass], _code],"BIS_fnc_spawn",false,false] spawn BIS_fnc_MP;

_timer = time + 60;

// Приостонавливаем исполнение кода, до тех пор пока на клиенте не сменится униформа, то есть ожидаем синхронизации.
// Это необходимо, если вы собираетесь перетряхнуть и инвентарь юнита, что бы всё прошло корректно, ожидаем.
WaitUntil {sleep 0.2; (((uniform _unit) == _uniformClass) or (time > _timer))};

if ((uniform _unit) == _uniformClass) then {
	true
} else {
	false
};

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

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

Попрошу вас принять это как руководство к действию, а не конечный продукт), собственно у меня на выделенном сервере, код выше работает.

 

 

Большое спасибо за помощь. Попробую )


  • 0

#11 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 05 June 2014 - 16:59

 

 

но в ящике в котором должно быть всё русское, лежит всё американское. 

 

А вот здесь пройдитесь по скриптам, и замените команды которые наполняют ящики, на команды с приставкой "Global"


  • 0




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