Bineklerin Geriye Atma Sorunu Çözümü

Whistle

Ruhsuz Filozof
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.494
Çözümler
546
Beğeni
12.054
Puan
5.864
Merhaba arkadaşlar,
Bildiğiniz üzere bir çok pvp server geliştiricisi bineklerin geriye atma sorunu hakkında müzdarip olmuştur.
Bu konuda canı yanan kişilerden biri de benim. Sitemizin resmi oyunu olan Casro2'yi geliştirdiğim sırada yaşadığım bi sorunun asıl çözümünü sizinle paylaşacağım.

Bu sorunun orijinal çözümünü anlatacağım yerli ve yabancı forumlarda çok araştırma yapmama rağmen ne yazık ki orijinal çözümünü ve sorunun kaynağını bulamadım.

Forumlarda ve bizim forumumuzda da bu sorunun çözümü ile alakalı şu konu var: Bineklerin koşarken geriye atma sorunu fixed

En basitinden çözüm yolu bu şekilde ama bu işlemi yaparsanız hız ve ışınlanma hilelerinin önünü açmış olursunuz. Bu hususta sorunun neyden kaynaklandığını ve nasıl çözülmesi gerektiğini anlatmak istiyorum.

Videolu anlatım;


Bu sorun neden kaynaklanmaktadır?
player.mob_proto kısmında slotların animasyon ve modellerinin olduğu klasörün ismini belirten bir sütün var. Bu sütünun adı folder. Eğer bir bineğin folder kısmında hiçbir veri yoksa kaynak kodu o slotla ilgili verileri data/monster kısmından okuyamadığı için sistem bineğe bindiğiniz zaman hile yaptığınızı sanacak ve sürekli sizi geriye atacaktır.
Bir diğeri ise folder kısmı dolu ama share/data/monster içinde klasör yoksa yine aynı hatayı alırsınız.

Peki mob_proto kısmında neden bazı bineklerin folder kısmı boş?
Ne yazık ki artık bir çok server files txt dosyalarını orijinal oyundaki protoları dump ederek kullanıyor. client ile server arasındaki txt farkından dolayı da bazı değerleri yanlış giriyor veya hiç girmiyor. Bizde bu txt dosyasını olduğu gibi servere atarsak sıkıntılar yaşayabiliriz.

Nasıl Çözülür?
Ben videoda orijinal Metin2'ye yeni gelen Nirvana bineğinin çözümünü bahsettim. İlk önce item_proto'dan mührün vnumunu buluyoruz.
Videodaki bineğin vnum değeri şu;
Kod:
71222    Nirvana Ejderhası(Mühür)

Mührün vnum kodunu öğrendikten sonra buna tanımlı olan bineğin vnumunu bulmamız gerekiyor. Bunun için bineklerin tanımlandığı questlere bakmamız gerekiyor. Bende tüm binekler tek quest altında olduğu için hemen tek dosyada buluyorum ama orijinal dosyalarda ride_hallowen gibi ayrılmış durumda.

Bendeki dosyada şu şekilde tanımlı;
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Burdaki lua objesinden alacağımız kısım 1. olan.

Not: No_txt kullananlar player.mob_proto üzerinden düzenlemeleri yapacak. txt kullananlar mob_proto.txt üzerinden düzenlemeyi yapması gerekiyor.

1. Protolardaki sorunu çözmek için yapılacaklar;
1.1 - Mysql üzerinden düzenlemek için;

Daha sonra mob_proto'dan 20244 vnuma ait değeri buluyoruz.
mysql mob_proto nirvana ejderhası.jpg


Buradan folder kısmını pony yapıyoruz.
mysql mob_proto nirvana ejderhası duzenlenmis.jpg


Dipnot: pony yerine istemcideki klasörün adını da yazabilirsiniz ama daha sonrasında 2. maddede anlatılanları uygulamanız gerekli.

1.2 - mob_proto.txt üzerinden düzenlemek için;
excel ile mob_proto.txt dosyasını açın;
A sütununu seçip 20244 vnum aratın. (Ctrl + f)
mob_proto txt nirvana ejderhası.jpg

M sütünu folder kısmı onu aşağıdaki resimdeki gibi düzenleyin;
mob_proto txt nirvana ejderhası çözülmüş.jpg


