$ ABD Doları
  • $ ABD Doları
  • € AVRO
  • £ GBP
  • $ Avustralya Doları
  • R$ BRL
  • İsviçre Frangı İsviçre Frangı
  • ¥ Japon Yeni
FiveM Gerçek Zamanlı Senkronizasyon – Ücretsiz FiveM Modları

FiveM Gerçek Zamanlı Senkronizasyon

Bu eğitim, oyun içi saati gerçek dünya saatiyle senkronize eden bir FiveM betiği oluşturmanız için size rehberlik edecektir. Bu, oyun ortamının gerçek zamanı yansıtmasını sağlayarak oyuncular için gerçekçiliği artırır.

Hem sunucu hem de istemci tarafı betik yazmayı, senkronizasyonu başlatma ve durdurma işlevselliğini eklemeyi ve FiveM sunucunuz için kaynağı ayarlamayı ele alacağız.


Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  • FiveM Sunucu Erişimi: Sunucunuza yönetici erişimine ihtiyacınız var FiveM sunucusuna script eklemek için.
  • Lua'nın Temel Bilgileri:Lua betiğine aşinalık, betiği anlamanıza ve özelleştirmenize yardımcı olacaktır.
  • Metin Editörü:Script dosyalarını düzenlemek için Visual Studio Code, Sublime Text veya Notepad++ gibi yazılımlar.

Kaynak Klasörünü Ayarlama

  1. Kaynaklar Dizininize gidin:Bulun resources FiveM sunucu dizininizdeki klasör. Bu genellikle şu adreste bulunur:bashCode kopierenyour-fivem-server-folder/resources/
  2. Yeni Bir Kaynak Klasörü Oluştur:İçinde resources klasör, adında yeni bir klasör oluşturun realtime.bashCode kopyalayour-fivem-server-folder/resources/realtime/
  3. Şuraya gidin: realtime Dosya:Bu klasör gerçek zamanlı senkronizasyon için gerekli tüm scriptleri ve yapılandırma dosyalarını içerecektir.

Sunucu Tarafı Komut Dosyasının Oluşturulması (server.lua)

  1. Yaratmak server.lua:İçinde realtime klasör, adında yeni bir dosya oluşturun server.lua.
  2. Aşağıdaki Kodu Ekleyin server.lua:luaCode kopyalaRegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function() local hour = tonumber(os.date("%H")) local minute = tonumber(os.date("%M")) local second = tonumber(os.date("%S")) TriggerClientEvent("realtime:event", source, hour, minute, second) end) Açıklama:
    • KayıtNetEtkinliği: Adlı bir ağ olayını kaydeder realtime:event.
    • OlayİşleyicisiEkle: Ne zaman olacağını tanımlar realtime:event tetiklenir.
    • işletim sistemi.tarihi: Mevcut sistem saatini (saat, dakika, saniye) alır.
    • TetikleyiciİstemciOlay: Olayı tetikleyen istemciye zaman verisini gönderir.

İstemci Tarafı Komut Dosyasının Oluşturulması (client.lua)

  1. Yaratmak client.lua:İçinde realtime klasör, adında yeni bir dosya oluşturun client.lua.
  2. Aşağıdaki Kodu Ekleyin client.lua:luaCode kopyala-- Set the duration of one in-game minute in milliseconds SetMillisecondsPerGameMinute(60000) -- 60,000 ms = 1 real-world minute RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) NetworkOverrideClockTime(hour, minute, second) end) -- Trigger the server event to initiate synchronization TriggerServerEvent("realtime:event") Açıklama:
    • OyunDakikasıBaşınaMilisaniyeAyarla: Oyun içi bir dakikanın ne kadar süreceğini tanımlar. Bunu 60000 Oyun içindeki 1 dakikayı gerçek dünyadaki 1 dakikaya eşitler.
    • RegisterNetEvent ve AddEventHandler: Dinler realtime:event sunucudan alır ve oyun içi saati buna göre günceller.
    • AğGeçersizKılmaSaatiZamanı: Sunucudan alınan gerçek dünya saatiyle eşleşmesi için oyun içi saati geçersiz kılar.
    • TetikleyiciSunucuOlay: Sunucu olayını tetikleyerek senkronizasyonu başlatır.

Durdurma İşlevi Ekleme

Gerçek zamanlı senkronizasyonun açılıp kapatılmasına olanak sağlamak için senkronizasyonu başlatıp durduran işlevler ekleyeceğiz.

  1. Güncelleme client.lua Durdurma İşlevi ile:luaCode kopyalalocal syncActive = true local syncThread = nil -- Function to start synchronization function StartRealTimeSync() if not syncActive then syncActive = true syncThread = CreateThread(function() while syncActive do TriggerServerEvent("realtime:event") Wait(60000) -- Wait for 1 minute before next sync end end) end end -- Function to stop synchronization function StopRealTimeSync() if syncActive then syncActive = false if syncThread then -- In Lua, there's no direct way to kill a thread. -- Using a flag to exit the loop effectively stops the thread. syncThread = nil end end end RegisterNetEvent("realtime:event") AddEventHandler("realtime:event", function(hour, minute, second) if syncActive then NetworkOverrideClockTime(hour, minute, second) end end) -- Start synchronization on resource start StartRealTimeSync() -- Example: Command to toggle synchronization RegisterCommand("toggleTimeSync", function() if syncActive then StopRealTimeSync() print("Real-time synchronization stopped.") else StartRealTimeSync() print("Real-time synchronization started.") end end, false) Açıklama:
    • senkronizeAktif: Senkronizasyonun etkin olup olmadığını belirleyen bir bayrak.
    • GerçekZamanlıEşitlemeyiBaşlat: Sunucudan her dakika zaman güncellemeleri isteyen bir döngü başlatır.
    • GerçekZamanlıEşitleme'yi Durdur: Bayrağı false olarak ayarlayarak senkronizasyonu durdurur.
    • KayıtKomutu: Bir komut ekler (/toggleTimeSync) oyuncuların senkronizasyonu açıp kapatmak için kullanabilecekleri bir özelliktir.

