Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Tutorial: Grafik modifikasyonu


GE-TA

Öne çıkan mesajlar

Şu aralar pek bir revaçta bu olay. Şöyle güzel açıklayıcı bir yazı yazalım da paticik'de UO scripting ve uo emulasyonu ile ilgilenenlere yardımcı olsun dedim. Belki bu konudaki soruların az da olsa önüne geçilir.

Bir örneği ele alarak bu konuyu açıklayacağım. Yani konu mankeni kullanacağım ve bu konu mankeni olarak robe’u seçtim.

Öncelikle animasyon. UO'da animasyon pekçok yerde olduğu gibi birkaç resimin belirli zaman aralığında gösterilmesi ile oluşur. Bir animasyon kümesi ise 5 ayrı animasyon parçasının birleşmesinden oluşur. Bunlar down, downleft, left, upleft ve up'dır. Diğer yönler bu animasyon kümesinin aynalanması ile client tarafından oluşturulur. Belki fark etmişsinizdir sağ elinizdeki silah bazı yönlere giderken sol elinizde görünür. Bunun sebebi yukarıda bahsettiğim olaydır.

Devam edelim. Bu 5'li animasyon kümesi 1 tam haraketi belirtir. Ve tam bir animasyon seti belirtmek için 35 haraket tanımlamanız gerekmetedir. Yani sonuç olarak bir giysi animasyonu oluşturmak için toplamda 175 animasyon parçacığı oluşturmalısınız.

Bu animasyon parçacıklarını nasıl oluşturacağız. Öncelikle animasyonumuzu oluşturacak frame'lere yani resimlere ihtiyacımız var. Bu resimlerin formatı kullanacağınız programa göre değişebilir. Ben animation adında bir dos programı kullanıyorum ve bu program resimleri bmp formatında olmasını istiyor. Resimleri hazırladıktan sonra bu animation programı birde bir kurulum dosyası istiyor. Bu kurulum dosyası kabaca şu özelliklere sahip.
1- Output yapacağı dat dosyasının adı
2- Kaç tane frame kullacağımız
3- Frame no
4- İlk frame’in x koordinatı. Bunu şöyle düşünün. Oyunda kontrol ettiğiniz karaktere odaklı olarak haraket edersiniz ve karakterinizin tam ayaklarının ortası merkez noktasıdır. İşte koyacağınız animasyon bu merkez noktasından x yönünde ne kadar kayacak. Bunu belirlerken resimin sol üst köşesini düşünerek referans vereceksiniz. Pixel olarak.
5- İlk frame’in y koordinati. Aynı x’deki gibi ama bu sefer y.
6- Kullanılacak olan resim dosyasının adı.

Daha sonraları 1. ve 2. adımlar atlanarak 3,4,5,6 kullanacağınız tüm frameler için tekrarlanacak. Yani 5 frameli bir animasyon oluşturacaksanız 3,4,5,6. adımları 5 kere tekrar edeceksiniz. Bu dosyayı notepad ile oluşturabilirsiniz. Adına da config deyin.[hline]In God I Trust
For Rest I Just Test
Link to comment
Sosyal ağlarda paylaş

Sonraki adımda ise bir batch dosyası oluşturmak. İsterseniz konsoldan direk komutu girerek de animasyonlarınızı oluşturabilirsiniz. Ama tek bir batch dosyası yapıp bunu değişik yerlere kopyalayıp çift tıklayarak çalıştırmak daha kolay gelmişti bana. Batch dosyamız’da şöyle diyoruz: animation -encode config.txt

Yani animation programını çalıştır encode işlemi yap config.txt dosyasını kullan. Buna bir isim verip uzantısını bat olarak kaydediyoruz. İşlem bittiğinde batch dosyasını çalıştırıyoruz ve bize dat uzantılı animasyon parçacığını oluşturuyor. Animation.exe, config.txt, frame olarak kullandığınız resimler ve batch dosyanız aynı yerde olmalıdır buna dikkat edin. Evet efendim ilk animasyon parçacığımız hazır. Ancak bitmedi daha bundan 174 tane daha yapacağız.

Sabrettik ve 175 animasyon parçacığını da oluşturduk. (ben şahsen komple seti 1 kere yaptım ve bir daha asla yapmam tövbeliyim)

