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


Фотография

Вопросы по скриптингу

Arma3 как плотформа для созда Скритпы

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

#401 OFFLINE   kurganpepper

kurganpepper

    Ефрейтор

  • Пользователи
  • 58 сообщений
  • Откуда:Курган

Отправлено 16 July 2016 - 11:41

Подскажите комрады, хочу удалить некоторые объекты с карты, ставлю логику и в инит пишу:

(getPos this nearestObject ID-Объекта) hideObject true; this allowDamage false;

Объект исчезает, как правильно вписать несколько ID и можно ли, может другие есть варианты?

Заранее спасибо!


  • 0

#402 OFFLINE   Dimon UA

Dimon UA

    Ст.сержант

  • Пользователи
  • 304 сообщений
  • Откуда:Севастополь

Отправлено 16 July 2016 - 11:51

{
	(getPos this nearestObject _x) hideObject true; this allowDamage false;
} foreach [ID1,ID2,ID3...]; 

nearestObjects


Сообщение отредактировал Dimon UA: 16 July 2016 - 11:55

  • 1

#403 OFFLINE   kurganpepper

kurganpepper

    Ефрейтор

  • Пользователи
  • 58 сообщений
  • Откуда:Курган

Отправлено 16 July 2016 - 12:12

{
	(getPos this nearestObject _x) hideObject true; this allowDamage false;
} foreach [ID1,ID2,ID3...]; 

nearestObjects

 

 

Спасибо!


  • 0

#404 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 16 July 2016 - 16:21

А зачем в каждом цикле делать логику бессмертной?


  • 0

#405 OFFLINE   Sindeg

Sindeg

    Рядовой

  • Пользователи
  • 11 сообщений

Отправлено 30 July 2016 - 19:09

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

 

В init.sqf пишу следующий код, подразумевая что он будет исполнен на каждом клиенте ( мп миссия). 

 

ChoosedCar = False;

publicVariable "ChoosedCar";[[car1, [format ["<t color='#FFD000'>%1</t>", localize "str_BuyAction"],"BuyCar.sqf", nil,1,true,true,"","(not ChoosedCar and Alive Seller)",4]],"addAction"] call BIS_fnc_MP;

 

BuyCar.sqf :
ChoosedCar = true;
publicVariable "ChoosedCar";

_target = _this select 0;
sleep 2;
playmusic "music1";
sleep 1.5;
[0, "BLACK", 3, 1] call BIS_fnc_fadeEffect;
sleep 3;

_target lock false;
_target setpos [19966.313,16470.904,0.599];
_target setdir 17;
sleep 0.1;

if  isplayer player1 then{
player1 setpos [19960.418,16474.914,0.430];
player1 setdir 100;
};

if  isplayer player2 then{
player2 setpos [19947.355,16463.887,1.095];
player2 setdir 100;
};

if  isplayer player3 then{
player3 setpos [19959.814,16472.848,0.511];
player3 setdir 100;
};
[1, "BLACK", 2, 0] call BIS_fnc_fadeEffect;
};

У меня появилось сомнение, что данный скрипт выполнится только на одном клиенте, так ли это? В таком случае, я как понимаю нужно создать отдельную функцию, перекинуть в неё затемнение, проигрывание музыки. А телепорт и "открывание" техники исполнить на сервере. Вообщем я немного заплутал.

 

Еще вопрос как открывать / закрывать транспорт с глобальным эффектом. Т.к вызывая команды lock / setvehiclelock у клиента, выходит локальный эффект. Через fnc_MP не выходит. 

UPD : нашел вариант. Как я понимаю, данная команда будет выполнена на сервере.

[car1,false] remoteExec ["lock"]; 

Сообщение отредактировал Sindeg: 30 July 2016 - 19:32

  • 0

#406 OFFLINE   Sindeg

Sindeg

    Рядовой

  • Пользователи
  • 11 сообщений

Отправлено 30 July 2016 - 19:17

1


Сообщение отредактировал Sindeg: 30 July 2016 - 19:18

  • 0

#407 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 30 July 2016 - 23:42

Sindeg, идем по-порядку:
1) Код в init.sqf вызовится на каждом клиенте
2) Т к в init.sqf вы вызываете код с fnc_MP, то общее кол-во вызовов данного действия равно кол-ву игроков в квадрате
3) В самом действии код вызывается "локально" поэтому и эффект только там где выбрали данное действие
4) Используйте remoteExec: BIS_fnc_MP хоть и перевели на remoteExec, но так вы хотя бы будете точно уверены какие параметры у вызова будут (Хз что там в след. обновлении впихают/оптимизируют функцию)
5) Ну как бы lock и setVehicleLock имеют глобальный эффект, но требуют локлаьных аргументов для вызова

Сообщение отредактировал vlad333000: 30 July 2016 - 23:42

  • 0

