#321 OFFLINE
Posted 21 April 2016 - 14:16
Первый вариант (Быстрый, удобный, но требует доступ к аддонам сервера) - добавить обработчики событий "hit", "killed" и "init" в конфиг к каждому объекту - через hit и killed (Можно ещё "handleDamage") обрабатываем повреждения и заносим их в какую-нибудь БД, через "init" выполняем поиск объекта в БД и применение найденных данных
Второй вариант (Медленный (Но быстрее тупого поиска по всем объектам), требует доп. интернет трафика, не требует аддонов) - на, все, что может стрелять, вешаем обработчик событий "fired" - в обрабатывающем скрипте сначала смотрим за локальностью, а потом пока существует "выстреленный" объект (Пуля, снаряд, С4...) смотрим и запоминаем его позицию. После исчезновения снаряда отсылаем на сервер его последнюю позицию, а на сервере в маленьком радиусе ищем нужные нам объекты и чекаем их - сохраняем повреждения и позицию объекта (Нужна для быстрого поиска на старте) - на старте по известным координатам ищем объект и наносим ему дамаг
#322 OFFLINE
Posted 21 April 2016 - 14:32
Ave_Ursus, мне в голову приходит пока только два оптимизированных способа:
Первый вариант (Быстрый, удобный, но требует доступ к аддонам сервера) - добавить обработчики событий "hit", "killed" и "init" в конфиг к каждому объекту - через hit и killed (Можно ещё "handleDamage") обрабатываем повреждения и заносим их в какую-нибудь БД, через "init" выполняем поиск объекта в БД и применение найденных данных
Второй вариант (Медленный (Но быстрее тупого поиска по всем объектам), требует доп. интернет трафика, не требует аддонов) - на, все, что может стрелять, вешаем обработчик событий "fired" - в обрабатывающем скрипте сначала смотрим за локальностью, а потом пока существует "выстреленный" объект (Пуля, снаряд, С4...) смотрим и запоминаем его позицию. После исчезновения снаряда отсылаем на сервер его последнюю позицию, а на сервере в маленьком радиусе ищем нужные нам объекты и чекаем их - сохраняем повреждения и позицию объекта (Нужна для быстрого поиска на старте) - на старте по известным координатам ищем объект и наносим ему дамаг
Влад, а ведь очень красивый вариант намба уан - получаем автоматически подтягивающий на страрте сервера собственное состояние городок. Спасибо, испробую.
#323 OFFLINE
Posted 21 April 2016 - 15:40
#324 OFFLINE
Posted 18 May 2016 - 20:49
Есть 2 array, нужно получить id всех элементов 1-ог не присутствующих во втором (элементы могут повторяться(должно поддерживаться тоже))
#326 OFFLINE
Posted 18 May 2016 - 23:28
_array1 = [1, 2, 3, 4, 5]; _array2 = [1, 3, 5]; _array3 = []; _array4 = []; { if !(_x in _array2) then ц { _array3 pushBack _x; //Элементы _array4 pushBack _forEachIndex; //Иднексы }; } forEach _array1;
если:
_array1=[0,0,2,1];
_array2=[0,2,1];
- не сработает
#328 OFFLINE
Posted 19 May 2016 - 10:44
Есть 2 array, нужно получить id всех элементов 1-ог не присутствующих во втором (элементы могут повторяться(должно поддерживаться тоже))
_array1 = [1, 2, 3, 4, 5]; _array2 = [1, 3, 5, 6]; _array3 = _array1 arrayIntersect _array2; // [1, 3, 5] _indexes = []; {if (!(_x in _array3)) then {_indexes pushBack _forEachIndex}} forEach _array1; hint (str _indexes); // [1, 3]
#329 OFFLINE
Posted 19 May 2016 - 20:21
Ilias, и это как же интересно оно не сработает?! на выходе в таком случае будет пустой массив - нет ни одного элемента удовлетворяющему вашему условию - все верно
Есть 2 array, нужно получить id всех элементов 1-ог не присутствующих во втором (элементы могут повторяться(должно поддерживаться тоже))
_array1 = [1, 2, 3, 4, 5]; _array2 = [1, 3, 5, 6]; _array3 = _array1 arrayIntersect _array2; // [1, 3, 5] _indexes = []; {if (!(_x in _array3)) then {_indexes pushBack _forEachIndex}} forEach _array1; hint (str _indexes); // [1, 3]
_a1=[0,0,1,2,3]; _a2=[0,1,2]; _is=[]; {if !(_x in _a2)then{_is=_is+[_forEachIndex]}}forEach _a1; hint str _is; //4, нужно 1,4 (в этом и проблема(в повторяющихся элементах))
можно эргономичнее чем
~ _a1=[0,0,1,2,3]; _a2=[0,1,2]; _a=[]; _la=_a1-_a2; { _n=count _a1-(reverse _a1 find _x); _a=_a+[_n]; _a1 set[_n,""]; }foreach _la; hint str _a;
?
Edited by Ilias, 19 May 2016 - 21:09.
#330 OFFLINE
Posted 20 May 2016 - 10:19
{if(typename _x=="string")then{_a set[_n-(reverse _a find _x)+1,0]}}foreach(_a-magazines _o);
"set#[ error type number not number expected number"
описание ошибки ++ , помогите пожалуйста
#331 OFFLINE
Posted 20 May 2016 - 11:58
Во-вторых, ожидалось число >> оператор reverse не возвращает никакого значения >> find ломается >> ломается все выражение >> результат не число, а нечто не описываемое
Edited by vlad333000, 20 May 2016 - 12:02.
#332 OFFLINE
Posted 20 May 2016 - 22:58
Ilias, во-первых, вы так и не ответили на мой вопрос выше
Во-вторых, ожидалось число >> оператор reverse не возвращает никакого значения >> find ломается >> ломается все выражение >> результат не число, а нечто не описываемое
_la=_a; reverse _la; _n=count _a-1; {if(typename _x=="string")then{_a set[_n-(_la find _x)+1,0]}}foreach(_a-magazines _o);
thanks
если в array1 повторяется элемент присутствующий в array2 1 раз он сочтётся присутствующим (не должен)
#335 OFFLINE
Posted 21 May 2016 - 09:05
Увидеть фразу: "Элементы массива 2 могут только один раз соответствовать элементам массива 1" или что-то похожее на неё?нужно получить id всех элементов 1-ог не присутствующих во втором (элементы могут повторяться
Учитесь ставить задачи правильнее и более подробно описывать требования!
_array1 = [1, 1, 2, 3, 4, 5]; _array2 = [1, 3, 5]; _array3 = []; _array4 = []; _array2Temp = + _array2; //Копируем массив 2 что бы не изменять исходный { if !(_x in _array2Temp) then { _array3 pushBack _x; //Элементы _array4 pushBack _forEachIndex; //Иднексы } else { _array2Temp deleteAt (_array2Temp find _x); //Удаляем элемент из временного массива }; } forEach _array1;
Edited by vlad333000, 21 May 2016 - 10:59.
#336 OFFLINE
Posted 21 May 2016 - 20:13
Ilias, ну так так и пишите! Или мне нужно стать экстрасенсом и в этих словах:
Увидеть фразу: "Элементы массива 2 могут только один раз соответствовать элементам массива 1" или что-то похожее на неё?нужно получить id всех элементов 1-ог не присутствующих во втором (элементы могут повторяться
Учитесь ставить задачи правильнее и более подробно описывать требования!_array1 = [1, 1, 2, 3, 4, 5]; _array2 = [1, 3, 5]; _array3 = []; _array4 = []; _array2Temp = + _array2; //Копируем массив 2 что бы не изменять исходный { if !(_x in _array2Temp) then { _array3 pushBack _x; //Элементы _array4 pushBack _forEachIndex; //Иднексы } else { _array2Temp deleteAt (_array2Temp find _x); //Удаляем элемент из временного массива }; } forEach _array1;
yep, prety same to my variant
Edited by Ilias, 22 May 2016 - 01:44.
#337 OFFLINE
Posted 31 May 2016 - 20:39
Дяденьки, что то я не могу найти... А как скриптом запустить человеку респаун?
#338 OFFLINE
Posted 31 May 2016 - 20:48
#339 OFFLINE
Posted 01 June 2016 - 16:14
+
player setDamage 1;