Kaynak Beyannamesinin Oluşturulması (fxmanifest.lua)

Her FiveM kaynağı, meta verilerini ve bağımlılıklarını tanımlayan bir bildirim dosyası gerektirir.

  1. Yaratmak fxmanifest.lua:İçinde realtime klasör, adında yeni bir dosya oluşturun fxmanifest.lua.
  2. Aşağıdaki Kodu Ekleyin fxmanifest.lua: fx_version 'cerulean' game 'gta5' author 'YourName' description 'Real-Time Synchronization Script for FiveM' version '1.0.0' server_script 'server.lua' client_script 'client.lua'
  3. Açıklama:
    • fx_sürümü: FiveM bildiriminin sürümünü belirtir. cerulean yazının yazıldığı tarih itibariyle en son durum.
    • oyun: Kaynağın hangi oyun için olduğunu gösterir (gta5).
    • yazar, açıklama, sürüm: Kaynağınız hakkında meta veriler.
    • sunucu_komut_komutu ve istemci_komut_komutu: Yüklenecek sunucu ve istemci betiklerini belirtir.

Kaynağı Sunucunuzda Başlatma

  1. Sunucu Yapılandırmanızı Düzenleyin:Sunucunuzun yapılandırma dosyasını açın, genellikle şu şekilde adlandırılır: server.cfg.
  2. Kaynağı Yapılandırmaya Ekle: Aşağıdaki satırı ekleyerek şunları sağlayın: realtime kaynak sunucuyla başlar:rubyCode kopierenensure realtime Not: Eğer kullanıyorsanız start yerine ensure, şunları kullanabilirsiniz: start realtime
  3. Sunucunuzu Kaydedin ve Yeniden Başlatın:Değişiklikleri kaydettikten sonra server.cfgYeni kaynağı yüklemek için FiveM sunucunuzu yeniden başlatın.

Tam Kaynak İndirme

Kolaylık olması açısından, oluşturmanız gereken dosyaların tam seti aşağıdadır realtime kaynak.

1. server.lua

RegisterNetEvent("realtime:event")
AddEventHandler("realtime:event", function()
 local hour = tonumber(os.date("%H"))
 local minute = tonumber(os.date("%M"))
 local second = tonumber(os.date("%S"))
 TriggerClientEvent("realtime:event", source, hour, minute, second)
end)

2. client.lua

local syncActive = true
local syncThread = nil

-- Function to start synchronization
function StartRealTimeSync()
 if not syncActive then
 syncActive = true
 syncThread = CreateThread(function()
 while syncActive do
 TriggerServerEvent("realtime:event")
 Wait(60000) -- Wait for 1 minute before next sync
 end
 end)
 end
end

-- Function to stop synchronization
function StopRealTimeSync()
 if syncActive then
 syncActive = false
 if syncThread then
 -- In Lua, threads are cooperative; setting syncActive to false will stop the loop
 syncThread = nil
 end
 end
end

RegisterNetEvent("realtime:event")
AddEventHandler("realtime:event", function(hour, minute, second)
 if syncActive then
 NetworkOverrideClockTime(hour, minute, second)
 end
end)

-- Start synchronization on resource start
StartRealTimeSync()

-- Example: Command to toggle synchronization
RegisterCommand("toggleTimeSync", function()
 if syncActive then
 StopRealTimeSync()
 print("Real-time synchronization stopped.")
 else
 StartRealTimeSync()
 print("Real-time synchronization started.")
 end
end, false)

3. fxmanifest.lua

fx_version 'cerulean'
game 'gta5'

author 'YourName'
description 'Real-Time Synchronization Script for FiveM'
version '1.0.0'

server_script 'server.lua'
client_script 'client.lua'

Tam Metin

Buradan az önce oluşturduğumuz scripti indirebilirsiniz:

https://github.com/HiFiveM/fivem-realtime/archive/refs/heads/main.zip

Github

You’ve successfully created a FiveM kaynağını başarıyla oluşturdunuz. Bu kaynak, oyun içi saati gerçek dünya zamanıyla senkronize eder. Bu betik, oyun ortamının gerçek zamanı yansıtmasını sağlayarak bir oyun alanı ekler ve oyuncular için bir gerçekçilik katmanı oluşturur.

Senkronizasyon aralıklarını ayarlayarak, daha fazla komut ekleyerek veya diğer sunucu özellikleriyle entegre ederek betiği daha da özelleştirebilirsiniz.

Sunucunuzun özel ihtiyaçlarına uyacak şekilde bu temeli genişletmekten çekinmeyin!

Bir yanıt yazın