- Katılım
- 16 May 2025
- Konular
- 15
- Mesajlar
- 59
- Online süresi
- 3d 22h
- Reaksiyon Skoru
- 25
- Altın Konu
- 0
- TM Yaşı
- 1 Yıl 21 Gün
- Başarım Puanı
- 38
- MmoLira
- 1,125
- DevLira
- 15
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ 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
[CODE title="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:
estroy()'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:
estroy() 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:
estroy() 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 },[/CODE]
simdiden ty dostlar [CODE title="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:
estroy()'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:
estroy() 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:
estroy() 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 },[/CODE]

