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

Cevaplandı NASIL ÇÖZERİM?

  • Konbuyu başlatan Wermacht
  • Başlangıç tarihi
  • Cevaplar 10
  • Görüntüleme 929

Wermacht

Üye
FT Kullanıcı
Katılım
4 yıl 7 ay 10 gün
Mesajlar
638
Öncelikle sorunum şu;
Ben Ekran Kartı 1 alıyorum, gerekli parayı kesiyor ve itemi veriyor bunda sıkıntı yok. Fakat diğer seçenekleri almaya çalıştığımda hep Ekran Kartı 1'e göre işlem yapıyor. Örneğin Ekran Kartı 4 alıyorum, 250 nakit kesiyor ve Ekran Kartı 1 veriyor.

İlgili kod satırı:
Kod:
RegisterNetEvent("r5k:server:itemver")
AddEventHandler("r5k:server:itemver", function(item, fiyat)
  local src = source
  local xPlayer = ESX.GetPlayerFromId(src)
  local EsxItems = ESX.GetItems()
  local elements = {
    { label = 'Ekran Kartı 1 - 250$', value = 'ek1', fiyat = '250'},
    { label = 'Ekran Kartı 2 - 500$', value = 'ek2', fiyat = '500'},
    { label = 'Ekran Kartı 3 - 750$', value = 'ek3', fiyat = '750'},
    { label = 'Ekran Kartı 4 - 1000$', value = 'ek4', fiyat = '1000'}
    }

  for k, v in ipairs(elements) do
    if xPlayer.getQuantity('cash') >= 250 then
      xPlayer.addInventoryItem(v.value, 1)
      Citizen.Wait(500)
      xPlayer.removeInventoryItem('cash', v.fiyat)
      TriggerClientEvent('inventory:client:ItemBox', src, EsxItems[v.value], "add", 1)
      print(v.value .."test".. v.fiyat)
      break
  else
      print(v.value .."para yok".. v.fiyat)
    end
  end
end)
 
DF
for k, v in ipairs(elements) do if xPlayer.getQuantity('cash') >= 250 then xPlayer.addInventoryItem(v.value, 1) Citizen.Wait(500) xPlayer.removeInventoryItem('cash', v.fiyat) TriggerClientEvent('inventory:client:ItemBox', src, EsxItems[v.value], "add", 1) print(v.value .."test".. v.fiyat) break else print(v.value .."para yok".. v.fiyat) end

bu kod sadece ek1'e göre çalışır zaten ilk başta o var çünkü onun yerine valueleri teker teker kontrol edecksiniz
 
DF
For döngüsünü xPlayer.getQuantity('cash') >= 250 koşulu sağlanırsa break'liyorsun
yani for döngüsü 1 kere çalışıyor eğer kişinin parası varsa duruyor elementin içindeki 2. item'e gidemiyor
itemi verdirmek için for döngüsü yerine current value kullanabilirsin
 
DF
For döngüsünü xPlayer.getQuantity('cash') >= 250 koşulu sağlanırsa break'liyorsun
yani for döngüsü 1 kere çalışıyor eğer kişinin parası varsa duruyor elementin içindeki 2. item'e gidemiyor
itemi verdirmek için for döngüsü yerine current value kullanabilirsin
Yazdığınız cevap için teşekkür ederim, sorunum çözüme kavuştu :)
İhtiyacı olanlar ve merak edenler için kodları buraya bırakıyorum.

CSIDE
Kod:
function satismenu()

    local elements = { 
    { label = 'Ekran Kartı 1 - 250$', value = 'ek1', fiyat = '250'},
    { label = 'Ekran Kartı 2 - 500$', value = 'ek2', fiyat = '500'},
    { label = 'Ekran Kartı 3 - 750$', value = 'ek3', fiyat = '750'},
    { label = 'Ekran Kartı 4 - 1000$', value = 'ek4', fiyat = '1000'}
    }
    
            ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'Gpu', {
                title    = 'Ekran Kartı Satıcısı',
                align    = 'top-left',
                elements = elements
            }, function(data, menu)
                
                if data.current.value == 'ek1' then
                    menu.close()
                    print("ek 1 test")
                    TriggerServerEvent('r5k:server:giveitem:1', data.current.value, 250)
                elseif data.current.value == 'ek2' then
                    print("ek 2 test")
                    menu.close()
                    TriggerServerEvent('r5k:server:giveitem:1', data.current.value, 500)
                elseif data.current.value == 'ek3' then
                    print("ek 3 test")
                    menu.close()
                    TriggerServerEvent('r5k:server:giveitem:1', data.current.value, 750)
                elseif data.current.value == 'ek4' then
                    print("ek 4 test")
                    menu.close()
                    TriggerServerEvent('r5k:server:giveitem:1', data.current.value, 1000)
                else
                    menu.close()
                end
            end, function(data, menu)
                menu.close()
            end)
end

SSIDE

