Pokémon Türkiye Forumları | Pokémon ve Anime Paylaşım Platformu

Tam Versiyon: Script ve Hack Temelleri - 2 (Bir Script Yazımı)
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Ders 3 - Bir Script Yazımı
İlk iki dersimizde, kullanacağımız araçalra ve basit script temellerine değinmiştik. Şimdi kendi yazdığımız scriptleri oyuna nasıl ekliyoruz ona bakalım.

Arkadaşlar bunun için iki farklı yol var. Birincisi Poketscript programını kullanarak eklemek, ikincisi ise Free Space Finder programını kullanarak boş offsetleri yakalayıp, Advance Map'ten eklemek. İlk metot muhtemelen daha kısa ama ben biraz da alışkanlıktan halen ikinci yolu tercih ediyorum. Bu derste de ikinci metoda göre anlatacağım. İlk iş olarak GBA Pokémon Game Editor' u yükleyelim.


Alıntı:https://www.fileserve.com/file/u2tAsXy/P....7.0.0.msi

Programa girince, sizden upgrade yapıp yapmamayı soracak siz hayır diyin. Daha sonra "FSF" yazan düğmeye tıklayın. Şu şekilde gelecek programımız..

[Resim: xfmm.png]

Bu programı yazacağımız kodlar için boş Offset aramak için kullanacağız. Diğer derste söylediğim gibi bu işin anahtarları offsetler. İlk iş olarak ta her zamanki ROM'umuzu yüklüyoruz. FSF üzerinden Needed Bytes kısmına istediğinizi yazabilirsiniz. Ben genelde 300' ü kullanıyorum. Needed Byte' i değiştirince, Skip Interval'de değiştirdiğiniz sayı olacak. Evet isterseniz hiç dokunmayadabilirsiniz. 

Altta iki adet option box var.  "Search From The Beginning" yada "Search from offset". siz bunlardan Üsttekini seçin. Daha sonra;

"Find" tuşuna basın. "6 haneli HEX(16 tabanında. Bilirsiniz 10 tabanında 10 sayı vardır. (0,2,3,4,5,6,7,8,9) 16 tabanındaysa 16 sayı bulunur.(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)) tabanlı bir sayi çıktı. Bu oyunda kullanılmıyormuş demekki. Daha sonra Find Next diyerek bir sütü o şekilde sayı üretiyoruz.(En basit scritpler olan metin scriptleri de oyunun yapıldığı dilin yapısı(Ruby Dili) gereği en az "2" offset kullanırlar.)

Tamam artık buradaki işimiz bitti. (Sakın programı kapatmayın yine kalsın çünkü o sayılara ihtiyacımız var. )

Artık Advance Map'e girebiliriz. Girip her zamanki gibi ROM' umuzu yüklüyoruz. Not: Başka bir program "FSF"'nin kullandığı ROM'u kullanırken, FSF üzerinde değişiklik yapamazsınız. FSF Hata verir.

Evet artık gelelim kod yazmaya. Bu dersimizde yine. Bir adamla konuşunca bize "Aferin evlat. Derslerini iyi calisiyorsun." demesini sağlayacağız. Ama bunu bir kodu değiştirerek değil kendimiz "0"' dan yapacağız böylece varolan scriptleri değiştirmek ve sıfırdan yazmak arası farkalrı öğreneceğiz.

Neyse lafı uzatmadan Advance Map'ten ben pallet town'u seçiyorum.-yaptıklarımızı hemen görelim diye. Daha sonra "event" tagında geliyorum. Buradan, Geçen dersimizde öğrendiğimiz gibi bir "person event" ekliyor ve bu adamı istediğim yere sürüklüyorum.  (Yan menüde "picture nos"unu 16 ve "movement type" ını "look up" olarak seçtim. look up yukarı bakmasını sağlar ) resmi;

