Merhaba, Hoşgeldin!

VSRO.org, Silkroad Online, Knight Online, Metin2 ve diğer çevrimiçi oyunlar için öncü bir yardım ve geliştirme platformudur. Misyonumuz, bilgi ve deneyim sahibi bireyleri, bilgiye ihtiyaç duyanlarla bir araya getirerek, zengin bir etkileşim ortamı yaratmak ve farklı bakış açılarını birleştirmektir. Topluluğumuzda güçlü bir işbirliği ve öğrenme kültürü oluşturarak, herkesin değerli katkılarda bulunmasını sağlıyoruz.

vSRO Çözüldü 0xb070 ve 0xb071 Paketlerinin ParseDamage() Structureleri

kovboi

KGuardEDGE
.
Developer
Katılım
12 Eki 2019
Mesajlar
251
Çözümler
2
Tepkime puanı
637
Puanları
93
Konum
Antalya
Türk Lirası
0.00₺
Selam arkadaşlar.
Etrafta bir çok paylaşılmış structure mevcut ancak hiç biri tam olarak doğru değil.
0xb070 ve 0xb071 paketleri ortak bir ParseDamage() verisi içermekte. 0xb071 paketinden örnek vereceğim.

C#:
İçeriği görebilmek için Giriş yap ya da üye ol.

Ancak ne yazık ki şu paket ayrışamıyor.

C#:
İçeriği görebilmek için Giriş yap ya da üye ol.

ParseDamage() için net structure gerekiyor.

Olması gereken okuma şöyle gözüküyor
C#:
İçeriği görebilmek için Giriş yap ya da üye ol.
 
Tamam açık kalsın burda, rabbimden vahiy gelirse birine post atar. :D
Teşekkürler :D Cevabı olanlar var ama özel mesaj olarak sormamı istiyorlar gibi geldi. Yani durduk yere mesaj atıp "XXX'e neden sormayıp konu açtın?" yazan bir iki kişi oldu. Benim de adetim değil. Soracaksam açıkta sorarım açıkta çözülsün, başkası da faydalansın. :)

Bazı bilgilerin saklı tutulmasının sebebi zaten o bilgiyi başkasının kendisinden daha iyi işleyeceğinden korkmaları. Bence bilgi ortada olmalı. Daha iyi işleyen de kazanmalı tabiki.
 
Oyla 0
Teşekkürler :D Cevabı olanlar var ama özel mesaj olarak sormamı istiyorlar gibi geldi. Yani durduk yere mesaj atıp "XXX'e neden sormayıp konu açtın?" yazan bir iki kişi oldu. Benim de adetim değil. Soracaksam açıkta sorarım açıkta çözülsün, başkası da faydalansın. :)

Bazı bilgilerin saklı tutulmasının sebebi zaten o bilgiyi başkasının kendisinden daha iyi işleyeceğinden korkmaları. Bence bilgi ortada olmalı. Daha iyi işleyen de kazanmalı tabiki.
Bilgi daima ortada olmalı, bu yüzden forumlar var ve bu forumlarda bunca bilgili insanlar var. Bilgi paylaştıkça çoğalıyor.

VSRO Dosyaları zamanında paylaşılmasaydı, kimler, nasıl gelişebilecekti? Bilgim olmamasına rağmen SQL öğrenebilmiş biriyim, bir şey yapabiliyorum. Başlangıç düzeylerinde prosedürler yazabiliyorum, bunları hepsi bilgi paylaşımlarından oluştu, gökten inmedi. Bu yüzden, burada gördüğüm her konuya bilgilerin paylaşılması için post'lar, uyarılar atıyorum.

Bilgim olmadığı yerlerde, bilgisi olduğunu düşündüğüm kişileri etiketliyorum, ki dün seni bir konuya etiketledim, öneri de bulundun, yapılması gerekeni söyledin. Gerisi konu sahibinin azmine ve arayışına kalmış bir şey.

Burada "armut piş, ağzıma düş" diye bekleyen çok kişi var, bunları da ayıklayıp, gerekirse konularını gördüğüm gibi siliyorum.
Emek verenlere, bir şeyler başarmak isteyenlere de daima yardımcı olmaya çalışıyorum.
Böyle böyle gelişiriz, üstten baktığımız insanlardan bile öğreneceğimiz çok şey var. En bilgili insanlar bile bunlardan bilgi öğrenebilir.

Bill Gates'in dediği gibi "Zor işleri yapmak için her zaman tembel kişileri seçerim. Çünkü onlar işi yapmanın kolay bir yolunu bulurlar."

Bu hayatın bir kuralı.

Neyse, seviyorum seni. Konu hakkında da gram bilgim yok, olsa seve seve kendimi yorarım ama sıfırım. :D
 
Oyla 0
v30ucab.jpg


Resimde gördüğünüz UI, mısırlı bir elemanın serverine ait. Konuyla alakası ise şu; eleman bu verileri doğrudan client içinden alıyor. Yani filtreden cliente gelen bir paket akışı yok. Doğrudan verileri dll ile client içinden toplatıp pencereyi aktif ediyor. Unique den uzaklaşınca pencerede kapanıyor. Demek istediğim ise sizde aynı şeyi yapabilirsiniz. Örnek göstermek istedim...
 
Oyla 0
v30ucab.jpg


