Вот у меня возник вопрос. Есть инвентарь. В инвентаре есть слоты под пушки. Как мне сохранить привязку "индекс слота - имя пушки"? Во всём клиентском проекте (client.dsw) не нашёл никакого механизма сохранения данных, так же нет никаких специализированных сообщений "послать данные для сохранения на сервер, а потом получать их". Пока можно извратиться с pfnClientCmd("inv save 1 weapon_crowbar") и принимать их в client.cpp на сервере, конечно, но есть ли более простой метод? Что-то типа MESSAGE_BEGIN, только в обратную сторону. Мой метод мне не нравится ещё и тем, что для каждого слота (и горячего, и инвентаря) придётся посылать такое текстовое сообщение.
domded писал: Во всём клиентском проекте (client.dsw) не нашёл никакого механизма сохранения данных, так же нет никаких специализированных сообщений "послать данные для сохранения на сервер, а потом получать их"
Совершенно верно. Нету в голдсорсе клиентского сохранения. Только декали, но это внутри движка. И кастомную мессагу обратно на сервер не пошлёшь. Но если немножко подумать - решение всё-таки есть.
Предметы инвентаря следует держать на сервере, точно так же как и пушки. А для выбора того или иного предмета использовать, например переменную impact_index в usercmd_t. У меня сильные подозрения, она для того и предназначалась изначально. Ну или для какой-нибудь стратегии
Можешь, на сервере сейв сделать да и все, инвентарь то доступен, с клиента можешь слать не строкой а байт массивом, та же месага посути, вначале только префикс добавь отличный от простых команд.
Фух, времени совсем нет сюда залезть. Всем спасибо, но я сделал через задний проход - при обновлении худа (где m_iWeaponBits) поставил сброс и загрузку итемов в инвентарь заново.
з.ы.
Почему вальва именно так написала систему оружия? В смысле, есть же приём сообщений худом - а они поставили биты оружия в структуру информации об игроке и на клиенте её чекают на изменение в каждом тчинке (CHudAmmo, насколько помню) (именно подбор/выброс). Для чего это сделано?
Топик хороший, хочу уточнить: можно ли сделать 1ым символом команды на сервере какой-нибудь непечатный символ чтобы она не вызывалась из консоли, а только через c2s message?
KiQ, моё решение запилить это так продиктовано наименьшим сопротивлением со стороны движка. Я вообще хочу попробовать переписать всю систему оружия на нормальные сообщения, но пока до этого руки не доходят. Плюс мне нужно ещё извратиться для создания нормальных поднимаемых предметов (ключ-карт, например). ~X~ - Можно, по идее. Тебе нужен код этого чара только. Хотя я сам таким не занимался.
А может дядя миша запилить поддержку нормального клиентского сохранения в своём ксаше?
Тогда можете ткнуть меня носом, какие функции в вашем сдк за это отвечают? Исходники просмтаривал мельком через блокнот, шестую студию себе не ставил ещё.