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

Paylaşım Yeni GPS Sistemi (Hitch Warning Çözüm)

exelds

Üye
FT Kullanıcı
Katılım
5 yıl 7 ay 13 gün
Mesajlar
245
Herkese selam. Ben ciddi anlamda uzun zamandır bu hitch warning, sunucuda laglanma vs. sıkıntılarıyla uğraşıyorum. Araştırmadığım yerli, yabancı konu kalmadı. Bu hitch warning sorunu okadar fazla sebepten kaynaklanabiliyor ki, oyuzden bu paylaşacağım konu kesin sorunumu çözer diye düşünmeyin. Bunun yanında ek başka sorunlu scriptleriniz de olabilir ama GPS sisteminiz aşağıda belirttiğim şekildeyse illaki bi düzelme gözlemleyeceksinizdir.

Benim uzun zamandır uğraştığım hitch warning sorunu tamamen polis/doktorların GPS muhabbetlerinden kaynaklanıyormuş diyebilirim. GPS konusunda tamamen farklı bi şekilde kendime has kodlama yaptım ve hitch sorunumu çözdüm. Çözdüm dediğim de tamamen hitch warningler kesildi gibi anlaşılmasın, lag vs. gibi bi sorun kalmadı ama araştırdığım kadarıyla fivemde yüksek oyuncularda (30 üzeri) hiç hitch warning almamak pek mümkün değil. Aldığınız hitch sayıları 3 basamaklı olduğu sürece sorun yok. 64 kişi civarlarında 600-700 civarını sürekli olarak geçmediği sürece durum gayet iyi benim gözümde.