Resimde gördüğünüz UI, mısırlı bir elemanın serverine ait. Konuyla alakası ise şu; eleman bu verileri doğrudan client içinden alıyor. Yani filtreden cliente gelen bir paket akışı yok. Doğrudan verileri dll ile client içinden toplatıp pencereyi aktif ediyor. Unique den uzaklaşınca pencerede kapanıyor. Demek istediğim ise sizde aynı şeyi yapabilirsiniz. Örnek göstermek istedim...
Client içinden toplarken de paket verilerini aynen okumak gerekiyor. Takıldığım noktada o da takılıp aşmıştır mutlaka. Ben clientside tercih etmiyorum çünkü oyuncu o mobu görene kadarki bütün vuruşlar yok kabul edilecektir haliyle.

Hem clientside hem serverside olması yük dağılımı açısından oldukça mantıklı olabilir çünkü paket akışı periyodunu yavaşlatıp anlık gösterime devam edilebilir ama sadece clientside benim görüşümce uygun olmaz.

Bu sorunu çözemediğim için yaklaşık 50.000 vuruşta bir vuruşta hata yapıyor. Ama farkedilir seviyede olmadığı için üzerine düşmeyi bıraktım zaten.

Ekran görüntüsü 2021-02-16 130254.png
 
Oyla 0
Teşekkürler :D Cevabı olanlar var ama özel mesaj olarak sormamı istiyorlar gibi geldi. Yani durduk yere mesaj atıp "XXX'e neden sormayıp konu açtın?" yazan bir iki kişi oldu. Benim de adetim değil. Soracaksam açıkta sorarım açıkta çözülsün, başkası da faydalansın. :)

Bazı bilgilerin saklı tutulmasının sebebi zaten o bilgiyi başkasının kendisinden daha iyi işleyeceğinden korkmaları. Bence bilgi ortada olmalı. Daha iyi işleyen de kazanmalı tabiki.
valla laf bana mı geliyor bilmiyorum ama, gereksiz üstüme alınıyorsam bile cevap vereyim, bu packetleri hiç parse etmedim ucundan bile bakmadım :)

Vs6Pcab.png


gameserver obje ölene kadar tüm damageleri hafızada tutuyor zaten, obje ölünce verileri çekip, istediğim gibi şekillendirip clientlere yolluyorum. hesaplanmış bir şekilde varken tekrar paketleri okuyup hesaplamak hamallık gibi geliyor... tabi bunun yapılması için bir de %100 doğru groupspawn parse da lazım. bildiğim kadarıyla b071'de değişken bitler vs. de var dediğin gibi her durum için %100 doğru parser yapmak zor.

yaptığım şekilde canlı olmuyor tabi ki, canlı yapacak olursam da muhtemelen damage'in hafızaya yazıldığı yeri bulup hook atarım, veri işlendikçe objenin etrafındakilere broadcast yaparım.

canlı mantığını ben sevmiyorum, unique öldükten sonra ne kadar damage ile kaçırıp/kazandığını görmek güzel. canlı olduğu zaman genelde kimin alacağı belli oluyor, heyecanı kalmıyor o işin.
 
Oyla 0
valla laf bana mı geliyor bilmiyorum ama, gereksiz üstüme alınıyorsam bile cevap vereyim, bu packetleri hiç parse etmedim ucundan bile bakmadım :)

Vs6Pcab.png


gameserver obje ölene kadar tüm damageleri hafızada tutuyor zaten, obje ölünce verileri çekip, istediğim gibi şekillendirip clientlere yolluyorum. hesaplanmış bir şekilde varken tekrar paketleri okuyup hesaplamak hamallık gibi geliyor... tabi bunun yapılması için bir de %100 doğru groupspawn parse da lazım. bildiğim kadarıyla b071'de değişken bitler vs. de var dediğin gibi her durum için %100 doğru parser yapmak zor.

yaptığım şekilde canlı olmuyor tabi ki, canlı yapacak olursam da muhtemelen damage'in hafızaya yazıldığı yeri bulup hook atarım, veri işlendikçe objenin etrafındakilere broadcast yaparım.

canlı mantığını ben sevmiyorum, unique öldükten sonra ne kadar damage ile kaçırıp/kazandığını görmek güzel. canlı olduğu zaman genelde kimin alacağı belli oluyor, heyecanı kalmıyor o işin.
Yok yok kesinlikle sana sitemim yok 😇

Anlığı ben de sevimli bulmuyorum ama talep bu yöndeydi. Damageler birbirine yakın ilerlediği durumlarda heyecanı arttırıyor tabi de bu her zaman olmuyor haliyle.

Şimdi de seçenekli istiyorlar anlık veya ölünce şeklinde 😂

Gameserver hook yöntemi b071’den daha mantıklı ama sanki b071 daha kolay gibi. En azından şimdilik benim için öyle.

Ve b071 kullanınca hata payı var. Petlerin Damageleri eklenebilir ama Debuff Damagelerinde iş baya zorlaşıyor.

Laf sana gelmiyor, aksine sana saygı duyuyorum 😊
 
Oyla 0
Unique öldüğü anda partinin total hasarına göre seçiyor keseni. Karahanlı en çok hasarı vurmuş olabilir ama Gottin'in partisinin total hasarı daha fazla. O partinin en çok vuranı da Gottin.
 
Oyla 0
Geri
Üst Alt