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


Фотография

Отладка сетевой части скриптов


Лучший Ответ SteelRat , 08 August 2015 - 18:33

 

Не важно какое соединение, если вы поднимаете на одной машине выделенный сервер и клиента, это всё равно полноценный мультик, и не важно что ваш сервер и клиент локальны друг другу, это ваши косяки где то.

Данная функция прекрасно работает в таком раскладе, так что ищите проблему у себя

 

Весьма странно, ибо именно по локальному соединению, не передавались данные. По интернет соединению, другим клиентам, все прекрасно передается. Код следующий - 

"myPubVar2" addPublicVariableEventHandler 
{
	hint format ["Получили данные. myPubVar2 = %1", myPubVar2]
};


while {true} do 
{
	sleep 1;
	
	myPubVar = [123, "456", true];
	publicVariable "myPubVar";
	
	systemChat format ["Скрипт Test_Exit, загружен. Передаем данные  = %1", myPubVar];
};

Соответственно каждую секунду передаем данные, и принимаем их на каждом клиенте. Высвечиваем подсказку. Уж не знаю, где тут можно накосячить.

 

 

Отправлено Сегодня, 13:17

Sledo сказал(а) 08 Ауг 2015 - 02:18:snapback.png

Уж не знаю, где тут можно накосячить.

А в коде нет косяков. Проблема в чём-то другом.

Как запускали код? Где отчёт из RPT-файла?

 

 

Что значит нет косяков!?

Человек объявляет публичную переменную myPubVar

myPubVar = [123, "456", true];
publicVariable "myPubVar";

А евантхандлер выписывает переменной myPubVar2

"myPubVar2" addPublicVariableEventHandler 

И чего вы ожидаете в таком случае!?

Перейти к сообщению


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

#21 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 08 August 2015 - 13:14

Sledo, то есть это чудо?
Прикрепленный файл  publicVariable.jpg   123.7К   0 Количество загрузок:

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


  • 0

#22 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 08 August 2015 - 13:17

Уж не знаю, где тут можно накосячить.

А в коде нет косяков. Проблема в чём-то другом.

Как запускали код? Где отчёт из RPT-файла?


  • 0

#23 OFFLINE   Sledo

Sledo

    Ефрейтор

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

Отправлено 08 August 2015 - 17:01

Sledo, то есть это чудо?
attachicon.gifpublicVariable.jpg

У мну вот что получается:

 

72ace2d018cc.png

 

А в коде нет косяков. Проблема в чём-то другом.

Как запускали код? Где отчёт из RPT-файла?

 

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

.  Алгоритм действий писал выше. Разве что без девелоперской версии.


  • 0

#24 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 08 August 2015 - 17:25

У вас код запускается и на сервере, и на клиенте. Причём в этом коде есть переменная player, которая не доступна на сервере. Разграничьте код для сервера и клиента с помощью, например, isServer, или раскидайте его в файлы, как это сделано у vlad333000.

Ошибок в RPT-файле я не вижу.


Сообщение отредактировал Schatten: 08 August 2015 - 17:26

  • 0

#25 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 08 August 2015 - 17:31

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

.  Алгоритм действий писал выше. Разве что без девелоперской версии.


Потому что вы игру не начали: жмите "далее" и вы уйдете с брифинга, и тогда заработают все скрипты
PS Вас даже не смутил значок готовности на моем имени, отсутствия кнопок (У меня) "далее" и "отмена", и наличие компаса (У меня), да что там говорить вверху справа время совсем другое

Сообщение отредактировал vlad333000: 08 August 2015 - 17:35

  • 0

#26 OFFLINE   Sledo

Sledo

    Ефрейтор

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

Отправлено 08 August 2015 - 17:51

У вас код запускается и на сервере, и на клиенте. Причём в этом коде есть переменная player, которая не доступна на сервере. Разграничьте код для сервера и клиента с помощью, например, isServer, или раскидайте его в файлы, как это сделано у vlad333000.

