ваш вариант, если я верно понял: при выкладывании предмета из инвентаря удалять такие предметы вокруг (или всё время удалять все подходящие предметы в объектах(инвентарях) без соответствующих id на карте)|1 и создавать объект с id выложенного предмета,
для этого понадобиться контроль выкладываемых предметов (представьте ситуацию: два одинаковых SMG в рюкзаке (нужно при выкладывании выбрать который(id) выложить)) и система "предмет с ID в объекте",
это наиболее "загружаемый" (из за дополнительных объектов и если |1| то постоянного круга отчистки), наименее функциональный, но да, для вашей цели самый простой вариант
(только для решения проблемы дублирования достаточно одинаковые id, просто чтобы id ставились скриптом на сервере)
Не совсем, мой вариант - создавать объекты с айди сразу при вводе единицы оружия на сервер, так, чтобы они могли содержать в своем инвентаре только одну и только определенную единицу оружия. Эти объекты привязывать к юниту/месту/инвентарю ящика, дома и тп. При взаимодействии юнита с объектом (юнит берет оружие из инвентаря объекта), объект оставаясь пустым все равно привязан к юниту (если юнит берет ствол с земли - он автоматически привязывает к себе объект этот ствол содержащий). Попользовавшись стволом, юнит убирает его не в свой инвентарь, а в инвентарь объекта, даже выкладывая на землю, он выкладывает ствол в объект, а объект уже на землю.
В случае когда два одинаковых ствола, то и объектов "хранилищ" тоже два и какой ствол в какой объект попадет (они же одинаковые) - не важно. А вот если юнит каким либо образом дублирует ствол, то объекта для него не будет и, соответственно выкладывая его куда либо - он пропадет (очистится скриптом), да и сам инвентарь юнита можно чистить (нет привязанного объекта на два ствола - чистка - останется только один).
Даже если кто то решит дюпнуть объект - его номера не будет в базе данных и он тоже автоматически зачистится. Так же с читерскими "всесодержащими" ящиками, стволы в ящике есть, вынул - их нет.
По поводу ресурсоемкости чистящего скрипта мне (чайнику) не видятся какие либо сложности - с сервера удаляется абсолютно все оружие, кроме содержащегося в объектах с заранее известными айди и кроме инвентарей (рук) юнитов имеющих привязанные объекты с теми же известными айди.
Если это не сильно сложно можете тыкнуть в скрип чистящий что либо с сервака? Например зайцев же удаляют и всякий хлам тоже слышал можно удалить.
Дублирование, чудо ящики, баги - все есть, ну, во всяком случае когда я в последний раз был на Лайф проектах - все было, много и бестолково.
Источник подавляющего большинства подобных ошибок - не правильно написанные или несовместимые друг с другом скрипты... В ванильной игре должно чудо случится для этого
на Лайф серверах реализованы подобные инвентари в объектах, наверно не сложно
Реализовать виртуальный инвентарь - не сложно... Сложно - создание ID для предметов, которые на уровне движка не имеют ни каких идентификаторов или различий
PS Можно пойти по экстенсивному пути... К которому кстати пришли создатели TFAR
В ванильной игре и необходимости в учете оружия нет. Речь именно о модах где дюп серьезно поганит игровой процесс и баланс, да и вообще возможность учета оружия может добавить много контента.
То что выдать айди именно пушкам невозможно я уже понял и смирился. Вот ищу обходные пути.
Можно поподробнее об экстенсивном пути и ТФАР?
Сообщение отредактировал Erepb: 19 September 2017 - 16:08