Şimdi ikinci adım. Bu animasyonları verdatamıza yükleme safhası. Bu aşama için önce boş handle index bulmalıyız. Aksi taktirde çakışma ile karşılaşırsınız. Peki bu boşlukları nereden bulacağız? Sonuçta bize 175 tane animasyonu koyacak kadar bir aralık lazım. Ben bu iş için mulbuilder adındaki programı kullanıyorum. Daha pekçok değişik özelliği olmasına karşın sadece bu işte kullanıyorum. Bir nevi alışkanlık. Mulbuilder programını açıp anim.mul dosyasını yükletiyorsunuz. Peki bunu nasıl yapıyoruz. Menüden original’ı seçiyor sonra import anim.mul diyoruz. Daha sonra yine original’den view files diyoruz ve solda bir liste çıkıyor. Oradan anim.mul’a tıkladığımızda kısa bir yüklemeden sonra tüm animasyonları sıralıyor. Sonra başlıyorsunuz bu animasyonlar içinde boş yer aramaya. Burada önemli nokta People & accessories’in bulunduğu aralıkta boş yer bulmak. Çünki yeni bir yaratık animasyonu değil karakterin kullanabileceği bir eşya için yer arıyoruz. Yani pantalon, elbise, silah gibi eşyaların arasında arıyacağız. Bu olay için InsideUO’dan referans da alabilirsiniz. Apron.long people & accessories’in anim.mul’daki ilk animasyon setidir. Onun handle numarasından itibaren ileriye doğru boş yer aramak mantıklı olacaktır.

Tam bu noktada konu mankenimizi sahneye davet edelim. Bakalım onu zamanında hangi aralığa koymuşlar. InsideUO’da handle numarası olarak 47075’i kullandığını söylüyor. Mulbuilder’e baktığımızda 47075’de robe animasyonunun ilk animasyon parçacığının olduğunu görüyoruz.[hline]In God I Trust
For Rest I Just Test
Link to comment
Sosyal ağlarda paylaş

Anim.mul içinde uygun bir handle index bulduktan sonra yapmanız gereken birşey daha var. Oda bu bulduğunuz handle numarasının diğer olası patchlenmiş bir animasyon ile çakışıp çakışmaması. Peki bunları nereden ve nasıl mukayese edeceğiz. Mulbuilder anim.mul’u kullanarak handle numaralarını listelediği için patchlenmiş animasyonları göstermez. Tıpkı sizlerin sonradan koyacağı animasyonların anim.mul’da görünmüyeceği gibi. Bu yüzden InsideUO’yu açıyoruz ve animasyon kısmında yanlarında (p) olanların detaylarından handle numaralarına bakıyoruz. Bulduğunuz aralığın ilk handle numarasını ve ona 175 eklenmiş halinin oluşturacağı aralıkda bunlardan herhangi biri ile çakışmıyor ise sorun yok. Yani konu mankenimiz üzerinde gösterirsek, mankenimizin ilk ve son handle numaraları olan 47075 ve 47250 (47075+175) arası hiçbir animasyon ile çakışmamalı. Ki öyle.

Konu mankenimizi tekrardan çağırarak yerine yerleştirme işlemine başlıyalım ozaman. Boş yerimiz var. Peki nasıl yerleştireceğiz. Burada kullanacağımız program herkesin sevgilisi Michalengelo. Michalengelo’yu açtık. Soldaki listeden anim’in üzerinde iken sağ tıklıyoruz ve load from data file’ı seçiyoruz. Sonra bize soruyor nereye koyacaksın bu animasyonu? Biz diyoruz ki bulduğumuz boş handle aralığının ilk numarası. Robe için bu rakkam 47075. Sonra tekrar soruyor 47075’e hangi animasyonu koyacaksın? İşte burası önemli. Animasyonu öyle kafanıza göre koyamıyorsunuz. Belirli bir sıra var. Bu sırayı nereden mi bulacağız. Tabiki kavim dostumuz Inside UO’dan. InsideUO’dan people & accessories kısmından herhangi bir eşya (patchlenmemiş olanını tercih edin!) nın yanındaki +’ya tıklayarak animasyonları koyma sırasını görebiliriz. Neymiş ilk animasyonumuz walk unarmed kümesinin down animasyonu. Demek ki robe için 47075’e walk unarmed’in down’u için kullanacağımız animasyonun dat dosyasını seçeceğiz. Voila ilk animasyonumuzu ekledik bile.[hline]In God I Trust
For Rest I Just Test
Link to comment
Sosyal ağlarda paylaş

