×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Tribus
  • /
  • Benbirkralm
  • /
  • Uygulama Geliştiriciliği
  • /
  • [Lua] e-Kitap
[Lua] e-Kitap
Hytzoras
« Citoyen »
Membre
1407659880000
    • Hytzoras#0000
    • Profil
    • Derniers messages
    • Tribu
#1
  0
Benbirkralm a dit :
[e-Kitap] Lua Programlama Dili

Merhaba Arkadaşlar! Ben Benbirkralm, Bugin Sizlere yazdığım e-kitap'ı tanıtacağım/göstereceğim...

Bu kitapta;
₪ Sade bir Uygulama Yapma,
₪ Buton Oluşturma,
₪ Handler Kullanma,
₪ (ÖZEL) Veritabanı Oluşturma'yı öğreneceksiniz...


Bölüm 1 Sade bir Uygulama Yapmak

Lua ya başladık. Bir kaç kod öğrendik diyelim. Ama hâla neyi nasıl kullanacağımızı bilmiyoruz. Şimdi Sade bir uygulama yapalım...
Diyelim ki "Fare Peyniri Aldığında Ölsün." gibi bir döngü yapalım.

a dit :
function eventPlayerGetCheese(isim) --- Eğer oyuncu peyniri alırsa fonksiyonu.
tfm.exec.killPlayer(isim) --- Oyuncuyu Öldür.
end --- Fonksiyonun Sonu.

Şimdi bu kodu Lua'da çalıştıralım. Eğer peyniri alırsak ölüceğiz. Herhangi bir oyuncu peyniri alırsa o da ölecek.
Şimdi Bu Oyunun Çalıştığına dair kod verelim.
a dit :
tfm.exec.chatMessage("Çalışıyor! :)",nil) --- Sohbette (Herkese)"Çalışıyor! :)" Yazısı Göster.

Bu Kod Kabile Evinde Yasaklıdır... Bunun yerine 'print' kullanabilirsiniz. Fakat 'print', sadece Kodu Çalıştıran Kişiye Gözükür...
a dit :
print("Çalışıyor! :)") --- Kodu Çalıştıran Kişiye Özel Sohbet Yazısı, "Çalışıyor! :)"

Bu iki yazıyı da aynı anda kullanabiliriz...
Şimdi Yardım Komutu Oluşturalım. İlk önce Oyunda Yardım Komutumuz Olduğunu Söyleyelim. Bunun için Renklendirme Kullanabiliriz. (Pembe Renk <ROSE> ### Kırmızı <R>)
a dit :
tfm.exec.chatMessage("<ROSE> Oyun Hakkında Daha Fazla Bilgi Edinmek İçin <R> !yardım<ROSE> Komutunu Kullamabilirsiniz...")

Şimdi de komutu oluşturalım :
a dit :
function eventChatCommand(isim, komut) --- Sohbet Komutu Fonksiyonu
if komut == "yardım" then - Eğer komut "yardım" ise,
tfm.exec.chatMessage("<R> Yardım : </R> Peyniri Almadan Deliğe Girmeye Çalış. Eğer peyniri alırsan ölürsün.", isim) --- Kişiye yönelik Yazı
end - If Komutunu Sonu.
end - Fonksiyonun Sonu.


Bu da tamam. Oyunumuz Neredeyse Tamam. Sadece haritalar ve Gelen oyuncuya özel yazı kaldı...

Şimdi Oyun İçinde Haritaların Oynanmasını Sağlayalım.
'haritalar' Parametresi oluşturalım. Ardından onu 'math.random' Koduyla Döngünün İçine Alalım...
a dit :
haritalar={haritaKodu1, haritaKodu2}
tfm.exec.newGame(haritalar[math.random(#haritalar)])

Şimdi de yeni gelen oyuncuya özel yazı oluşturalım...
a dit :

function eventNewPlayer(isim) --- Yeni Oyuncu Fonksiyonu
tfm.exec.chatMessage("Oyunumuza Hoşgeldin! Yardım İçin : <ROSE> !yardım", isim) --- Kişiye Yönelik Yazı.
end --- Fonksiyonun Sonu.

Bu Bölümün Sonuna Geldik...



Bölüm 2 Buton Oluşturma

Bölüm 1 de Yaptığımız Uygulama Devam Edelim...
Bir buton oluşturmak için textArea Kullanacağız...
a dit :
ui.addTextArea(1, "Bu Benim Butonum!",nil,80,80,80,80) - Bütün Oyunculara Id'si 1 Olan 80x80 Büyüklüğünde 80x80 Koordinatlarında "Bu Benim Butonum!" Butonu Gösterme Komutu.

Şimdi bu butonu biraz geliştirelim. Örnek Olarak, Bir Soru Oluşturalım. Bir Soru Soralım ve buna bir parameter ile cevap verelim.
a dit :
ui.addPopup(5,1,"Oyun Güzelmi?",nil) -- Pop-up sorusu

function eventPopupAnswer(id,playerName,cevap) -- pop-up'a verilen cevap fonksiyonu
if (id == 5) then -- 5 id'li pop-up'dan sonra
if cevap=="yes" then -- cevap evet ise
ui.addTextArea(2,"Oy Kullandığınız İçin Teşekkürler.",playerName,300,150,100,nil,0,1,0.9,true)
tfm.exec.giveCheese(playerName)-- oyuncuya peynir ver
elseif cevap=="no" then -- cevap hayır ise
ui.addTextArea(5,"Oy Kullandığınız İçin Teşekkürler.",playerName,300,150,100,nil,0,1,0.9,true)
tfm.exec.killPlayer(playerName) -- oyuncuyu öldür
end -- If Sonu
end -- If Sonu
end -- Fonksiyonun Sonu.

Bölüm 3 Handler Oluşturma

Oyunumuzu yaptık. Şimdi oyunun yetkililerini belirtmeliyiz. Kodların en başına 'admins' tablosunu eklemeliyiz...
a dit :
admins={admin1=true, admin2=true}

Şimdi handler için, içinde [%s] parametresi de bulunan kodu ekleyelim...
a dit :

function eventChatCommand(player, message)
local args = string.split(message, "%s")
local text = table.remove(args, 1)
command.handle(string.lower(text), player, args)
end
command = {handlers = {}}
function command.addHandler(text, handler)
if command.handlers[text] == nil then
command.handlers[text] = {}
end
table.insert(command.handlers[text], handler)
end

function command.removeHandler(text, handler)
if command.handlers[text] ~= nil then
local index
for i, h in ipairs(command.handlers[text]) do
if handler == h then
index = i
end
end
if index ~= nil then
table.remove(command.handlers[text], index)
if #command.handlers[text] == 0 then
command.handlers[text] = nil
end
end
end
end
function command.handle(text, player, args)
if command.handlers[text] ~= nil then
for i, handler in ipairs(command.handlers[text]) do
handler(player, unpack(args))
end
end
end
function string.split(str, s)
local res = {};
for part in string.gmatch(str, "[^" .. s .. "]+") do
table.insert(res, part)
end
return res;
end
function unpack (t, i)
i = i or 1
if t ~= nil then
return t, unpack(t, i + 1)
end
end
main();

Şimdi bir komut ekleyelim.
a dit :
function main;
command.addHandler("harita",haritaKodu)
end

Bu handler ile birlikte yeni bir fonksiyon kurmuş olduk!
a dit :
function haritaKodu(player, map) --- hariraKodu Fonksiyonu
if isAdmin(player) then --- Eğer kullanıcı 'admins' tablosunda ise
tfm.exec.newGame(map) --- Yeni harita aç.
end --- If Sonu.
end --- Fonksiyon Sonu

!map [HaritaKodu] ile kullanılır.
Handler/Üst-Seviye-Kodlama-Dili Hakkında Daha Detaylı Bilgi İçin : [Topic-xxx]
Bölüm 4 Veritabanı Oluşturmak

Son bölüme hoşgeldiniz!
Bu bölümde şu ana kadar
hiç denemeeiğim, bir Active Server Pages kitabından öğrendiğim ve çalışacağını umduğum 'Veritabanı Oluşturma'yı öğreneceksiniz... Hemen Başlayalım :
İlk Önce PWS Kurmamız Gerekiyor. Bunu yapmak için 2 Yol izlenebilir : "Windows 98 CD-ROM'undaki'Add-ons' klasöründeki, PWS Dizinindeki 'Kur.exe'yi çalıştırmak." yada "Windows NT Option Pack CD-ROM'undaki 'Default.htm'yi açtığınızda size önereceği PWS Kurulumu.". Bu Kurulumu Yaparken "Ortak Program Dosyaları - Personal Web Server ve Transaction Server"ı Kuracağız... Kurulumu yaptıktan sonra bilgisayarı tekrar başlatmak gerekmektedir...
Personal Web Manager'den Gelişmiş Kısmını Tıklayıp "Özellikleri Düzenle"ye basalım. Dizine "C:\|netpub\WWWROOT", Diğer Bölüme de "Home" yazalım. Sonrada 'Tamam'a basalım. Erişim hakkının 3ünün de işaretli olmasına dikkat edin.
Kurulumun İlk Parçasını tamamladık... Şimdi ADO'yu açalım. ADO, PWS ile birlikte kurulmuştur. Şimdi "Data Sources (ODBC)" ikonuna basalım.
"System DSN" sekmesini tıklayarak "Add..." butonuna basalım. Karşımıza bir pencere çıkacak. Burada "Driver to Microsoft Access(*.mdb)" satırını seçerek 'finish' düğmesine basalım...
Karşımıza "ODBC Microsoft Access Setup" diye bir bölüm çıkacak. Orada "Data Source Name" diye bir yer var. Oraya oyun ismini yazın. Ben "poisonous" yazıyorum. "Description" a "Database" yazalım. Daha sonra bağlanacağımız veritabanının(Transformice'nin sistem dizinindeki klasör) konumunu "Select..."e basarak bildirmeliyiz. "OK" butonuna basarak devam ediyoruz. Transformice.air'in de bulunduğu klasörde "oyun_ismi.mdb" isminde bir dosyamız var ise, her şeyi doğru yapmışız demektir!
Şimdi oyuna istatistikleri ve veritabanını kaydedelim :
a dit :
function eventPlayerGetCheese(name)
x = x+1
tfm.exec.killPlayer(name)
system saveFile(poisonous.mdb) --- oyun_ismi.mdb
system lodaFile(poisonous.mdb) --- oyun_ismi.mdb
tfm.exec.chatMessage("İstatislikler Kaydedildi!",name)
end

function eventChatCommand(name, komut)
if komut == "istatistik" then
tfm.exec.chatMessage("Şu ana kadar "..x.." kere peyniri aldığın için öldün!",name)
end
end

!~Kitabımızın Sonuna Geldik. Okuyan herkese teşekkürlerimi sunarım~!
Bu e-Kitap; Benbirkralm tarafından 07-01-2014/11-01-2014 tarihlerinde telefonda başlanıp defterde devam edilen oradan da telefonda tek tek yazılan, son olarak bilgisayara yani sizlere geçirilmiştir...
###Benbirkralm###
  • Tribus
  • /
  • Benbirkralm
  • /
  • Uygulama Geliştiriciliği
  • /
  • [Lua] e-Kitap
© Atelier801 2018

Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

Version 1.27