Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
123new

DayZ Standalone v0.62.142963 Server Files + рабочий респавн персонажа и лута

Рекомендованные сообщения

53 минуты назад, BorizzK сказал:

123new 

Судя по коду снятие магазина  и обратная установка

Но мне кажется тут надо делать _agent playAction ... , но какой, надо будет поразбираться

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

 

 

Блин уважаемые!!!! Я вот вообще не шарю в скриптах и работаю с тем что написано (по типу : " для включения того то и того то поставьте это и то вон там и знак в конце обязателен)  но вот тут мне кажется нужно просто сделать так чтоб после захода на сервер оружие перезаряжалось а не происходила замена магазина. Извините если в силу своей неграмотности написал не так и не то.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
MagicByte MagicByte MagicByte

Inqwizitor ну так для этого нужно знать что делать

По факту 2 варианта после захода на сервер:

1 снимаешь магазин и ставишь - передергивается затвор и патрон досылается в патронник.

2 Оружие в руках при входе на сервер - нажимаешь R - передергивается затвор и патрон досылается в патронник.

 

Осталось понять как это реализовать скриптом на сервере или на клиенте spawnForClient { код };

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, BorizzK сказал:

123new 

Судя по коду снятие магазина  и обратная установка

Но мне кажется тут надо делать _agent playAction ... , но какой, надо будет поразбираться

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

 

 

через createInInventory и createInAttachment

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

123new Вот, точно - createInAttachment )))

Спасибки

 

По условию and / or

a = true;

b = "text";

c = 10;

 

if (a && b != "" && c > 0 ) then {  работаем };

if (a || b != "" && c > 0 ) then { работаем };

 

Так работает?

 

Или лучше

 

if ( true ) then {

 if ( a != "" ) then {

  if ( b > 0 ) then {

    работаем;

  };

 };

};

 

итп?

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

BorizzK лучше или 2 вариант, или так:
 

 if ((!(a)&& (b != "")) && (c > 0) ) then {  работаем };

if ((!(a) || (b != "")) && c > 0 ) then { работаем }; 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

123new 

Вопрос

Чем лучше с твоей точки зрения?

Или это на случай если в переменной окажется другой, неожидаемый тип?

 

и, разве !(a)  - это не false (not true)?

 

Тут вот еще что нашел

setVariable missionnamespace ["переменная", значение]; больше не работает. Движок в логе (если запущен с -dologs) пишет что больше не поддерживается.

getVariable работает

 

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

嗨,服务器第一次运行。该球员出生在[Electrozavodsk]。僵尸产卵。玩家转到[。切尔诺戈尔斯克]产卵僵尸停止。

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Доработанная миссия от 123New (с внедрением моих фишек [комментарии почти везде есть])

Промежуточная версия.

https://drive.google.com/open?id=1d5n6PrUFH9BXVcWy7pF3BL4deAY2ZiVx

 

Список доработок/фишек выложу позже.

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 часа назад, 123new сказал:

через createInInventory и createInAttachment

createInAttachment

что-то не могу найти синтаксиса этой процедуры и вообще информацию по ней

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, BorizzK сказал:

createInAttachment

что-то не могу найти синтаксиса этой процедуры и вообще информацию по ней

для оружия аттачменты

_itemAtt = _loot createWeaponAttachment _x;	

где _loot - это object лута и _x это classname аттачмента

6 часов назад, BorizzK сказал:

123new 

Вопрос

Чем лучше с твоей точки зрения?

Или это на случай если в переменной окажется другой, неожидаемый тип?

 

и, разве !(a)  - это не false (not true)?

 

Тут вот еще что нашел

setVariable missionnamespace ["переменная", значение]; больше не работает. Движок в логе (если запущен с -dologs) пишет что больше не поддерживается.

getVariable работает

 

 

стоит именно !(a)&& (b != "")  а не (a != "")&& (b != "") потому, что

16 часов назад, BorizzK сказал:

По условию and / or

a = true;

b = "text";

c = 10;

т.е. тип переменной a - булево значение, и его форматы только true и false, и нет никаких "", "true", "false" у него

А  тип переменной b как раз string у тебя, т.е. строка в кавычках, и для нее работает и "true", и "false", и "", и даже "abra-kadabra", но оно не может быть булевым в виде true или false

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, liuniwan528 сказал:

