- Katılım
- 16 May 2025
- Konular
- 15
- Mesajlar
- 58
- Online süresi
- 3g 65547s
- Reaksiyon Skoru
- 24
- Altın Konu
- 0
- Başarım Puanı
- 28
- TM Yaşı
- 11 Ay 8 Gün
- MmoLira
- 1,032
- DevLira
- 15
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
simdi söyle birşey deniyorum yapay zekadan yardım alarak karakterle pazar kurup /clientless yaptıgımda karakterin offline geçmesi lazım suanda geçiyor ama tekrar giriş yapamıyorum kod satırıma bakarmısınız neler eksik bitane silkroadda sunucuda vardı aynı sistemi umarım buraya entegree edeceğim
simdiden ty dostlar
Offline system yazmaya çalısıyorumm XD:
// cmd.cpp dosyasında, do_clientless fonksiyonunun tamamı
ACMD(do_clientless)
{
// Kontrol: Sadece oyuncunun standart pazar dükkanı varsa clientless moduna geçsin.
// Kaynağınızdaki hata veren GetOfflineShop() kontrolü kaldırıldı.
if (!ch->GetShop())
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bu komutu kullanmak için aktif bir dükkanınız olmalıdır."));
return;
}
// Yere atılmış eşya kontrolü kaldırıldı (GetGroundItem hatasını gidermek için).
// Güvenlik için, bu kontrolü yapan bir fonksiyonunuz varsa eklemeniz önerilir.
// Karakterin clientless moduna geçişini işaretle (char.h'a eklediğiniz fonksiyon)
ch->SetOfflineMode(true);
// Oyuncuya bilgi mesajı gönder
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Oyun bağlantınız kesiliyor. Karakteriniz oyunda kalacaktır."));
// Bağlantıyı kesme işlemi (DESC::Destroy()'u tetiklemesi için)
LPDESC d = ch->GetDesc();
if (d)
{
// 1. Karakteri kaydet
ch->Save();
// 2. Bağlantıyı kapatma fazına geçir.
// Bu, DESC::Destroy() fonksiyonunu tetikleyecek ve karakteri silme işi orada yönetilecek.
// 'Close()' hatasını gidermek için SetPhase kullanıldı.
d->SetPhase(PHASE_CLOSE);
// Bu noktada d->m_lpCharacter = NULL; işlemi yapılmaz.
// Çünkü bu, DESC::Destroy() fonksiyonunda, IsOfflineMode() kontrolü içinde yapılacaktır.
sys_log(0, "CLIENTLESS_COMMAND: %s Karakteri clientless (ID: %u) moduna geçti.", ch->GetName(), ch->GetPlayerID());
}
else
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Bağlantı bulunamadığı için komut başarısız oldu."));
}
}
------------------------------------------------------------------------------------------
{ "clientless", do_clientless, 0, POS_DEAD, GM_PLAYER },

