Потребуются пара переменных, отвечающих за сытость и жажду. Можно их сделать просто отдельными переменными, или привязать к игроку при помощи SetVariable (
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
).
Нужен будет скрипт с бесконечным циклом while {true} do {} (
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
), который бы постоянно понижал значения этих переменных. В цикл нужно добавить задержку через
sleep или какую-нибудь проверку по
time (
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
,
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
). В этот же скрипт можно добавить проверку этих значений и прямо из него немедленно убивать игрока, когда их значения <= 0 при помощи
player setDamage 1 (
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
), или же можно вызывать еще один скрипт, который будет убивать игрока постепенно, давая время найти еду\воду (в него надо будет добавить еще одну проверку на значения переменных, и останавливать скрипт в случае необходимости, допустим, при помощи
exitWith (
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
)). Поскольку все эти скрипты затрагивают только одного игрока, можно их выполнять независимо на компьютерах всех клиентов и не нагружать ими сервер. При этом, нужно учесть респавн, и при респавне опять устанавливать начальные значения переменных сытости\жажды. Для этого потребуется или
onPlayerRespawn.sqf (
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
) или
player addMPEventHandler ["MPRespawn",{}] (
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
,
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
). Также, при респавне нужно будет заново добавлять любые действия, добавленные игроку при помощи
addAction (
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
).
Далее, для того, чтобы показывать на экране значения жажды\сытости, тебе потребуется подробно изучить этот раздел вики:
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
. В нем описывается, как делать различные менюшки, которые могут отображаться прямо в процессе игры. Поскольку отображаться это должно все время, и при этом не мешать управлению, эти индикаторы жажды\сытости придется описывать как
RscTitles. На обычной вики про это ничего нет, так что вот ссылка на вики по VBS:
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
. На этом же форуме есть хороший перевод статей про графические интерфейсы, рекомендую прочитать:
http://arma3.ru/foru...saniiu/?p=16698. Обновлять данные жажды\сытости на экране можно из того же скрипта, который их рассчитывает.
Начсет предметов, помещающихся в инвентарь - это не ко мне. Для этого нужно делать аддон, я понятия не имею, как это должно работать. Можно сделать так же, как это сделано в миссии Wasteland - то есть сделать отдельный "виртуальный" инвентарь для еды\воды. То есть, создать переменную-массив для игрока, в которой бы запоминалось содержимое инвентаря, и можно было бы открывать отдельное окошко инвентаря, откуда это содержимое можно было бы использовать. Окошко это опять же должно описываться, как рассказывается по ссылкам из предыдущего абзаца. Только оно уже должно быть не дисплеем из RscTitles, а обычным диалогом, т.к. игроку придется щелкать по кнопочкам. При нажатии на кнопку, вызывается скрипт, который проверяет, какой именно объект выбран в инвентаре, и увеличивает значения переменных жажды \ сытости и изменяет переменную-инвентарь, удаляя из нее использованный объект. Опять же, при респавне игрока, инвентарь должен очищаться.
Что получается в итоге:
В description.ext описываются все окошечки, которые нужны для миссии. Затем из init.sqf вызываются: скрипт, который задает начальные значения всем переменным - жажда, сытость, инвентарь; скрипт, который бы отслеживал жажду\сытость и изменял значения соответствующих переменных; добавляется действие игроку, чтобы открыть меню инвентаря; добавляется обработка респавна (если делать ее через event handler). Все эти скрипты, вызываемые из init.sqf, должны работать только на компьютерах подключившихся игроков, а не на сервере. Также потребуется скрипт обработки инвентаря, который вызывался бы при нажатии на кнопку в менюшке.
Такие дела. Пока дописывал пост, уже забыл, о чем писал в начале, так что извините, если где то написано непоследовательно или вообще бред. Но, надеюсь, хоть в какой мере это является ответом на заданный вопрос. Подробно расписывать скрипты не хочу и не буду. Я думаю, что примеры похожих скриптов можно подглядеть в той же Wasteland, распаковав ее.