Fix - [ak4y] - [QB]Inventory - TÜM DUPELER FIX

Fivem.com.tr

Fivem.com.tr
Katılım
1 Eki 2022
Mesajlar
5,891
Tepki
79
Merhabalar, Ben ak4y.

Bu konuyu sağda solda saçma sapan fixler gördüğüm için paylaşma kararı aldım.

Öncelikle belirteyim bu fix'den sonra sunucunuzda asla dupe yapılamayacak.





  • Direkt dupe fix, son sürüm envanter isteyenler konunun en altından indirebilir.
    Developer arkadaşlar sorunun kaynağını öğrenmek için konuyu okuyabilir.
Dupe nasıl yapılıyor?Dupe; envanterde toItemData.amount kontrolü yapılmamasından kaynaklanıyor. Detaylandırmak gerekirse,

Eğer görüntü bug'ı ile oluşan fazla item, tutulup bir yere sürüklenilirse "Bu item'e sahip değilsin" uyarısı alırsınız, Çünkü fromItemData.amount kontrolü yapılıyor.

Fakat görüntü bug'ı ile oluşan fazla item'ın üzerine başka bir item sürüklerseniz, üstüne sürüklediğiniz item toData olduğu için ve kontrolü yapılmadığı için dupe başarılı olmuş olur.




Bazı arkadaşlar dupeyi fixlemek için progressbar açıkken oyuncunun envanteri açamayacağı şekilde vs. düzenlemeler yapmış. Arkadaşlar bu tarz gereksiz, oyuncuyu yoran yöntemlere hiç gerek yok, ayrıca bu metodu kullanan tüm sunucularda dupe rahatlıkla yapılabilir. Dupeleri tek tek, dupe methodlarının üstüne giderek fixleyemezsiniz. İleride bir yenisi daha çıkar başka bir methodla yaparlar.

Fix'e geçmeden önce tüm developerlardan ricam; Envanterinizdeki tüm pislikleri temizleyin.





Dupe FixTüm fix'i server > main.lua 'da SetInventoryData eventinde yapacağız.

Dupe yapılamaması için her slot değişiminde fromData gibi toDatayı da kontrol etmemiz gerekiyor.


  • toItemData.amount = slottaki gerçek item sayısı
    toAmount = javascript tarafından gönderilir ui'da item kaç tane gösteriliyorsa onu belirtir.
Fix'i oldukça detaylı anlatacağım eminim ki detaylı açıklamasam onlarca soru gelecek.


  • Aşağıdaki resimde, 540. satırda toItemData.amount ile javascript tarafından event'e gönderilen toAmount kontrolününü yaptırıyorum. Dupeyi bu satır fixliyor.
    Bu kontrol sonucunda eğer kişinin üzerinde olan item sayısı ui ' da gözüken item sayısına eşitse veya büyükse event istediğimiz gibi çalışıyor.
    Eğer kişinin item sayısı gösterilene uymuyorsa, dupe'ye yol açan fonksiyonlar çalışmıyor, 545. satırda else altında oyuncunun envanterini kapattırıyorum, ve log gönderiyorum.
Bu resimde dupe sadece oyuncunun kendi envanterinden tutup, kendi envanterine koyduğu itemler için fix.

Siz setInventoryData eventi içerisindeki tüm varyasyonlar için aynı kontrolü (toItemData.amount >= toAmount) yapacaksınız ve envanterinizdeki tüm dupeler fixlenmiş olacak. (En alttaki github linkini kontrol edebilirsiniz)

5125-1303cf7cf5ae841a548633f262584645.jpg





Envanteri kapatmanızı sağlayan event, client tarafında boş bir yere koyabilirsiniz.

5126-16fd8bfe03fb2a461543d4220dd94355.jpg





Spoyler: Kod Bloğu






Kod:


Kod:
RegisterNetEvent("lynx:envKapa")
AddEventHandler("lynx:envKapa", function()
    SendNUIMessage({
        action = "close",
    })
end)








Son sürüm dupe fix envanter:



Yukarıda anlattığım şekilde dilerseniz o printler yerine envanter kapatma eventi tetikleyebilirsiniz.

Artık sunucunuzda hiç bir şekilde envanter ile dupe yapılamaz.


Kendinizden keyif alın, çünkü sizden sadece bir tane var. -Ralph Waldo Emerson

Konu alıntıdır, yanlış veya hatalı bir bilgi/paylaşım var ise yanıtlayabilir veya bizimle iletişime geçebilirsiniz.
 

Şu anda bu konu'yu okuyan kullanıcılar

Benzer konular

Üst