Ошибок в RPT-файле я не вижу.

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

Немного не ясно, как влияет факт разбития скриптов, на корректность их работы? Но ок, сейчас попробую.

 

 

Потому что вы игру не начали: жмите "далее" и вы уйдете с брифинга, и тогда заработают все скрипты

PS Вас даже не смутил значок готовности на моем имени, отсутствия кнопок (У меня) "далее" и "отмена", и наличие компаса (У меня), да что там говорить вверху справа время совсем другое

Честно говоря мне не много не ясно что должно произойти. Вот скрин после брифинга 145d1c3b8097.png


  • 0

#27 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 08 August 2015 - 17:53

Sledo, я так понял вы шли таким способом: меню -> сетевая игра -> новая?
  • 0

#28 OFFLINE   Sledo

Sledo

    Ефрейтор

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

Отправлено 08 August 2015 - 18:10

Sledo, я так понял вы шли таким способом: меню -> сетевая игра -> новая?

Да. Исправился - через сервер работает как у вас. 94a57fb7100d.png


  • 0

#29 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 08 August 2015 - 18:33   Лучший Ответ

 

Не важно какое соединение, если вы поднимаете на одной машине выделенный сервер и клиента, это всё равно полноценный мультик, и не важно что ваш сервер и клиент локальны друг другу, это ваши косяки где то.

Данная функция прекрасно работает в таком раскладе, так что ищите проблему у себя

 

Весьма странно, ибо именно по локальному соединению, не передавались данные. По интернет соединению, другим клиентам, все прекрасно передается. Код следующий - 

"myPubVar2" addPublicVariableEventHandler 
{
	hint format ["Получили данные. myPubVar2 = %1", myPubVar2]
};


while {true} do 
{
	sleep 1;
	
	myPubVar = [123, "456", true];
	publicVariable "myPubVar";
	
	systemChat format ["Скрипт Test_Exit, загружен. Передаем данные  = %1", myPubVar];
};

Соответственно каждую секунду передаем данные, и принимаем их на каждом клиенте. Высвечиваем подсказку. Уж не знаю, где тут можно накосячить.

 

 

Отправлено Сегодня, 13:17

Sledo сказал(а) 08 Ауг 2015 - 02:18:snapback.png

Уж не знаю, где тут можно накосячить.

А в коде нет косяков. Проблема в чём-то другом.

Как запускали код? Где отчёт из RPT-файла?

 

 

Что значит нет косяков!?

Человек объявляет публичную переменную myPubVar

myPubVar = [123, "456", true];
publicVariable "myPubVar";

А евантхандлер выписывает переменной myPubVar2

"myPubVar2" addPublicVariableEventHandler 

И чего вы ожидаете в таком случае!?


  • 0

#30 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 08 August 2015 - 19:04

PS

Для упражнений в редакторе, ставим юнита в инит пишем это

0 = [] spawn {
	while {true} do {
		sleep 1;	
		_msg = format ["Получили данные: %1", [time, 123, "456", true]];
		[_msg, "hintsilent", true] call BIS_fnc_MP;
	};
};

Если нужно, например с сервера, да и не важно, хоть с клиента, инициализировать на стороне игроков некий функционал, BISы позаботились о этом

// На всех клиентах должна быть определена вызываемая функция
tag_fnc_functionName = {
	params["_time", "_number", "_string", "_isOk"];
	hintsilent format ["Получили данные: %1: %2: %3: %4", _time, _number, _string, _isOk];
};

// Отправлять данные всем клиентам, с таймером 1 сек. Код ниже однозначно подходит серверу.
while {true} do {
	sleep 1;	
	_packet = [time, 123, "456", true];
	[_packet, "tag_fnc_functionName", true] call BIS_fnc_MP;
};

Сообщение отредактировал SteelRat: 08 August 2015 - 19:08

  • 0




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