Sonra tekrar Michalengelo’dan anim’e sağ tıklayarak load from dat file’ı seçiyoruz. Yine bize handle index numarası soracak. Bu sefer 42076 diyoruz. Peki buraya hangi animasyon diye sorunca walk unarmed’in down-left’i için hazırladığımız animasyonu seçeceğiz ve voila 2. animasyon da tamam. Bu şekilde ilerliyecepğiz.

Sevgili programımız Michalengelo’nun bir huyu var arkadaşlar hatayı asla kabul etmiyor. Hata yaparsanız asla silip düzeltmeye çalışmayın. Kötü patlarsınız. Her başarılı eklemeden sonra save edin ve hata yaptığınızda Michalengelo’u kapatıp tekrar açın ve save’inizi yükleyin.

E ne duruyoruz devam tüm animasyonları yükleyinceye kadar devam. Ben bu arada bir mola alayım.

Bitirdiniz mi? (gerçekten sizi bekliyecek olsam sakallarıma ak düşerdi muhtemelen) Birşey fark ettiniz mi animasyonlarınızı eklemeye başladığınız andan itibaren michalengelo dostumuz onları bir kategori altında topladı ve bu kategoriye bir numara verdi. Bu numaranın adı model numarası. Çok özel bir numaradır kendisi. Çünki hexadecimal hali scriptlerinizde chardef’de kullanılabilir. Ayrıca başka bir özelliği daha var kendisinin. Decimal olan hali yani değiştirilmemiş hali o item’in equip edildiğinde gösterilecek gump numaranızı belirleyecek. Konu mankenimiz olan robe için model numarsı 469 çıkıyor. Ama şu anlık bu olayı ikinci plana atalım.

Animasyon patch’imiz tamam istediğimiz zaman bunu verdatamıza patchleyebiliriz.[hline]In God I Trust
For Rest I Just Test
Link to comment
Sosyal ağlarda paylaş

Şimdi birde yeni eşyamız için statik resim oluşturalım. Bunun iki yolu var. Birincisi biraz çetrefilli bir yol ama güvenli. Bunu birazdan anlatacağım. Diğer yol ise oyunda pekde kullanmadığınız bir statik itemi modifiye etmek. İkinci yol bazı sorunlara yol açabilir. Bu yüzden ben ilk yolu anlatacağım. Kaldı ki çoğunuz diğer bir dostumuz olan Belgar’ın harika ikilisinden olan Paradise ile modifikasyon yapmayı biliyordur.

Efendim güvenli yolumuz şöyle. Ben buna ultima ile ultimayı aldatma diyorum. Öncelikle yine boş bir index bulmamız gerekiyor. Belki dikkatinizi çekmiştir. İnsideUO ile art bölümünü incelerseniz en sonda balistanın son parçası ile at şekli arasında yani 16356 ile 16382 arasında bir boşluk var. Diğer bazı yerlerde de benzer boşluklar bulabilirsiniz. Yapmanız gereken itemleri tek tek dolaşıp sayılarda bir atlama bulmak. Yada yine paradise’ı kullanarak resmi tanımlanmamış boş yerler bulabilirsiniz. Efendim madem boşluğumuzu bulduk ilerlemeye devam edelim. Şimdi bir de bize oyuna ekliyeceğimiz eşyanın bir figürünün resmi gerekiyor. Bu resmin özelliği 44x44 pixel olmasının gerekliliği. Artık çizermisiniz bir yerden mi bulursunuz orası size kalmış. Şimdilik bu resim bir yanda dursun.

Şimdi bize birtane de dat dosyası lazım. İşte bu aşamada ultimayı ultima ile aldatacağız. Nasıl mı işte şöyle. Önce paradise’ı açıyoruz ve herhangi bir statik obje seçiyoruz. Burada önemli olan resimli olan birtanesini seçmek yoksa dat oluşturamayız. Seçtikten sonra solda çıkan resmin üzerine gelip sağ tıklıyoruz ve save as dat’ı seçiyoruz ve kaydediyoruz.

