Как зделать так, чтобы в определённые моменты игры нельзя было сохранятся? Ну например чтобы при этом вместо Saved... было выведено Can not save at this time.
Кто знает помогите плиз
Maxwel никак. Все хитрые методы в этом направлении либо приводят к порче предидущих сохранялок, либо легко обходятся юзером.
Единственное что я помню на этот счет - это отбирать у игрока здоровье при каждой сохранялке.
Тренсфер писал: Тут ничего на ум не приходит кроме как на клиенте снять бинд со всех клавиш и забиндить клавы из другого файла скрипта
escape -> выход в меню -> Save Game
Так что судя по всему, никак.
Разве что попробовать сделать __asm int 3 в какой-то из функций сейва, и try/catch блок, это отлавливающий.
Во-первых, опять не понятно зачем это нужно?
Во-вторых, можно старательно изучить конкурсную карту Scream'a - там сохранение работает, но вот загрузиться никак...
В-третьих, Дядя Миша сказал правильно - лучше стимулировать игрока быть аккуратным, чем просто запрещать ему сэйвы. Это можно сделать отбиранием здоровья на сохранении, лишения на пару секунд движения при работающих монстрах, или задержкой между нажатием и сохранением секунд на 10, опять же при рабочей игре.
Scrama писал: Это можно сделать отбиранием здоровья на сохранении,
Это мега-маразм...
Цитата:
Scrama писал: лишения на пару секунд движения при работающих монстрах
Как в хлфх-сингл? тоже не ахти... К тому же тоже легко обходится (по крайней мере, та реализация, что у меня).
Лучше всего - как в деус ексе, на сейв тратится несколько секунд (при этом замирает вся игра, в т.ч. монстры). Так что игрока просто будет раздражать частый сейв из-за "медленного процесса сохранения".
Или опять же, как в хитмане - сейв только через меню, никаких квиксейвов. Но этот вариант мне импонирует меньше.
Ну например, если сохранится в время того как происходит fade и загрузится, то окажется, что то, на каком месте был фейд не запоминается и он начинается сначала...
хм... хотя ко мне начинает подкрадыватся мысль это дело пофиксить на сервере... пока незнаю как...
Цитата:
Это можно сделать отбиранием здоровья на сохранении, лишения на пару секунд движения при работающих монстрах, или задержкой между нажатием и сохранением секунд на 10, опять же при рабочей игре.
ну вот, вот вам яркий пример, блин!
когда человек решил проблему по-своему наполовину, а на деле хотел совсем другое:
сравните - начали с блокировки сейва, а закончили тем, что фейд и камера не сохраняются на сервере.
Так вот товарищи - в Xash 0.39\0.40 и камера и фейд сохраняются!!!
Дядя Миша дело то тут в том, что несохраниение фейда - это только один из примеров... Просто еще хотелось, чтобы когда игра начиается с чёрного экрана и показывается лого игры, то сохранение было отключено, а когда это закончится, чтобы тогда уже включалась возможность сохранятся... Просто как то не вяжется с логикой, да и сохранятся в этом моменте нету смысла........ Хотя я всё дальше думаю, что смысла нет в том, что я задумал...
Была идея, но на практике я так и не удосужился её опробовать. В движке есть одно условие, при котором сейв невозможнен - это ноль жизней у игрока. Правда может быть проблема с автоматической загрузкой автосейва.
code:
if (cl.intermission)
{
Con_Printf ("Can't save in intermission.\n");
return;
}
if (svs.maxclients != 1)
{
Con_Printf ("Can't save multiplayer games.\n");
return;
}
Блин, как же я раньше не сообразил!
ведь можно сделать вид, что мы включили интермиссию и тогда сохраненние тоже будет невозможно.
А она работает в хл (я в ксаше её включал).
Maxwel одна маленькая деталь - выйти из режима интермисии можно только changlevel, если память мне не изменяет. Поэтому имеет смысл клепать целиком карты-демки.
Впрочем это активно юзалось в RTCW, там даже флажок был у ворлдспавна - кинематографическая это карта или игровая,
так что я думаю проблем не будет.
Интермисиия включается мессагой на клиент, камеру можно привязать любую (в view.cpp есть код для нее).