Rehber - FiveM Lua Üzerinden Script Yapmak

Fivem.com.tr

Fivem.com.tr
Katılım
1 Eki 2022
Mesajlar
5,891
Tepki
84
Anlatacağım şeyler fivem script yazma konusunda sizi bir adım daha ilerletebilir.

Threadlar;

Örnek 1 -




Kod:


Kod:
Citizen.CreateThread(function()

     -- code

end)

Oyuncu client taraflı oyuna bağlandığı zaman tek taraflı olarak kod çalışır.Sürekli olarak çalışmaz.Fivemde çoğunlukla ped veya blip create kodları için kullanılır.

Örnek 2 -



Kod:


Kod:
Citizen.CreateThread(function()
   while true do -- while ESX == nil do -- while playerinjail == true do
        Citizen.Wait(1)
   end
end)

Oyuncu client taraflı oyuna bağlandığı zaman döngüyü sona erdirmenize kadar çalışır.

Eventler;

--client



Kod:


Kod:
RegisterNetEvent('asd')
AddEventHandler('asd',function()
 
end)

--server



Kod:


Kod:
RegisterServerEvent('asd)
AddEventHandler('asd',function()

end)

Event Trigger ve Eventlerin Fonksiyon Kullanımları;



Kod:


Kod:
-- client
RegisterCommand('txt',function(args,raw)
   local komut1 = args[1] -- kişinin /txt yazdıktan bir sonraki capslockundaki kelimeyi algılattım
   local komut2 = args[2] -- kişinin /txt yazdıktan iki sonraki capslockundaki kelimeyi algılattım
   TriggerServerEvent('test',komut1,komut2) --server side'a göndermemiz için iki değeride virgülle ayırıp yazdım
end)
--server
RegisterServerEvent('test')
AddEventHandler('test',function(a,b) -- clientten server side'ye gönderdiğim değerleri server side'de fonksiyonun içine yazdım.(Değerlerin isminin aynı olmasına gerek yok)
   print(a,b)
end)



Client ve Server Side Export Alma

Client




Kod:


Kod:
local dead = false
AddEventHandler('esx:onPlayerDeath', function()
    dead = true
end)
IsPlayerDead = function()
   return dead
end




Kod:


Kod:
local ispeddead = exports.scriptismi:IsPlayerDead()  -- size true veya false değerini verecektir.
           if ispeddead then --
           else
           end

Scriptin fxmanifest veya __resource tarafına aşağıdaki kodu yazmanız yeterli olacaktır.



Kod:


Kod:
exports {
   'fonksiyonismi' --bendeki IsPlayerDead
}

Server



Kod:


Kod:
exports("kickplayer", function(source,reason)
       DropPlayer(source,'Sunucudan Kicklendiniz  Sebep = '..reason) -- kişiyi  sebebini bildirerek sunucudan kickledim
end)

Kullanımı;



Kod:


Kod:
RegisterCommand('kickplayer',function(source,args,raw)
    local playerId = tonumber(args[1]) -- kişinin komutu yazdıktan sonraki ilk kelimesini kicklenecek kişinin idsi olarak algılamasını yazdım.
    local reason = args[2]
    exports['scriptismi']:kickplayer(playerId,reason)
end)

for döngüsü

For döngüsünün içine yazdığınız değer boş bir değer veya nil ise döngüyü çalıştırmaz ve hata verir.



Kod:


Kod:
local table = {}
for i,j in pairs(table) do
   -- döngü çalışmaz
end
local table2 -- herhangi bir değer vermedim o yüzden table2 = nil
for k,v in pairs(table2) do
    -- hata
end

Break;

Yaptığınız işlemi kırmaya yarar çoğunlukla for döngülerinde kullanılır.

Return;



Kod:


Kod:
local identifiers = { --tablomu oluşturdum
    'hasan1',
    'hasan2',
    'hasan3',
    'hasan4'
}
GetPlayerIdent = function(ident)  -- fonksiyonun içine ident yazdım
   for i,j in pairs(identifiers) do --identifiers için for döngümü başlattım
      if j == ident then   -- j bana identifiers tablomun içindeki değerleri veriyor.İçindeki değerlerin biri benim fonksiyonun içindeki 'ident' değeriyle eşit mi değil mi kontrolünü yapıyorum.
         return true -- true olarak dönmesini sağlıyorum
      end
   end
   return false --eğer döngünün içinde true olarak dönerse kod aşağıya inemeyeceği için false değerine ulaşamaz.
end

RegisterCommand('hasan',function()
   local identifier = GetPlayerIdent('hasan1')
   local identifier2 = GetPlayerIdent('asdasd1')
   print(identifier) -- bize true  verecek
   print(identifier2) -- false verecek
end)

Biraz mala anlatır gibi oldu

Aklıma geldikçe konuyu güncel tutmaya çalışacağım.



Parasızlığın eğlenmenizi engellemesine asla izin vermeyin. -Anonim

Konu alıntıdır, yanlış veya hatalı bir bilgi/paylaşım var ise yanıtlayabilir veya bizimle iletişime geçebilirsiniz.
 

Şu anda bu konu'yu okuyan kullanıcılar

Benzer konular

Üst