Öncelikle bu yüksek hitch warninglerin, sunucularda yaşanan laglanmaların vs. genel polis/doktorların GPS sisteminden kaynaklanıyor deme sebebim tamamen aşağıdaki trigger:
ESX.TriggerServerCallback('esx_society:getOnlinePlayers', function(players)

Bu event oyuncu sayınız yükseldikce ve o an aktif polis/doktor sayısı arttıkca sunucunuzu çok daha kötü duruma götürüyor. Çünkü mevcut olan tüm oyuncuları ayırt etmeksizin bi tabloya ekliyor ve bunu client tarafına, tetikleyen polis/doktor oyuncuya iletiyor (Mevcut oyunculardan sadece police/doktorları tabloya ekleyecek şekilde güncellemiştim ama durumda yine de iyileşme olmadı). Bu işlemi tüm aktif polis/doktor oyuncular için ayrı ayrı yapıyor. Buna ek olarak birde her seferinde oyuncuların isimlerini çekiyorsanız database den durum hepten içler acısı bir hal alıyor. Her nekadar bu eventi belli zaman aralıklarında triggerlıyor olsanız da her seferinde tüm bu ağır işlemlerin tekrar tekrar sıfırdan yapılması sunucu için çok büyük problem teşkil ediyor.

Benim yazmış olduğum GPS sistemi genel olarak ortalıkta dönen GPS sistemlerinden farklı. GPS sunucuya ilk giriş yapıldığında deaktif oluyor ve polis/ems oyuncularının kendilerinin aktif etmeleri gerekiyor. Yani GPS isteğe göre kapatılıp açılabiliyor. GPS aktif edildiğinde server side daki tabloda sadece o oyuncunun bilgileri tutuluyor ve GPS devre dışı bırakıldığında veya kişi sunucudan ayrıldığında o kişi server tarafından siliyor. Böylece GPS olayı optimize bi şekilde işliyor ve oyuncu sayısı nekadar yüksek olursa olsun herhangi bir değişme, ek yük bindirme vs. olmuyor.

Şuan için hem onduty hem offduty tüm polis/doktor oyuncular GPS açabiliyor. Zaten kapatılıp açılabildiği için oyunculara bu tarz bi sınır koymayı gereksiz gördüm.

Eğer sizin gözlemlediğiniz atladığım noktalar, yanlış kodladığım kısımlar varsa yorumlardan iletirseniz kodları tekrar düzenlerim. Bunun dışında takıldığınız, hata aldığınız noktalarda aynı şekilde yorum ile bana ve diğer bilen arkadaşlara sorabilirsiniz. Mümkün olduğunca yardımcı olmaya çalışırım.

Changelog:

01.10.2020
(Bu versiyonu discord kanalımda paylaştım)

- Artık belli bir zaman aralığında bir haritadaki tüm blipleri silip tekrar eklemeyecek, sadece gps sistemine yeni biri giriş yaptığında veya mevcut biri çıkış yaptığında blipler güncellenecek. Böylece hem görsel olarak sürekli git gel yapan blipler olmayacak hem de gereksiz işlem yapılmadığı için sistem daha optimize çalışacak.
- Polis araçlarına mesleği polis olmayan biri bindiğinde tüm polislere uyarı sesiyle birlikte kayıtsız polis aracı bildirimi gidecek ve haritada bu kayıtsız polis aracı tüm polisler tarafından anlık görünür olacaktır. Polis olmayan oyuncu araçtan indikten sonra haritada blipi silinecektir.

Not: Polis olmayan oyuncu sadece şoför koltuğuna bindiğinde bu bildirim aktif olacak şekilde ayarlanmıştır.
Not: İsteğe göre ek özellikler eklenebilir. Bu isteklerinizi bana discorddan iletebilirsiniz.

Bu versiyonu burada paylaşmadım çünkü forumda temel versiyonu kalsın istiyorum. Yeni ekleyeceğim özellikler daha çok kiminin isteyeceği özellikler olabilirken kimileri istemeyebilir. Gelecek güncellemeleri aynı şekilde discordumda paylaşacağım. Burada temel hali kalacak.




12.07.2020
- Rozet numarası sistemi eklendi. GPS i polis bir oyuncu aktif etmeye çalıştığında karşısına rozet numarası girebileceği pencere gelecektir. Buraya yazdığı rozet numarası bliplerde isminin başına köşeli parantez içinde eklenecektir.
- GPS listesine oyuncu giriş çıkışı olduğunda anlık oyuncuların GPS leri güncellenecektir. Böylece sistem daha optimize, gecikmesiz ve anlık olarak işleyecektir.Önceden bir oyuncu örneğin GPS kapattığında duruma göre 30 saniye kadar beklemek gerekebiliyordu diğer oyuncuların haritalarından silinmesi için.
- Kişinin üzerinden GPS eşyası alındığında otomatik olarak GPS sisteminden çıkarılmama sorunu düzeltildi.

21286

Anlatım:
Bu GPS sistemiyle birlikte bliplerde steam isimleri değil karakter isimleri de yazacağı için öncelikle eski GPS sistemine dair herşeyi hem client hem server tarafından silin. Updateblip trigger ve register eventleridir, createblip fonksiyonlarıdır vs.

Sonrasında policejob client kısmında istediğiniz yere aşağıdaki kodları ekleyin
Kod:
local gpsInfo = false

RegisterNetEvent('exelds:GPSStart')
AddEventHandler('exelds:GPSStart', function()
    ESX.TriggerServerCallback('esx_policejob:getItem', function (count)
if count > 0 then   
    if PlayerData.job.name == 'police' or PlayerData.job.name == 'offpolice' then
        ESX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'Rozet Numarası', {
            title = "Rozet Numaranızı Girin",
        }, function (data2, menu)
            --[[local amount = tonumber(data2.value)

            if amount == nil then
                exports['mythic_notify']:DoHudText('error', 'Buraya bir sayı yazmanız gerekmektedir!')
            else]]
                getGPSListforPolice()
                TriggerServerEvent('exelds:addGPSList', data2.value)
                TriggerEvent('exelds:gpsInfo', true)
                gpsInfo = true
                exports['mythic_notify']:SendAlert('inform', data2.value..' rozet numarası ile GPS aktif edildi', 7000, { ['background-color'] = '#0E506C', ['color'] = '#FFFFFF' })
                menu.close()
            --end
        end, function (data2, menu)
            exports['mythic_notify']:DoHudText('error', 'GPS aktif edilemedi!')
            menu.close()
        end)
    elseif PlayerData.job.name == 'ambulance' or PlayerData.job.name == 'offambulance' then
        getGPSListforAmbulance()
        TriggerServerEvent('exelds:addGPSList')
        TriggerEvent('exelds:gpsInfo', true)
        gpsInfo = true
        exports['mythic_notify']:SendAlert('inform', 'GPS aktif edildi', 3000, { ['background-color'] = '#0E506C', ['color'] = '#FFFFFF' })
    end
else
    exports['mythic_notify']:SendAlert('inform', 'Üzerinde GPS bulunmuyor', 3000, { ['background-color'] = '#CC0000', ['color'] = '#FFFFFF' })
end
    end, 'gps')
end)