Kod:
RegisterNetEvent("r5k:server:giveitem:1")
AddEventHandler("r5k:server:giveitem:1", function(itemname, fiyat)
local src = source
local xPlayer = ESX.GetPlayerFromId(src)
local EsxItems = ESX.GetItems()
local cash = xPlayer.getQuantity('cash')

if cash >= fiyat then
xPlayer.removeInventoryItem('cash', fiyat)
Citizen.Wait(500)
xPlayer.addInventoryItem(itemname, 1)
TriggerClientEvent('inventory:client:ItemBox', src, EsxItems[itemname], "add", 1)
print(itemname .."Adlı item basariyla satin alindi.")
else
print("kisinin uzerinde para bulunmamakta.")
end
end)
 
DF
Yazdığınız cevap için teşekkür ederim, sorunum çözüme kavuştu :)
İhtiyacı olanlar ve merak edenler için kodları buraya bırakıyorum.

CSIDE
Kod:
function satismenu()

    local elements = {
    { label = 'Ekran Kartı 1 - 250$', value = 'ek1', fiyat = '250'},
    { label = 'Ekran Kartı 2 - 500$', value = 'ek2', fiyat = '500'},
    { label = 'Ekran Kartı 3 - 750$', value = 'ek3', fiyat = '750'},
    { label = 'Ekran Kartı 4 - 1000$', value = 'ek4', fiyat = '1000'}
    }
   
            ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'Gpu', {
                title    = 'Ekran Kartı Satıcısı',
                align    = 'top-left',
                elements = elements
            }, function(data, menu)
               
                if data.current.value == 'ek1' then
                    menu.close()
                    print("ek 1 test")
                    TriggerServerEvent('r5k:server:giveitem:1', data.current.value, 250)
                elseif data.current.value == 'ek2' then
                    print("ek 2 test")
                    menu.close()
                    TriggerServerEvent('r5k:server:giveitem:1', data.current.value, 500)
                elseif data.current.value == 'ek3' then
                    print("ek 3 test")
                    menu.close()
                    TriggerServerEvent('r5k:server:giveitem:1', data.current.value, 750)
                elseif data.current.value == 'ek4' then
                    print("ek 4 test")
                    menu.close()
                    TriggerServerEvent('r5k:server:giveitem:1', data.current.value, 1000)
                else
                    menu.close()
                end
            end, function(data, menu)
                menu.close()
            end)
end

SSIDE

Kod:
RegisterNetEvent("r5k:server:giveitem:1")
AddEventHandler("r5k:server:giveitem:1", function(itemname, fiyat)
local src = source
local xPlayer = ESX.GetPlayerFromId(src)
local EsxItems = ESX.GetItems()
local cash = xPlayer.getQuantity('cash')

if cash >= fiyat then
xPlayer.removeInventoryItem('cash', fiyat)
Citizen.Wait(500)
xPlayer.addInventoryItem(itemname, 1)
TriggerClientEvent('inventory:client:ItemBox', src, EsxItems[itemname], "add", 1)
print(itemname .."Adlı item basariyla satin alindi.")
else
print("kisinin uzerinde para bulunmamakta.")
end
end)

if elseif kullanmak yerine
TriggerServerEvent('r5k:server:giveitem:1', data.current.value, data.current.fiyat)
da yapabilirsin
 
DF
O yöntemi denedim fakat anlamadığım bir şekilde data.current.fiyat 'ı tanımadı. Ben de böyle çözüm buldum.
data.current.fiyat'ı printlemeyi dene nil döndürmüyorsa ve script istediğin gibi çalışmıyorsa string gönderdiği içindir integer'a çevirip tekrar denersen düzelir
 
DF
data.current.fiyat'ı printlemeyi dene nil döndürmüyorsa ve script istediğin gibi çalışmıyorsa string gönderdiği içindir integer'a çevirip tekrar denersen düzelir
Evet string gönderdiğim içinmiş şimdi fark ettim. Şu şekil düzenledim:


Kod:
function satismenu()

    local elements = { 
    { label = 'Ekran Kartı 1 - 250$', value = 'ek1', fiyat = 250},
    { label = 'Ekran Kartı 2 - 500$', value = 'ek2', fiyat = 500},
    { label = 'Ekran Kartı 3 - 750$', value = 'ek3', fiyat = 750},
    { label = 'Ekran Kartı 4 - 1000$', value = 'ek4', fiyat = 1000}
    }
    
            ESX.UI.Menu.Open('default', GetCurrentResourceName(), 'Gpu', {
                title    = 'Ekran Kartı Satıcısı',
                align    = 'top-left',
                elements = elements
            }, function(data, menu)
                
                if data.current.value == 'ek1' or 'ek2' or 'ek3' or 'ek4' then
                    menu.close()
                    print(data.current.value .." ,".. data.current.fiyat.. " fiyatina satin alindi")
                    TriggerServerEvent('r5k:server:giveitem:1', data.current.value, data.current.fiyat)
                else
                    menu.close()
                end
            end, function(data, menu)
                menu.close()
            end)
end
 
DF
Merhaba,

konu başlığı tarafımca cevaplandı olarak değiştirilmiştir.

İyi Forumlar Dilerim , Saygılarımla..
 
DF

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!
// Adblock Kod Start // // Adblock Kod End//