Jump to content


Photo

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


Best Answer 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 

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

Go to the full post


  • Please log in to reply
29 replies to this topic

#21 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 08 August 2015 - 13:14

Sledo, то есть это чудо?
Attached File  publicVariable.jpg   123.7KB   0 downloads

Attached Files


  • 0

#22 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 08 August 2015 - 13:17

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

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

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


  • 0

#23 OFFLINE   Sledo

Sledo

    Ефрейтор

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

Posted 08 August 2015 - 17:01

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

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

 

72ace2d018cc.png

 

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

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

 

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

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


  • 0

#24 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 08 August 2015 - 17:25

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

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


Edited by Schatten, 08 August 2015 - 17:26.

  • 0

#25 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 08 August 2015 - 17:31

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

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


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

Edited by vlad333000, 08 August 2015 - 17:35.

  • 0

#26 OFFLINE   Sledo

Sledo

    Ефрейтор

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

Posted 08 August 2015 - 17:51

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

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

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

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

 

 

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

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

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


  • 0

#27 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 08 August 2015 - 17:53

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

#28 OFFLINE   Sledo

Sledo

    Ефрейтор

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

Posted 08 August 2015 - 18:10

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

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


  • 0

#29 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 08 August 2015 - 18:33   Best Answer

 

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

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

 

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

"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 posts
  • Откуда:РФ

Posted 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;
};

Edited by SteelRat, 08 August 2015 - 19:08.

  • 0




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