嗨,服务器第一次运行。该球员出生在[Electrozavodsk]。僵尸产卵。玩家转到[。切尔诺戈尔斯克]产卵僵尸停止。

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

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

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

а теперь можно на нашем родном, деревенском? Какой еще нерест? о чем вы вообще?

Если вы о том, что труп зомби не пропадает, так он у вас и отспавнен не скриптом init_spawnZombies, а динамически на игрока официальной системой спавна сервера, обозначенной в mpmissions - db - events.xml  и какие события при спавне зомби этих и где устанавлияются я без понятия, и вполне возможно они зашиты в сам код сервера.
А вот зомби, спавнящиеся в процедуре init_spawnZombies спавнятся скриптом mpmissions - scripts - init - init_spawnZombies.sqf именно при рестарте сервера, и все события по их переспавну и урону по ним обозначены там же. К слову, там же добавлена процедура и event_zombiekilled, которая обозначает события в случае смерти этих зомби. В официальном клиенте игры это событие не объявлено скриптом, но вписано в скрипт. В сборке я это исправил, и сам скрипт лежит в mpmissions - scripts - events - event_zombie_killed.sqf и действия по удалению там и обозначены, как и действия по их переспавну. И это, кажется, я уже писал где-то в этой теме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

123new он китаец, нерест - это spawn, переводчик так переводит прост)

Изменено пользователем Alexis (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, 123new сказал:

для оружия аттачменты


_itemAtt = _loot createWeaponAttachment _x;	

где _loot - это object лута и _x это classname аттачмента

 

стоит именно !(a)&& (b != "")  а не (a != "")&& (b != "") потому, что

т.е. тип переменной a - булево значение, и его форматы только true и false, и нет никаких "", "true", "false" у него

А  тип переменной b как раз string у тебя, т.е. строка в кавычках, и для нее работает и "true", и "false", и "", и даже "abra-kadabra", но оно не может быть булевым в виде true или false

 

Вопрос 1

обьект лута - например "AKM"

classname аттачмента - это например глушитель: "Att_Suppressor_AK"

Так?

 

Значит

 

_loot = "AKM";

_att = "Att_Suppressor_AK";

 

_itemAtt = _loot createWeaponAttachment _att;

 

Верно?

 

А затем:

_v = _agent createInInventory _itemAtt;

 

Так?

 

Вопрос 2

Выше у меня была ошибка (опечатка) (исправил) - потому возникла путаница

 

!(a)&& (b != "")  а не (a != "")&& (b != "")

Я это понимаю как

Если a = false ( ! - значит НЕ) и b не равно "" (пустой строке)

 

a = true;
b = "text";
c = 10;

if (a && b != "" && c > 0 ) then {  работаем };
if (a || b != "" && c > 0 ) then { работаем };

if ( a ) then {
 if ( b != "" ) then {
  if ( c > 0 ) then {
	    работаем;
  };
 };
};

 

Вопрос  3

 

По переменной если она массив, причем пустой и = []

 

Скажем вот в такой ситуации

 

_listMan = _pos nearObjects ["Man",10]; //Если рядом никого нет _listMan = [] (судя по выводу в лог)
if (!isNil "_listMan" ) then {
	if (_listMan" != []) then {
			while {_listMan != []} do {
				_listMan = _pos nearObjects ["Man",10];
				_pos = _uid call fnc_SelectPosForSpawn;
				sleep 0.03;
			};
			diag_log format["INFO SPAWN SYSTEM: Change coordinates for player %1 to %2, becouse players are nearby: %3.",_uid,_pos,_listMan];
	};
};

Тут корректное сравнение? Потому как чисто по !isNil вроде бы не работает...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Alexis Что реально? Пишет тут через переводчик? Ох'ренеть ))))

 

ОФФ

Про вьетнамцев то же прикол

У нас тут кафе вьетнамское рядом с конторой

Ходим туда есть

 

Меню на русском переведено с вьетнамского с помощью гугл-переводчика

Некоторые пункты доставляют

 

Свинины под винным соусом )))))

 

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, BorizzK сказал:

 

Вопрос 1

обьект лута - например "AKM"

classname аттачмента - это например глушитель: "Att_Suppressor_AK"

Так?

нет. Это в виде AKM:23597 - т.е. результат так сказать создания из createvehicle. например:
 