Şimdi eksiğmiz kalmadı. Figür resmimiz, dat dosyamız ve birde boşluğumuz var. İş tamamdır. Artık bunu yükleyelim.[hline]In God I Trust
For Rest I Just Test
Link to comment
Sosyal ağlarda paylaş

Şimdi michalengelo’yu açıyoruz. Sol taraftaki listeden art’ın üzerine geliyor ve sağ tıklıyoruz. Burada load from dat file’ı seçiyoruz. İndex numarası için bulduğumuz boş index numarasını giriyoruz. Mesela 16357 olsun. Sonra daha önce save ettiğimiz dat dosyasını seçiyoruz. Voila patch’imiz oluştu. Hemen save edip patchimizi verdatamıza uyguluyoruz. Oda tamamdır.

Şimdi tamam static item oluşturduk ama dış gürünümü ultimayı ultima ile aldatta kullandığımız obje. Bunu değiştirmek gerek. Ama şimdi değil. Çünki bir aşamayı daha bitirip toptan değişiklik yapacağız.

Peki bu aşama ne? Gump’ımızı oluşturmak. Arkadaşlar şimdi bize gump’ı oluşturmak için 2 adet resim gerekiyor. Bunlardan biri kadın karakter için paperdoll görüntüsü diğeride erkek karakter için olanı. İkiside bmp formatında olmalı. Bu resimleri bulmak yada çizmek size kalmış. Bunları hazırladık. Sıra geldi bunları verdataya patchlemeye. Açıyoruz eski dostumuz michalengeloyu. Bu sefer sol taraftan gumps’ın üzerine gelip sağ tıklıyoruz ve load from bmp diyoruz. Bize hemen block numarası soracak. Eyvah bunun için arama yapmamıştık! Ne olacak şimdi? Panik yok herşey yolunda. Hatırlarmısınız animasyon yaparken michalengelo animasyonlarımızı gruplarken bize bir numara vermişti. Bende bu numara çok özeldir demiştim. İleride gump yaparken kullanacağız demiştim. İşte şimdi kullanıyoruz. Konu mankenimiz olan robe’yi oluştururken bize 469 model numarasını vermişti. O vakit 50469 erkek karakter paperdoll için gump blok numarası, 60469 ise kadın için olacak. Yapılan olay basit michalengelo’dan elde ettiğimiz model numarasının başına erkek için 50 kadın için 60 ekliyoruz. Block index numarasını verdikten sonra bmp resmini seçiyoruz. Tamamladığımızda eşyamız kullanılırken gösterilecek gump’ı da hazırladık demektir. Patch dosyamızı save edip verdataya patchleyebiliriz.[hline]In God I Trust
For Rest I Just Test
Link to comment
Sosyal ağlarda paylaş

Ve artık son aşama. Bu son aşamada bize sadece paradise gerekiyor. Paradise’yi açıp kalsik olarak go dedikten sonra yeni eklediğimiz statik objenin index numarasına gidiyoruz. Örnekte 16357’yi seçmiştik hatırlarsınız. Şimdi eksik kalan işleri yapma sırası. Öncelikle ultima’yı ultima ile aldat metodunun sonucu olan yanlış figür görünme olayını düzeltelim. Sol taraftaki resime sağ tıklayarak open bmp diyoruz ve görünmesini istediğimiz 44x44’lük figürü seçiyoruz. Sonra tekrar resmin üzerinde sağ tıklayıp patch to verdata diyoruz. Artık tamamdır resim istediğimiz gibi görünüyor. Ama eksik kalan işler bukadar değil. Şimdi eşyamıza kişilik verelim. Önce isim. Name kısmına robe diyoruz. Siz kendi eşyanızın ismini vereceksiniz elbette. Sonra weight kısmına bu eşyanın kaç taş ağırlığında olacağını yazacaksınız. Scriptlerinizde belirtmeseniz bile buradan objenin ağırlık değeri alınabilir. Robe için 1 yeterli. Sonraki adım bu eşyanın yüksekliği. Nudge up ve down kullanmışsınızdır. Koordinatsal olarak kaç birim yükseklikte olduğunu buraya yazıyorsunuz. Yani z değeri. Robe için buna 0 diyelim çünki yere atıldığında bir yükseklik oluşturmaz. Sonra eğer bu objeniz kullanılabilir ise kullanıldığında hangi layeri kullanacağını belirteceksiniz. Spheredef dosyasından hangi layerin değerinin kaç olduğunu görebilirsiniz. Robe için 22. Ve sıra geldi kullanılacak olan gump’ı tanımlamaya. Buraya sadece michalengelo’nun bize verdiği model numarasını yazıyoruz. Yani başına 50,60 koymuyoruz. Class ve hue kısımlarına 0 diyoruz. Bunlar olası sınıflandırma ve doğal olarak renk belirlemek için açılmış ama hiç kullanılmamış. Zaten tiledata’nın tamamı henüz çözülmüş değil. Bilinmeyen bazı flagler bulunmakta. Sırrı OSI’de gizli.

