Çözüldü Reboot Sonrası İtem Kaybı Önleme

  • Konuyu açan Konuyu açan LethalStrikeR
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 11
  • Gösterim Gösterim 143
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.

LethalStrikeR

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
778
Çözümler
41
Beğeni
196
Puan
975
Ticaret Puanı
0
Selamlar,

Reboot sonrası item kaybını önlemek için yapılan bir fix var mı items tablosu hemen güncellenmiyor bildiğiniz üzere bu durumla alakalı olarak aktif oyunda kanal düşmesi gibi durumlarda nasıl bir önlem alınabilir?
 
Çözüm
@Luigina 'dan alıntı

Normalde dosyalarınızın flush süresine bağlı olarak flush işlemi gerçekleştirilir.
Fakat vereceğim düzenlemeyle birlikte oyunda /shutdown komutu kullandığınızda tüm oyuncuların bilgilerini flush edecektir. Bu sayede /shutdown yazıp oyuncular oyundan atıldıktan sonra reboot attığınızda eşyaların kaybolması gibi bir durum olmayacaktır.

Anlatım için
C++:
Genişlet Daralt Kopyala
CommonDefines.h veya service.h içerisine ekle

#define FLUSH_AT_SHUTDOWN

cmd_general.cpp içerisinde

struct SendDisconnectFunc

//Arat