_loot = createvehicle ["AKM", [0,0,0], [], 0, "NONE"];
_itemAtt = _loot createWeaponAttachment "Att_Suppressor_AK";	

 

1 час назад, BorizzK сказал:

Вопрос 2

Выше у меня была ошибка (опечатка) (исправил) - потому возникла путаница

 

!(a)&& (b != "")  а не (a != "")&& (b != "")

Я это понимаю как

Если a = false ( ! - значит НЕ) и b не равно "" (пустой строке)


a = true;
b = "text";
c = 10;

if (a && b != "" && c > 0 ) then {  работаем };
if (a || b != "" && c > 0 ) then { работаем };

if ( a ) then {
 if ( b != "" ) then {
  if ( c > 0 ) then {
	    работаем;
  };
 };
};

 

 

 

погляди как я скинул. Я сомневаюсь, что sqf понимает вариант if (a && b != "" && c > 0 )

Потому как общий принцип работы функции таков, что если указанное условие истина, то выполнить код. Но никак не условия.

Если мы хотим сделать несколько условий, то приводим их в конечном итоге к одному знаменателю, т.е. if ((a != true) && (b != "") && (c > 0) ). Т.е. на один if только одно условие в виде == или !=, либо ><=, а внутри него может быть подструктура

Изменено пользователем 123new (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, BorizzK сказал:

Вопрос  3

По переменной если она массив, причем пустой и = []

Скажем вот в такой ситуации


_listMan = _pos nearObjects ["Man",10]; //Если рядом никого нет _listMan = [] (судя по выводу в лог)
if (!isNil "_listMan" ) then {
	if (_listMan" != []) then {
			while {_listMan != []} do {
				_listMan = _pos nearObjects ["Man",10];
				_pos = _uid call fnc_SelectPosForSpawn;
				sleep 0.03;
			};
			diag_log format["INFO SPAWN SYSTEM: Change coordinates for player %1 to %2, becouse players are nearby: %3.",_uid,_pos,_listMan];
	};
};

Тут корректное сравнение? Потому как чисто по !isNil вроде бы не работает...

 

 

с массивом не работает == и !=. Тут действовать только в виде сравнения частей массива. например:

_massive1 = [2569,2785,0.0068];
_massive2 = [2569,2785,0.0068];
if (((_massive1 select 0) == (_massive2 select 0)) && ((_massive1 select 1) == (_massive2 select 1)) && ((_massive1 select 2) == (_massive2 select 2))) then
{
	diag_log format["_massive2 in _massive1 "];
};

Если часто пользуешь такое, можно в виде функции сделать, в которую два массива передаешь и возвращаешь true или false

Изменено пользователем 123new (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

123new 

По аттачментам все получилось

	_weapM4A1 = "M4A1";
	_attM4A1 = ["Att_Suppressor_M4","Att_Handguard_M4RIS","Att_Buttstock_M4MP","Att_Bipod_Atlas","Att_Optic_ACOG","M_STANAG_30Rnd_Coupled"];
	_v = _agent createInInventory _weapM4A1; // положили агенту в инвентарь - создался обьект на сервере типа M4A1:2:238
	diag_log format [" INFO SPAWN SYSTEM:  CREATE WEAPON: Weapon: %1",_v];
	{ 
		_itemAtt = _v createWeaponAttachment _x; // далее навешиваем на него в цикле нужные аттачменты которые так же создаются как обьекты
		diag_log format [" INFO SPAWN SYSTEM:  ADD ATTACHMENT: Weapon: %1, Attahchment: %2",_v,_x];
	} forEach _attM4A1;

 

По условию

вроде все понимает вроде - что в скобках что без

 

Вот навесил event_weaponFiredCustom.sqf вместо штатного   event_weaponFired

Что бы при стрельбе ок обьекта типа House можно было в чате его название посмотреть

_unit = 		_this select 0;
_weapon = 		_this select 1;
_ammo = 		_this select 4;
_magazine = 	_this select 5;
_projectile = 	_this select 6;
_client = 		owner _unit;
_unit_pos =		getPos _unit;

_dz_admin_shoot_diag = missionNamespace getVariable "DZ_ADMIN_SHOOT_DIAG";
_obj_scan_raduis = missionNamespace getVariable "DZ_ADMIN_SHOOT_DIAG_RADIUS";
_obj_scan_type = missionNamespace getVariable "DZ_ADMIN_SHOOT_DIAG_OBJTYPE";

if (isNil "DZ_ADMIN_SHOOT_DIAG") then { _dz_admin_shoot_diag = false };
if (isNil "DZ_ADMIN_SHOOT_DIAG_RADIUS") then { _obj_scan_raduis = 20 };
if (isNil "DZ_ADMIN_SHOOT_DIAG_OBJTYPE") then { _obj_scan_type = "Man" };

//SHOOT DIAG - SCAN OBJECTS _obj_scan_type (text) AROUND POSITION _unit_pos (coordinates) in RADIUS _obj_scan_raduis (meters) AND SEND OBJECT NAME TO CHAT and LOG
if ((_dz_admin_shoot_diag) && (_obj_scan_type != "") && (_obj_scan_raduis > 0)) then {
	if ((getClientUID _client) in array_ADMINS) then {
		[_client,_unit,_unit_pos,_obj_scan_raduis,_obj_scan_type] spawn {
			_tunit = _this select 1;
			_fObjectReport = _tunit getVariable "fObjectReport";
			if (!isNil "_fObjectReport") exitWith{};
			_tclient = _this select 0;
			_tunit_pos = _this select 2;
			_tobj_scan_radius = _this select 3;
			_tobj_scan_type = _this select 4;
			_tunit setVariable ["fObjectReport",true];
			{
				_found_obj_pos = getPos _x;
				_found_obj_dir = getDir _x;
				_text = format [" DIAG SHOOT: Near client %1: Position: %2, Direction: %3.",_tclient,_found_obj_pos,_found_obj_dir];
				_text2 = format [" DIAG SHOOT: Found object: [ %1 ] in radius %2.",_x,_tobj_scan_radius ];
				_tclient statusChat [_text,"ColorFriendly"];
				_tclient statusChat [_text2,"ColorFriendly"];
				diag_log format[_text];
				diag_log format[_text2];

				sleep 5;

			} foreach (_tunit_pos nearObjects [_tobj_scan_type,_tobj_scan_radius]);
			_tunit setVariable ["fObjectReport",nil];
		};
	};
}

 

Про массив

 

massive = [];

if ( (!isNil (_massive select 0)) then {

 // код будет выполнен если массив будет содержать что-либо

// код не будет выполнен если массив будет пуст

};

 

верно?

 

Те такое работать должно (проверка есть ли кто рядом при спавне нового игрока и смены координат для спавна в случае если кто-то есть рядом):

 

_pos = _uid call fnc_SelectPosForSpawn; 
_listMan = _pos nearObjects ["Man",10];
_nearMan = "";
if (!isNil (_listMan select 0)) then {
		while {!isNil (_listMan select 0)} do {
			_nearMan = _listMan select 0;
			_listMan = _pos nearObjects ["Man",10];
			_pos = _uid call fnc_SelectPosForSpawn;
		};
		diag_log format["INFO SPAWN SYSTEM: Change coordinates for player %1 to %2, becouse players are nearby.",_uid,_pos,_nearMan];
};

 

 

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

BorizzK по логике должно работать, по факту не проверял. В любом случае ты можешь количество объектов в массиве всегда проверить банальным (count _listMan). В случае если он ничем массив не заполнил в любом случае будет count = 0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

123new Про count я как-то не подумал

Еще один вопросик по массивам

 

Есть массив

 

_arrMp5 = ["MP5K","Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"],

 

Мне нужно в процедуре получить в одну переменную первый элемент массива, а во вторую все остальные элементы

 

типа

 

_arrMP5 = ["MP5K","Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"];
_var1 = _arrMP5 select 0;
_var2 = _arrMP5 select [1,(count _arrMP5)-1]; // Альтернативный синтаксис 4 - остюда - https://community.bistudio.com/wiki/select
diag_log format [" INIT: TEST ZONE: _var1 = %1, _var2 = %2",_var1,_var2];

 

В теории получится

_var1 = "MP5K"

_var2 = "Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"

 

Только почему-то не работает

 

Я конечно понимаю, что можно сделать так

 

_arrMP5 = [["MP5K"],["Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"]];
_var1 = _arrMP5 select 0;
_var2 = _arrMP5 select 1;

 

Но так не спортивно ))))
 

 

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, BorizzK сказал:

