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


Фотография

Вопросы по скриптингу

Arma3 как плотформа для созда Скритпы

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

#361 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 05 June 2016 - 15:14

vlad333000, только что проверил - в вашем решении thisList будет содержать все объекты, которые находятся в зоне действия триггера, среди которых вы потом ищете наличие игрока с помощью in; в моём решении thisList будет содержать только объект игрока, если он находится в зоне действия триггера, и можно вообще не проверять, есть ли он в thisList, поскольку за меня это сделал движок игры. Так что лучше и (или) быстрее?


Сообщение отредактировал Schatten: 05 June 2016 - 15:15

  • 0

#362 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 June 2016 - 15:22

Schatten, ну с аттачем да, достаточно даже просто this, я просто не вкурил сначала что вы про аттачем говорите
  • 0

#363 OFFLINE   Ave_Ursus

Ave_Ursus

    Мл.сержант

  • Пользователи
  • 125 сообщений
  • Откуда:spb
  • Отряд:ex AS

Отправлено 05 June 2016 - 15:49

Чувствуется не получится у меня сегодня уйти поспать - сам себя загнал в очередную яму.

К моменту запуска серверной части скрипта клиента на сервере ещё нет.

 

Координаты, тип и радиус на клиентские машины я передаю вот этим кодом:

_trg = [_radPosType,_radPosRadius,_pos,_i] remoteExec ["ATH_createRadiationSpot",-2,true]; 
diag_log format ["remoteExec JIP ID is %1",_trg];

В логах сервера создаются записи с JIP ID создания этих триггеров на клиентах

 
13:57:34 "_radPosType = 3, _radPosRadius=31, _pos=[16790.5,16899.8,0]"
13:57:34 "remoteExec JIP ID is 2_10"

Только вот на клиенте ничего не происходит.

С JIP я раньше тоже не сталкивался, не подскажете - как то инициализировать надо на клиенте или само должно прилетать и запускаться?

Конечно можно наплодить publicVariable и забирать данные из них, но не спортивно.


Сообщение отредактировал Ave_Ursus: 05 June 2016 - 15:50

  • 0

#364 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 June 2016 - 15:53

Ave_Ursus, ты как определяешь функцию ATH... на клиентах?
  • 0

#365 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 05 June 2016 - 15:55

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

.


  • 0

#366 OFFLINE   Ave_Ursus

Ave_Ursus

    Мл.сержант

  • Пользователи
  • 125 сообщений
  • Откуда:spb
  • Отряд:ex AS

Отправлено 05 June 2016 - 15:56

Из инита вызываю компилирование.

 
//Компилируем функции используемые клиентом
_handle = [] execVM "compile\compile.sqf";    
waitUntil {scriptDone _handle};
В компиляторе вот так:
ATH_createRadiationSpot = compileFinal preprocessfilelinenumbers "compile\ATH_Client_fnc_createRadiationSpot.sqf";

  • 0

#367 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 05 June 2016 - 16:03

Ave_Ursus, а у клиента в RPT что-нибудь записывается, мол, функция не определена?


  • 0

#368 OFFLINE   Ave_Ursus

Ave_Ursus

    Мл.сержант

  • Пользователи
  • 125 сообщений
  • Откуда:spb
  • Отряд:ex AS

Отправлено 05 June 2016 - 16:07

Ave_Ursus, а у клиента в RPT что-нибудь записывается, мол, функция не определена?

Пусто. Точнее есть одна ошибка, но она никак с этим кодом не завязана.


  • 0

#369 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 June 2016 - 16:40

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

Сообщение отредактировал vlad333000: 05 June 2016 - 16:41

  • 1

#370 OFFLINE   Ave_Ursus

Ave_Ursus

    Мл.сержант

  • Пользователи
  • 125 сообщений
  • Откуда:spb
  • Отряд:ex AS

Отправлено 05 June 2016 - 16:46

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

Влад, но ведь в рпт что то должно было упасть насколько я понимаю?

Кстати тогда я в растерянности как можно подготовить на клиенте функцию до старта инит.скф


  • 0

#371 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 June 2016 - 16:50

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


  • 1

#372 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 June 2016 - 16:56

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


JIP - это Persistent functions are called
  • 1

#373 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 05 June 2016 - 16:56

а я бы ушел от использования триггеров и сделал бы проверку через while... даже повесил бы проверку на клиента и не находится ли он в требуемой зоне.


  • 2

#374 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 June 2016 - 17:00

Dimon UA, +1 но нужно что бы автор сего действия знал очень хорошо геометрию и мог оптимизировать поиск потенциальных зон (Если их много конечно), тогда можно зоны распихать с точностью до каждого домика
  • 1

#375 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 05 June 2016 - 17:05

можно на сервере проверять дистанцию от клиента до потенциально ближайших зон проверки - если клиент на близкой дистанции - то закидывать ему координаты ближайщих потенциальных зон и уже потом на клиенте проверять не "вступил" ли он туда... 

 

при условии что зоны динамически изменяемые


Сообщение отредактировал Dimon UA: 05 June 2016 - 17:11

  • 0

#376 OFFLINE   Ave_Ursus

Ave_Ursus

    Мл.сержант

  • Пользователи
  • 125 сообщений
  • Откуда:spb
  • Отряд:ex AS

Отправлено 05 June 2016 - 17:16

Полностью с вами согласен уважаемые. Но пока хочется посмотреть на общую картину и уже потом решить - полировать/не полировать. Геометрия в арме это для меня штука сложная. Пока по "простому" пути.


  • 0

#377 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 05 June 2016 - 17:25

Полностью с вами согласен уважаемые. Но пока хочется посмотреть на общую картину и уже потом решить - полировать/не полировать. Геометрия в арме это для меня штука сложная. Пока по "простому" пути.

я тя умоляю о какой геометрии ты говоришь?
 

{
   _spawnpoint=_x;
   if ({ if(_spawnpoint distance (getposatl _x) < 500) exitWith {1};} count (playableUnits) > 0) exitWith{передача клиенту размер зоны};
}foreach (массив координат зон);

Сообщение отредактировал Dimon UA: 05 June 2016 - 17:27

  • 0

#378 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 June 2016 - 17:36

Dimon UA, зоны бывают разных размеров, форм, могут пересекаться друг с другом и...
Ваш написанный алгоритм далеко не идеален (Пропущено множество возможных ситуаций)
  • 0

#379 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 June 2016 - 17:41

По моему, лучше будет если абсолютно всеми расчетами будет заниматься клиент (У нас в Арме сервера и так не производительные), а сервер лишь будет синхронизировать позиции динамических зон между игроками (Если таковые имеются). Сервер лучше занять чем-то более для него полезным и важным (Слежение за ходом сценария миссии, например)
  • 0

#380 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 05 June 2016 - 17:41

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

(можно сделать и в массиве триггеров) 


  • 0




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