HLFX.Ru Forum
Показать все 15 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Блокирование сейва (https://hlfx.ru/forum/showthread.php?threadid=1112)


Отправлено Maxwel 16-01-2008 в 14:26:

Half-Life Блокирование сейва

Как зделать так, чтобы в определённые моменты игры нельзя было сохранятся? Ну например чтобы при этом вместо Saved... было выведено Can not save at this time.
Кто знает помогите плиз


Отправлено Тренсфер 16-01-2008 в 15:22:

Мда... Тут ничего на ум не приходит кроме как на клиенте снять бинд со всех клавиш и забиндить клавы из другого файла скрипта. Типа:

C++ Source Code:
ClientCmd("unbindall\n");
и
ClientCmd("exec config.cfg\n");

А потом перебиндить назад.

Дежавю- просматривал недавно старые темы хлру и видел http://www.half-life.ru/forum/showt...=&threadid=1107

__________________
Хотелось бы, чтобы не только хотелось...


Отправлено Дядя Миша 16-01-2008 в 15:30:

Maxwel никак. Все хитрые методы в этом направлении либо приводят к порче предидущих сохранялок, либо легко обходятся юзером.
Единственное что я помню на этот счет - это отбирать у игрока здоровье при каждой сохранялке.


Отправлено XaeroX 16-01-2008 в 16:48:

Цитата:
Тренсфер писал:
Тут ничего на ум не приходит кроме как на клиенте снять бинд со всех клавиш и забиндить клавы из другого файла скрипта

escape -> выход в меню -> Save Game
Так что судя по всему, никак.
Разве что попробовать сделать __asm int 3 в какой-то из функций сейва, и try/catch блок, это отлавливающий.

__________________

xaerox on Vivino


Отправлено Дядя Миша 16-01-2008 в 18:50:

способ с try/catch откровенно стремный.


Отправлено Scrama 17-01-2008 в 02:24:

Во-первых, опять не понятно зачем это нужно?
Во-вторых, можно старательно изучить конкурсную карту Scream'a - там сохранение работает, но вот загрузиться никак...
В-третьих, Дядя Миша сказал правильно - лучше стимулировать игрока быть аккуратным, чем просто запрещать ему сэйвы. Это можно сделать отбиранием здоровья на сохранении, лишения на пару секунд движения при работающих монстрах, или задержкой между нажатием и сохранением секунд на 10, опять же при рабочей игре.

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran


Отправлено XaeroX 17-01-2008 в 04:59:

Цитата:
Scrama писал:
Это можно сделать отбиранием здоровья на сохранении,

Это мега-маразм...
Цитата:
Scrama писал:
лишения на пару секунд движения при работающих монстрах

Как в хлфх-сингл? тоже не ахти... К тому же тоже легко обходится (по крайней мере, та реализация, что у меня).
Лучше всего - как в деус ексе, на сейв тратится несколько секунд (при этом замирает вся игра, в т.ч. монстры). Так что игрока просто будет раздражать частый сейв из-за "медленного процесса сохранения".
Или опять же, как в хитмане - сейв только через меню, никаких квиксейвов. Но этот вариант мне импонирует меньше.

__________________

xaerox on Vivino


Отправлено Maxwel 17-01-2008 в 08:12:

Цитата:
Во-первых, опять не понятно зачем это нужно?

Ну например, если сохранится в время того как происходит fade и загрузится, то окажется, что то, на каком месте был фейд не запоминается и он начинается сначала...
хм... хотя ко мне начинает подкрадыватся мысль это дело пофиксить на сервере... пока незнаю как...
Цитата:
Это можно сделать отбиранием здоровья на сохранении, лишения на пару секунд движения при работающих монстрах, или задержкой между нажатием и сохранением секунд на 10, опять же при рабочей игре.

хм... посмотрим

На данный момент вопрос исчерпан.


Отправлено Дядя Миша 17-01-2008 в 08:25:

ну вот, вот вам яркий пример, блин!
когда человек решил проблему по-своему наполовину, а на деле хотел совсем другое:
сравните - начали с блокировки сейва, а закончили тем, что фейд и камера не сохраняются на сервере.
Так вот товарищи - в Xash 0.39\0.40 и камера и фейд сохраняются!!!


Отправлено Maxwel 17-01-2008 в 08:47:

Дядя Миша дело то тут в том, что несохраниение фейда - это только один из примеров... Просто еще хотелось, чтобы когда игра начиается с чёрного экрана и показывается лого игры, то сохранение было отключено, а когда это закончится, чтобы тогда уже включалась возможность сохранятся... Просто как то не вяжется с логикой, да и сохранятся в этом моменте нету смысла........ Хотя я всё дальше думаю, что смысла нет в том, что я задумал...

Ладно пойду фиксить глюки с фейдом и лого...


Отправлено BUzer 17-01-2008 в 10:35:

Была идея, но на практике я так и не удосужился её опробовать. В движке есть одно условие, при котором сейв невозможнен - это ноль жизней у игрока. Правда может быть проблема с автоматической загрузкой автосейва.


Отправлено XaeroX 17-01-2008 в 11:17:

BUzer там тупо pev->health проверяется?

__________________

xaerox on Vivino


Отправлено Дядя Миша 17-01-2008 в 11:22:

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 17-01-2008 в 11:34:

Дядя Миша вот за это спасибо, это пригодится


Отправлено Дядя Миша 17-01-2008 в 12:48:

Maxwel одна маленькая деталь - выйти из режима интермисии можно только changlevel, если память мне не изменяет. Поэтому имеет смысл клепать целиком карты-демки.
Впрочем это активно юзалось в RTCW, там даже флажок был у ворлдспавна - кинематографическая это карта или игровая,
так что я думаю проблем не будет.
Интермисиия включается мессагой на клиент, камеру можно привязать любую (в view.cpp есть код для нее).


Временная зона GMT. Текущее время 09:44.
Показать все 15 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024