

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

Лучший Ответ 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:
Уж не знаю, где тут можно накосячить.
А в коде нет косяков. Проблема в чём-то другом.
Как запускали код? Где отчёт из RPT-файла?
Что значит нет косяков!?
Человек объявляет публичную переменную myPubVar
myPubVar = [123, "456", true]; publicVariable "myPubVar";
А евантхандлер выписывает переменной myPubVar2
"myPubVar2" addPublicVariableEventHandler
И чего вы ожидаете в таком случае!?
Перейти к сообщению
#21
OFFLINE
Отправлено 08 August 2015 - 13:14
#22
OFFLINE
Отправлено 08 August 2015 - 13:17
Уж не знаю, где тут можно накосячить.
А в коде нет косяков. Проблема в чём-то другом.
Как запускали код? Где отчёт из RPT-файла?
#23
OFFLINE
Отправлено 08 August 2015 - 17:01
Sledo, то есть это чудо?
publicVariable.jpg
У мну вот что получается:
. Алгоритм действий писал выше. Разве что без девелоперской версии.А в коде нет косяков. Проблема в чём-то другом.
Как запускали код? Где отчёт из RPT-файла?
#24
OFFLINE
Отправлено 08 August 2015 - 17:25
У вас код запускается и на сервере, и на клиенте. Причём в этом коде есть переменная player, которая не доступна на сервере. Разграничьте код для сервера и клиента с помощью, например, isServer, или раскидайте его в файлы, как это сделано у vlad333000.
Ошибок в RPT-файле я не вижу.
Сообщение отредактировал Schatten: 08 August 2015 - 17:26
#25
OFFLINE
Отправлено 08 August 2015 - 17:31
. Алгоритм действий писал выше. Разве что без девелоперской версии.
Потому что вы игру не начали: жмите "далее" и вы уйдете с брифинга, и тогда заработают все скрипты
PS Вас даже не смутил значок готовности на моем имени, отсутствия кнопок (У меня) "далее" и "отмена", и наличие компаса (У меня), да что там говорить вверху справа время совсем другое
Сообщение отредактировал vlad333000: 08 August 2015 - 17:35
#26
OFFLINE
Отправлено 08 August 2015 - 17:51
У вас код запускается и на сервере, и на клиенте. Причём в этом коде есть переменная player, которая не доступна на сервере. Разграничьте код для сервера и клиента с помощью, например, isServer, или раскидайте его в файлы, как это сделано у vlad333000.
Ошибок в RPT-файле я не вижу.
Так и есть. Я запускаю сервер, два клиента, которые должны друг другу отправлять данные. Что до сервера, то меня не интересует вопрос корректной работы скрипта на нем, мне нужны клиенты. Однако клиенты, данные не принимают, по крайней мере по локальной сети.
Немного не ясно, как влияет факт разбития скриптов, на корректность их работы? Но ок, сейчас попробую.
Потому что вы игру не начали: жмите "далее" и вы уйдете с брифинга, и тогда заработают все скрипты
PS Вас даже не смутил значок готовности на моем имени, отсутствия кнопок (У меня) "далее" и "отмена", и наличие компаса (У меня), да что там говорить вверху справа время совсем другое
Честно говоря мне не много не ясно что должно произойти. Вот скрин после брифинга
#29
OFFLINE
Отправлено 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:
Уж не знаю, где тут можно накосячить.
А в коде нет косяков. Проблема в чём-то другом.
Как запускали код? Где отчёт из RPT-файла?
Что значит нет косяков!?
Человек объявляет публичную переменную myPubVar
myPubVar = [123, "456", true]; publicVariable "myPubVar";
А евантхандлер выписывает переменной myPubVar2
"myPubVar2" addPublicVariableEventHandler
И чего вы ожидаете в таком случае!?
#30
OFFLINE
Отправлено 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