#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;
![]()










