RAGEMP Envanter Sistemi
type: ITEM_TYPES; // item türü
typeCategory: ITEM_TYPE_CATEGORY; // item kategorisi, index.d.ts içindeki enum’a bak
isPlaced: boolean; // item kıyafete takılı mı
quality: number; // item kalite seviyesi
image: string; // item resmi
hash: string; // benzersiz item hash’i, aynı zamanda bağlı item için kullanılır
key: string; // sadece kıyafet verisi içerir (component id, drawable, texture gibi)
render: string; // render görseli, çok item varsa CDN için kullanılabilir
name: string; // item adı
description: string; // item açıklaması
count: number; // item adedi, aynı zamanda bölünebilir mi onu belirler
weight: number; // item ağırlığı
maxStack: number; // bir slotta maksimum kaç tane stacklenebilir
options: string[]; // sağ tık seçenekleri
gender: number | null; // item cinsiyeti (kıyafet için kadın/erkek)
modelHash?: string; // item yere atıldığında oluşacak obje modeli
ammoType?: string; // silahın kullanacağı mermi tipi
ammoInClip?: number; // şarjördeki mermi sayısı
amount?: number; // zırh değeri
effect?: {
[key: string]: number;
}; // item efekti (ileride geliştirilecek)
components?: Array<number>; // silah eklentileri (ileride kullanılacak)
Sınıf Yapısı
Inventory class’ı, oyunda oyuncu envanterini yönetmek için kullanılan ana sınıftır. InventoryClothes, QuickUse ve InventoryItem gibi class’lardan türetilmiştir.
InventoryBase: Envanter yönetimi için temel sınıf. Envanter yapısını oluşturur ve temel işlemleri yönetir.
InventoryItem: InventoryBase’den türetilir ve item yönetimi için metodlar ekler.
QuickUse: InventoryItem’dan türetilir ve hızlı kullanım slotlarını yönetir.
InventoryClothes: QuickUse’tan türetilir ve kıyafet sistemini yönetir.
Bu sınıf, item ekleme, silme, kullanma ve kuşanma gibi tüm işlemleri kapsayan geniş bir yapı sunar.
Özellikler
items: Oyuncunun envanterindeki eşyaları tutar (cep + kıyafet)
quickUse: Hızlı kullanım slotları
weight: Envanterin toplam ağırlık kapasitesi
equippedWeapons: Takılı silahları tutar
Kurucu (Constructor)
Oyuncuya özel envanteri başlatır. Kıyafet, cep ve quick slot verilerini yükler.
Metotlar
addItem: Envantere item ekler
addClothingItem: Envantere kıyafet ekler
removeClothes: Oyuncudan kıyafet çıkarır
loadClothes: Kıyafetleri oyuncuya yükler
setClothes: Oyuncuya kıyafet giydirir
reloadClothes: Kıyafetleri yeniden yükler
getFreeSlot: Envanterde boş slot bulur
getTotalFreeSlots: Toplam boş slot sayısını hesaplar
getClothingIndex: Belirli bir kıyafet türünün indexini getirir
resetItemData, resetClothingItemData, resetBackpackItemData: Item verilerini sıfırlar
updateOnScreenPed: Oyuncunun ekrandaki görünümünü günceller
getItemModel: Item model hash’ini getirir
getItemAndStack, getItemsByHashName, getItemsInCategoryByHashName, getItemsByHashNameEx: Item’ları türüne veya kategorisine göre bulma metodları
getItemByUUID: UUID ile item bulur
hasPistolItem, hasShotgun, hasAssault, hasSMG, hasWeaponInFastSlot: Envanterde belirli silahlar var mı kontrol eder
getActualWeight, getWeight, getItemsWeight: Envanter ve item ağırlıklarını hesaplar
checkWeight: Yeni item eklenirse ağırlık limiti aşılır mı kontrol eder
getFreeSlotCount: Boş slot sayısını getirir
dropItem, splitStack, addPlayerItem, addPlayerItemEx, addMultipleItems, addCountToPlayerItem, manageFastSlots, pickupItem, moveItem, openItem, useItem: Item işlemleri (atma, bölme, ekleme, kullanma vs.)
deleteItemStack, deleteItem: Item silme işlemleri
checkQuickUse: Item hızlı kullanım slotunda mı kontrol eder
Yeni eşya ekleme:
Javascript
-> inventory klasöründeki Items.module.js dosyasına git. Orada mevcut item listesine bakarak yeni item ekleyebilirsin. Ekledikten sonra frontend’de item resmi olduğundan emin ol, yoksa ekle ve frontend’i yeniden build et.
Typescript
-> inventory klasöründeki Items.module.ts dosyasına git. Aynı işlemleri yap ve frontend görselini ekleyip build al.
Gerekli paketleri yüklemek için npm install komutunu çalıştırın.
Eğer Typescript versiyonunu kullanıyorsanız, paketleri yükledikten sonra server tarafını izlemek/derlemek için npm run watch:server, client tarafını izlemek/derlemek için npm run watch:client komutlarını çalıştırabilirsiniz. Javascript versiyonunu kullanıyorsanız ekstra bir şey yapmanıza gerek yoktur.
Frontend’e başlama.
Terminalde frontend klasörüne gidin (cd frontend).
Frontend’i geliştirme modunda çalıştırmak için: npm run start
Frontend’i (envanter arayüzünü) derlemek için: npm run build
Gerekli paketleri yüklemek için:
package2 klasörü oluşturma:
Linkleri görebilmek için Turkmmo Forumuna
ÜYE olmanız gerekmektedir.
Derlenen dosyaları package2 klasörüne taşıma
Linkleri görebilmek için Turkmmo Forumuna
ÜYE olmanız gerekmektedir.
Envanter arayüzünü derleme
Linkleri görebilmek için Turkmmo Forumuna
ÜYE olmanız gerekmektedir.