[C++] Full Renewal For Safebox Password System

MT2Dev

Cplusplus
Premium Üye
Geliştirici
Usta Üye
Mesaj
305
Çözümler
19
Beğeni
541
Puan
824
Ticaret Puanı
0
GİRİŞ & PROBLEM

Merhaba, oyundaki depo şifresi sistemine bir yenileme yapmayı uzun zamandır istiyordum, vakit bulduğum ilk anda bununla ilgilenmek istedim, sonucunda ortaya çıkan kodun kullanışlı olduğunu düşünüyorum, bu yüzden herkesin kullanabilmesi adına sizlerle paylaşıyorum.

Bunu yapmamdaki en büyük etken aslında @Kaptan Yosun 'un u7 güncellemesinde depo şifresiyle alakalı yaptığını söylediği bir güncellemeyi okumamdı, onu gördükten sonra bununla alakalı bir düzenleme yapma fikri ağır bastı, dolayısıyla kendisine teşekkürler, fark etmeden de olsa foruma yeni bir içerik oluşturulmasına katkı sağladı. 😄


NEDEN & NELERİ DEĞİŞTİRDİK ?

Fonksiyonlar içerisinde bir çok kontrol eksikti, bu tarz oyuncuların bir yazı girerek seçim yapabildiği sistemlerde oyunculara çok fazla özgürlük tanımanın kötüye kullanım ihtimalinin önünü açabileceğini düşünüyorum, hem bununla alakalı hem de oyuncuların şifre güvenliğiyle alakalı durumlar için yenilik ve kontroller eklendi, kısaca neler yaptığımıza bakalım;

- Şifre yalnızca rakamlardan oluşabilir.
- Şifre maksimum 6 minimum 4 rakamdan oluşabilir.
- Oyuncu şifresini değiştirmez ve "000000" olarak kullanmaya devam ederse, depoyu veya market deposunu her açtığında şifresini değiştirmesi gerektiğini göreceği bir uyarı mesajıyla karşılaşır.
- Oyuncu şifre değiştirmek için depocunun yakınında olmalıdır. (Tercih etmeyenler basitçe yorum satırı haline getirebilir)
- Oyuncu şifre değiştirirken yeni şifresi olarak mevcut şifresini yazarsa uyarı alır ve işlem tamamlanmaz.
- Oyuncu şifre değiştirirken yeni şifresini "000000" yapmak isterse başka bir şifre seçmesi istenir ve işlem tamamlanmaz.


DİKKAT!

Komple değiştirilmesi gereken fonksiyonlarda eğer hali hazırda kullandığınız bir sistem veya fixle alakalı kodlar varsa bunu benim verdiğim fonksiyona uyarladıktan sonra bu değişikliği yapmanız gerektiğini unutmayın.

NASIL YAPILIR ?

Öncelikle "char.cpp" dosyası açılır.

Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Daha sonra "cmd_general.cpp" dosyası açılır.

Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Son olarak "locale_string.txt" açılır ve en alta eklenir.


Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.

Kolay gelsin, MT2Dev.
 
Son düzenleme:
aynı şifreyi tekrar girince eşyayı yakınca pencere geliyor ya o şekil bir pencere çıksa daha iyi olur alttaki yazı yerine sanki ama bu hali de güzel eline sağlık
 
aynı şifreyi tekrar girince eşyayı yakınca pencere geliyor ya o şekil bir pencere çıksa daha iyi olur alttaki yazı yerine sanki ama bu hali de güzel eline sağlık
Aslında aklımdan geçti ama oyuncuları fazla da darlamayalım dedim, değiştirmezse kendi bilir ben onun iyiliği için istiyorum. :ROFLMAO:
 
Paylaşım için teşekkür ederim açtığın her konu ve attığın her yorumu detaylıca inceliyorum bir şeyler kapmak adına bir sorum olucaktı bu sistemde

Oyuncu şifre değiştirmek için depocunun yakınında olmalıdır. (Tercih etmeyenler basitçe yorum satırı haline getirebilir) yorum satırına alınması gereken yer neresi acaba?
 
