Çözüldü Won sisteminden game core yiyorum

  • Konuyu açan Konuyu açan Shooter
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 29
  • Gösterim Gösterim 263
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.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

Shooter

Üye
Üye
Mesaj
74
Çözümler
3
Beğeni
22
Puan
479
Ticaret Puanı
0
Merhaba won sistemi ekli fileste won sınırından fazla won gelmeye çalıştığı zaman game core yiyorum ve sunucular kapanıyor player sql i bigint yaptım nafile hala aynı
 
Çözüm
sorunum çözülmüştür şu şekilde ayarladım

cheque:
Genişlet Daralt Kopyala
#ifdef ENABLE_CHEQUE_SYSTEM
    case POINT_CHEQUE:
    {
        const int64_t nTotalCheque = static_cast<int64_t>(GetCheque()) + static_cast<int64_t>(amount);

        if (amount > 0 && nTotalCheque > CHEQUE_MAX)
        {
            sys_err("[OVERFLOW_CHEQUE] OriCheque %lld AddedCheque %lld id %u Name %s ",
                static_cast<long long>(GetCheque()),
                static_cast<long long>(amount),
                GetPlayerID(),
                GetName());

            LogManager::instance().CharLog(this, nTotalCheque, "OVERFLOW_CHEQUE", "");
            return;
        }

        SetCheque(nTotalCheque);
        val = GetCheque();
    }
    break;
#endif
 
bende pek işe yaradığı söylenemez

gdb:
Genişlet Daralt Kopyala
(gdb) core game_r41094.core
[New LWP 100330]
[New LWP 100350]
[New LWP 100351]
[New LWP 100358]
Core was generated by `./srv1-ch1-core1'.
Program terminated with signal SIGSEGV, Segmentation fault.
Address not mapped to object.
#0  0x2102d60d in ?? ()
[Current thread is 1 (LWP 100330)]
(gdb) bt
#0  0x2102d60d in ?? ()
#1  0x00438f51 in ?? ()
#2  0x00000000 in ?? ()
(gdb)
 
bende pek işe yaradığı söylenemez

gdb:
Genişlet Daralt Kopyala
(gdb) core game_r41094.core
[New LWP 100330]
[New LWP 100350]
[New LWP 100351]
[New LWP 100358]
Core was generated by `./srv1-ch1-core1'.
Program terminated with signal SIGSEGV, Segmentation fault.
Address not mapped to object.
#0  0x2102d60d in ?? ()
[Current thread is 1 (LWP 100330)]
(gdb) bt
#0  0x2102d60d in ?? ()
#1  0x00438f51 in ?? ()
#2  0x00000000 in ?? ()
(gdb)
bt full yazmayı dener misin?
 
bt full yazmayı dener misin?
gdb:
Genişlet Daralt Kopyala
(gdb) core game_r41094.core
[New LWP 100330]
[New LWP 100350]
[New LWP 100351]
[New LWP 100358]
Core was generated by `./srv1-ch1-core1'.
Program terminated with signal SIGSEGV, Segmentation fault.
Address not mapped to object.
#0  0x2102d60d in ?? ()
[Current thread is 1 (LWP 100330)]
(gdb) bt full
#0  0x2102d60d in ?? ()
No symbol table info available.
#1  0x00438f51 in ?? ()
No symbol table info available.
#2  0x00000000 in ?? ()
No symbol table info available.
(gdb)
 
debug değil de release kullandığım için mi göstermiyor acaba tekrar build aliyim mi gerek var mı
 
debug değil de release kullandığım için mi göstermiyor acaba tekrar build aliyim mi gerek var mı
Bir ihtimal.. olabilir.
Ayrıca bu ekranlar bana pek normal gelmedi. Core hiç açılmamış gibi görünüyor. Komutların doğru olduğuna emin misin?

kullandığın gcc sürümü ve gdb sürümü nedir?
 
Bir ihtimal.. olabilir.
Ayrıca bu ekranlar bana pek normal gelmedi. Core hiç açılmamış gibi görünüyor. Komutların doğru olduğuna emin misin?

kullandığın gcc sürümü ve gdb sürümü nedir?

GNU gdb (GDB) 15.1 [GDB v15.1 for FreeBSD]

gcc (FreeBSD Ports Collection) 13.3.0

ve ayrıca şöyle bişey var file komutunu kullanamıyorum game yazıyorum olmuyor game_r41094 yazıyorum olmuyor
 
Bir ihtimal.. olabilir.
Ayrıca bu ekranlar bana pek normal gelmedi. Core hiç açılmamış gibi görünüyor. Komutların doğru olduğuna emin misin?

kullandığın gcc sürümü ve gdb sürümü nedir?
gdb:
Genişlet Daralt Kopyala
Core was generated by `./srv1-ch1-core1'.
Program terminated with signal SIGSEGV, Segmentation fault.
Address not mapped to object.
#0  strlen (str=0x2 <error: Cannot access memory at address 0x2>)
    at /usr/src/lib/libc/string/strlen.c:92
