Çözüldü REBOTTAN SONRA 4 TAŞ KAYBOLMA SORUNU

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.

alemji21

Üye
Üye
Mesaj
97
Çözümler
9
Beğeni
35
Puan
469
Ticaret Puanı
0
Merhaba arkadaşlar Serverime Bu Konudaki 4 Taş sistemini ekledim Ama Oyuna Reboot Atınca 4 Taş Kaybolma Sorunu Var Bunu Naıl Fixlerm Yardımlarınzı Bekleyorum.. İteme 4 Taş Ekleme Sistemi
 
Çözüm
MySQL item tablosuna yeni socket sütunlarını da eklediniz mi?
Ekleme: Linkte belirttiğiniz konuda sanki eksik kodlar var gibi. Bu sistem için başka yerlerden de düzenleme yapılması gerekiyordu ama tam hatırlamıyorum. Eski filesimde ki kodlara bakmam gerek.

db/src/cache.cpp dosyasında CItemCache::OnFlush() fonksiyonu içinde şu satırı aratın;
C++:
        if (isSocket)
        {
            iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ", socket0, socket1, socket2");
            iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen,
                    ", %lu, %lu, %lu", p->alSockets[0], p->alSockets[1], p->alSockets[2]);
            iUpdateLen += snprintf(szUpdate + iUpdateLen...
Ekli olan tüm itemlerden dirke 4 taş siliniyor mu yoksa taş ekleyip reboot attıktan sonra o eklediğin itemdeki taşlarmı gidiyor ?
 
MySQL item tablosuna yeni socket sütunlarını da eklediniz mi?
Ekleme: Linkte belirttiğiniz konuda sanki eksik kodlar var gibi. Bu sistem için başka yerlerden de düzenleme yapılması gerekiyordu ama tam hatırlamıyorum. Eski filesimde ki kodlara bakmam gerek.

db/src/cache.cpp dosyasında CItemCache::OnFlush() fonksiyonu içinde şu satırı aratın;
C++:
        if (isSocket)
        {
            iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ", socket0, socket1, socket2");
            iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen,
                    ", %lu, %lu, %lu", p->alSockets[0], p->alSockets[1], p->alSockets[2]);
            iUpdateLen += snprintf(szUpdate + iUpdateLen, sizeof(szUpdate) - iUpdateLen,
                    ", socket0=%lu, socket1=%lu, socket2=%lu", p->alSockets[0], p->alSockets[1], p->alSockets[2]);
        }

Şu şekilde düzenleyin;
C++:
        if (isSocket)
        {
            iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ", socket0, socket1, socket2, socket3");
            iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen,
                    ", %lu, %lu, %lu, %lu", p->alSockets[0], p->alSockets[1], p->alSockets[2], p->alSockets[3]);
            iUpdateLen += snprintf(szUpdate + iUpdateLen, sizeof(szUpdate) - iUpdateLen,
                    ", socket0=%lu, socket1=%lu, socket2=%lu, socket3=%lu", p->alSockets[0], p->alSockets[1], p->alSockets[2], p->alSockets[3]);
        }
Bu kodları değiştirmemizin sebebi şu. Oyuna giriş yaptığınızda veritabanından itemleriniz çekilir ve bir önbelleğe alınır. Önbellekten kayıt işlemleri belli zaman aralıklarında yapılır. İlgili konuda burayla ilgili düzenleme verilmediği için son eklenen taşın silinmesi gayet normal. :)
 
Son düzenleme:
Çözüm
MySQL item tablosuna yeni socket sütunlarını da eklediniz mi?
Ekleme: Linkte belirttiğiniz konuda sanki eksik kodlar var gibi. Bu sistem için başka yerlerden de düzenleme yapılması gerekiyordu ama tam hatırlamıyorum. Eski filesimde ki kodlara bakmam gerek.

db/src/cache.cpp dosyasında CItemCache::OnFlush() fonksiyonu içinde şu satırı aratın;
C++:
        if (isSocket)
        {
            iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ", socket0, socket1, socket2");
            iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen,
                    ", %lu, %lu, %lu", p->alSockets[0], p->alSockets[1], p->alSockets[2]);
            iUpdateLen += snprintf(szUpdate + iUpdateLen, sizeof(szUpdate) - iUpdateLen,
                    ", socket0=%lu, socket1=%lu, socket2=%lu", p->alSockets[0], p->alSockets[1], p->alSockets[2]);
        }

Şu şekilde düzenleyin;
C++:
        if (isSocket)
        {
            iLen += snprintf(szColumns + iLen, sizeof(szColumns) - iLen, ", socket0, socket1, socket2, socket3");
            iValueLen += snprintf(szValues + iValueLen, sizeof(szValues) - iValueLen,
                    ", %lu, %lu, %lu, %lu", p->alSockets[0], p->alSockets[1], p->alSockets[2], p->alSockets[3]);
            iUpdateLen += snprintf(szUpdate + iUpdateLen, sizeof(szUpdate) - iUpdateLen,
                    ", socket0=%lu, socket1=%lu, socket2=%lu, socket3=%lu", p->alSockets[0], p->alSockets[1], p->alSockets[2], p->alSockets[3]);
        }
Bu kodları değiştirmemizin sebebi şu. Oyuna giriş yaptığınızda veritabanından itemleriniz çekilir ve bir önbelleğe alınır. Önbellekten kayıt işlemleri belli zaman aralıklarında yapılır. İlgili konuda burayla ilgili düzenleme verilmediği için son eklenen taşın silinmesi gayet normal. :)

Oyuna girerken hata alıyorum hocam
 
Oyunu açtıktan sonra filesin syserr kayıtlarına bir bakın. Bu dbyi ilgilendirdiği için db syserrlerine bir bakın bakalım hata filan var mı?
Birde db.core filan var mı onuda kontrol edin.
 
Oyunu açtıktan sonra filesin syserr kayıtlarına bir bakın. Bu dbyi ilgilendirdiği için db syserrlerine bir bakın bakalım hata filan var mı?
Birde db.core filan var mı onuda kontrol edin.
Sorunum çözülmüştür dediğiniz gibi db/src/cache.cpp Tek düzenlemem yeterli oldu teşekkürler. SORUN ÇÖZÜLDÜ.
 
En son bir moderatör tarafından düzenlenmiş:
Sorunum çözülmüştür dediğiniz gibi db/src/cache.cpp Tek düzenlemem yeterli oldu teşekkürler. SORUN ÇÖZÜLDÜ.

Önemli değil. :) İnsanlar paylaştığı şeyleri kontrol edip paylaşsa daha sağlıklı olacak. Piyasa da hep yarım yamalak sistem kodları dönüyor. Sizin sayenizde paylaşılan konuda ki eksikliği de görmüş olduk. Başkaları da sorun yaşamaması için o konuya da bilgi mesajı eklemem gerekecek.

Bir diğer eklemem gereken bir şey daha var.
İtem kaybının olmaması için oyunu kapatırken ilk önce kanalları en son dbyi açarkende ilk dbyi en son kanalları açın. ;)
 
Geri
Üst