Avresi Lisans Sistemi - Kurulum Rehberi
🚀 YENİ: Otomatik Setup Sistemi
Artık lisans sistemini kurmak çok daha kolay! Panelden "Setup Oluştur" sayfasına giderek özelleştirilmiş bir setup dosyası indirebilirsiniz. Bu setup:
- ✅ Tüm dosyaları otomatik kopyalar
- ✅ Tüm resource'lara dependency ekler
- ✅ Framework'lere (qb-core, es_extended, ox_lib, qbox) lisans kontrolü ekler
- ✅ Tüm Lua dosyalarını otomatik şifreler
- ✅ server.cfg'yi otomatik günceller
- ✅ Tek tıkla kurulum (.bat dosyası ile)
Kullanım: Panel > Setup Oluştur > Setup Dosyası İndir > ZIP'i çıkar > KURULUM.bat çalıştır
- Bu sayfadaki kodları mutlaka Luraph veya benzeri bir obfuscator ile şifreleyin!
- Hem avresi-lisans scriptini hem de önemli scriptlerinize ekleyeceğiniz kısa kodları ekledikten sonra önemli scriptlerinizin tamamını da obfuscate edin yani şifreleyin.
- Aksi takdirde müşterileriniz lisans korumasını kolayca devre dışı bırakabilir.
- Scriptin adını (klasör adı) "avresi-lisans" yapın yoksa çalışmaz.
- Sürekli test ederek ilerleyin tüm scriptlerin aynı anda şifrelemek yerine teker teker şifreleyin bu sayede hata yapmamış olursunuz. - Kodları obfuscate ederken fivem destekleyen bir obfuscator kullanın bütçeniz varsa script başına 2 dolar vererek(client.lua 1 dolar server.lua 1 dolar) luraph kullanabilirsiniz fakat bunun size toplam maliyeti 20 script+avresi-lisans ile birlikte en az 42dolar(1700tl) olur. (tek seferlik ücrettir.) Para ödemek istemezseniz de ücretsiz bulabilirsiniz fivem destekleyen bir obfuscator. Ama luraph kadar kaliteli olmaz.
- Kodları şifrelemeden önce tüm paketi yedek alın sonraki güncellemelerde sıkıntı yaşamazsınız.
📦 Otomatik Setup Kullanımı (Önerilen)
Adım 1: Setup Dosyası Oluşturun
- Developer panelinize giriş yapın
- Sol menüden "Setup Oluştur" sayfasına gidin
- "Setup Dosyası Oluştur ve İndir" butonuna tıklayın
- ZIP dosyası otomatik olarak indirilecektir
Adım 2: Setup Dosyasını Kurun
Windows Kullanıcıları:
- İndirdiğiniz ZIP dosyasını FiveM server klasörünüze çıkarın (server.cfg'nin olduğu klasör)
- KURULUM.bat dosyasına çift tıklayın
- Kurulum otomatik olarak tamamlanacaktır
Linux/Mac Kullanıcıları:
- İndirdiğiniz ZIP dosyasını FiveM server klasörünüze çıkarın
- Terminal'de şu komutları çalıştırın:
chmod +x kurulum.sh ./kurulum.sh
Adım 3: Server'ı Başlatın
Kurulum tamamlandıktan sonra server'ı yeniden başlatın. Tüm resource'lar otomatik olarak korunacaktır!
- Tüm resource'lara
avresi-lisansdependency'si ekler - qb-core, es_extended, ox_lib, qbox gibi framework'lere lisans kontrolü ekler
- Tüm Lua dosyalarını şifreler
- server.cfg'yi günceller
📝 Manuel Kurulum (İleri Seviye)
Eğer otomatik setup kullanmak istemiyorsanız, aşağıdaki adımları takip ederek manuel olarak kurabilirsiniz:
Sistem Nasıl Çalışır?
Bu lisans sistemi 2 parçadan oluşur:
- avresi-lisans: Ana lisans kontrolcüsü. Bu script her dakika paneli kontrol eder ve lisans geçerli mi değil mi öğrenir. Eğer lisans geçersizse sunucudaki tüm oyuncuları atar ve yeni oyuncu girişini engeller.
- Peki ya avresi-lisans'ı silerlerse? Diğer önemli scriptlerinize ekleyeceğiniz kısa kodlar avresi-lisans silindi mi diye kontrol eder. Eğer avresi-lisans silindiyse kendisini kapatır.
ADIM 1: avresi-lisans Klasörünü Oluşturun
FiveM sunucunuzun resources klasörüne gidin ve yeni bir klasör oluşturun.
Klasör adı: avresi-lisans
Örnek yol: \resources\avresi-lisans\
ADIM 2: fxmanifest.lua Dosyası Oluşturun
avresi-lisans klasörünün içine fxmanifest.lua isimli bir dosya oluşturun.
Aşağıdaki kodu bu dosyaya kopyalayın:
fx_version 'cerulean'
game 'gta5'
lua54 'yes'
author 'Avresi'
description 'Crengarl Lisans Sistemi'
version '1.0.0'
server_scripts {
'server.lua'
}ADIM 3: server.lua Dosyası Oluşturun
avresi-lisans klasörünün içine server.lua isimli bir dosya oluşturun.
Aşağıdaki kodu bu dosyaya kopyalayın:
NOT: Aşağıdaki kodda LICENSE_KEY kısmı otomatik olarak sizin API anahtarınız ile değişmiştir.
local LICENSE_KEY = "BURAYA_API_ANAHTARINIZI_YAZIN"
local VERIFY_URL = "https://lisans.avresi.com/api/verify.php"
local kontrol_suresi = 60000
local baslangic_bekleme = 3000
local hata_bekleme = 15000
local oyuncu_atma_suresi = 20000
local lisans_durumu = {
gecerli = false,
sebep = "kontrol_ediliyor",
son_kontrol = 0
}
local function GlobalStateGuncelle(gecerli, sebep)
lisans_durumu.gecerli = gecerli
lisans_durumu.sebep = sebep or "bilinmiyor"
lisans_durumu.son_kontrol = os.time()
GlobalState.AVRESI_LICENSE = {
valid = gecerli,
state = gecerli and "valid" or "invalid",
reason = lisans_durumu.sebep,
timestamp = os.time()
}
end
local function LisansKontrol()
PerformHttpRequest('https://api.ipify.org?format=text', function(status_code, server_ip)
if status_code ~= 200 or not server_ip or server_ip == "" then
GlobalStateGuncelle(false, "ip_alinamadi")
SetTimeout(hata_bekleme, LisansKontrol)
return
end
server_ip = server_ip:gsub("%s+", "")
local post_data = json.encode({
license_key = LICENSE_KEY,
ip = server_ip,
player_count = #GetPlayers()
})
PerformHttpRequest(VERIFY_URL, function(status, response)
if status ~= 200 then
GlobalStateGuncelle(false, "api_hatasi")
SetTimeout(hata_bekleme, LisansKontrol)
return
end
local data = json.decode(response or "{}") or {}
if data.status == "valid" or data.status == "expiring" then
GlobalStateGuncelle(true, data.status)
SetTimeout(kontrol_suresi, LisansKontrol)
elseif data.status == "expired" then
GlobalStateGuncelle(false, "suresi_doldu")
CreateThread(function()
Wait(oyuncu_atma_suresi)
for _, oyuncu in ipairs(GetPlayers()) do
DropPlayer(oyuncu, "[Avresi] Sunucu lisansının süresi doldu.")
end
end)
elseif data.status == "banned" then
GlobalStateGuncelle(false, "yasaklandi")
CreateThread(function()
Wait(oyuncu_atma_suresi)
for _, oyuncu in ipairs(GetPlayers()) do
DropPlayer(oyuncu, "[Avresi] Sunucu lisansı yasaklandı.")
end
end)
else
GlobalStateGuncelle(false, "gecersiz_lisans")
CreateThread(function()
Wait(oyuncu_atma_suresi)
for _, oyuncu in ipairs(GetPlayers()) do
DropPlayer(oyuncu, "[Avresi] Sunucu lisansı geçersiz.")
end
end)
end
end, "POST", post_data, {["Content-Type"] = "application/json"})
end, "GET")
end
CreateThread(function()
GlobalStateGuncelle(false, "kontrol_ediliyor")
Wait(baslangic_bekleme)
LisansKontrol()
end)
AddEventHandler('onResourceStop', function(resourceName)
if resourceName == GetCurrentResourceName() then
GlobalState.AVRESI_LICENSE = nil
end
end)
exports('permit', function()
return lisans_durumu.gecerli == true
end)
exports('getLicenseStatus', function()
return lisans_durumu
end)
AddEventHandler('playerConnecting', function(playerName, setKickReason, deferrals)
deferrals.defer()
Wait(100)
local license_state = GlobalState.AVRESI_LICENSE
if not license_state or not license_state.valid then
deferrals.done("[Avresi] Sunucu lisansı geçersiz. Lütfen daha sonra tekrar deneyin.")
else
deferrals.done()
end
end)ADIM 4: server.cfg Dosyasını Düzenleyin
FiveM sunucunuzun ana klasöründeki server.cfg dosyasını açın.
Dosyanın en altına şu satırı ekleyin:
ensure avresi-lisans
ADIM 5: Koruma Kodunu Scriptlerinize Ekleyin
Şimdi sıra geldi diğer scriptlerinizi korumaya. Bu adımı MUTLAKA yapmalısınız, yoksa avresi-lisans hiç bir işe yaramaz.
Server Tarafı Koruma
Korumak istediğiniz scriptlerin server dosyasını açın, içindeki kodu başka bir yere kopyalayın ve dosyanın içini boşaltın.
Ardından aşağıdaki kodu yapıştırın, aşağıdaki kodda buradan sonra kendi kodlarınız yazan yer göreceksiniz oraya kopyaladığınız orjinal client kodlarını yapıştırın. Bunu tüm scriptlerde tekrarlamanız gerekecek.
local RESOURCE_NAME = GetCurrentResourceName()
local LISANS_SCRIPT = "avresi-lisans"
local function ScriptBaslat()
-- === BURADAN SONRA KENDİ KODLARINIZ ===
-- Tüm kodlarınızı buraya yapıştırın
end -- ScriptBaslat fonksiyonunun sonu
CreateThread(function()
local kontrol_sayisi = 0
local max_kontrol = 70
while kontrol_sayisi < max_kontrol do
Wait(500)
kontrol_sayisi = kontrol_sayisi + 1
local resource_state
local basarili, sonuc
local license_state
resource_state = GetResourceState(LISANS_SCRIPT)
if resource_state ~= "started" and resource_state ~= "starting" then
if kontrol_sayisi > 10 then
return
end
goto continue
end
basarili, sonuc = pcall(function()
return exports[LISANS_SCRIPT]:permit()
end)
if not basarili then
goto continue
end
if sonuc ~= true then
goto continue
end
license_state = GlobalState.AVRESI_LICENSE
if not license_state or not license_state.valid then
goto continue
end
ScriptBaslat()
goto monitoring
::continue::
end
do
return
end
::monitoring::
Wait(5000)
while true do
Wait(30000)
if GetResourceState(LISANS_SCRIPT) ~= "started" then
-- TÜM OYUNCULARI AT
local allPlayers = GetPlayers()
for _, playerId in ipairs(allPlayers) do
DropPlayer(playerId, "[Avresi] Sunucu lisansı aktif değil.")
end
StopResource(RESOURCE_NAME)
return
end
local basarili2, sonuc2 = pcall(function()
return exports[LISANS_SCRIPT]:permit()
end)
if not basarili2 or sonuc2 ~= true then
-- TÜM OYUNCULARI AT
local allPlayers = GetPlayers()
for _, playerId in ipairs(allPlayers) do
DropPlayer(playerId, "[Avresi] Sunucu lisansı aktif değil.")
end
StopResource(RESOURCE_NAME)
return
end
end
end)
AddEventHandler('onResourceStop', function(resourceName)
if resourceName == LISANS_SCRIPT then
-- TÜM OYUNCULARI AT
local allPlayers = GetPlayers()
for _, playerId in ipairs(allPlayers) do
DropPlayer(playerId, "[Avresi] Sunucu lisansı aktif değil.")
end
StopResource(RESOURCE_NAME)
end
end)
-- ============================================
-- LİSANS KONTROLÜ - YENİ OYUNCU GİRİŞİ
-- ============================================
-- Yeni oyuncuların girmesini engelle (lisans yoksa/geçersizse)
AddEventHandler('playerConnecting', function(playerName, setKickReason, deferrals)
deferrals.defer()
Wait(100)
-- avresi-lisans resource durumunu kontrol et
local resource_state = GetResourceState(LISANS_SCRIPT)
if resource_state ~= "started" and resource_state ~= "starting" then
deferrals.done("[Avresi] Sunucu lisansı aktif değil.")
return
end
-- GlobalState kontrolü
local license_state = GlobalState.AVRESI_LICENSE
if not license_state or not license_state.valid then
deferrals.done("[Avresi] Sunucu lisansı aktif değil.")
else
deferrals.done()
end
end)
Client Tarafı Koruma
Korumak istediğiniz scriptlerin client dosyasını açın, içindeki kodu başka bir yere kopyalayın ve dosyanın içini boşaltın.
Ardından aşağıdaki kodu yapıştırın, aşağıdaki kodda buradan sonra kendi kodlarınız yazan yer göreceksiniz oraya kopyaladığınız orjinal client kodlarını yapıştırın. Bunu tüm scriptlerde tekrarlamanız gerekecek.
local RESOURCE_NAME = GetCurrentResourceName()
local function ScriptBaslat()
-- === BURADAN SONRA KENDİ KODLARINIZ ===
-- Tüm kodlarınızı buraya yapıştırın
end -- ScriptBaslat fonksiyonunun sonu
CreateThread(function()
local kontrol_sayisi = 0
local max_kontrol = 70
while kontrol_sayisi < max_kontrol do
Wait(500)
kontrol_sayisi = kontrol_sayisi + 1
local license_state = GlobalState.AVRESI_LICENSE
if license_state and license_state.valid and license_state.state == "valid" then
ScriptBaslat()
Wait(5000)
while true do
Wait(30000)
local ls = GlobalState.AVRESI_LICENSE
if not ls or not ls.valid or ls.state ~= "valid" then
break
end
end
return
end
end
end)Sistem Nasıl Çalışır? (Basit Anlatım)
- avresi-lisans scripti çalışır ve panele bağlanır
- Panel size "Lisans geçerli" veya "Lisans geçersiz" der
- Durum tüm sunucuya yayınlanır (GlobalState)
- Diğer scriptleriniz başlarken bu durumu kontrol eder
- Eğer lisans geçersizse, scriptler çalışmaz ve oyuncular sunucuya giremez
Hangi Scriptlere Koruma Kodu Eklemeliyim?
Önemli/Kritik scriptlerinize koruma kodu ekleyin. Örneğin:
- Envanter (inventory) sistemi
- Banka sistemi
- Araç garaj sistemi
- Admin menü
- Multichar
- Meslekler
- Ekonomi sistemi
Tavsiye: En az 20-30 önemli scriptinize ekleyin. Ne kadar çok scripte eklerseniz o kadar güvenli olur. Ben 40 tane falan ekledim.
Güvenlik Önerileri
- MUTLAKA: Tüm kodları Luraph veya ücretsiz lua obfuscator ile şifreleyin!
- MUTLAKA: API anahtarınızı kimseyle paylaşmayın:
BURAYA_API_ANAHTARINIZI_YAZIN - TAVSİYE: Kodları şifreledikten sonra orijinal kodları silin
Sık Sorulan Sorular
1. Sunucuların lisans süresi dolarsa ne olur?
Lisansın süresi dolduğunda sistem 60 saniye içinde tüm oyuncuları sunucudan atar ve yeni oyuncu girişlerini engeller. Scriptlerde artık çalışmaz.
2. Müşterim kodları silerse ne olur?
Eğer müşteriniz avresi-lisans klasörünü silerse diğer scriptler çalışmayı durduracaktır.
Ama kodları obfuscate etmezseniz müşterileriniz diğer scriptlere koyduğunuz kodları çıkartarak lisans sistemini yok edebilir!
3. Her scripte koymak zorunda mıyım?
Hayır, sadece önemli/kritik scriptlere koymanız yeterli. Ama ne kadar çok yere koyarsanız o kadar güvenli olur.
4. Lisans kontrolü performansı etkiler mi?
Hayır. Sistem sadece sunucu başladığında kontrol yapar ve sonra her 60 saniyede bir. Performans etkisi yok denecek kadar azdır.
5. Panelden lisansı nasıl takip ederim?
Panele giriş yapın, "Lisanslarım" sayfasına gidin. Orada tüm lisanslarınızın durumunu, son bağlanma zamanını ve oyuncu sayısını görebilirsiniz.