123new Про count я как-то не подумал

Еще один вопросик по массивам

 

Есть массив

 

_arrMp5 = ["MP5K","Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"],

 

Мне нужно в процедуре получить в одну переменную первый элемент массива, а во вторую все остальные элементы

 

типа

 

_arrMP5 = ["MP5K","Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"];
_var1 = _arrMP5 select 0;
_var2 = _arrMP5 select [1,(count _arrMP5)-1]; // Альтернативный синтаксис 4 - остюда - https://community.bistudio.com/wiki/select
diag_log format [" INIT: TEST ZONE: _var1 = %1, _var2 = %2",_var1,_var2];

 

В теории получится

_var1 = "MP5K"

_var2 = "Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"

 

Только почему-то не работает

 

Я конечно понимаю, что можно сделать так

 

_arrMP5 = [["MP5K"],["Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"]];
_var1 = _arrMP5 select 0;
_var2 = _arrMP5 select 1;

 

Но так не спортивно ))))
 

 

не работает скорее всего так как не верно прописано условие.

выбор по select в массиве работает по индексам элементов массива, индексы в массивах sqf начинаются с 0.

count же подсчитывает элементы массива, т.е. от 1.

_arrMP5 select [1,(count _arrMP5)-1] значит выбрать с массива _arrMP5 элементы с 2 (индекс = 1 это 2 элемент), и выбрать их 4 следующих (т.е. 2,3,4,5 элементы). А как их выбрать 4 со второго, если их всего 4 в массиве? т.е. не (count _arrMP5)-1 а (count _arrMP5)-2

