- Katılım
- 4 yıl 6 ay 29 gün
- Mesajlar
- 931
Anlatacağım şeyler fivem script yazma konusunda sizi bir adım daha ilerletebilir.
Threadlar;
Örnek 1 -
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 -
Oyuncu client taraflı oyuna bağlandığı zaman döngüyü sona erdirmenize kadar çalışır.
Eventler;
--client
--server
Event Trigger ve Eventlerin Fonksiyon Kullanımları;
Client ve Server Side Export Alma
Client
Scriptin fxmanifest veya __resource tarafına aşağıdaki kodu yazmanız yeterli olacaktır.
Server
Kullanımı;
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.
Break;
Yaptığınız işlemi kırmaya yarar çoğunlukla for döngülerinde kullanılır.
Return;
Biraz mala anlatır gibi oldu
Aklıma geldikçe konuyu güncel tutmaya çalışacağım.
Threadlar;
Örnek 1 -
Kod:
Citizen.CreateThread(function()
-- code
end)
Linkleri,görmek için
Giriş yap veya üye ol.
Örnek 2 -
Kod:
Citizen.CreateThread(function()
while true do -- while ESX == nil do -- while playerinjail == true do
Citizen.Wait(1)
end
end)
Eventler;
--client
Kod:
RegisterNetEvent('asd')
AddEventHandler('asd',function()
end)
Kod:
RegisterServerEvent('asd)
AddEventHandler('asd',function()
end)
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:
local dead = false
AddEventHandler('esx:onPlayerDeath', function()
dead = true
end)
IsPlayerDead = function()
return dead
end
Kod:
local ispeddead = exports.scriptismi:IsPlayerDead() -- size true veya false değerini verecektir.
if ispeddead then --
else
end
Kod:
exports {
'fonksiyonismi' --bendeki IsPlayerDead
}
Kod:
exports("kickplayer", function(source,reason)
DropPlayer(source,'Sunucudan Kicklendiniz \n Sebep = '..reason) -- kişiyi sebebini bildirerek sunucudan kickledim
end)
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ü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:
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
Yaptığınız işlemi kırmaya yarar çoğunlukla for döngülerinde kullanılır.
Return;
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)
Aklıma geldikçe konuyu güncel tutmaya çalışacağım.