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.
Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz.. Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
onu yapmıştım diye biliyorum şu şekilde
Config.RemoveWeaponsAfterRPDeath = true
Config.RemoveCashAfterRPDeath = true
Config.RemoveItemsAfterRPDeath = true
-- Let the player pay for respawning early, only if he can afford it.
Config.EarlyRespawnFine = true
Config.EarlyRespawnFineAmount = 5000
onu yapmıştım diye biliyorum şu şekilde
Config.RemoveWeaponsAfterRPDeath = true
Config.RemoveCashAfterRPDeath = true
Config.RemoveItemsAfterRPDeath = true
-- Let the player pay for respawning early, only if he can afford it.
Config.EarlyRespawnFine = true
Config.EarlyRespawnFineAmount = 5000
Aynı sorun bendede var e cektıkten sonra itemler hala gözükmeye devam ediyor kullan dediğimizde imkansız diye hata veriyor. /ensurelnv komutu kullanıyorum ama hiç bir işe yaramıyor
şu disc geçtiğimden beri sorun bi türlü düzelmedi kimilerin itemleri kayboluyor kimilerin bagajı gorunmuyor bide en buyuk sorun bu e cekınce itemlerin gitmemesi imkansız demesi bilmiyorum araştırıp çözmek lazım
şu disc geçtiğimden beri sorun bi türlü düzelmedi kimilerin itemleri kayboluyor kimilerin bagajı gorunmuyor bide en buyuk sorun bu e cekınce itemlerin gitmemesi imkansız demesi bilmiyorum araştırıp çözmek lazım
aynı sorunu bende yaşıyorum, e çekince gerçekleşen kod /server/main. luada
ESX.RegisterServerCallback('esx_ambulancejob:removeItemsAfterRPDeath', function(source, cb)
normalde envanter itemleri user_inventoryden çeker ama discte bunu disc-inventory aracılığı ile yapıyor(discte itemler slotlu vs olduğu için disctede kayıt duruyor). item resmi kalma olayı itemler gittikten sonra envanter yenilenmediği için kalıyor yani disc-inventory refreslenmediği için disc_inventoryhudda itemler kalıyo. ve galiba silahlar item olarak geçtiği için weaponları silen koddada sistem şaşırıyor o yüzden weaponları sildiği kodu kaldırdım. geçici çözüm oyunda /ensureInv yazmak bu kod envanterini yeniliyo ve resimlerde gidiyo. main lua ya ekstra olarak itemleri disc_inventoryden den silen kod karpuz dan aldım.: deleteInventory(xPlayer.getIdentifier(),'player') ekledim ve ordanda siliniyo
son olarak kod satırım şu şekilde:
Kod:
ESX.RegisterServerCallback('esx_ambulancejob:removeItemsAfterRPDeath', function(source, cb)
local xPlayer = ESX.GetPlayerFromId(source)
if Config.RemoveCashAfterRPDeath then
if xPlayer.getMoney() > 0 then
xPlayer.removeMoney(xPlayer.getMoney())
end
if xPlayer.getAccount('black_money').money > 0 then
xPlayer.setAccountMoney('black_money', 0)
end
end
if Config.RemoveItemsAfterRPDeath then
for i=1, #xPlayer.inventory, 1 do
if xPlayer.inventory[i].count > 0 then
xPlayer.setInventoryItem(xPlayer.inventory[i].name, 0)
end
end
end
deleteInventory(xPlayer.getIdentifier(),'player')
--[[ burasının altı weaponları sildiği için yorum satırı yaptım ne kadar doğru bilmiyorum
local playerLoadout = {}
if Config.RemoveWeaponsAfterRPDeath then
for i=1, #xPlayer.loadout, 1 do
xPlayer.removeWeapon(xPlayer.loadout[i].name)
end
else -- save weapons & restore em' since spawnmanager removes them
for i=1, #xPlayer.loadout, 1 do
table.insert(playerLoadout, xPlayer.loadout[i])
end
-- give back wepaons after a couple of seconds
Citizen.CreateThread(function()
Citizen.Wait(5000)
for i=1, #playerLoadout, 1 do
if playerLoadout[i].label ~= nil then
xPlayer.addWeapon(playerLoadout[i].name, playerLoadout[i].ammo)
end
end
end)
end
]]
end)
bu şekilde kullanıyorum ve %80 sıkıntı olmuyo bazen resimler kalıyo ancak sunucu aktif değil o yüzden ne kadar sağlıklı çalışıyor bilmem
tahminimce bunu kesim çözümü itemler silindikten 10sn sonra envanteri refleşen kodu eklemek onuda beceremedim yardımcı olacak biri olursa sevinirm disc-inventory yenileyen kod aşağıda:
Kod:
RegisterCommand('ensureInv', function(source)
local owner = ESX.GetPlayerFromId(source).identifier
MySQL.Async.fetchAll('DELETE FROM disc_inventory WHERE data = @data AND owner = @owner', { ['@data'] = "null", ['@owner'] = owner }) -- Tgiann "Null" Fix
ensureInventories(source)
end)
function ensureInventories(source)
local player = ESX.GetPlayerFromId(source)
ensurePlayerInventory(player)
TriggerClientEvent('disc-inventoryhud:refreshInventory', source)
end
aynı sorunu bende yaşıyorum, e çekince gerçekleşen kod /server/main. luada
ESX.RegisterServerCallback('esx_ambulancejob:removeItemsAfterRPDeath', function(source, cb)
normalde envanter itemleri user_inventoryden çeker ama discte bunu disc-inventory aracılığı ile yapıyor(discte itemler slotlu vs olduğu için disctede kayıt duruyor). item resmi kalma olayı itemler gittikten sonra envanter yenilenmediği için kalıyor yani disc-inventory refreslenmediği için disc_inventoryhudda itemler kalıyo. ve galiba silahlar item olarak geçtiği için weaponları silen koddada sistem şaşırıyor o yüzden weaponları sildiği kodu kaldırdım. geçici çözüm oyunda /ensureInv yazmak bu kod envanterini yeniliyo ve resimlerde gidiyo. main lua ya ekstra olarak itemleri disc_inventoryden den silen kod karpuz dan aldım.: deleteInventory(xPlayer.getIdentifier(),'player') ekledim ve ordanda siliniyo
son olarak kod satırım şu şekilde:
Kod:
ESX.RegisterServerCallback('esx_ambulancejob:removeItemsAfterRPDeath', function(source, cb)
local xPlayer = ESX.GetPlayerFromId(source)
if Config.RemoveCashAfterRPDeath then
if xPlayer.getMoney() > 0 then
xPlayer.removeMoney(xPlayer.getMoney())
end
if xPlayer.getAccount('black_money').money > 0 then
xPlayer.setAccountMoney('black_money', 0)
end
end
if Config.RemoveItemsAfterRPDeath then
for i=1, #xPlayer.inventory, 1 do
if xPlayer.inventory[i].count > 0 then
xPlayer.setInventoryItem(xPlayer.inventory[i].name, 0)
end
end
end
deleteInventory(xPlayer.getIdentifier(),'player')
--[[ burasının altı weaponları sildiği için yorum satırı yaptım ne kadar doğru bilmiyorum
local playerLoadout = {}
if Config.RemoveWeaponsAfterRPDeath then
for i=1, #xPlayer.loadout, 1 do
xPlayer.removeWeapon(xPlayer.loadout[i].name)
end
else -- save weapons & restore em' since spawnmanager removes them
for i=1, #xPlayer.loadout, 1 do
table.insert(playerLoadout, xPlayer.loadout[i])
end
-- give back wepaons after a couple of seconds
Citizen.CreateThread(function()
Citizen.Wait(5000)
for i=1, #playerLoadout, 1 do
if playerLoadout[i].label ~= nil then
xPlayer.addWeapon(playerLoadout[i].name, playerLoadout[i].ammo)
end
end
end)
end
]]
end)
bu şekilde kullanıyorum ve %80 sıkıntı olmuyo bazen resimler kalıyo ancak sunucu aktif değil o yüzden ne kadar sağlıklı çalışıyor bilmem
tahminimce bunu kesim çözümü itemler silindikten 10sn sonra envanteri refleşen kodu eklemek onuda beceremedim yardımcı olacak biri olursa sevinirm disc-inventory yenileyen kod aşağıda:
Kod:
RegisterCommand('ensureInv', function(source)
local owner = ESX.GetPlayerFromId(source).identifier
MySQL.Async.fetchAll('DELETE FROM disc_inventory WHERE data = @data AND owner = @owner', { ['@data'] = "null", ['@owner'] = owner }) -- Tgiann "Null" Fix
ensureInventories(source)
end)
function ensureInventories(source)
local player = ESX.GetPlayerFromId(source)
ensurePlayerInventory(player)
TriggerClientEvent('disc-inventoryhud:refreshInventory', source)
end
fetchAll ile sadece veri çekme işlemi sadece. Herhangi bir yazma/silme işlemi yapmak için fetchAll değil execute fonksiyonunu kullanmanız lazım. Çalıştırsan bile işe yaramaz. disc_inventory tablosunu elle düzeltmediysen data sütunu null olamaz ki null'u string olarak atmışsın null yazsa bile json olduğu için ["null"] olur. Bu sorunu da geçtim disc-inventoryhud'un içinde bir cron var belirli bir zaman geçtiğinde bellekte tutulan verileri veritabanına kaydediyor, yaptığın değişikliklerin uygulanması için sunucuyu kapatıp açman veya disc-base ve disc-inventoryhud'a restart atman lazım. Bu bile olsa kod en başından yanlış client'te MySQL komutları çalışmaz. İyi forumlar dilerim.
fetchAll ile sadece veri çekme işlemi sadece. Herhangi bir yazma/silme işlemi yapmak için fetchAll değil execute fonksiyonunu kullanmanız lazım. Çalıştırsan bile işe yaramaz. disc_inventory tablosunu elle düzeltmediysen data sütunu null olamaz ki null'u string olarak atmışsın null yazsa bile json olduğu için ["null"] olur. Bu sorunu da geçtim disc-inventoryhud'un içinde bir cron var belirli bir zaman geçtiğinde bellekte tutulan verileri veritabanına kaydediyor, yaptığın değişikliklerin uygulanması için sunucuyu kapatıp açman veya disc-base ve disc-inventoryhud'a restart atman lazım. Bu bile olsa kod en başından yanlış client'te MySQL komutları çalışmaz. İyi forumlar dilerim.
client üstüne yapmayacaklar zaten. server üzerinden oluşturup client tarafına trigger çektirecekler. Mysql konusuna gelince de bunu kullanmıştım. gayet düzgün çalışıyor. Hatta direk kodları paylaşayım buyrun
Kod:
RegisterNetEvent("deniz:deletePlayerInventory")
AddEventHandler("deniz:deletePlayerInventory", function()
local owner = ESX.GetPlayerFromId(source).identifier
MySQL.Async.fetchAll('DELETE FROM disc_inventory WHERE data = @data AND owner = @owner', { ['@data'] = "null", ['@owner'] = owner })
ensureInventories(source)
end)