#408 OFFLINE   Sindeg

Sindeg

    Рядовой

  • Пользователи
  • 11 сообщений

Отправлено 31 July 2016 - 01:54

Благодарю, кажется понял. Попробую переписать.
Ещё вопрос, иногда вижу как люди пишут пути к файлам игры, а именно разным иконкам, вроде этого - \a3\ui_f_exp_a\Data\RscTitles\RscEGProgress\downloadicon_ca.paa, для использования в скриптах. Можно ли как то посмотреть эти файлы? Где все эти иконки запакованы?
  • 0

#409 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 31 July 2016 - 12:10

Sindeg, ну так перейдите по этому пути, вы удивитесь, что он идентичен обычному пути, где А3 - путь до корневого католога игры
  • 0

#410 OFFLINE   Sindeg

Sindeg

    Рядовой

  • Пользователи
  • 11 сообщений

Отправлено 31 July 2016 - 23:49

В чем разница между init.sqf и initplayerlocal.sqf ? Я так понимаю что инит исполнится и на клиенте, и на сервере, при запуске, а локал - только на клиентах?

Пытаюсь открыть машину на всех клиентах, никак не могу провернуть данный скрипт. Как я понял, нужно найти клиента, которому локальна данная машина, и исполнить скрипт открытия? А что если машина заспавнена, и в неё еще никто не садился? В таком случае скрипт открытия нужно исполнить на сервере?


  • 0

#411 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 31 July 2016 - 23:58

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


Во-вторых, владельцем объекта является не сервер, а тот кто создал данный объект (Даже если он его вообще в глаза не видел)
  • 0

#412 OFFLINE   Sindeg

Sindeg

    Рядовой

  • Пользователи
  • 11 сообщений

Отправлено 01 August 2016 - 10:28

Именно смотря на первую ссылку составлял вопрос, что бы разобраться. По второму так и не сообразил, как в итоге нужно действовать (
  • 0

#413 OFFLINE   Sa-Matra

Sa-Matra

    Ефрейтор

  • Пользователи
  • 97 сообщений

Отправлено 01 August 2016 - 10:40

Ленивое решение с новыми remoteExec командами:
[veh, false] remoteExecCall ["lock", veh];

Сообщение отредактировал Sa-Matra: 01 August 2016 - 10:40

  • 0

#414 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 сообщений

Отправлено 12 August 2016 - 22:16

Если выполнить например: o_t='|co|'createvehicle[0,0,0] на всех компьютерах, будет o_t==|created object| на всех после создания?


Сообщение отредактировал Ilias: 13 August 2016 - 05:41

  • 0

#415 OFFLINE   Sa-Matra

Sa-Matra

    Ефрейтор

  • Пользователи
  • 97 сообщений

Отправлено 14 August 2016 - 09:42

Если выполнить например: o_t='|co|'createvehicle[0,0,0] на всех компьютерах, будет o_t==|created object| на всех после создания?

будет создано объектов по количеству клиентов и каждый клиент будет иметь свой объект в o_t
  • 0

#416 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 сообщений

Отправлено 15 August 2016 - 09:38

 

Если выполнить например: o_t='|co|'createvehicle[0,0,0] на всех компьютерах, будет o_t==|created object| на всех после создания?

будет создано объектов по количеству клиентов и каждый клиент будет иметь свой объект в o_t

 

как лучше сделать создание 1 и назначение его на всех клиентах?


  • 0

#417 OFFLINE   Sa-Matra

Sa-Matra

    Ефрейтор

  • Пользователи
  • 97 сообщений

Отправлено 15 August 2016 - 10:09

if(isServer) then {
	o_t = createVehicle ...
	publicVariable "o_t";
};
Объект создается сервером и указатель на него в переменной o_t отправляется всем клиентам в игре.

Сообщение отредактировал Sa-Matra: 15 August 2016 - 10:09

  • 0

#418 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 сообщений

Отправлено 15 August 2016 - 11:35

if(isServer) then {
	o_t = createVehicle ...
	publicVariable "o_t";
};
Объект создается сервером и указатель на него в переменной o_t отправляется всем клиентам в игре.

 

publicVariable , спасибо


  • 0

#419 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 сообщений

Отправлено 15 August 2016 - 20:15

Уже есть тема, я и сам пробовал помочь (не сильно успешно), может всё же кто нибудь знает как можно сделать своё количество сторон? (с возможностью 'дружить', 'сорить' их)


Сообщение отредактировал Ilias: 15 August 2016 - 20:43

  • 0

#420 OFFLINE   Sa-Matra

Sa-Matra

    Ефрейтор

  • Пользователи
  • 97 сообщений

Отправлено 16 August 2016 - 01:12

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

Сообщение отредактировал Sa-Matra: 16 August 2016 - 01:12

  • 0




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