Neler yeni

Foruma hoş geldin, Ziyaretçi

Metin2Lobby.com Metin2 Private Server Tanıtım Advertising Ve Geliştirme Forumudur.Metin2 pvp serverler,1-99,1-105,1-120,55-120 global serverları paylaş yada ara.
Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Kod [C++] Karakter İtem Yang Kopyalama Fix!

  • Konbuyu başlatan Admin
  • Başlangıç tarihi
  • Cevaplar 0
  • Görüntüleme 200

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Konular
22
Mesajlar
237
Tepkime puanı
14
M2 Yaşı
1 yıl 9 ay 28 gün
Trophy Puan
18
Konum
Web sitesi
M2 Yang
4,909
Ticaret : 0 / 0 / 0
Ticaret Oranı : 0%

[C++] Karakter İtem Yang Kopyalama Fix!


Hatayı çok basit şekilde anlatıyorum.
Burası oyuna giriş yaparken yapılan kontrollerden birisi ve hesabın oyunda olup olmadığını kontrol ediyor.
1676201303983.png

Normalde bu sorgunun ne ile olmasını beklersiniz? İpucu: Hesap ile ilgili unique veriler 'id' ve 'name'dir.
Evet cevaba gelelim bu sorgu 'name' ile yapılmaktadır. login değişkeni hesap adını içermektedir.
1676201407891.png

Yani sonuç olarak oyunda olan bir hesabın kullanıcı adı değiştirildiğinde ikinci defa aynı hesaba girilmektedir.
Çözüme gelecek olursak
1.Çözüm: 'name' değeri unique olduğu ve bu değer üzerinden kontroller gerçekleştiği için bu değeri değiştirmek gibi bir hata yapmamanız.
2.Çözüm: Bu çözümde asıl olması gerekeni yazıyorum. Bu kontroller 'id' üzerinden gerçekleşmeliydi. 'name' yerine 'id' kullanırsanız bu problem yaşanmaz.
Bunun için;
FindByLoginName
ConnectAccount
DisconnectAccount
1676201851022.png

bu yazdığım fonksiyonlarda 'std::string& login' yerine 'DWORD id' yazıp DisconnectAccount(login) ve ConnectAccount(login) olan yerleri id olarak değiştirmeniz gerek.
Son olarak bu mapin DWORD tutması için
typedef std::unordered_map<std::string, LPDESC> DESC_LOGINNAME_MAP;
yerine
typedef std::unordered_map<DWORD, LPDESC> DESC_LOGINNAME_MAP;
yazın.
Oyuncudan gelen mesaj ile hesap ismi değiştirmezseniz bu kadar düzenlemeye zahmet etmek zorunda olmazsınız.
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kaydol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Üye ol
Giriş Yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş Yap

Tema düzenleyici

Tema özelletirmeleri

AdBlock Detected

Anlıyoruz, reklamlar can sıkıcı!

Elbette, reklam engelleme yazılımı reklamları engellemede harika bir iş çıkarır, ancak aynı zamanda web sitemizin faydalı özelliklerini de engeller. En iyi site deneyimi için lütfen AdBlocker'ınızı devre dışı bırakın.

AdBlock'u Devre Dışı Bıraktım.