MTA-SA Çalışan Bir Script Oluşturma Ders 4 - Part 2

Ders 4 - Part 1'in devamıdır.

Evet arkadaşlar. Şimdi scriptimizin görüntüsünü oluşturduk. Sıra login veya register butonuna bastığımızda işlevlerin gerçekleşmesini yapacağız.

Kod: [Seç]
addEventHandler("onClientGUIClick", getRootElement(), function()
if source == loginButton then
local username = guiGetText(loginUsernameEdit)
local password = guiGetText(loginPassEdit)
if username ~= "" and password ~= "" then
triggerServerEvent("loginPlayer", getLocalPlayer(), getLocalPlayer(), username, password)
end
elseif source == registerButton then
local username = guiGetText(registerUsernameEdit)
local password = guiGetText(registerPassEdit)
if username ~= "" and password ~= "" then
triggerServerEvent("registerPlayer", getLocalPlayer(), getLocalPlayer(), username, password)
end
elseif source == showMyPass then
local showhidePass = guiCheckBoxGetSelected(showMyPass)
guiEditSetMasked(registerPassEdit, not showhidePass)
end
end)

Kod: [Seç]
addEventHandler("onClientGUIClick", getRootElement(), function()
end)
addEventHandler ==> Fonksiyona zaman ekler.
onClientGUIClick ==> Tıklanıldığında...
getRootElement ==> Bütün elementleri alır.


Kod: [Seç]
if source == loginButton then
Kod: [Seç]
elseif source == registerButton then
Kod: [Seç]
elseif source == showMyPass then╚==> Eğer ki değişken[tıklanılan] loginButton/registerButton/showMyPass ise...


Kod: [Seç]
local username = guiGetText(loginUsernameEdit)
local password = guiGetText(loginPassEdit)
Kod: [Seç]
local username = guiGetText(registerUsernameEdit)
local password = guiGetText(registerPassEdit)
guiGetText ==> GUI elementinin yazısını alır.


Kod: [Seç]
if username ~= "" and password ~= "" then╚==> Eğer username ve password boş değil ise...


Kod: [Seç]
triggerServerEvent("loginPlayer", getLocalPlayer(), getLocalPlayer(), username, password)triggerServerEvent ==> Client'den server'e "loginPlayer" eventli ismi altında zamanlama gönderir.
Ayrıca burada kullandığımız "getLocalPlayer(), username, password" server dosyasına gider. Server dosyasında bu eventi alırken:
Kod: [Seç]
function(player, username, password)olarak kullanacağız. Buradan gönderilenler, diğer tarafta sırasıyla alınmalıdır. İsimleri aynı olmak zorunda değildir. Yani biz bunu
Kod: [Seç]
function(test, test1, test2)olarak alsak da:
"test" = player
"test1" = username
"test2" = password
olacaktır.


Kod: [Seç]
if username ~= "" and password ~= "" then
triggerServerEvent("loginPlayer", getLocalPlayer(), getLocalPlayer(), username, password)
end
Kod: [Seç]
if username ~= "" and password ~= "" then
triggerServerEvent("registerPlayer", getLocalPlayer(), getLocalPlayer(), username, password)
end
Bunlar sırasıyla:

Eğer username ve password boş değilse
Servere loginPlayer/registerPlayer adı altında, (getLocalPlayer(), username, password) ile birlikte zamanlama gönder.
Bitir


Kod: [Seç]
elseif source == showMyPass then
local showhidePass = guiCheckBoxGetSelected(showMyPass)
guiEditSetMasked(registerPassEdit, not showhidePass)
guiEditSetMasked ==> Edit elementinde yazıların gizlenip gizlenmeyeceğini belirler.
guiCheckBoxGetSelected ==> checkBox elementinin seçili olup olmadığını alır.
Kod: [Seç]
guiEditSetMasked(registerPassEdit, not showhidePass)╚==> Eğer ki checkBox seçili ise gizliliği kaldır, değil ise gizle.


Kod: [Seç]
addEvent("closeWindow", true)
addEventHandler("closeWindow", getRootElement(), function()
guiSetVisible(logRegWindow, false)
showCursor(false)
end)

addEvent ==> Diğer yerlerden gelen eventlerin burada kabul olup olmayacağını belirler.
addEventHandler ==> Fonksiyona zaman ekler.

Bunu giriş veya kayıt işlemi tamamlandığında, server'dan client dosyasına zamanlama gönderip pencereyi ve mouseyi kapatmayı ayarlıyacağız.


Şimdi client dosyamız bitti. Sırada server dosyası var. En önemlisi burada çünkü kayıt ve giriş işlemlerini buradan yapacağız.
Kod: [Seç]
addEvent("registerPlayer", true)
addEventHandler("registerPlayer", getRootElement(), function(player,username,password)
if getAccount(username) then
outputChatBox("Bu isimle kayıtlı bir hesap zaten var, lütfen giriş yapın.", player, 255,255,255,true)
return
end
addAccount(username,password)
logIn(player,getAccount(username),password)
triggerClientEvent(player,"closeWindow",player)
end)

addEvent("loginPlayer", true)
addEventHandler("loginPlayer", getRootElement(), function(player,username,password)
if not getAccount(username) then
outputChatBox("Bu isimle kayıtlı bir hesap bulunmamaktadır. Lütfen kayıt olunuz.", player, 255,255,255,true)
return
end
if not getAccount(username,password) then
outputChatBox("Şifren yanlış, lütfen tekrar dene!", player, 255,255,255,true)
return
end
logIn(player,getAccount(username),password)
triggerClientEvent(player,"closeWindow",player)
end)


