Следите за нами!
Простая система инвентаря с множеством функций и удобным интерфейсом!
*Этот скрипт не предусматривает систему сохранения и загрузки данных, это ваша задача. В классе инвентаря есть метод save, с помощью которого вы можете реализовать собственную систему сохранения в зависимости от используемой базы данных.
*Доступно в версиях на TypeScript и jаvascript.
*Ключи, привязанные к клиентскому скрипту, являются временными, их следует изменить в соответствии с вашими предпочтениями.
*Простота в использовании и реализации.
> Будет поддерживаться и обновляться в обычном режиме.
Ниже приведен список свойств предметов. У каждого свойства есть свое уникальное применение, поэтому, пожалуйста, ознакомьтесь с ним.
type: ITEM_TYPES; //item type
typeCategory: ITEM_TYPE_CATEGORY; //item category see ITEM_TYPE_CATEGORY enum in index.d.ts
isPlaced: boolean; //whether item is 'placed' in clothes
quality: number; //item quality level
image: string; //item image
hash: string; //unique item hash, also used as linked to a child item
key: string; //item key which contains clothes data only (such as component id, drawable and texture)
render: string; //item render image which later on can be used in CDN if you have plenty items.
name: string; //item name
description: string; //item description
count: number; //item count, also determines whether you can split an item up
weight: number; //item weight
maxStack: number; //max stack determines how many items can be stacked in one slot
options: string[]; //item options (to be used when you right click an item) such
gender: number | null; //item gender, used on clothes whether the clothe is for female or male
modelHash?: string; //prop model name or hash that will be used to create object when dropping item
ammoType?: string; //ammo type that a weapon will contain
ammoInClip?: number; //ammo in weapon clip
amount?: number; //used for armor to contain its amount
effect?: {
// функция, которая определяет, будет ли предмет иметь эффект
[key: string]: number;
};
components?: Array<number>; // в будущем будет использоваться для навесного оружия
Класс Inventory — это основной класс для управления инвентарем игрока в игре. Он наследуется от других классов, таких как InventoryClothes, QuickUse и InventoryItem.
InventoryBase: базовый класс для управления инвентарем. Инициализирует структуру инвентаря и выполняет основные операции.
InventoryItem: наследует InventoryBase и добавляет методы для управления отдельными предметами в инвентаре.
QuickUse: наследуетInventoryItem и добавляет методы для управления ячейками быстрого использования.
"InventoryClothes": расширяет "Быстрое использование" и добавляет методы для управления предметами одежды в инвентаре.
Этот класс предоставляет широкие функциональные возможности для управления инвентарем игрока, включая добавление, удаление, экипировку и использование предметов.
"предметы": Содержит предметы инвентаря игрока, разделенные на карманы и одежду.
"Быстрое использование": Содержит предметы, назначенные для быстрого использования.
weight: общая грузоподъемность инвентаря.
equippedWeapons: отслеживает экипированное оружие.
Инициализирует инвентарь с учетом индивидуальных данных игрока, таких как одежда, карманы и предметы быстрого доступа.
addItem: добавляет предмет в карманы инвентаря.
addClothingItem: добавляет предмет одежды в инвентарь.
removeClothes: снимает предмет одежды с персонажа игрока.
loadClothes: надевает предметы одежды на персонажа игрока.
setClothes: надевает предметы одежды на персонажа игрока.
reloadClothes: надевает предметы одежды на персонажа игрока.
getFreeSlot: возвращает свободный слот в карманах инвентаря.
getTotalFreeSlots: подсчитывает общее количество свободных ячеек в инвентаре.
getClothingIndex: возвращает индекс определенного типа одежды.
resetItemData, resetClothingItemData, resetBackpackItemData: сбрасывает данные об элементах в инвентаре.
updateOnScreenPed: обновляет внешний вид персонажа игрока на экране.
getItemModel: возвращает хэш модели определенного типа предмета.
getItemAndStack, getItemsByHashName, getItemsInCategoryByHashName, getItemsByHashNameEx: методы для получения предметов по их типу или категории.
getItemByUUID: получение предмета по его UUID.
hasPistolItem, hasShotgun, hasAssault, hasSMG, hasWeaponInFastSlot: методы для проверки наличия в инвентаре определенных видов оружия.
getActualWeight, getWeight, getItemsWeight: методы для расчета веса инвентаря и его содержимого.
checkWeight: проверяет, не превысит ли вес инвентаря допустимое значение при добавлении нового предмета.
getFreeSlotCount: возвращает количество свободных ячеек в инвентаре.
dropItem, splitStack, addPlayerItem, addPlayerItemEx, addMultipleItems, addCountToPlayerItem, manageFastSlots, pickupItem, moveItem, openItem, useItem: методы для управления действиями с инвентарем, такими как выпадение, разделение, добавление и использование предметов.
deleteItemStack, deleteItem: методы для удаления предметов из инвентаря.
checkQuickUse: проверяет, находится ли предмет в ячейке быстрого доступа.
Добавление новых элементов:
Javscript
-> Перейдите в файл Items.module.js, расположенный в папке inventory. Там вы увидите список уже добавленных элементов. После добавления элемента убедитесь, что его изображение отображается во внешнем интерфейсе. Если это не так, добавьте его и перестройте интерфейс.
Typescript
-> Перейдите к Items.module.ts, расположенному в папке inventory, там вы можете увидеть список уже добавленных элементов, и вы можете следовать по пути, после добавления элемента убедитесь, что изображение элемента существует во внешнем интерфейсе, если его нет, добавьте его и перестройте внешний интерфейс.
Установите необходимые пакеты, выполнив команду "npm install.\ Если вы используете версию на TypeScript, после установки пакетов вы можете выполнить команду \npm run watch:server`, чтобы отслеживать/компилировать серверную часть, и `npm run watch:client`, чтобы отслеживать/компилировать клиентскую часть. Если вы используете версию на jаvascript, ничего делать не нужно.
Начало работы с фронтендом.
В терминале перейдите в папку с фронтендом (cd frontend)
Запустите фронтенд в режиме разработки, выполнив команду: `npm run start`
Соберите интерфейсную часть (интерфейс инвентаризации), выполнив команду `npm run build`
Нет комментариев.Оставишь комментарий?