Evet arkadaşlar proto kısmında yapacaklarımız bu kadar. no_txt kullanmıyorsanız düzenlediğiniz mob_proto.txt dosyasını serverfilesinize atıp oyunu tekrardan başlatmayı unutmayın.

Dipnot: pony yerine istemcideki klasörün adını da yazabilirsiniz ama daha sonrasında 2. maddede anlatılanları uygulamanız gerekli.

2. monster/data kısmını kontrol etmek ve sorunu çözmek;
2.1 - mobun klasör ismini öğrenmek;

Protolarda eğer folder kısmı boşsa ve düzenlediyseniz sıradaki adım olarak şunu yapmalısınız.
root/npclist.txt dosyasından slotun vnum kodunu aratın;
Bende çıkan sonuç;
Kod:
20244    halloween_2016_dragon_gold_01

istemcide bu slotun hangi klasör altındaki veriyi kullandığını öğrenmiş oluyoruz lakin bazı bineklerin ana modelleri aynı sadece textureleri değişik olduğu için aynı klasörü farklı isimlerle paylaşıyor olabilirler bu sefer npclist.txt dosyasında şu değeri aratın: halloween_2016_dragon_gold_01
Bana şöyle sonuç geldi;
Kod:
0    halloween_2016_dragon_gold_01    halloween_2016_dragon

Kısacası 20244 vnum değerine ait bineğin klasörü bu: halloween_2016_dragon
Şimdi filesimizden share/data/monster kısmına girip halloween_2016_dragon böyle bir dosya var mı diye bakmak. Eğer dosya varsa binek geriye atma sorunu çözülmüştür. Lakin yoksa şu adımları uygulayın;

2.2 - monster/data'ya verileri atmak için yapılacaklar;
istemci pack içindeki eix ve epk dosyalarını çıkartın. Eğer ilgili klasörün yerini bilmiyorsanız hepsini çıkartın ve windows klasör arama ile halloween_2016_dragon bunu aratın.
Bende bu klasör şu pack dosyasında çıktı: metin2_patch_new_halloween\ymir work\npc_mount\halloween_2016_dragon

halloween 2016 dragon klasöründe olanlar.jpg


share/data/monster klasörüne girip halloween_2016_dragon adında bir klasör oluşturup içine resimdeki işaretli olan dosyaları atınız. Şu uzantılar atılacak (msa, msm, txt).

Böylelikle oyunda bineğe bindiğiniz zaman o bineğin animasyon sürelerini serverde bilmiş olacak ve sizi hile olarak tanımlamayacak.

Çözüm bitişi
Yukarıdaki adımları uyguladıktan sonra sorununuz çözülmüş olacak. Tüm bu yazıyı özetlemek gerekirse server files ilgili bineği animasyon sürelerine ulaşamadığı için sizi hileli zannedip geriye atıyor. Bu sorunu da bu şekilde çözüyoruz.

Filesiniz syslogları kaydediyorsa herhangi bir kanalın içine girip syslog dosyasını açıp vnum kodunu aratın eğer şuna benzer bi log girdisi varsa işlem başarılıdır.
Kod:
Jun 19 18:09:47 :: mob_normal_attack_duration:20244:pony:99.00

Daha sonra da yapmamız gereken oyuna girip test etmek.
Görüntüyü sembolik olarak ekledim. Videoya bakarak sorunun çözümünün videolu anlatımını ve kanıtını görebilirsiniz.
0619_160335.jpg


Kapanış Konuşması
Arkadaşlar ilgili sorunu çözmek için 2 - 3 gündür araştırmalar yaparak sorunun kaynağını ve çözümünü buldum. Eğer bu rehberleri başka sitelerde paylaşmak istiyorsanız en azından alıntı olduğunu ve çözen kişinin ismini vermeyi unutmayınız. Ben bu çözümü anlatmayabilirdim ama benim gibi bu konuyla ilgili canı çok yanan arkadaşlar olduğu için yardımcı olmak istedim. Lütfen paylaştığıma pişman etmeyin. Daha önceki şeyler yüzünden pişman ettirdiler doğrusu.
 
Son düzenleme:
Geri
Üst