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


Фотография

JIP и getVariable


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

#1 OFFLINE   ruPal

ruPal

    Мл. лейтенант

  • HMG-RO
  • 914 сообщений

Отправлено 26 October 2015 - 20:39

Вообщем, есть аддон перевешивания рюкзака на живот. При этой операции, игрок принудительно переходит на ходьбу через forceWalk. Но если игрок перезайдет на сервер, снова сможет бежать с рюкзаком на животе.
Чтобы это исправить, присваиваю переменную:
(_this select 0) setVariable ["forceWalk",  "1", true];

В моде есть строка инициализации через Extended PostInit EventHandlers, которая запускает скрипт в котором стоит проверка:
if !(isNil {(_this select 0) getVariable "forceWalk"}) then {(_this select 0) forceWalk true;};

Почему-то не работает. При попытке считать переменную, получаем результат - any.
Подскажите в чем проблема.


  • 0

#2 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 27 October 2015 - 01:40

 Extended PostInit EventHandlers

 

 

ВАТ!!!???


  • 0

#3 OFFLINE   ruPal

ruPal

    Мл. лейтенант

  • HMG-RO
  • 914 сообщений

Отправлено 27 October 2015 - 01:48

Через CBA.
  • 0

#4 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 27 October 2015 - 01:49

if !(isNil {(_this select 0) getVariable ["forceWalk", nil]}) then {(_this select 0) forceWalk true;};

Только вот не ясен ход мысли.

Если переменная "forceWalk" окажется nil, то этот код

(_this select 0) forceWalk true;

не будет исполнен.


  • 0

#5 OFFLINE   ruPal

ruPal

    Мл. лейтенант

  • HMG-RO
  • 914 сообщений

Отправлено 27 October 2015 - 02:17

Мне нужно узнать был ли forcewalk активен на момент выхода игрока с сервера, чтобы при перезаходе его на слот, активиривоть forcewalk. Если переменная будет nil, то на момент выхода игрока с сервера, он не был в состоянии forcewalk и выполнять код при его перезаходе нет необходимости.
Я удаляются переменную после выполнения forcewalk false и создают при forcewalk true.
  • 0

#6 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 27 October 2015 - 04:41

 

Я удаляются переменную после выполнения forcewalk false и создают при forcewalk true.

 

Мне уже реально в лом искать этот пост, это для инфы.
Объявив единожды переменную, подобным образом, вы не сможете её удалить, вы можете только присвоить ей значение nil, то бишь, ни чего. Тем не менее переменная будет существовать до тех пор, пока существует объект, которому присвоена эта переменная.
 


  • 0

#7 OFFLINE   ruPal

ruPal

    Мл. лейтенант

  • HMG-RO
  • 914 сообщений

Отправлено 27 October 2015 - 11:31

Спасибо за информацию. В таком случае возникает вопрос. Если у меня будет 150 юнитов с двумя такими переменными (итого, около 300 публичных переменных), значительно увеличится нагрузка на сервер и клиенты?

P. S. Проблему из заголовка темы решил. Она была в _this select 0, требовалось заменить на player. Видимо, так как скрипт вызывается не юнитом, то _this select 0 возвращал не то, что было нужно.


  • 0

#8 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 27 October 2015 - 19:13

 

P. S. Проблему из заголовка темы решил. Она была в _this select 0, требовалось заменить на player. Видимо, так как скрипт вызывается не юнитом, то _this select 0 возвращал не то, что было нужно.

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


 

Спасибо за информацию. В таком случае возникает вопрос. Если у меня будет 150 юнитов с двумя такими переменными (итого, около 300 публичных переменных), значительно увеличится нагрузка на сервер и клиенты?
 

 

Трудно даже представить сколько всякой ванильной дряни крутится и без наших фокусов).

Нагрузку будут давать публичные переменные, и то на саму сеть, ибо их нужно синхронизировать на всех клиентах, да и вряд ли у вас хватит терпения написать такое их кол-во) 


  • 0

#9 OFFLINE   ruPal

ruPal

    Мл. лейтенант

  • HMG-RO
  • 914 сообщений

Отправлено 27 October 2015 - 19:32

SteelRat , ответом был any, но не суть. Переменные будут создаваться автоматически. Заходит человек на сервер, берет рюкзак и вешает его на живот, в этот момент создается две глобальных переменных. Если зайдет 100 человек и повторит, то будет уже 202 переменные. Как я понимаю, в сеть транслируются только изменения переменных, получается, что в обычных условиях (действие повторяют 20-30 человек), проблем быть не должно?


Сообщение отредактировал ruPal: 27 October 2015 - 19:32

  • 0




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