[Resim: xfvg.png]
[size=14pt]
Ve bu adamın yapacağo işi ayarlamak için. Change Script diyoruz ama o da ne. Change Script butonu kilitli seçemiyoruz. Sebebi ise belli henüz bu "person"' a bir offset atamadık. Hemen FSF' deki ilk yada son sıradaki offseti(başlangıç noktasını belirlemek size kalmış. -yeterki Advance Map üzerinde; FSF'de seçtiğiniz offseti; bir event yada person offset kısmına yazmayın. Bunun ne gibi sonuçları olduğunu ilerde göstereceğim.(Çok önemli değil ama oyunun bütünlünü bozar.-Gerçi yeri geldiğinde kullanacağız. Örneğin tüm Pokemon merkezlerinde, pokemonlarınızı işleten kod aynı. onlardan birini değişirdiğinizde tüm merkezleri değiştirirsiniz.

Keyse konudan saptık eklediğimiz elemanın OFFSET' inde yazan "$00000000" biz bunu seçtiğimiz offsetle değiştirelim. İlk iki "00" u değiştirmeyin.

artık scripti görüntüleyebiliyoruz. Açtınız ve böyle bir şeyle karşılaştınız.

[Resim: xfyn.png]

Tamam eğer resimdeki gibiyse karşılaştığınız şey güzel. Demekki bu offset gerçekten de boşmuş. org #0x0xxxxxx hariç tüm yazıları silin.

Evet artık hazırız. Kodlarımızı yazabiliriz.


Alıntı:#org #org 0x871A300(Bu tabiki benim evime göre bu offset sizde farklıdır muhtemelen. -advance mapteki offsette yazılı olan \"00\" kodda 0x8 oluyor unutmayın!)
'-----------------------------------
lock
faceplayer
message 0x871A500 (yine benim kendime göre sizde farklı olabilir)
boxset 6
release
end

#org 0x871A500
= Aferin evlat. \nDerslerini iyi calisiyorsun.


kodu açıklayalım şimdi. başlangıç olarak yazdığımız offseti çağırdık dedik ki;
"lock" Bu kodda; Siz adama tıkladığınızda oyun durur. (-bu her konuşmada böyledir.)
"faceplayer" Bu kodda; adamın yüzünü size dönmesini sağladık.
"message 0x871A500" Bu kodda; 0x871A500 offsetinde yazanları mesaj olarak ekrana yaz dedik.
"Boxset 6" Bu önemsiz gibi olan ama içten içe önemli bir detay. Bu bizim metin kutumuzun türü. "6" bizim metin kutumuzun düz metin kutusu olacağını söyler. "5" Evet/Hayır soruları için "4" de çoktan seçmeliler için kullanılır ama bunların kullanımı biraz farklı(5 ve 4' ün..)
"release" "Lock" durumunu kaldırır.
ve end de bitirir.

daha sonra #org 0x871A500
= (buraya ne yazmak isterseniz onu yazın. [Türkçe harf desteği yok...] \n ve \p kullanımına dikkat edin.(bkz 2. Ders) )

NOT: Bazen farketmişsinizdir. " ' " ile başlayan ve yeşil renkli olan yazılar var bunlar açıklama satırlarıdır. Siz kodunuzu F9 a basarak oyuna eklerken compiler(derleyici) bunları görmezden gelir.

Evet artık bittiğine göre F9' a basalım ve sayfayı kapatalım. Kaydetmek istiyormusun sorusuna hayır yada evet demek size kalmış...

Daha sonra tekrar scrpitimizi açalım. Bu şekilde bir şey çıktı;


[Resim: xg4c.png]


farkettiğiniz üzere, boxset 6 yazısı "callstd MSG_LOCK" yazısı ile değiştirdi. Bu boxset 6' nın oyundaki karşılığıdır.

Eğer Boxset kısmını atlarsanız, ve öyle compile(F9 bastığınız anda olanlar[kodun oyune eklenmesi diyelim.-dier adı "derleme"])ederseniz. oyunda adama tıkladığınızda sadece. "faceplayer" olayından gelen ses efektini alırsınız. Yazdiginiz metin gösterilmez haliyle.

Tamam şimdi advance map üzerinden yaptıklarımızı kaydedip; bir bakalım olmuş mu:

[Resim: xg7r.png]

Gördüğünüz gibi gayet güzel bir şekilde oldu. Dersimizi son bir kaç hatırlatma ile bitiricez.
Dersin başında size bir yol daha var demiştim ya. işte onunla ilgili eğitim videosunu size paylaştım. Not: Ne yazıkki ingilizce  Cry ama olsun yinede iş görür.

ÇOK ÖNEMLİ UYARI "bu 2. metodda işlemleri "POKET SCRIPT"" KULLANARAK YAPIYORUZ AMA YAPMADAN ÖNCE BİR DOSYA DAHA GEREKLİ O DOSYA ELİMDE YOK AMA XTRM ARKADAŞIMIZDA VAR. ONDAN TEMİN EDEBİLİRSİNİZ.

Alıntı:Eğitim videomuz;
https://www.fileserve.com/file/sChktWE/H...script.flv

Benim ders için yaptığım çalışma;

Alıntı:#org 0x871A300
'-----------------------------------
lock
faceplayer
message 0x871A500 ' Aferin evlat. \nDers...
callstd MSG_LOCK ' Built-in lock command
release
end


#org 0x871A500
= Aferin evlat. \nDerslerini iyi calisiyorsun.

Bu dersimiz burada bitiyor. Bir sonraki dersimizde evet/hayır metinleri üzerinde durucaz.


Diğer dersler;
1. ve 2. Ders: https://pokemonturkiye.com/forum/index.p...983.0.html
4. Ders: https://pokemonturkiye.com/forum/index.p...987.0.html



Henüz inceleme fırsatım olmadı, en kısa sürede inceleyeceğim, eminim ki güzel anlatım olmuştur :)
Poket Script isteyen arkadaşlar için link: https://hotfile.com/dl/135811619/460d2f2...t.zip.html
Yazı yazmayı Advance Texten kullanabilir daha kolay
Eline saglık çok güzel bir anlatım olmuş yeni dersleri 4 gözle bekliyorum :D
Bu programı kuramadım.  :alala:
hangisini?
Senin konuda verdiğini;

[Resim: y1xg.png]
.NET Framework linki: https://www.gezginler.net/modules/mydown...4&lid=9547

Programı kurmadan evvel bunu kurun. O zaman çalışacaktır. (İsterseniz FSF'yi verdiğim programdan bağımsız olarak ta indirebilirsiniz.)

Onun Linki de: https://filetrip.net/f9554-Free-Space-Finder-1-2-4.html
Derslerdeki linkleri ve resimleri yeniler misin Confused


biliyorum eski bi konu ama yenisini açmaya gerek yok  Smile