RegisterNetEvent('exelds:GPSStop')
AddEventHandler('exelds:GPSStop', function()
    gpsInfo = false
    TriggerServerEvent('exelds:removeGPSList')
    TriggerEvent('exelds:gpsInfo', false)
    for k, existingBlip in pairs(blipsCops) do
        RemoveBlip(existingBlip)
    end
    blipsCops = {}
    exports['mythic_notify']:SendAlert('inform', 'GPS devre dışı bırakıldı', 3000, { ['background-color'] = '#0E506C', ['color'] = '#FFFFFF' })
end)
function getGPSListforPolice()
    for k, existingBlip in pairs(blipsCops) do
        RemoveBlip(existingBlip)
    end
    blipsCops = {}
    ESX.TriggerServerCallback('exelds:getGPSList', function(GPSList)
        for i = 1, #GPSList do
            local id = GetPlayerFromServerId(GPSList[i][1])
            if NetworkIsPlayerActive(id) and GetPlayerPed(id) ~= PlayerPedId() then
            local name = GPSList[i][2]
            local job = GPSList[i][3]       
            if job == 'police' or job == 'offpolice' then
                local rozetNum = GPSList[i][4]      
                createBlipLastPD(id, name, rozetNum)
            elseif job == 'ambulance' or job == 'offambulance' then
                createBlipLastEMS(id, name)
            end
            end
        end
    end)
end
function getGPSListforAmbulance()
    for k, existingBlip in pairs(blipsCops) do
        RemoveBlip(existingBlip)
    end
    blipsCops = {}
    ESX.TriggerServerCallback('exelds:getGPSList', function(GPSList)
        for i = 1, #GPSList do
            local id = GetPlayerFromServerId(GPSList[i][1])
            if NetworkIsPlayerActive(id) and GetPlayerPed(id) ~= PlayerPedId() then
            local name = GPSList[i][2]
            local job = GPSList[i][3]
            if job == 'ambulance' or job == 'offambulance' then
                createBlipLastEMS(id, name)
            end
            end
        end
    end)
end
function createBlipLastPD(id, isim, rozetNum)
    local ped = GetPlayerPed(id)
    local blip = GetBlipFromEntity(ped)
    if not DoesBlipExist(blip) then -- Add blip and create head display on player
        blip = AddBlipForEntity(ped)
        SetBlipSprite(blip, 1)
        SetBlipColour(blip, 57)
        ShowHeadingIndicatorOnBlip(blip, true) -- Player Blip indicator
        SetBlipRotation(blip, math.ceil(GetEntityHeading(ped))) -- update rotation
        SetBlipScale(blip, 0.85) -- set scale
        SetBlipAsShortRange(blip, true)
        BeginTextCommandSetBlipName('STRING')
        AddTextComponentString('[~b~ '..rozetNum..' ~s~] '..isim)
        EndTextCommandSetBlipName(blip)
        table.insert(blipsCops, blip) -- add blip to array so we can remove it later
    end
end
function createBlipLastEMS(id, isim)
    local ped = GetPlayerPed(id)
    local blip = GetBlipFromEntity(ped)
    if not DoesBlipExist(blip) then
        blip = AddBlipForEntity(ped)
        SetBlipSprite(blip, 1)
        SetBlipColour(blip, 1)
        ShowHeadingIndicatorOnBlip(blip, true)
        SetBlipRotation(blip, math.ceil(GetEntityHeading(ped)))
        SetBlipScale(blip, 0.85)
        SetBlipAsShortRange(blip, true)
        BeginTextCommandSetBlipName('STRING')
        AddTextComponentString('[~r~LSMS~s~] '..isim)
        EndTextCommandSetBlipName(blip)
        table.insert(blipsCops, blip)
    end
