Как сделать берущиеся предметы (ноуты, доки и пр.)?
Лучший Ответ 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
Активация: концовка или что угодно на усмотрение
Отдельная благодарность отдельному товарищу за напутсвия и подсказки)
Перейти к сообщению#21 OFFLINE
Отправлено 24 October 2015 - 14:56
#22 OFFLINE
Отправлено 24 October 2015 - 20:38
К урокам про массивы, не много урока "Родная речь")
чтобы папка выпадывала
что либо может, только, выпадать!
#23 OFFLINE
Отправлено 24 October 2015 - 20:46
К урокам про массивы, не много урока "Родная речь")
Может все таки сосредоточимся на массивах?)))
#24 OFFLINE
Отправлено 24 October 2015 - 20:55
К урокам про массивы, не много урока "Родная речь")
Может все таки сосредоточимся на массивах?)))
Сосредоточенность настойчиво требует взаимопонимания применительно к обсуждаемому действу! Вот!!!)
#25 OFFLINE
#26 OFFLINE
Отправлено 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
Активация: концовка или что угодно на усмотрение
Отдельная благодарность отдельному товарищу за напутсвия и подсказки)
Сообщение отредактировал Cast: 25 October 2015 - 11:59
#28 OFFLINE
Отправлено 25 October 2015 - 13:07
3. Что будет, если носитель папки умрет?
#29 OFFLINE
Отправлено 25 October 2015 - 13:58
усложним задачу (МП):
Я то думал тут помогают)
1. Нужно придумать, как при выходе игрока, папка перешла товарищу по команде (если не сложно подскажи как, а то я с СП только начинаю разбираться, а там мне вообще тяжко с нуля будет сложно. Например я даже не представляю как выглядит выход игрока с сервера в скрипте
2. Тут надо было уточнить. У меня заход носителя в триггер активирует DokiStolen = true, а не саму концовку
3. А тут я совсем не понял. Я же добавляю AddEvent Handler тому, кто ее поднимает ==> она и выпадать должна всегда. В чем ошибка?
#30 OFFLINE
Отправлено 25 October 2015 - 14:32
Б) Со стороны сервера смотреть за тем, жив ли носитель (Если в настройках миссии отключен ИИ, то при выходе игрок умирает)
2. Триггер сработает только у носителя - т к только у него присваивается значение переменной, у остальных триггер так и будет искать кого-то другого в триггере (Условие триггеров проверяется локально и эффект локален)
3. - Effect is local - Только там где вызвана команда, только там и будет существовать действие - т е папочка будет. но подобрать ее сможет только тот, кто и нес ее до этого
#31 OFFLINE
Отправлено 25 October 2015 - 14:35
1. Нужно придумать, как при выходе игрока, папка перешла товарищу по команде (если не сложно подскажи как, а то я с СП только начинаю разбираться, а там мне вообще тяжко с нуля будет сложно. Например я даже не представляю как выглядит выход игрока с сервера в скрипте
Добавляем обработчик
события, в котором проверяем, есть ли у отключающегося игрока доки.3. А тут я совсем не понял. Я же добавляю AddEvent Handler тому, кто ее поднимает ==> она и выпадать должна всегда. В чем ошибка?
Лучше всем игрокам добавлять обработчик события Killed, в котором проверять, есть ли у игрока доки, и, если есть, создавать их рядом с трупом.
В текущем виде обработчик события добавляется при поднятии док, при этом не проверяется, был ли добавлен обработчик события ранее.
#32 OFFLINE
Отправлено 25 October 2015 - 16:28
Лучше всем игрокам добавлять обработчик события Killed, в котором проверять, есть ли у игрока доки, и, если есть, создавать их рядом с трупом.
И снова тот же вопрос: как сделать, чтобы массив PlayerItems принадлежал кому то одному?
2. Триггер сработает только у носителя - т к только у него присваивается значение переменной, у остальных триггер так и будет искать кого-то другого в триггере (Условие триггеров проверяется локально и эффект локален)
- Effect is local - Только там где вызвана команда, только там и будет существовать действие - т е папочка будет. но подобрать ее сможет только тот, кто и нес ее до этого
3.
PublicVariable?
#33 OFFLINE
Отправлено 25 October 2015 - 16:35
#34 OFFLINE
Отправлено 25 October 2015 - 17:02
И снова тот же вопрос: как сделать, чтобы массив PlayerItems принадлежал кому то одному?Лучше всем игрокам добавлять обработчик события Killed, в котором проверять, есть ли у игрока доки, и, если есть, создавать их рядом с трупом.
Зачем одному? Этот массив будет создан у каждого игрока. Кто подберёт доки, у того они и занесутся в этот массив.
Как я понял, в этой миссии подбирать можно только доки. Если это так, то можно вместо массива использовать булеву переменную, например, hasDocs.
- современное творение БИСов для МП
Какой ещё прошлый век?! Способ выбирается от обстановки, но в данном случае я согласен - уместнее использовать remoteExec.
#35 OFFLINE
Отправлено 25 October 2015 - 18:47
Зачем одному? Этот массив будет создан у каждого игрока. Кто подберёт доки, у того они и занесутся в этот массив.
Еще попытка. В начале миссии они уже есть у одного игрока. Вот как написать, что именно у него они есть в массиве, а у других нет?
Я добавил ему в инит
this addEventHandler ["killed", {_this exec "dropdoki.sqf"}];
и думал, что дальше все пойдет по цепочке. Но вы пишете, что это не правильно. И я не понимаю как должна выглядеть проверка одного и того же массива у разных игроков
#36 OFFLINE
Отправлено 25 October 2015 - 20:03
Что-то я запутался...
Как я понял, миссия заключается в том, что нужно спереть команде игроков у ИИ-игроков доки и доставить их куда-то.
Создаём файл initPlayerLocal.sqf, в котором объявляем переменную playerItems и "вешаем" игроку обработчик события Killed. В обработчике события проверяем, есть ли у игрока доки, и, если есть, то создаём их рядом с трупом и запускаем добавление им действия "Взять" у ВСЕХ игроков.
Этот файл исполнится у КАЖДОГО подключившегося игрока.
Создаём файл initServer.sqf, в котором инициализируем ИИ-игроков (добавляем им обработчик события Killed, аналогичный вышеприведённому) и добавляем обработчик события HandleDisconnect. В обработчике событий проверяем у отключающегося игрока, есть ли у него доки, и, если есть, создаём их в координатах до отключения и запускаем добавление им действия "Взять" у ВСЕХ игроков.
Сообщение отредактировал Schatten: 25 October 2015 - 20:06
#37 OFFLINE
Отправлено 25 October 2015 - 20:15
Что-то я запутался...
Как я понял, миссия заключается в том, что нужно спереть команде игроков у ИИ-игроков доки и доставить их куда-то.
Создаём файл initPlayerLocal.sqf, в котором объявляем переменную playerItems и "вешаем" игроку обработчик события Killed. В обработчике события проверяем, есть ли у игрока доки, и, если есть, то создаём их рядом с трупом и запускаем добавление им действия "Взять" у ВСЕХ игроков.Этот файл исполнится у КАЖДОГО подключившегося игрока.
Создаём файл initServer.sqf, в котором инициализируем ИИ-игроков (добавляем им обработчик события Killed, аналогичный вышеприведённому) и добавляем обработчик события HandleDisconnect. В обработчике событий проверяем у отключающегося игрока, есть ли у него доки, и, если есть, создаём их в координатах до отключения и запускаем добавление им действия "Взять" у ВСЕХ игроков.
Миссия без ИИ вообще. Две команды. Одна несет один экземпляр документов у командира например. А вторая должна убить командира и взять папку
В обработчике события проверяем, есть ли у игрока доки, и, если есть, то создаём их рядом с трупом
Как проверить я это не могу понять...
if ("Land_File_research_F" in PlayerItems)
Так же не пойдет?
И что надо написать командиру в инит, чтобы папка занеслась именно в его массив? Если всем вписать
this addEventHandler ["killed", {_this exec "dropdoki.sqf"}];
то каждый убитый порождает папку возле себя. Потому что надо проверить в его ли массиве она содержится. if ("Land_File_research_F" in PlayerItems) .... этого будет достаточно? А то мне сейчас не с кем проверить (
Сообщение отредактировал Cast: 25 October 2015 - 20:21
#38 OFFLINE
Отправлено 25 October 2015 - 20:26
Как проверить я это не могу понять...В обработчике события проверяем, есть ли у игрока доки, и, если есть, то создаём их рядом с трупом
if ("Land_File_research_F" in PlayerItems)Так же не пойдет?
Как раз таки пойдёт.
И что надо написать командиру в инит, чтобы папка занеслась именно в его массив?
PlayerItems = ["Land_File_research_F"];
Если всем вписать
this addEventHandler ["killed", {_this exec "dropdoki.sqf"}];то каждый убитый порождает папку возле себя. Потому что надо проверить в его ли массиве она содержится.
Конечно, надо проверять.
if ("Land_File_research_F" in PlayerItems) .... этого будет достаточно?
Да.
#39 OFFLINE
Отправлено 25 October 2015 - 20:36
Как проверить я это не могу понять...В обработчике события проверяем, есть ли у игрока доки, и, если есть, то создаём их рядом с трупом
if ("Land_File_research_F" in PlayerItems)Так же не пойдет?
Как раз таки пойдёт.
балин) У меня просто в голове не укладывалось, что массив один, но у каждого свой. Казалось, раз кто то поднял папку, то она в массиве для всех как бы.
#40 OFFLINE
Отправлено 26 October 2015 - 19:35
- современное творение БИСов для МП
TimerA = 60; for "_i" from timerA to 0 step -1 do { uiSleep 1; ["Crack and Load %1", _i] remoteExec ["hint format"]; };
Если написать HINT без FORMAT. То показывает, но само собой без секунд. а как записать, чтобы секнды тоже были? не могу найти примера нигде (