(format ["Crack and Load %1", _i]) remoteExec ["hint", 0];

Как сделать берущиеся предметы (ноуты, доки и пр.)?

Best Answer Cast , 25 October 2015 - 11:55
Продолжаем наш урок (начало на первой странице)! Теперь разберемся с выпадением папки.
Суть была в том, что красным надо перехватить папку у синих и донести до места эвакуации.
Дописываем в следующий файл:
VzyatDoki.sqf
playerItems pushBack "Land_File_research_F"; player playmoveNow "AmovPercMstpSrasWrflDnon_AinvPercMstpSrasWrflDnon_Putdown"; sleep 1; deleteVehicle (_this select 0); player addEventHandler ["killed", {_this exec "dropdoki.sqf"}]; /// создаем событие, которое активируется, в случае гибели того, /// кто подбирает папку. Сам сценарий события в файле "dropdoki.sqf" If (playerSide == east) then {hint "Move to escape point"; Thief = _this select 1; ///этой строкой мы даем имя новому носителю папки. Это имя пригодится для активации триггера ///При использовании команды addEventHandler в обработчик события поступает /// массив из двух элементов: _this select 0 - объект жертвы и _this select 1 - объект убийцы. };
dropDoki.sqf
playerItems = PlayerItems - ["Land_File_research_F"]; ///вычитаем папку из массива doki = createVehicle ["Land_File_research_F", _this select 0, [], 0, "none" ]; ///создаем папку возле поверженного ее носителя doki addaction ["Take it", "doc.sqf"]; doki_hint = true; ///Глобальные хинты. Подробнее http://www.flashpoint.ru/threads. publicVariable "doki_hint";
И триггер концовки.
В условиях
Thief in thisList
Активация: концовка или что угодно на усмотрение
Отдельная благодарность отдельному товарищу за напутсвия и подсказки)
Go to the full post
#41
OFFLINE
Posted 26 October 2015 - 20:31
#42
OFFLINE
Posted 27 October 2015 - 22:56
Дилема с remoteaction. Если так
nout1action1 = this addaction ["Crack and Send",{timer = execVM "timer.sqf"}, 0, 99 ,false ,false,"", "playerside == east"];
то
[nout1, nout1Action1] remoteExec ["removeaction"];
Все прекрасно работает
А если так
nout1action1 = [this, ["Crack and Send",{timer = execVM "timer.sqf"}, 0, 99 ,false ,false,"", "playerside == east"]] remoteExec ["addAction"];
то
[nout1, nout1Action1] remoteExec ["removeaction"];
действие добавляется, но не удаляется. Что не так?
#47
OFFLINE
Posted 28 October 2015 - 10:27
nout1 remoteExec ["addCrackNSendAction"];
addCrackNSendAction:
_this setVariable [ "actionId", _this addaction ["Crack and Send",{timer = execVM "timer.sqf"}, 0, 99 ,false ,false,"", "playerside == east"] ];
nout1 remoteExec ["removeCrackNSendAction"];
removeCrackNSendAction:
_this removeAction (_this getVariable ["actionId", -1]); _this setVariable ["actionId", nil];
Принцип работы: с сервера у игроков будут запускаться сценарии addCrackNSendAction и removeCrackNSendAction; в первом сценарии объекту будет добавляться действие, а его ID будет запоминаться в объекте; во втором сценарии ID действия будет извлекаться из объекта, удаляться действие с этим ID и сам ID.
#48
OFFLINE
Posted 29 October 2015 - 22:43
Я пробовал понять как это сделать. Три страницы исписано и я не разобрался.
Простая задача и такой гигантский гемор, спасибо БИСам/
#50
OFFLINE
Posted 30 October 2015 - 08:42
Я пробовал понять как это сделать. Три страницы исписано и я не разобрался.
Простая задача и такой гигантский гемор, спасибо БИСам/
А что конкретно? Не считая добавления\удаления глобальных действий все работает у меня. Может смогу помочь
#51
OFFLINE
Posted 30 October 2015 - 11:29
что непонятно?
В этой теме лучший ответ содержит следующую информацию:
Продолжаем наш урок (начало на первой странице)! Теперь разберемся с выпадением папки. Суть была в том, что красным надо перехватить папку у синих и донести до места эвакуации. Дописываем в следующий файл:
и большой скриптовый блок. Написано дописываем, но к чему именно не ясно.
Т.е. к чему добавить предоставленный скриптовый блок? Было бы прекрасным увидеть эти скрипты в теме Скрипты/завершенные в цельном виде и с одним описанием
#52
OFFLINE
Posted 30 October 2015 - 12:18
http://arma3.ru/foru...-pr/#entry56510. в принципе в лучшем ответе он и есть полностью, я скопировал то, что писал на первой странице и в тот же файл дописал.
Edited by Cast, 30 October 2015 - 12:31.
#54
OFFLINE
Posted 30 October 2015 - 21:25
Подскажите пожалуйста. Есть предмет, у него в ините
[this, ["Crack and Send",{timer = execVM "timer.sqf"},"playerside == west"]] remoteExec ["addaction"]; [this, ["STOP","timer_stop.sqf", "playerside == east"]] remoteExec ["addaction"];
в timer.sqf простой скрипт отсчета времени. Работает у всех
sending = 120; for "_i" from sending to 0 step -1 do { uiSleep 1; (format ["Crack and Load %1", _i]) remoteExec ["hint"]; }; SendComplete = true;
в timer_stop.sqf
terminate timer; "Canceled" remoteExec ["hint"];
В редакторе все работает как нужно, а вот в сети не срабатывает terminate timer;, хинт появляется, но таймер продолжает работать. В чем ошибка?
#55
OFFLINE
Posted 30 October 2015 - 22:03
Во-первых, ты, похоже, пытаешься остановить таймер, который был активирован другим персонажем, но сценарий timer_stop.sqf запускается у тебя, а переменная timer существует на компе того, кто активировал таймер.
Во-вторых, если действия добавляются в редакторе, то их не надо добавлять с помощью remoteExec, поскольку они и так у всех добавятся.
Edited by Schatten, 30 October 2015 - 22:07.
#56
OFFLINE
Posted 31 October 2015 - 01:31
Во-первых, ты, похоже, пытаешься остановить таймер, который был активирован другим персонажем, но сценарий timer_stop.sqf запускается у тебя, а переменная timer существует на компе того, кто активировал таймер.
publicVariable timer; пробовал запихать и в файл сценария и в действие, не работает ( больше идей нет. На БИС вики очень скудная информация по этой теме
или например такое:
SendComplete = true; publicVariable "SendComplete";
Условия финала:
waitUntil {SendComplete};if (PlayerSide == east &&SendComplete ) then {"loser" call bis_fnc_endmission;}; If (playerSide == west && SendComplete) then {"end1" call bis_fnc_endmission;};
Не сработало ни у синих, ни у красных((
Edited by Cast, 31 October 2015 - 01:45.
#57
OFFLINE
Posted 31 October 2015 - 12:18
По-моему, тут лучше всего сделать так, чтобы таймер "крутился" на сервере. Т. е. в сценарии timer.sqf отправляется запрос серверу на активацию таймера, сервер получает этот запрос и активирует таймер. С сервера же выполняется и глобальный hint. При деактивации таймера в timer_stop.sqf серверу отправляется запрос на остановку таймера.
Edited by Schatten, 31 October 2015 - 12:18.
#58
OFFLINE
Posted 31 October 2015 - 13:26
Я не спрашиваю куда надо вписать. Я спросил к чему дописать.
mickeymen, никто не пишет куда надо вписывать код потому, что его можно вписывать почти куда угодно

Написано дописываем, но к чему именно не ясно. Т.е. к чему добавить предоставленный скриптовый блок?
#59
OFFLINE
Posted 02 July 2018 - 02:19
а откуда появилось - "doc.sqf"