struct SendDisconnectFunc
{
    void operator () (LPDESC d)
    {
        if (d->GetCharacter())
        {
#ifdef FLUSH_AT_SHUTDOWN
            d->GetCharacter()->SaveReal();
            DWORD pid =...
Oyunu reboot ile değil shutdown ile kapat
Tamam sadece bakıma alınacağı zaman değil channel crash yediğinde ne olacak vrunner aktif olduğunda pid düştüğünü anlayıp hemen aktif hale getirecek o core içinde sorun değil mı ? Yoksa item kaybının sebebi core değilde dbnin açılıp kapanmasıyla mı ilgili oluyor?

Birde shutdown çekip ardından hemen reboot attığımızda kayıp olmuyor mu ?
 
@Luigina 'dan alıntı

Normalde dosyalarınızın flush süresine bağlı olarak flush işlemi gerçekleştirilir.
Fakat vereceğim düzenlemeyle birlikte oyunda /shutdown komutu kullandığınızda tüm oyuncuların bilgilerini flush edecektir. Bu sayede /shutdown yazıp oyuncular oyundan atıldıktan sonra reboot attığınızda eşyaların kaybolması gibi bir durum olmayacaktır.

Anlatım için
C++:
Genişlet Daralt Kopyala
CommonDefines.h veya service.h içerisine ekle

#define FLUSH_AT_SHUTDOWN

cmd_general.cpp içerisinde

struct SendDisconnectFunc

//Arat

struct SendDisconnectFunc
{
    void operator () (LPDESC d)
    {
        if (d->GetCharacter())
        {
#ifdef FLUSH_AT_SHUTDOWN
            d->GetCharacter()->SaveReal();
            DWORD pid = d->GetCharacter()->GetPlayerID();
            db_clientdesc->DBPacketHeader(HEADER_GD_FLUSH_CACHE, 0, sizeof(DWORD));
            db_clientdesc->Packet(&pid, sizeof(DWORD));
#endif
            if (d->GetCharacter()->GetGMLevel() == GM_PLAYER)
                d->GetCharacter()->ChatPacket(CHAT_TYPE_COMMAND, "quit Shutdown(SendDisconnectFunc)");
        }
    }
};

//Fonksiyonu bu şekilde değiştiriniz.

cmd_gm.cpp içerisinde

ACMD(do_flush)
{

//Aratınız

ACMD(do_flush)
{
    char arg1[256];
    one_argument(argument, arg1, sizeof(arg1));
#ifdef FLUSH_AT_SHUTDOWN
    DWORD pid = 0;
    if(0 == arg1[0])
        pid = ch->GetPlayerID();
    else
        pid = (DWORD)strtoul(arg1, NULL, 10);

    if (pid != 0)
    {
        ch->SaveReal();
        db_clientdesc->DBPacketHeader(HEADER_GD_FLUSH_CACHE, 0, sizeof(DWORD));
        db_clientdesc->Packet(&pid, sizeof(DWORD));
    }
#else
    if (0 == arg1[0])
    {
        ch->ChatPacket(CHAT_TYPE_INFO, "usage : /flush player_id");
        return;
    }

    DWORD pid = (DWORD)strtoul(arg1, NULL, 10);

    db_clientdesc->DBPacketHeader(HEADER_GD_FLUSH_CACHE, 0, sizeof(DWORD));
    db_clientdesc->Packet(&pid, sizeof(DWORD));
#endif
}

//Fonksiyonu bu şekilde değiştiriniz.

Örnek resimler:

 
En son bir moderatör tarafından düzenlenmiş:
Çözüm
@Luigina 'dan alıntı

Normalde dosyalarınızın flush süresine bağlı olarak flush işlemi gerçekleştirilir.
Fakat vereceğim düzenlemeyle birlikte oyunda /shutdown komutu kullandığınızda tüm oyuncuların bilgilerini flush edecektir. Bu sayede /shutdown yazıp oyuncular oyundan atıldıktan sonra reboot attığınızda eşyaların kaybolması gibi bir durum olmayacaktır.

Anlatım için

Örnek resimler:

Çok teşekkür ederim bu işimi fazlasıyla görecektir. Kanal düşünce db core yeniden başlatmadan sadece düşen kanalın core yeniden başlatılınca bu item kaybı sorunu meydana gelmiyor değil mi ?
 
Çok teşekkür ederim bu işimi fazlasıyla görecektir. Kanal düşünce db core yeniden başlatmadan sadece düşen kanalın core yeniden başlatılınca bu item kaybı sorunu meydana gelmiyor değil mi ?
Ona bir etkisi olduğunu sanmıyorum. Çünkü gördüğüm kadarıyla komuta bir işlem yapılıyor. Tabi işi bilen birisi olmadığım için net bir şey diyemiyorum.
 
Çok teşekkür ederim bu işimi fazlasıyla görecektir. Kanal düşünce db core yeniden başlatmadan sadece düşen kanalın core yeniden başlatılınca bu item kaybı sorunu meydana gelmiyor değil mi ?
Senin kanalların niye düsüyor oyununda ne sorun varda vrunner felan kurmuşsun birşey diyim ama yanlıs anlama vrunner kurduysan o filesi çöpe at o files işe yaramaz güvenmedigin bi filesi kullanma benden tavsiye
 
Senin kanalların niye düsüyor oyununda ne sorun varda vrunner felan kurmuşsun birşey diyim ama yanlıs anlama vrunner kurduysan o filesi çöpe at o files işe yaramaz güvenmedigin bi filesi kullanma benden tavsiye
Test edilmeyen bir ürünü canlıya alırken illaki hatalar veya sorunlarla karşılaşabiliriz. Sistemlerin testi kapalı betada illaki yapılıyor ama yüksek kullanıcıda hatalar daha çok ortaya çıkar denenmeyen şeyler denenir. Sen biraz işin alıcı kısmındasın anlaşılan yapıcı tarafta değilsin. Burada bol sistemli files yapıpta özelleştirip sistemleri direkt olarak server açtığında ch düşmeyeceğini garanti verebilen bir tane developer bulamazsın.
Ona bir etkisi olduğunu sanmıyorum. Çünkü gördüğüm kadarıyla komuta bir işlem yapılıyor. Tabi işi bilen birisi olmadığım için net bir şey diyemiyorum.
Tamam hocam ben koda bakıp gerekli kontrolleri sağlayıp konunun altına yazıp konuyu kapattıracağım. Attığınız link için teşekkürler.
 
Test edilmeyen bir ürünü canlıya alırken illaki hatalar veya sorunlarla karşılaşabiliriz. Sistemlerin testi kapalı betada illaki yapılıyor ama yüksek kullanıcıda hatalar daha çok ortaya çıkar denenmeyen şeyler denenir. Sen biraz işin alıcı kısmındasın anlaşılan yapıcı tarafta değilsin. Burada bol sistemli files yapıpta özelleştirip sistemleri direkt olarak server açtığında ch düşmeyeceğini garanti verebilen bir tane developer bulamazsın.

Tamam hocam ben koda bakıp gerekli kontrolleri sağlayıp konunun altına yazıp konuyu kapattıracağım. Attığınız link için teşekkürler.
şunu iyi bilmelisin bunun icin beta server acmalısın öncesinde bin liralık bi reklamla bile oyunu 50 60 kisiyle denetebilirsin zaten beta acmadan aktif sunucu acmakda sacma su an cogu kisi böyle yapıyor
 
şunu iyi bilmelisin bunun icin beta server acmalısın öncesinde bin liralık bi reklamla bile oyunu 50 60 kisiyle denetebilirsin zaten beta acmadan aktif sunucu acmakda sacma su an cogu kisi böyle yapıyor
sana 1000 lira veriyorum aç oyununu 50 kişi görücem oyunda eğer görmezsem iki katını alırım uygun mudur?
 
Geri
Üst