Paylaşım için teşekkür ederim açtığın her konu ve attığın her yorumu detaylıca inceliyorum bir şeyler kapmak adına bir sorum olucaktı bu sistemde

Oyuncu şifre değiştirmek için depocunun yakınında olmalıdır. (Tercih etmeyenler basitçe yorum satırı haline getirebilir) yorum satırına alınması gereken yer neresi acaba?
Ben teşekkür ederim güzel yorumun için, şu bölümü deaktif etmen yeterli olacaktır;


C++:
Genişlet Daralt Kopyala
// Basically before this one added, player can change the password where ever they want,
    // So we added little check for prevent this. - [MT2Dev Note] - 22/05/2024
    if (ch->GetDistanceFromSafeboxOpen() > 1000)
    {
        ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("<창고> 거리가 멀어서 창고를 열 수 없습니다."));
        return;
    }
 
Ben teşekkür ederim güzel yorumun için, şu bölümü deaktif etmen yeterli olacaktır;


C++:
Genişlet Daralt Kopyala
// Basically before this one added, player can change the password where ever they want,
    // So we added little check for prevent this. - [MT2Dev Note] - 22/05/2024
    if (ch->GetDistanceFromSafeboxOpen() > 1000)
    {
        ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("<창고> 거리가 멀어서 창고를 열 수 없습니다."));
        return;
    }
Teşekkür ederim
 
ACMD (do_safebox_change_password) bende yok herşekilde aradım :D :) :)
 
Paylaşım için teşekkür ederim.
Bu dediğiniz kısım tam olarak neresi ?
Rica ederim, şu bölümden halledebilirsiniz;

C++:
Genişlet Daralt Kopyala
    // Basically before this one added, player can change the password where ever they want,
    // So we added little check for prevent this. - [MT2Dev Note] - 22/05/2024
    if (ch->GetDistanceFromSafeboxOpen() > 1000)
    {
        ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("<창고> 거리가 멀어서 창고를 열 수 없습니다."));
        return;
    }
 
Envanter yan menüde depo buttonu var depocunun dibindeyken açılıyor, ancak uzaklaşınca veya başka bir yerdeyken depo açılmıyor.
Yorum satırı yaptığım yerle alakalı olabilir diye onu da yaptım ancak sonuç yine aynı ne yapmalıyım?
 
Envanter yan menüde depo buttonu var depocunun dibindeyken açılıyor, ancak uzaklaşınca veya başka bir yerdeyken depo açılmıyor.
Yorum satırı yaptığım yerle alakalı olabilir diye onu da yaptım ancak sonuç yine aynı ne yapmalıyım?
Yok bu bölüm sadece depo şifresi değiştirirken yapılan kontrol, o dediğiniz durum için server src'de şu bölümü deaktif etmeniz gerek;

char.cpp:
Genişlet Daralt Kopyala
// BUL;

void CHARACTER::ReqSafeboxLoad (const char* pszPassword)
    
// DEAKTİF ET;
    
    if (GetDistanceFromSafeboxOpen() > 1000)
    {
        ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("<창고> 거리가 멀어서 창고를 열 수 없습니다."));
        return;
    }
 
Yok bu bölüm sadece depo şifresi değiştirirken yapılan kontrol, o dediğiniz durum için server src'de şu bölümü deaktif etmeniz gerek;

char.cpp:
Genişlet Daralt Kopyala
// BUL;

void CHARACTER::ReqSafeboxLoad (const char* pszPassword)
    
// DEAKTİF ET;
    
    if (GetDistanceFromSafeboxOpen() > 1000)
    {
        ChatPacket (CHAT_TYPE_INFO, LC_TEXT ("<창고> 거리가 멀어서 창고를 열 수 없습니다."));
        return;
    }
Yardımlarınız için çok teşekkür ederim, uğraştırdım sizi sağolun şuan sorunsuz şekilde açılıyor. :loveya:
 
Üst