.

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

Merhabalar,
Çalışan bir script oluşturmada 2.dersi anlatacağız. Anlatım "ZoRRoM" arkadaşıma aittir.

Tüm scriptler nerededir?
MTA Server klasörüne gidin ve aşağıdaki yolu izleyin:
server/mods/deathmatch/resources

Burada bir çok .zip dosyalarını göreceksiniz. Hepsi sıkıştırılmış bir dosyadır ve oyunu başlatıldığında hepsi sunucu tarafından yüklenecektir. Biz bu ders için "script2" kullanacağız.

Şimdi bu dizinin altında olmalıdır:
server/mods/deathmatch/resources/script2/

Meta Dosyası
Kaynaktaki dosyaları belirlemek için bir meta.xml oluşturulmuştur. Şimdi bir meta.xml dosyası oluşturalım. Bunun için notepad++ kullanabilirsiniz.

meta.xml dosyasına aşağıdaki kodları girin:

<meta>
     <info author="ZoRRoM" type="script" name="Benim Serverim" description="Benim ilk scriptim" />
     <script src="script.lua" />
</meta>
Author= Script Yapımcısını belirtir
Type= Scriptin türünü belirtir
Name= Scriptin adını belirtir
Descripton= Scriptin açıklamasını belirtir


<meta> </meta>= meta dosyasını belirtir
<info/> tagında script ile ilgili bilgiler bulunur.
<script/> tagında oluşturacağımız scriptin yolu belirtilir.

Basit Bir Script Oluşturma
Yukarıda belirttiğimiz <script/> tagının yanına yazdığımız "script.lua" scriptin aranacağı konum olduğundan dolayı script ismide aynı olmalıdır. Bu nedenle meta.xml ile script.lua'yı aynı klasöre oluşturun.

Şimdi bunu kopyalayıp script.lua'nın içine yapıştırın:


local asansor = createObject(2990, 0, 0, 1, 90, 0, 270)
local marker = createMarker(0, 0, 4, "checkpoint", 13, 255, 255, 255, 120 )

function girdi()
setTimer ( function()
    moveObject(asansor, 6000, 0, 0, 25)
end, 5000, 1 )
end
addEventHandler("onMarkerHit", marker, girdi)


function cikti()
setTimer ( function()
    moveObject(asansor, 6000, 0, 0, 2)
end, 5000, 1 )
end
addEventHandler( "onMarkerLeave", marker, cikti)

createObject --> Bir object oluşturur. Peki yanındaki kodlar nelerdir?
createObject("objectID", "x konumu", "y konumu", "z konumu", "x eğimi", "y eğimi", "z eğimi")

"local asansor = createObject(...)" oluşturacağımız objeye kodlama için verdiğimiz addır. Eğer ki bu object üzerinden bir düzenleme yapıcak isek bu objeye isim vermek gerekmektedir. Yani buradaki "asansor" ismini kendinize göre (sadece ingilizce karakterler ile) değiştirebilirsiniz. Aynı olay "local marker = createMarker" için de geçerlidir.

createMarker --> Bir marker oluşturur. Peki yanındaki kodlar nelerdir?
createMarker("x konumu", "y konumu", "z konumu", "marker çeşidi","marker boyutu (büyüklüğü)", "kırmızı renk", "yeşil renk", "mavi renk", "alpha (transparanlık, şeffaflık)")

function girdi() --> Bir fonksiyon oluşturuyoruz ve buna girdi ismini veriyoruz. İstediğinize göre bir isim verebilirsiniz(sadece ingilizce karakterler ile).

setTimer --> setTimer zaman gösterir. Bir olayın kaç saniye sonra gerçekleşeceğini belirtir.

moveObject --> Objeyi hareket ettirmemizi sağlar. Peki yanındaki kodlar nedir?
moveObject("Oluşturduğumuz objecte koyduğumuz ad", "objectin şuanki konumundan diğer konuma geçme zamanını belirtir", "x konumu", "y konumu", "z konumu")

onMarkerHit --> Marker'e çarpınca (Marker içine girince) anlamını verir. 
addEventHandler("onMarkerHit", "oluşturduğumuz marker'e koyduğumuz ad", "fonksiyona verdiğimiz ad yani "function girdi()"deki "girdi" gibi)




Peki bu kod başlı başına ne demektir?


function girdi()
setTimer ( function()
    moveObject(asansor, 6000, 0, 0, 25)
end, 5000, 1 )
end
addEventHandler("onMarkerHit", marker, girdi)

1. satırda --> Yeni bir fonksiyon oluşturup adını girdi koyduk.
2. satırda --> setTimer ile birlikte yeni bir fonksiyon daha oluşturduk.
3. satırda --> Oluşturduğumuz objeyi yeni koordinatlarına hareket ettirdik.
4. satırda --> setTimer ile oluşturduğumuz fonksiyonu "end" ile bitirip kaç saniye sonra başlıyacağını "5000" ile belirttik. "5000" demek 5 saniye demektir. Yani "1000" = 1 saniye 
5. satırda --> İlk fonksiyonumuzu yani "function girdi()" yi end ile bitirdik.
6. satırda --> Bunların hepsinin ne zaman olacağını "onMarkerHit" ile belirttik.



Peki bu kod ne demektir?


function cikti()
setTimer ( function()
    moveObject(asansor, 6000, 0, 0, 2)
end, 5000, 1 )
end
addEventHandler( "onMarkerLeave", marker, cikti)

Bu kodun da diğerinden farkı yok. Hepsi aynı anlamı taşıyor. Ancak bir farkı var. "onMarkerLeave"

onMarkerLeave --> Oyuncu marker'dan ayrıldığında anlamını taşır.

Yani;
function girdi () --> Oyuncu marker'e girdiğinde...
function cikti() --> Oyuncu marker'dan çıktığında...


Bu script 0,0,1 koordinatındadır. Kendinize göre objeyi, zamanları ve koordinatı değiştirebilirsiniz.
Google+ Paylaş

Yazar Unknown

Oyun dünyasına ve web sitelerine düşkün bir genç.
    Blogger Comment
    Facebook Comment

2 yorum :

  1. Kardeşim Bana tokyo şehri mapını kodlayabilecek biri lazım map hzır 8-)

    YanıtlaSil
    Yanıtlar
    1. www.mtasa-tr.com buradan yardım isteyebilirsin.

      Sil