Jump to content

Recommended Posts

Юнитпроцессор бесследно исчез, как теперь делать кастомное снаряжение игроков ? :)

Можно пока пользоваться бисовским арсеналом, последовательность действий:

1) Редактируем инвентарь юнита, при этом не забываем дать ему рацию(должен быть класс ItemRadio,  исправить после редактирования, если это не так), карту, компас, часы, если нужно

2) Сгружаем все в буфер и сохраняем в файл, например tpl\fighter.sqf

3) Редактируем файл

  • а) Заменяем все
    this 

    в коде на 

    _this

б) Добавляем в начало файла строчку 

if (not local _this) exitwith {};

в) Удаляем строчки изменения лица и голоса, которые добавляет Арсенал

 

4) Юниту, который будет с этим снаряжением в поле инициализации в редакторе пишем:

this call compile preprocessfilelinenumbers "tpl\fighter.sqf";

Edited by Zealot

Share this post


Link to post
Share on other sites
@Zealot, я правильно понимаю, что таким образом можно одевать абсолютно любую форму? Т.е. допустим ксатовца в натовскую форму нарядить.

Share this post


Link to post
Share on other sites

Zealot, я правильно понимаю, что таким образом можно одевать абсолютно любую форму? Т.е. допустим ксатовца в натовскую форму нарядить.

Надо попробовать, вроде можно.

Share this post


Link to post
Share on other sites

А вот менять вооружение техники, увеличить количество боеприпасов и дымов в ней, все еще не может. Поэтому вопрос все еще актуален.

 

Прямо в редакторе у юнита прописывай, что нужно поменять. Я с а3 еще не работал, конечно, но не думаю, что так уж сильно от а2 отличается. Не нужны для этого ни юнитпроцессоры, ни платформы, ни что либо еще. Бисы такой арсенал картоделам дали, пили - не хочу.

Share this post


Link to post
Share on other sites

Прямо в редакторе у юнита прописывай,

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

Share this post


Link to post
Share on other sites

@Nkey

Странно, в ините юнита прописывал технике дополнительные дымы, все игралось на сервере, брат жив, зависимость есть. На а3 как-то по-другому все?

Share this post


Link to post
Share on other sites

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

Нет. Инит объекта выполняется при его создании либо при обновлении инита. В A3 второе невозможно.

Share this post


Link to post
Share on other sites

@swatSTEAM, странно. Много раз сталкивались с такой проблемой - при перезаходе кого-то из игроков, у него начинает выполняться инит и добавляет всем остальным игрокам все еще раз. 

Share this post


Link to post
Share on other sites
@Nkey, ну попробуй в инит юнита засунуть какое-нибудь глобальное бисовское говно (типа bis fnc mp) а в него хинт. Если при перезаходе сработает, то я сильно ошибаюсь.

Share this post


Link to post
Share on other sites

@swatSTEAM

было было, у нас на последних играх, после перезаходов у некоторых игроков по 100+ ракет к рпг было в инвентаре. Причем срабатывает, не побоюсь этого слова, совершенно рандомно.

Share this post


Link to post
Share on other sites

Вот что на вики написано (подразумевается arma2), не знаю менялось ли что в arma3

 

Order of Initialization
Scripts
  • Server & Players (NOT JIP)
    • While moving to Briefing
      • Unit Init EH runs
      • Unit Init line from editor runs
      • After all units are initialized, init.sqf runs
    • After Briefing
    • if onPlayerConnected was setup in e.g. init.sqf, it will now process all the players connected in order of connected
      • onPlayerConnected will process new players after they are connected to their player body. So JIP player connects, world initializes, he gets control of his character, now the onPlayerConnected fires on the server.
  • JIP Players
    • Same as above, but there's no Briefing this time. init.sqf seems to run after the player gets control of his character

Да касаемо скрипта выше, почему бы сделать не так?

if (local this) then {this call compile preprocessfilelinenumbers "tpl\fighter.sqf";};

Самому проверить что там с инициализацией все руки не доходят

 

Share this post


Link to post
Share on other sites

Вот результаты теста

Выделенный сервер 2 игрока

Поставил три техники:

Вертолет ~300 метров от игроков

Пантера ~2 км от игроков

Хантер ~3 км от игроков

В инициализации  техники прописал 

вертолету var = [] spawn {sleep 5; hint "test1";};
пантере var = [] spawn {sleep 10; hint "test2";};
хантеру var = [] spawn {sleep 15; hint "test3";};

Стартуем миссию:

я и второй игрок видим все три сообщения

затем второй игрок перезаходит и он видит только одно долго висящее сообщение "test1", остальные сообщения не появляются

Edited by IHUNTERI

Share this post


Link to post
Share on other sites

@IHUNTERI

Да ладно? Это вообще жесть тогда.

Раздавайте снаряжение только с серва, в момент, когда он овнер для всех играбельных юнитов. Сервак не перезаходит. :)

Хотя, убери-ка из всех инитов "var =" и протести снова.

Edited by swatSTEAM

Share this post


Link to post
Share on other sites

Уверен ничего не поменяется, переменная - это всего лишь "ссылка/ярлык".

Дело в том что большинсто команд, меняющих снаряжение юниту игрока, работать будут только на машине игрока.

Но на кооп миссиях я это так решал