Şimdi bize uygun flaglerin yanına tik atacağız. Robe için tüm vucudu sarar full body armor buna uygun, giyilebilir wearableda bunu sağlar. İngilizceden article a an olayı var birde aslında hiç önemli değil boş da bırakabiliriz. Ama adet yerini bulsun article ‘a’ diyelim. Eveet objemiz kullanılmaya hazır. Save edip paradise’ı kapatıyoruz.[hline]In God I Trust
For Rest I Just Test
Link to comment
Sosyal ağlarda paylaş

Evet dostlar grafiksel olarak başka hiçbirşey kalmadı. Bundan sonrası tamamen script. Script yazarken de static item için kullandığımız index numarası olan 16357’yi hex’e çeviriyoruz. Buda 3FE5 ediyor. Yani [ITEMDEF 03FE5] yazdığımızda yeni eklediğimiz eşyanın scriptini yazıyoruz demektir. Tabi hemen altına şöyle güzel bir defname tanımlamakta fayda var çünki defname hex kodundan daha akılda kalıcı. Ayrıca birde ID=03FE5 demeyi de unutmayın. Kalan özellikler eşyanızın amacına göre sizin karar vereceğiniz şeyler.

By Ge-Ta...

Benden bukadar dostlar. Mümkün olduğunca acık anlatmaya çalıştım. Anlıyamadığınız birşey çıkarsa... bana sorabilirsiniz dememi bekliyorsunuz değil mi? Hayır efendim bir daha okuyun. Aklınıza gelen ve bu yazıda göremediğiniz konu ile alakalı birşey varsa bakın işte onu sorabilirsiniz.

Bu yazıyı bilgilendirme amacı ile istediğiniz kadar çoğaltıp dağıtabilirsiniz. Ancak altındaki by Ge-Ta satırını silmemeniz beni mutlu eder.[hline]In God I Trust
For Rest I Just Test
Link to comment
Sosyal ağlarda paylaş

Tüm bunları word'de yazmıştım. Oradan copy paste edince bazı karakterler sorun çıkarmış. Bende dikkat etmedim. Olmadı doc dosyasını veririm scripts sharing kısmına yada başka bir yere koyarsınız oradan isteyen indirir.[hline]In God I Trust
For Rest I Just Test
Link to comment
Sosyal ağlarda paylaş

Guide olması bakımından tebrik mesajlarını kırptım :)
GE-TA word dosyalarını siteye zip halinde ekliyip burda link verirsen cok güzel olur walla :)

Bundan sonra verdata die topic acanları direk buraya postalıcaz da :)

[Bu mesaj CEDAY tarafından 25 August 2003 14:32 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

  • 4 hafta sonra ...
  • 1 ay sonra ...
Walla animasyonuyla uğraşmadım ama bi gump hazırladım. hatta numarası 0 (:D). Ama oyuna nasıl ekliycem? Mesela çeşitli shardlarda, sadece gumptayken şekli değişik olan, fakat oyundayken normal halinde gözüken itemlar var. Bu konuda da yardım edersen sevinirim.
////
bu arada http://www.uo-desktop.uoo.ru/prog_e.htm adresindeki programları kullandım.
Link to comment
Sosyal ağlarda paylaş

  • 1 ay sonra ...
×
×
  • Yeni Oluştur...