Jump to content


Photo

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

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

  • Please log in to reply
1486 replies to this topic

#361 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 05 June 2016 - 15:14

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


Edited by Schatten, 05 June 2016 - 15:15.

  • 0

#362 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 05 June 2016 - 15:22

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

#363 OFFLINE   Ave_Ursus

Ave_Ursus

    Мл.сержант

  • Пользователи
  • 125 posts
  • Откуда:spb
  • Отряд:ex AS

Posted 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 и забирать данные из них, но не спортивно.


Edited by Ave_Ursus, 05 June 2016 - 15:50.

  • 0

#364 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 05 June 2016 - 15:53

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

#365 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 05 June 2016 - 15:55

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

.


  • 0

#366 OFFLINE   Ave_Ursus

Ave_Ursus

    Мл.сержант

  • Пользователи
  • 125 posts
  • Откуда:spb
  • Отряд:ex AS

Posted 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

    Капитан

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

Posted 05 June 2016 - 16:03

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


  • 0

#368 OFFLINE   Ave_Ursus

Ave_Ursus

    Мл.сержант

  • Пользователи
  • 125 posts
  • Откуда:spb
  • Отряд:ex AS

Posted 05 June 2016 - 16:07

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

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


  • 0

#369 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 05 June 2016 - 16:40

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

Edited by vlad333000, 05 June 2016 - 16:41.

  • 1

#370 OFFLINE   Ave_Ursus

Ave_Ursus

    Мл.сержант

  • Пользователи
  • 125 posts
  • Откуда:spb
  • Отряд:ex AS

Posted 05 June 2016 - 16:46

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

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

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


  • 0

#371 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 05 June 2016 - 16:50

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


  • 1

#372 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 05 June 2016 - 16:56

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


JIP - это Persistent functions are called
  • 1

#373 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

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

Posted 05 June 2016 - 16:56

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


  • 2

#374 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 05 June 2016 - 17:00

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

#375 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

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

Posted 05 June 2016 - 17:05

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

 

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


Edited by Dimon UA, 05 June 2016 - 17:11.

  • 0

#376 OFFLINE   Ave_Ursus

Ave_Ursus

    Мл.сержант

  • Пользователи
  • 125 posts
  • Откуда:spb
  • Отряд:ex AS

Posted 05 June 2016 - 17:16

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


  • 0

#377 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

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

Posted 05 June 2016 - 17:25

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

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

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

Edited by Dimon UA, 05 June 2016 - 17:27.

  • 0

#378 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 05 June 2016 - 17:36

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

#379 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 05 June 2016 - 17:41

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

#380 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

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

Posted 05 June 2016 - 17:41

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

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


  • 0




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