warning: 92     /usr/src/lib/libc/string/strlen.c: No such file or directory
[Current thread is 1 (LWP 100330)]
(gdb) bt full
#0  strlen (str=0x2 <error: Cannot access memory at address 0x2>)
    at /usr/src/lib/libc/string/strlen.c:92
        lp = 0x0
        va = <optimized out>
        p = <optimized out>
        vb = <optimized out>
#1  0x20f8e68c in __vfprintf (fp=0xffbfaec4,
    locale=0x2103b18c <__xlocale_global_locale>,
    fmt0=0x438f16 "[OVERFLOW_CHEQUE] OriCheque %d AddedCheque %d id %u Name %s ",
    ap=<optimized out>) at /usr/src/lib/libc/stdio/vfprintf.c:908
        xdigs_lower = "0123456789abcdef"
        xdigs_upper = "0123456789ABCDEF"
        initial = <optimized out>
        gs = {thousands_sep = 0x0, thousep_len = 0, grouping = 0x0, lead = 0,
          nseps = 0, nrepeats = 0}
        fparg = {dbl = 0, ldbl = 0}
        expstr = "\000\000\000\000\000\000\000"
        io = {fp = 0x30393939, uio = {uio_iov = 0xffbfaec4, uio_iovcnt = -4215224,
            uio_resid = 1}, iov = {{iov_base = 0x6, iov_len = 4427593}, {
              iov_base = 0x6, iov_len = 4290752055}, {iov_base = 0x1, iov_len = 0},
            {iov_base = 0x0, iov_len = 0}, {iov_base = 0x0, iov_len = 0}, {
              iov_base = 0x0, iov_len = 0}, {iov_base = 0x0, iov_len = 0}, {
              iov_base = 0x0, iov_len = 0}}}
 
Core dosyası kısayol olduğu için böyle yazıyor .core dosyasının olduğu dizinin görselini atarmısın
 

Dosya Eklentileri

  • Ekran görüntüsü 2025-03-27 202350.webp
    Ekran görüntüsü 2025-03-27 202350.webp
    37,9 KB · Gösterim: 32
Gdb yazdıktan sonra
file srv1-ch1-core1
Yaz sonra BT full yaz öyle bak
 
OriCheque %llu AddedCheque %llu

Olarak değiştirip denermisin bi
 
O kod bloğunu atarmısın bi
cheque:
Genişlet Daralt Kopyala
#ifdef ENABLE_CHEQUE_SYSTEM
        case POINT_CHEQUE:
        {
            const int64_t nTotalCheque = static_cast<int64_t>(GetCheque()) + static_cast<int64_t>(amount);
            if (CHEQUE_MAX <= nTotalCheque)
            {
                sys_err("[OVERFLOW_CHEQUE] OriCheque %d AddedCheque %d id %u Name %s ", GetCheque(), amount, GetPlayerID(), GetName());
                LogManager::instance().CharLog(this, GetCheque() + amount, "OVERFLOW_CHEQUE", "");
                return;
            }
            SetCheque(GetCheque() + amount);
            val = GetCheque();
        }
        break;
#endif
 
if (CHEQUE_MAX <= nTotalCheque)

Değiştir

if (amount > 0 && GetCheque() > CHEQUE_MAX - amount)
Mobildeyim olmazsa PC geçince bakalım
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst