Решил расписать тут весь процесс, чтобы потом это было одной из статей пока не придуманной темы кодинга
Итак...
Под рюкзаком будет пониматься некоторая штука, которая увеличивает переносимый вес. Я не делал меш самого рюкзака (пока не хотелось бы заморачиваться со всем этим). Ибо там опять же нужно писать список исключений для скинов и будет конфликт с рюкзаком RPG. Поэтому, грубо говоря, это будет "пушка", которую не видно, её можно купить и продать, и которая добавляет вес тому, кто её купил или получил иным способом.
И вот, взял я и сделал
class Bagpack extends KFWeapon;Что нам нужно от оружия? Чтобы при добавлении его в инвентарь добавлялось N кг, а при изъятии вес обратно вычитался.
Добавим вес в функции
Tick, ибо эта функция всегда активна, пока существует оружие. Вычитать же вес будем в функции
Destroyed. Вроде во всех необходимых случаях функция вызывается, хотя может я сейчас и пропустил какой-то вариант развития событий. Так же надо помнить о том, что игрок может поменять себе перк и надо с учётом перка обновить вес. Поэтому запоминаем перк, при котором был изменён вес и постоянно сравниваем его с текущим. Сказать прямо - терпеть не могу, когда висит Tick, идут проверки и тратятся ресурсы, но мы же рассматриваем простейшую реализацию.
Так как никаких моделек от 1го или 3го лица мы не делаем, то надо, чтобы эту "пушку" нельзя было выбрать. Это мы реализуем в
WeaponTick на клиенте. Пока там мелкий косяк есть. Если выбрать рюкзак колёсиком, то при переключении показывается, что нет ничего в руках, хотя там выбрана предыдущая пушка. Поправлю потом.
Ну а класс
BagpackPickup нужен чисто для того, чтобы рюкзак можно было купить в магазине.
Выставим теперь свойства в defaultproperties рюкзака:Во-первых, мы хотим, чтобы рюкзак нельзя было выбросить (нет модельки рюкзака лежащего на земле), но можно было продать. Для этого нам помогут эти два свойства:
- Код:
-
bKFNeverThrow=false
bCanThrow=false
Пусть рюкзак будет на 5 слоте
- Код:
-
InventoryGroup=5
Вес рюкзака пусть будет 0
- Код:
-
Weight=0.00
У нас есть наша переменная AddWeight, отвечающая за добавленный вес
Пусть она равна 10. То есть при покупке рюкзака игроку добавляется 10кг
- Код:
-
AddWeight=10.0
Ну и в Pickup классе укажем, что рюкзак это "пушка" саппа, например
- Код:
-
CorrespondingPerkIndex=1
Картинку рюкзака для магазина я нашёл такую:
- Спойлер: