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 563

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Konular
48,285
Mesajlar
48,595
Tepkime puanı
75
M2 Yaşı
3 yıl 11 ay 10 gün
Trophy Puan
48
Konum
Web sitesi
M2 Yang
488,819
Ticaret : 1 / 0 / 0
Ticaret Oranı : 100%

[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