end

RegisterNetEvent('exelds:refreshGPS')
AddEventHandler('exelds:refreshGPS', function()
    if gpsInfo == true then
        if PlayerData.job.name == 'police' or PlayerData.job.name == 'offpolice' then
            getGPSListforPolice()
        elseif PlayerData.job.name == 'ambulance' or PlayerData.job.name == 'offambulance' then
            getGPSListforAmbulance()
        end
    end
end)

Sonrasında policejob server kısmında eski AddEventHandler('playerDropped' kısmını silin ve yine istediğiniz bir yere aşağıdaki kodları ekleyin
Kod:
local GPSList = {}

RegisterServerEvent('exelds:addGPSList')
AddEventHandler('exelds:addGPSList', function(rozetNum)
    local _source = source
    local xPlayer = ESX.GetPlayerFromId(_source)
    MySQL.Async.fetchAll("SELECT firstname, lastname FROM users WHERE identifier = @identifier", { ["@identifier"] = xPlayer.identifier }, function(result)
    local name = string.format("%s %s", result[1].firstname, result[1].lastname)
    table.insert(GPSList, {_source, name, xPlayer.job.name, rozetNum})
    TriggerClientEvent('exelds:refreshGPS', -1)
    end)
end)

RegisterServerEvent('exelds:removeGPSList')
AddEventHandler('exelds:removeGPSList', function()
    local _source = source
    for i = 1, #GPSList do
        if GPSList[i] and GPSList[i][1] == _source then
            table.remove(GPSList, i)
        end
    end
    TriggerClientEvent('exelds:refreshGPS', -1)
end)

ESX.RegisterServerCallback('exelds:getGPSList', function(source, cb)
    cb(GPSList)
end)


AddEventHandler('playerDropped', function()
    local _source         = source
    local xPlayer         = ESX.GetPlayerFromId(_source)
    if _source ~= nil then
        if xPlayer ~= nil and xPlayer.job ~= nil and (xPlayer.job.name == 'police' or xPlayer.job.name == 'offpolice' or xPlayer.job.name == 'ambulance' or xPlayer.job.name == 'offambulance') then
            for i = 1, #GPSList do
                if GPSList[i] and GPSList[i][1] == _source then
                    table.remove(GPSList, i)
                end
            end
        end
    end
end)


ESX.RegisterServerCallback('esx_policejob:getItem', function(source, cb, item)
        local xPlayer = ESX.GetPlayerFromId(source)
        local items = xPlayer.getInventoryItem(item)
        if items == nil then
            cb(0)
        else
            cb(items.count)
        end
end)


AddEventHandler('esx:onRemoveInventoryItem', function(source, item, count)
    local _source = source
    local xPlayer = ESX.GetPlayerFromId(_source)
    if xPlayer ~= nil and xPlayer.job ~= nil and (xPlayer.job.name == 'police' or xPlayer.job.name == 'offpolice' or xPlayer.job.name == 'ambulance' or xPlayer.job.name == 'offambulance') then
        if item.name == 'gps' and item.count < 1 then
            TriggerClientEvent('exelds:GPSStop', source)
        end
    end
end)


Temel olarak kodlar bu şekilde. Şimdi bunları aktif etme konusu tamamen size kalıyor. İster /gpsac /gpskapat gibi komutla bu işlemi gerçekleştirin. İster oyundaki GPS eşyasına bunu atayın veya bambaşka farklı bir yöntem kullanın. Ben ikisi için aşağıya yine kodları yazacam.

GPS eşyası ile aktif etme/devre dışı bırakma:
policejob server kısmına aşağıdaki kodu ekleyin
Kod:
ESX.RegisterUsableItem('gps', function(source)
    TriggerClientEvent('exelds:gpsAcKapat', source)
end)


ve son olarak policejob client kısmına aşağıdaki kodu ekleyin:
Kod:
RegisterNetEvent('exelds:gpsAcKapat')
AddEventHandler('exelds:gpsAcKapat', function()
    if gpsInfo then
    TriggerEvent('exelds:GPSStop')
    else
    TriggerEvent('exelds:GPSStart')
    end
end)


Komut ile aktif etme/devre dışı bırakma:
policejob client kısmına aşağıdaki kodu ekleyin
Kod:
RegisterCommand("gpsac", function()
    TriggerEvent('exelds:GPSStart')
end)

RegisterCommand("gpskapat", function()
    TriggerEvent('exelds:GPSStop')
end)
komutlara ekstra meslek sorgusu ekleyip eklememek size kalmış ama ben ekleme gereği duymadım.Çünkü zaten GPSStart eventinde bu sorgu mevcut. Polis veya doktor olmayan biri GPS listesine giremez.
 
DF
Son düzenleme:
Eski gps'i silmek için hangi satırları silmeliyiz
 
DF
Tam olarak satır veremem ama daha açık olmak adına şöyle yazayım:
policejob client içinde
RegisterNetEvent('esx_policejob:updateBlip') içine dahil olan tüm satırları sil

Aşağıdaki gibi olan Citizen.CreateThread fonksiyonunu tamamen sil
Kod:
Citizen.CreateThread(function()
    while true do
        Citizen.Wait(30000)
        if PlayerData.job and PlayerData.job.name == 'police' then
            ESX.TriggerServerCallback('esx_policejob:getItemAmount', function(qtty)
                if qtty > 0 then
                    TriggerEvent('esx_policejob:updateBlip')
                end
            end, 'gps')
        end
        if PlayerData.job and PlayerData.job.name == 'ambulance' then
            TriggerEvent('esx_policejob:updateBlip')
        end
    end
end)

onun dışında tüm TriggerEvent('esx_policejob:updateBlip') satırlarını aynı şekilde sil

policejob server içinde:

aşağıdaki gibi içinde TriggerClientEvent('esx_policejob:updateBlip', bulunan tüm kod bloklarını sil
Kod:
RegisterServerEvent('esx_policejob:spawned')
AddEventHandler('esx_policejob:spawned', function()
    local _source             = source
    local xPlayer             = ESX.GetPlayerFromId(_source)

    if xPlayer ~= nil and xPlayer.job ~= nil and xPlayer.job.name == 'police' then
        local currentGPS = xPlayer.getInventoryItem('gps').count
        Citizen.Wait(5000)
        if currentGPS > 0 then
            TriggerClientEvent('esx_policejob:updateBlip', -1)
        end
    end
end)

RegisterServerEvent('esx_policejob:forceBlip')
AddEventHandler('esx_policejob:forceBlip', function()
    local _source = source
    local xPlayer = ESX.GetPlayerFromId(_source)
    local currentGPS     = xPlayer.getInventoryItem('gps').count

    if currentGPS > 0 then
        TriggerClientEvent('esx_policejob:updateBlip', -1)
    end
end)

AddEventHandler('esx:onAddInventoryItem', function(source, item, count)
    local _source = source
    local xPlayer = ESX.GetPlayerFromId(_source)
    if xPlayer ~= nil and xPlayer.job ~= nil and xPlayer.job.name == 'police' then
        if item.name == 'gps' and item.count > 0 then
            TriggerClientEvent('esx_policejob:updateBlip', source)
        end
    end
end)

atladığım birşey yoksa bunları sildiğinde tamamen eski gps sistemini silmiş olacaksın.
 
DF
Peki bunu bir iteme bağlı tutabilrimiyiz mesela gps itemi üzerinde yoksa gpsac ı kullanamayacak şekilde.
 
DF
Özellikle sunucusunda hitch warning, lag, delay sorunu yaşayan arkadaşların bunu denemesini tavsiye ederim.
 
DF
bu alttaki satılarıda silicez mi hocam yoksa sadece registereventi kapatsak yeter mi


16611
 
DF
Bliplerin fotoğraflarını görmek mümkün mü ? Ayrıca Elinizde Bliplerin isimlerini yani Telsiz kodunu editleyebileceğimiz kod bloklarını elinizde mevcut mu ?
 
DF
Bu Konu Hakkında Şöyle bir şey söyliyebilirim. örneğin police/ems meslekleri üzerinden gidicem. police mesleğine atanmış 20 user ve ems mesleğine atanmış 30 user düşünelim. Bu Kişileri script data dan çekicek ve bu mesleğe ait userlar oyuna giriş yaptıklarında gps oto olarak tanıyıp kendi içrisinde bir senkronize olmuş olucak. Böyle bir editleme daha mantıklı olur diye düşünüyorum.
 
DF
şöyle bir hata alıyorum gps görünmüyor kesinlikle. ayrıca gps itemine kullan deyince veya gpsac yapınca bildirim gelmiyor kapatınca geliyor sadece.
ORIfhE.png
 
DF
şöyle bir hata alıyorum gps görünmüyor kesinlikle. ayrıca gps itemine kullan deyince veya gpsac yapınca bildirim gelmiyor kapatınca geliyor sadece.
ORIfhE.png

Aşağıdaki kod yok mu senin policejob içerisinde? Yoksa bunu ekle. PlayerData nil değer döndürüyor nedense.
Kod:
Citizen.CreateThread(function()
    while ESX == nil do
        TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
        Citizen.Wait(0)
    end

    while ESX.GetPlayerData().job == nil do
        Citizen.Wait(10)
    end

    PlayerData = ESX.GetPlayerData()
end)
 
DF
Aşağıdaki kod yok mu senin policejob içerisinde? Yoksa bunu ekle. PlayerData nil değer döndürüyor nedense.
Kod:
Citizen.CreateThread(function()
    while ESX == nil do
        TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
        Citizen.Wait(0)
    end

    while ESX.GetPlayerData().job == nil do
        Citizen.Wait(10)
    end

    PlayerData = ESX.GetPlayerData()
end)

Kod:
Citizen.CreateThread(function()
    while ESX == nil do
        TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
        Citizen.Wait(0)
    end

    while ESX.GetPlayerData().job == nil do
        Citizen.Wait(10)
    end

    ESX.PlayerData = ESX.GetPlayerData()
end)

Bende bu şekildeydi ESX'i sildim şu an gps kullanınca hata vermiyor ama kimse olmadığı için deneyemedim çalışıp çalışmadığını. Deneyince haber vereceğim.
Bir de bunların hepsini policejob'da yaptık ambulancejob'ta sistemi nasıl entegre edebiliriz aynı şekilde mi?
 
DF
kodları biraz incelersen zaten sen de görebilirsin içerisine doktor oyuncular da dahil. Tüm doktor ve polis oyuncuları aynı havuz içerisine topluyor, polislere doktor ve polisleri gösteriyor, doktorlara sadece doktorları gösteriyor. Ayrıca bliplerinin renkleri ve isimleri de ayrı LSPD ve LSMS olarak.
 
DF
kodları biraz incelersen zaten sen de görebilirsin içerisine doktor oyuncular da dahil. Tüm doktor ve polis oyuncuları aynı havuz içerisine topluyor, polislere doktor ve polisleri gösteriyor, doktorlara sadece doktorları gösteriyor. Ayrıca bliplerinin renkleri ve isimleri de ayrı LSPD ve LSMS olarak.

Onu farkettim de bakayım bi deneyim göreyim teşekkür ederim güzel paylaşım
 
DF
gps kullandığımızda isim koyma şansı olsa nasıl olur? LSPD yerine telsiz kodu gibi sayı koyabilsek
 
DF
Gps Üzerinden Alındığında Veya Atıldığında Haritadaki Diğer Kişileri Görebiliyor Veya Onlar Gps Atan Kişiyi Görebiliyor. Bunu Nasil Çözeriz Gps İtemi Üzerinden Gittiğinde Haritadan Blipi Kaybolsun Şimdiden Teşekkürler.
 
DF
gps kullandığımızda isim koyma şansı olsa nasıl olur? LSPD yerine telsiz kodu gibi sayı koyabilsek
güzel bi fikir beğendim, bunu getirecem en kısa zamanda


Gps Üzerinden Alındığında Veya Atıldığında Haritadaki Diğer Kişileri Görebiliyor Veya Onlar Gps Atan Kişiyi Görebiliyor. Bunu Nasil Çözeriz Gps İtemi Üzerinden Gittiğinde Haritadan Blipi Kaybolsun Şimdiden Teşekkürler.
discorddan yardımcı olacam sizlere
 
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//