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

Tam Versiyon: Script ve Hack Temelleri - 1
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2
Ders 1 - Advance Map ve Scriptler
Merhaba arkadaşlar, bir hack oyun yaparken kullanılan en göz alıcı olay yeni olaylar ve durumlar eklemektir. Bunu biz Scriptleri kullanarak yapıyoruz.  Bu dersimizde nasıl script yazılır, bu scriptleri oyuna nasıl ekleriz ve bu scriptlerle neler yapabiliriz bunlara bakacağız.

Evet yapmamız gereken ilk şey şu programı indirmek;


Alıntı:https://hotfile.com/dl/136729402/bc973a9...1.zip.html
Bu programı kurup yükledikten sonra yapacağımız şey, advance map' e girmek. Advance Map' te, ilk olarak Hack yapacağımız ROM' umuzu yüklüyoruz. Önemli Uyarı Mutlaka ROM' unuzun yedeğini alın. Daha sonra settings menüsünden -> choose script editor seçeneğini tıklıyoruz. buradan biraz önce yüklediğimiz programı seçiyoruz. daha sonra size bir evet/hayır sorusu yöneltecek buna hayır diyoruz.(bunu niye soruyor bende bilmiyorum ama hayır dememiz gerek.) Artık oyundaki kodlarla oynayabiliriz. İlk iş olarak Advance Map'teki script menülerine bir bakalım....

[Resim: x7r2.png]

Resmi açıklayalım önce...
ilk olarak bilmiyenler için pallet town' u nasıl açacağımızı da anlatayım. Yandaki kalsörlerde "From Header" yazanı seçin. 3. klasörün 1. haritasında "PALLET TOWN yazısını göreceksiniz onu seçin(tam kodu 3.0)"
1)İlk iş olarak üstteki taglardan Event' i tıkladığınıza emin olun, aksi halde harita üzerinde değişiklik yaparsınız ve scirptleri görmessiniz..
2)Buraya tıkladığınızda eğer scirptleri kişi, tablo, poke topu olarak görüyorsanız onları yazıya, eğer yazı olarak görüyorsanız onları resme çevirir..
3)Gelelim script harflerine;
"P" yazısı o scriptin, bir kişi scripti olduğunu söyler.(Bu arada cut ile kestiğimiz ağaçlar, bulduğumuz nesneler-şu poke topu şeklinde olan, pokemonlar ve hatta bazen gördüğümüz gazete, kitap ve gemiler birer kişi scriptidir.)
"S" ile görmüş olduklarınızın rengi turuncuysa Tabela scriptleridir. Yeşil ise "Script"-yani durum diyelim.
"W" olarak gördüklerinize "Wrap" denir. Bunlar kapı giriş ve çıkışlarında kullanılır.
"F" olarak gözükenlerde uçuş noktalarıdır. Fly kullandığınızda "F" işareti olan yere inersiniz.
4)Bu menüyü scriptlerden ziyade advance map için tanıtmak daha doğru ama yinede değinelim;
"Talking Level" bu karakterin size nerede iletişim geçeceği ile ilgilidir. Genelde "Height 2" seçilir bu.
"Movement" ise bu karakterin yapacağı hareketlerdir.(ileri-geri gidiş falan....)
"Unknown" adı üzerinde ne olduğu belirsiz...
"Trainer" Bu adam bir trainer ise "1" işaretlenir."
"View Radius" ise sizinle kaç birim uzaktan iletişime geçeceği ile alakalıdır.
5)Bu ise en önemli nokta script kodu(offset).İlerde yapacağımız herşeyin anahtarı burası işte. Burada yazan sayıları sakın sebepsiz yere silmeyin yada olduğu gibi kopyalamayın.
6)Buraya tıkladığımızda şu şekilde script programımızı açarız.


[Resim: x83r.png]

Ve Son olarak, OPEN SCRIPT  yazan düğmenin altındaki grup "Amount of Events". Bu seçili haritada hangi tür eventten kaç tane olacağını belirler. Bir minik örnek yapalım. Mesela yeni bir karakter eventi ekleyelim. Bunun için, "Number of Person Event" sayısını bir arttırarak. "Change Event" düğmesine basın, haritanın 0,0 kordinatına(Yani en üst ve en sağ köşeye yeni personumuz geldi. Bunu istediğinizi yere sürüklemek size kalmış. )

Ders 2 - Bir Scripti Değiştirmek

Mevcut bir scripti değiştirmek ve yeni script eklemek arasında oldukça farklar var. Biz yavaş yavaş ve işi anlayarak gidelim. İlk olarak bir scripti nasıl değiştiririz onu anlayalım. Örnek oalrak ta şu adamla konuştuğumuzda çıkan yazıyı "Pokémon Turkiye" ile değiştirelim.

[Resim: x8cl.png]

