Neler yeni

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Türkiye'nin İlk ve tek FiveM forum adresi

Forum adresimize hoş geldin FiveMTürk olarak amacımız siz değerli kullanıcılarımıza en aktif fikir ve paylaşım platformu sunmak bir yana en güvenilir şekilde alışveriş yapabileceğiniz bir platform sunmaktır.
DF DF
DF DF
DF DF

Fix esx_inventoryhud Modem Fiş Çekme vb. ile Eşya Kopyalama Çözümü

  • Konbuyu başlatan exelds
  • Başlangıç tarihi
  • Cevaplar 13
  • Görüntüleme 3K

exelds

Üye
FT Kullanıcı
Katılım
4 yıl 11 ay 17 gün
Mesajlar
245
Başlık yeterince anlaşılır olmasına rağmen bahsettiğim kopyalama hakkında ufak bir bilgi vereceğim. Bu esx_inventoryhud da yapılıyor genelde. Kişi modem fişini çekip araç bagajına, moteline vs. arka arkaya eşyalar koyuyor fakat server tarafından yanıt almadığı için üzerinde eşya kalmaya devam ediyor. Arka arkaya bu şekilde eşya koyma komutu yolladıktan sonra internete tekrar bağlandığında stacklenen tüm bu verileri bi anda servera yolluyor. Dolayısıyla 1 adet olan eşyayı defalarca kez ikinci envantere koyma komutu yolluyor ve eşya bu şekilde çoğaltılmış oluyor. Aşağıya bunun için getirdiğim çözüm kodlarını paylaşacağım. Bu çözüm sadece modem fişi çekme yöntemi değil server tarafına arka arkaya komut yollayıp kopyalama yapılabilmesini sağlayan tüm yöntemleri engelleyecektir. Eğer kodlarda bir eksik, gözümden kaçan noktalar vs. varsa yorumlarda belirtirseniz onları da gidermek için çalışmalar yapabilirim. Bu kodlar bir sunucuda haftalardır test ediliyor ve şimdiye kadar herhangi bir sorunla karşılaşılmadı.

Öncelikle esx_inventoryhud\server.main.lua da istediğiniz bir yere aşağıdaki kodları ekleyin:

Kod:
local sayac = 0

ESX.RegisterServerCallback('ExeLds:checkSpam', function(source, cb)
    if sayac == 0  then
        cb(0)
        sayac = sayac + 1
        Citizen.Wait(1000)
        sayac = 0
    else
        cb(1)
    end
end)

Sonrasında esx_inventoryhud\client içerisindeki glovebox, trunk, property, motels vb. gibi içerisinde örnek PutIntoTrunk ve TakeFromTrunk gibi RegisterNUICallback olan tüm luaları aşağıda vereceğim trunk örneğindeki gibi düzenleyin.

Örnek: (esx_inventoryhud\client\trunk.lua)


Kod:
local sayac = 0

RegisterNUICallback(
    "PutIntoTrunk",
    function(data, cb)
        if IsPedSittingInAnyVehicle(playerPed) then
            return
        end

        if type(data.number) == "number" and math.floor(data.number) == data.number then
            local count = tonumber(data.number)

            if data.item.type == "item_weapon" then
                count = GetAmmoInPedWeapon(PlayerPedId(), GetHashKey(data.item.name))
            end
            sayac = sayac + 1    
            ESX.TriggerServerCallback('ExeLds:checkSpam', function(callback)
                sayac = callback
                if sayac == 0 then
                    TriggerServerEvent("esx_trunk:putItem", trunkData.plate, data.item.type, data.item.name, count, trunkData.max, trunkData.myVeh, data.item.label)
                end
           
            end)        
        end

        Wait(250)
        loadPlayerInventory()

        cb("ok")
    end
)

RegisterNUICallback(
    "TakeFromTrunk",
    function(data, cb)
        if IsPedSittingInAnyVehicle(playerPed) then
            return
        end

        if type(data.number) == "number" and math.floor(data.number) == data.number then
            sayac = sayac + 1
            ESX.TriggerServerCallback('ExeLds:checkSpam', function(callback)
                sayac = callback
                if sayac == 0 then
                    TriggerServerEvent("esx_trunk:getItem", trunkData.plate, data.item.type, data.item.name, tonumber(data.number), trunkData.max, trunkData.myVeh)
                end        
            end)          
        end

        Wait(250)
        loadPlayerInventory()

        cb("ok")
    end
)


Eğer bi eksik yapmadan düzenlemeleri yaptıysanız bu checkSpam ServerCallBack sayesinde kişi internet bağlantısını koparıp 1 den fazla eşya koyma komutu yollasa bile sadece ilk komut işleme alınacaktır. Dolayısıyla kopyalama girişimi başarısız olacaktır.

Not: Sizin envanter scriptinizdeki RegisterNUICallback isimleri farklı olabilir. Örneğin PutIntoTrunk yerine toTrunk veya TakeFromTrunk yerine fromTrunk vb. gibi. İsminin farklı olması herhangi bir soruna sebep olmaz. Siz de bu çözümü aynen uygulayabilirsiniz.
 
Son düzenleme:
Eğer tıkandığınız, yapamadığınız birşey olursa bunu özel mesaj veya discorddan vs. değil de bu konuya yorum olarak belirtirseniz, başka sizle aynı sorunu yaşayan veya yaşayacak arkadaşlar için daha iyi olur.
 
eyw reis deneyeceğim
 
olmadı herşeyi tam yaptım gene kopyalanıyor
 
olmadı herşeyi tam yaptım gene kopyalanıyor
Kopyalamayı denediğin cliente ayarı yaptığına emin misin? Örneğin ayarı motele uygulamışsındır ama bagajda deniyorsundur. Yani eklediğin sorguların çalıştırıldığına emin misin? Bi print ekleyerek kontrol edebilirsin. Mesela checkSpam ı aşağıdaki gibi düzenle, sonrasında cmd ekranında birden fazla "esya eklendi" yazacak mı kontrol et bakalım.

Kod:
ESX.RegisterServerCallback('ExeLds:checkSpam', function(source, cb)
    if sayac == 0  then
        cb(0)
        sayac = sayac + 1
        print('esya eklendi')
        Citizen.Wait(1000)
        sayac = 0
    else
        cb(1)
    end
end)




Eline sağlık bu kesin çözüm mü?
Teşekkürler, dediğim gibi kopyalama yapılan bir sunucuda uyguladım bu kodları ve bugu yapan bir arkadaş denedi tekrar kopyalamayı başaramadı. Siz de deneyip dönüş yaparsanız güzel olur.
 
Son düzenleme:
Bilgi için teşekkürler deneyeceğim. :)
 
esx_inventoryhud_trunk var ondada deneyim dün yazamadım kussura bakmayın
 
merhaba örneğin lsrp-motel'e göre uygulamak istiyorum bunu nasıl yapmalıyım trunk yazan yerleri neyle değiştirmeliyim ??
 
Dediklerini yaptım ama halen kopyalanıyor nerde yanlış yaptım acaba
 
Sistemi Test Ettim Sorunsuz Bir Şekilde Çalışıyor.Emeğine Sağlık.
 
41985
böyle bir hata almaktayım silahı motelden çekince motelde durmakta gözükmekte tekrar çekme yaptığımda ise böyle bir hata almaktayım sistemde problem yok ama bu hata nasıl düzelebilir?
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Bu konuyu görüntüleyen kullanıcılar

Tema düzenleyici

Tema özelletirmeleri

Granit arka planlar

Lütfen Javascript'i etkinleştirin!Javascript'i etkinleştirin!