Kayıt olma işleminden başlayalım.
Kod: [Seç]
addEvent("registerPlayer", true)
addEventHandler("registerPlayer", getRootElement(), function(player,username,password)
if getAccount(username) then
outputChatBox("Bu isimle kayıtlı bir hesap zaten var, lütfen giriş yapın.", player, 255,255,255,true)
return
end
addAccount(username,password)
logIn(player,getAccount(username),password)
triggerClientEvent(player,"closeWindow",player)
end)
addEvent ==> Diğer yerlerden gelen eventlerin burada kabul olup olmayacağını belirler.
addEventHandler ==> Fonksiyona zaman ekler.
getAccount ==> Kayıt dosyalarını alır.
outputChatBox ==> ChatBox'a yazı gönderir.
addAccount ==> Yeni kayıt ekler.
logIn ==> Giriş yapar.
triggerClientEvent ==> Client'e zamanlama gönderir.
return ==> Yukarıdan aşağıya okumaya başlayan sistem "return" kelimesi görünce okumayı bırakıp durur ve aşağıya inmez. Yani devamını durdurur.


Kod: [Seç]
function(player,username,password)╚==> Client dosyasından gönderdiğimiz şeyler burada bu kelimelerle karşılanır.
Kod: [Seç]
if getAccount(username) then
outputChatBox("Bu isimle kayıtlı bir hesap zaten var, lütfen giriş yapın.", player, 255,255,255,true)
return
end
╚==> Bildiğiniz gibi diğer oyunlarda olsun veya MTA'da olsun kayıtlar username'lere göre yapılır.
Kod: [Seç]
if getAccount(username) then╚==> EditBox'dan alınan ve servere gönderilen username eğer kayıt dosyalarında zaten bulunuyorsa...
Kod: [Seç]
outputChatBox("Bu isimle kayıtlı bir hesap zaten var, lütfen giriş yapın.", player, 255,255,255,true)
return
end
╚==> ChatBox'a yazı gönder ve kodlarının devamının gelmesini engelle [durdur][return] ve ardından end ile bitir.

Eğer ki return ile durdurulmamış ise...
Kod: [Seç]
addAccount(username,password)
logIn(player,getAccount(username),password)
triggerClientEvent(player,"closeWindow",player)
╚==> Sırasıyla:
username ve password ile kayıt ekle.
Eklenilen kayda giriş yap.
Client'e closeWindow zamanlaması gönder.

Kayıt olma işlemini bitirdik. Sırada giriş yapma işlemi..:
Kod: [Seç]
addEvent("loginPlayer", true)
addEventHandler("loginPlayer", getRootElement(), function(player,username,password)
if not getAccount(username) then
outputChatBox("Bu isimle kayıtlı bir hesap bulunmamaktadır. Lütfen kayıt olunuz.", player, 255,255,255,true)
return
end
if not getAccount(username,password) then
outputChatBox("Şifren yanlış, lütfen tekrar dene!", player, 255,255,255,true)
return
end
logIn(player,getAccount(username),password)
triggerClientEvent(player,"closeWindow",player)
end)
addEvent ==> Diğer yerlerden gelen eventlerin burada kabul olup olmayacağını belirler.
addEventHandler ==> Fonksiyona zaman ekler.
getAccount ==> Kayıt dosyalarını alır.
outputChatBox ==> ChatBox'a yazı gönderir.
logIn ==> Giriş yapar.
triggerClientEvent ==> Client'e zamanlama gönderir.
return ==> Yukarıdan aşağıya okumaya başlayan sistem "return" kelimesi görünce okumayı bırakıp durur ve aşağıya inmez. Yani devamını durdurur.


Kod: [Seç]
function(player,username,password)╚==> Client dosyasından gönderdiğimiz şeyler burada bu kelimelerle karşılanır.
Kod: [Seç]
if not getAccount(username) then╚==> Eğer ki böyle bir kayıt bulunmuyorsa...
Kod: [Seç]
outputChatBox("Bu isimle kayıtlı bir hesap bulunmamaktadır. Lütfen kayıt olunuz.", player, 255,255,255,true)
return
end
╚==> ChatBox'a yazı gönder ve kodlarının devamının gelmesini engelle [durdur][return] ve ardından end ile bitir.

Kod: [Seç]
if not getAccount(username,password) then╚==> Eğer username ile şifre uyuşmuyorsa...
Kod: [Seç]
outputChatBox("Şifren yanlış, lütfen tekrar dene!", player, 255,255,255,true)
return
end
╚==> ChatBox'a yazı gönder ve kodlarının devamının gelmesini engelle [durdur][return] ve ardından end ile bitir.

Eğer ki return ile durdurulmamış ise...
Kod: [Seç]
logIn(player,getAccount(username),password)
triggerClientEvent(player,"closeWindow",player)
╚==> Sırasıyla:
username ve password ile giriş yap.
Client'e closeWindow zamanlaması gönder.

..:SONUÇ:..


Anlatım "ZoRRoM" arkadaşıma aittir.

Hiç yorum yok

Yorumlarınıza en kısa sürede yanıt verilecektir.

Blogger tarafından desteklenmektedir.