_start_check = (player getvariable "Start_completed");
if (isnil "_start_check") then
{
    // делаем "все что нужно" с юнитом игрока
};
player setVariable ["Start_completed", true, true];
// больше "все что нужно" с юнитом игрока не случится, сколько не перезаходи

При этом не занятые игроками юниты нужно обрабатывать на сервере.

Раздавать снаряжение перед тем как владельцем стал игрок, проблематично будет, мне кажется.

Edited by IHUNTERI

Share this post


Link to post
Share on other sites

Уверен ничего не поменяется, переменная - это всего лишь "ссылка/ярлык".

Дело в том что большинсто команд, меняющих снаряжение юниту игрока, работать будут только на машине игрока.

Но на кооп миссиях я это так решал

_start_check = (player getvariable "Start_completed");
if (isnil "_start_check") then
{
    // делаем "все что нужно" с юнитом игрока
};
player setVariable ["Start_completed", true, true];
// больше "все что нужно" с юнитом игрока не случится, сколько не перезаходи

При этом не занятые игроками юниты нужно обрабатывать на сервере.

Раздавать снаряжение перед тем как владельцем стал игрок, проблематично будет, мне кажется.

Мы тоже были уверены, что при параметрах -mod и -beta ничего не изменится, но это же ARMA, при параметре mod, ARMA 2 не подключается, а при beta наоборот, так что полностью быть в чем-то уверенным нельзя

Share this post


Link to post
Share on other sites

@IHUNTERI,

На самом деле это хороший способ. У меня так в аддоне маркеров карты заменяются на уникальные. Ну, принцип тот же, основанный на неймспейсе.

Share this post


Link to post
Share on other sites

Все еще интересней
5 машин
1 метров 200 от игроков
2 1км
3 2 км
и так далее
предыдущий код изменил на

call {[] spawn {sleep 10; hint "test1";};};

При старте все 5 сообщений один за другим
При перезаходе у второго игрока висит хинт сразу без задержки "test2"
удаляю вторую машину, перезаход, висит "test3"
удаляю третью, висит "test4"
...
удаляю пятую, висит "test1"
:rolleyes:
testMPinit.VR.pbo
Почему так? Есть мысль, что в missions.sqm

class Vehicles
	{
		items=5;
		class Item0
		{
			position[]={4013.7595,5,4347.5742};
			id=2;
			side="EMPTY";
			vehicle="B_MRAP_01_F";
			skill=0.60000002;
			text="car2";
			init="call {[] spawn {sleep 18; hint ""test2"";};};";
		};
		class Item1
		{
			position[]={4009.8037,5,5344.4429};
			id=3;
			side="EMPTY";
			vehicle="B_MRAP_01_F";
			skill=0.60000002;
			text="car3";
			init="call {[] spawn {sleep 20; hint ""test3"";};};";
		};
		class Item2
		{
			position[]={4007.8823,5,6355.3481};
			id=4;
			side="EMPTY";
			vehicle="B_MRAP_01_F";
			skill=0.60000002;
			text="car4";
			init="call {[] spawn {sleep 25; hint ""test4"";};};";
		};
		class Item3
		{
			position[]={4016.853,5,7347.2314};
			id=5;
			side="EMPTY";
			vehicle="B_MRAP_01_F";
			skill=0.60000002;
			text="car5";
			init="call {[] spawn {sleep 30; hint ""test5"";};};";
		};
		class Item4
		{
			position[]={4008.6458,5,3526.2207};
			id=6;
			side="EMPTY";
			vehicle="B_MRAP_01_F";
			skill=0.60000002;
			text="car1";
			init="call {[] spawn {sleep 14; hint ""test1"";};};";
		};
	};
};

Но почему не работает задержка непонятно.

Edited by IHUNTERI

Share this post


Link to post
Share on other sites

Но почему не работает задержка непонятно.

Курбат с этим сталкивался как-то давно, уже не помню разобрались или нет.

uiSleep пробовал?

Расстояние, кстати, здесь роли не играет.

Share this post


Link to post
Share on other sites

Еще раз попробовал

выделенный сервер с persistent=1

5 машин

в инициализацию написал

call {[] spawn {sleep 4; diag_log "car1";};};

в rpt файле отображаются все 5 сообщений

sleep увеличивается с шагом +1

При старте

все ок
"car1"
"car2"
"car3"
"car4"
"car5"

При перезаходе

не ок - sleep не работает 
"car2"
"car3"
"car4"
"car5"
"car1"

uisleep работает

Share this post


Link to post
Share on other sites

@IHUNTERI, Ну, тут скорее всего в какой-то момент игра считает, что прошло бесконечно много игрового времени и пропускает любой слип.

uiSleep же зависит от системного времени. 

Share this post


Link to post
Share on other sites

Ошибка возникающая при выгрыше по потерям или по времени:

 

 
Error in expression <Win']; _isPlayerWin = playerSide in ( [_winner] call bis_fnc_friendlysides );
 
>
  Error position: <_winner] call bis_fnc_friendlysides );
 
>
  Error Неопределенная переменная в выражении: _winner
File WMT_Main\functions\fn_EndMission.sqf, line 11
Error in expression < [_enemy,format[localize "STR_WMT_HLSWinLo>
  Error position: <_enemy,format[localize "STR_WMT_HLSWinLo>
  Error Неопределенная переменная в выражении: _enemy

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.