- #1
Konu Sahibi
: serkankacan
[KAYNAK KOD & GELİŞTİRME] Knight Online Oyuna Girişte Otomatik Karşılama & Bilgilendirme Mesajı
CUser (User.cpp / User.h) Üzerinden Girişte Oyuncuya Özel Whisper, Sistem Duyurusu ve Sunucu Saati Bildirimi
CUser (User.cpp / User.h) Üzerinden Girişte Oyuncuya Özel Whisper, Sistem Duyurusu ve Sunucu Saati Bildirimi
Merhaba değerli forum sakinleri,
Knight Online sunucularında (v1299, v1534, v19xx, v2xxx) oyuncu oyuna ilk adım attığında sunucu kurallarını, Discord/Web adresini, anlık sunucu saatini ve kişiye özel bir karşılama mesajını chat penceresine otomatik olarak iletmek profesyonel bir sunucu intibası bırakır.
Sorun & Optimizasyon Farkı:
Paylaşılan ham kodda:
- Metin içinde "Whisper ile gönderme" denmesine rağmen paket türü olarak
GENERAL_CHATvePUBLIC_CHATkullanılmıştır; bu durum mesajın sadece o oyuncuya değil, çevredeki diğer oyunculara da gereksiz chat spam'i yapmasına neden olabilir. - HTML karakter hataları (
<<,&) derleme (compile) esnasında C++ sözdizimi hatalarına yol açar. CUser::UserInOutiçerisindeki doğru tetikleme noktası belirtilmediği için fonksiyon çağrılmadığında çalışmaz.
Aşağıda hem doğrudan kişiye özel özel mesaj (
WHISPER veya WAR_SYSTEM_CHAT) modlarıyla optimize edilmiş fonksiyonu hem de çağrılması gereken doğru entegrasyon yerini bulabilirsiniz.Teknik Bilgilendirme & Paket Türleri' Alıntı:DİKKAT:
- Kişiye Özel Mesaj (ChatType): Karşılama mesajlarının sadece giren oyuncuya görünmesi için
WAR_SYSTEM_CHAT(Sarı Sistem Yazısı) veyaWHISPERkullanılır; böylece çevreye genel chat paketi saçılmaz.- DateTime / Sunucu Saati: Sunucu makinesinin yerel saatini formatlayarak oyuncunun zaman farkını görmesini sağlar.
- İşlem öncesinde **Ebenzer / GameServer** kaynak dosyalarınızın yedeğini almayı unutmayınız.
1. ADIM: User.h Başlık Dosyasına Fonksiyon Tanımı
Projenizdeki **User.h** dosyasını açın ve `public:` bloğu altına fonksiyon prototipini ekleyin:
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
2. ADIM: User.cpp Dosyasına Fonksiyon Kodunun Eklenmesi
**User.cpp** dosyasını açıp en alta (veya uygun bir metot bloğuna) aşağıdaki optimize edilmiş C++ fonksiyonunu yapıştırın:
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
3. ADIM: Fonksiyonun Oyuna Giriş Anında Çağrılması
Mesajların karakter haritaya tamamen yüklendiğinde görünmesi için **User.cpp** içerisinde **
CUser::UserInOut** fonksiyonunu bulun:
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
Nasıl Derlenir & Test Edilir?
- Değişiklikleri kaydettikten sonra Visual Studio üzerinden **GameServer** projenizi derleyin (Build / Rebuild).
- Derlenen
GameServer.exedosyasını sunucu klasörünüze atıp çalıştırın. - Oyuna herhangi bir karakterle giriş yapın.
- Harita yüklendiği anda chat pencerenizde sarı sistem yazısıyla adınıza özel karşılama metninin, sunucu saatinin ve
SYSTEMadıyla gelen özel mesajın belirdiğini doğrulayın.
Sorularınızı ve farklı chat türleri ile bildirim gönderme taleplerinizi konu altından paylaşabilirsiniz. Herkese keyifli kodlamalar!