Evet yapmamız gereken belli bu adamı tıklayıp, open script diyoruz.(Advance Map' teki "Events" tagının seçili olduğundan emin olun.) ve sayfamızı açalım. Aynen böyle geldi.

[Resim: x8h3.png]

Farkettiğiniz gibi, kodlarda yazan ilk satır #org ve sonrası ile, menüdeki offset numarası aynı.. Offsette yazan $0016582F, kodda 0x816582F şeklinde gözükür. Burda bir sıkıntı yok. şimdi Burada bize ne diyor ona bakalım.

Alıntı:#org 0x816582F -Burada 0x816582F' numaralı offseti çağır diyor.

\"msgbox 0x817D80D ' Technology is incred...
callstd MSG_FACEPLAYER ' Builtin lock/faceplayer
end\"

bu kodun açıklaması ise,
msgbox tahmin ettiğiniz gibi, mesaj kutusunu göster demek daha sonrasındaki \"0x817D80D\" ise, bu metin kutusunda hangi offsetin içindeki yazının gösterileceğini belirtiyor. Burada ki yazan aynen şu \"0x817D80D numaları ofsette yazanı mesaj kutusunda göster.
callstd MSG_FACEPLAYER Bu kod adamın bize yüzünü çevirmesini söylüyor...
end ise bitir demek tahmin ettiğiniz gibi. Daha sonra gösterilecek mesajı yazmak için 0x817D80D numaralı offseti çağrıyoruz.

\"
#org 0x817D80D
= Technology is incredible!\pYou can now store and recall items\nand POK\eMON as data via PC.
\"

Biz \"=\" den sonraki kısmı \"Pok\emon Turkiye\" olarak değiştirelim. \"=\"' dan sonra bir harf boşluk bırakın yoksa çalışmaz kod.  \"/e\" şeklinde yazdım dikkat ederseniz. Böylece tıkladığımızda ...emon diye değil émon diye gösterilecek ve ne yazıkki Türkçe karakter desteği yok.

Son olarak ta \"F9\" basıyoruz şöyle bir şey gelecek;

[Resim: x8q9.png]

Burada yaptığınız işlemleri gösterir...

Daha sonra kaydedip oyunumuza gelelim  ve bakalım yaptıklarımız çalışmışmı bir bakalım.

[Resim: x8s8.png]

Hemde mis gibi! Evet arkadaşlar ilk iki dersimiz bu kadar. Son olarak bir kaç öneri ve not yazarak bitiriyoruz.

İlk olarak bu şekilde scriptleri Türkçeleştirmek pek başarılı olmuyor. İlerki değişikliklerle birlikte metinler birbiriyle karışmaya başlıyor. Bu nedenle pek bunu kullanmayın. -Tabi şimdi soracaksınız madem kullanmayacağız neden gösterdin diye? Bunu temeli vermek için kullandım. İlerki derstte, kendi yazdığımız scriptleri oyuna ekleyeceğiz ve Offset kavramına daha deyaylı bir bakış yapacağız. O sırada bundan da bahsedeceğim.

Son olarak Çok uzun metinler, sorunlar çıkarıyor. Bu nedenle sık sık satır aşağı ve paragraf bırakmanız lazım bunuda metin içlerine kullanacağınız "Escape Sequence" denen karakterleri kullanarak yapıyoruz.

Satır aşağı Yazmak için \n
Paragraf için ise \p

Alıntı:= Pok\emon\nTurkiye

yada;

= Pokemon\pTurkiye seklinde yazarak farki anlayabilirsiniz.


Diğer dersler;
3. Ders: https://pokemonturkiye.com/forum/index.p...985.0.html
4. Ders: https://pokemonturkiye.com/forum/index.p...987.0.html
Çok zor ama kafaya taktım yapıcam!  Fire
öyle değil aslında dikkat gerektiriyo ve başlangıçte üsrekli ROM'unu bozacaksın bu gayet normal. Ben şimdiki hack oyuna birşey eklemeden önce ayrı bi kobay dosya üzerine bir sürü şey deniyip en son halini yazıyorum mesela-Bir çok defada bozuyorum haliyle. Biraz zaman ve dikkat istiyo o kadar...
Acaba o /p /n filan koymadan yazzak olur mu?  Confused
Eğer uzun bir metinse birbirine karışır yazdıkların. Onun için kullanmakta yarar var çok zor değil. Satır bırakmayı istediğin yere \n, paragraf bırakmak istediğin yere\p bunu ekleyeceksin.

(Oyunun mesaj kutuları iki satır olduğu için. arka arkaya iki defa satır bırakamassın yine karışır yazdıkların. bir defa \n kullandıktan sonra \p ile paragraf başlatmalısın)
ben şimdi başlangıç evine bir adam ekledim ve kolaya kaçıp paletten birinin scrpt ofsetini aldım (bütün uyarılara rağmen :D) benim adam teknoloji ne kadar gelişti demeye başladi pksvui.exe den konuşmasini değiştirmeye çalıştım ama olmadı.Ve daha aşşağıdaki numarasini aldığım adamıda benim adama cevirip item verdirticem aynı adama farkli şeyler yaptırmak münkün mü rival gibi

Güya hic soru sormadan fazla ugrasmadan 2 günde yapıp yayınlayaaktım ama dakka 1 gol 1 cıkmaza düştüm :D

ahanda çözdüm olayı :D (galiba)

yok olmamıs advance text i deniyim bide :D
offsetini aldığın adamla aynı eylemleri gerçekleştirecekler. Bu durumu engellemek için kendinin offset'leri FSF ile bulman gerek. Evet rival gibi şeyler de ekleyebilirsin ama biraz fazladan bilgi gerektiriyo bu kısmı. Sınavlar bitsin yeni eğitimlerle anlatıcam yapmayı.
plan yattı zaten eevee en fazla 5 durumda evrim geçiriyomuş 6. 7. ekleyemedim :D
hotfiledeki programın linkini yeniler misin? link kırık :(
linki yenilermisin?
Sayfalar: 1 2