еще можно подругому:
 

_arrMP5 = ["MP5K","Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"];
_var1 = _arrMP5 select 0;
_var2 = [];
for "i" from 1 to (count _arrMP5) do
{
	_var2 = _var2 + [_arrMP5 select i];
};
diag_log format [" INIT: TEST ZONE: _var1 = %1, _var2 = %2",_var1,_var2];

 

Изменено пользователем 123new (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, 123new сказал:

не работает скорее всего так как не верно прописано условие.

выбор по select в массиве работает по индексам элементов массива, индексы в массивах sqf начинаются с 0.

count же подсчитывает элементы массива, т.е. от 1.

_arrMP5 select [1,(count _arrMP5)-1] значит выбрать с массива _arrMP5 элементы с 2 (индекс = 1 это 2 элемент), и выбрать их 4 следующих (т.е. 2,3,4,5 элементы). А как их выбрать 4 со второго, если их всего 4 в массиве? т.е. не (count _arrMP5)-1 а (count _arrMP5)-2

еще можно подругому:
 


_arrMP5 = ["MP5K","Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"];
_var1 = _arrMP5 select 0;
_var2 = [];
for "i" from 1 to (count _arrMP5) do
{
	_var2 = _var2 + [_arrMP5 select i];
};
diag_log format [" INIT: TEST ZONE: _var1 = %1, _var2 = %2",_var1,_var2];

 

Спасибки

Ща затестим

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

123new 

 

Не взлетает

arrTEST2 = ["0000","1111","2222","3333"];
diag_log format ["INIT: TEST2: _arrTEST2 = %1.",_arrTEST2];
_var1Test2 = _arrTEST2 select 0; 
_var2Test2 = _arrTEST2 select [1,(count _arrTEST2) - 2];
diag_log format ["INIT: TEST2: _var1Test2 = %1, _var2Test2 = %2",_var1Test2,_var2Test2];

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

BorizzK видимо в dayz таки изменили что-то в функциях sqf. Тогда по примеру что скинул, по нему 100% должно сработать.

Можно правда еще и так:

_arrMP5 = ["MP5K",["Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"]];
_var1 = _arrMP5 select 0;
_var2 = _arrMP5 select 1;
diag_log format [" INIT: TEST ZONE: _var1 = %1, _var2 = %2",_var1,_var2];

 

Изменено пользователем 123new (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

123new 

Ну так-то работает изначально

 

Однако select [1,(count _array) - 1];  великолепно работает судя по всему в spawncars.sqf

оттуда

_selected_type_car_for_spawn = _selected_type_car select ([0,(count _selected_type_car)-1] call fnc_random_int_select);

 

И кстати

 

_arrTEST3 = ["MP5K","Att_Suppressor_Pistol","Att_Optic_ACOG","M_MP5_30Rnd"];
diag_log format ["INIT: TEST3: _arrTEST3 = %1.",_arrTEST3];
_var1Test3 = _arrTEST3 select 0;
_var2Test3 = [];
for "i" from 1 to (count _arrTEST3) - 1 do
{
 _var2Test3 = _var2Test3 + [_arrTEST3 select i];
};
diag_log format ["INIT: TEST3 result: _var1Test3 = %1, _var2Test3 = %2",_var1Test3,_var2Test3];
 

for "i" from 1 to (count _arrTEST3) - 1 - тут именно - 1 - если 1 не отнять то в конце доабвляется элемент со значением null

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: Troy1
      Всем привет. пишу мод и столкнулся с проблемой в реализации.
      Суть: Пытаюсь сделать проверку, если игрок стоит прям у окна или у дверного проёма он должен получать урон.
      Делал вот так.
      int wallHits = 0; float d = 2.2; // Дистанция до стены. Если стена дальше — считаем, что там окно или проем. // 8 направлений "снежинкой" для проверки стен вокруг игрока // Используем Vector(x, y, z) для точности ref array<vector> checkDirs = { Vector(d,0,0), Vector(-d,0,0), Vector(0,0,d), Vector(0,0,-d), Vector(d,0,d), Vector(-d,0,-d), Vector(d,0,-d), Vector(-d,0,d) }; foreach (vector dir : checkDirs) { // Пускаем горизонтальные лучи от позиции игрока (from) if (DayZPhysics.RayCastBullet(from, from + dir, collisionLayerMask, this, hitObject, hitPosition, hitNormal, hitFraction)) { // ПРОВЕРКА: Это должна быть вертикальная стена (Y нормали < 0.5) // Чтобы не засчитать низкий потолок за стену if (Math.AbsFloat(hitNormal[1]) < 0.5) { wallHits++; } } } // УСЛОВИЕ БЕЗОПАСНОСТИ: // В комнате wallHits будет 6-8. У окна или в проеме — 1-4. if (wallHits < 5) { hasSafeCeiling = false; // Слишком открытое пространство (окно/дверь) } Пытался менять дистанции, но всё ровно не как не хочет работать.
      Что я делаю не так, или я вообще делаю не то?
      Мне нужно проверять игрока, в укрытии он или нет.
      С высотой я разобрался, а вот с боковыми лучами у меня траблы и не во всех помещениях работает как нужно.
      В некоторых помещениях вообще не работает, удаляешь строки проверки, начинает работать и то по высоте.
      Просто забегаешь по навес и игрок под защитой, так не должно быть.
      Помогите пожалуйста  решить задачу.
    • Автор: Troy1
      Всем привет. Суть в чём, пишу мод на событие и когда происходит событие, параллельно должна меняться скорость ветра, не могу понять как заставить скрипт управлять силой ветра. Понижать силу ветра получилось сделать, а вот повышать не как. Только после перезагрузки сервера сила ветра задаётся в нужном значение.
      Как сделать, что бы по вызову функции менялась сила ветра в большую или в меньшую сторону?
      protected void SetWind(float wind, float time) { if (!g_Game) return; Weather m_Weather = g_Game.GetWeather(); if (!m_Weather) return; m_Weather.SetWindMaximumSpeed(wind); m_Weather.SetWind(Vector(1/Math.Sqrt(3), 1/Math.Sqrt(3), 1/Math.Sqrt(3)) * wind); m_Weather.SetWindSpeed(wind); m_Weather.SetWindFunctionParams(1.0, 1.0, -1); } Это скрипт на понижение силы ветра.
      Работает понижение силы ветра в том случае, если до этого сила ветра была выше.
      Пример:
      Изначально на сервере сила ветра = 20 m/s А нужно понизить до 10 m/s
      Только в этом случае сработает скрипт который я приложил выше.
      Помогите пожалуйста решить этот вопрос.
      За ранние благодарю.
    • Автор: Troy1
      Пока ждал помощи, решил вопрос!
      Тема закрыта!!!
    • Автор: magliner
      Привет ! Ну вот моя история с вопросом в конце.. Я фанат Дэйз ванилы черноруси, заколебало сидеть на бездушных серверах со слабой админкой и терять лут от софтеров, решил создать под свои скромные запросы около ванильный сервер.. Нашел хорошего исполнителя, быстро и четко запустили отладили и ВОТ я имею СВОЙ сервер.. клас! вечер восторга и изучения
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
  • Наш выбор

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.