OnurBoyla 1
OnurBoyla
mavzermete 1
mavzermete
xranzei 1
xranzei
Manwe Work 1
Manwe Work
noisiv 1
noisiv
Hikaye Ekle

Cevaplanmadı cube fix build hatası

  • Konuyu başlatan Konuyu başlatan mertcanayhan0606
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 2
  • Görüntüleme Görüntüleme 90

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

arkadaşlar merhaba cube item fix atıyorum ama böyle bir hata alıyorum girinti hatası diye uğraştım ama olmadı bilgisi olan varmıdır

YAZILAN KOD : #ifdef CUBE#ifdef long long required = (long long)materialInfo.material.count * count_item;
if (required > 0x7FFFFFFF)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Invalid material count (overflow detected).");
return;
}
if (ch->CountSpecifyItem(materialInfo.material.vnum) < required)
#else
#else if (ch->CountSpecifyItem(materialInfo.material.vnum) < (materialInfo.material.count * count_item))
#endif

ver#endifu hata ekte

cuberenewal.cpp:

https://dosya.co/vkkjgrno37kj/cuberenewal.cpp.html
 

Ekli dosyalar

  • Ekran görüntüsü 2025-12-21 012920.png
    Ekran görüntüsü 2025-12-21 012920.png
    18.4 KB · Görüntüleme: 0
Merhaba,

Sorunun detayı;

Derleyici, 201. satırdaki if bloğunun altındaki girintinin yanıltıcı olduğunu söylüyor. C++'da süslü parantez {} kullanmazsan if sadece kendinden sonraki ilk satırı kapsar. Ancak kodda hem str_to_number hem de value_string = v; if'e dahilmiş gibi girintilenmiş

Şu şekilde ilerlemen gerekli aşağıdaki adımları uygulayın

[CODE title="Önce bunu aratın" highlight="201. Satır sıralarında"] if ((v = strtok(NULL, delim)))
str_to_number(value1, v);
value_string = v;
[/CODE]


[CODE title="Bununla değiştir"] if ((v = strtok(NULL, delim)))
{
str_to_number(value1, v);
value_string = v;
}
[/CODE]


Diğer yaşadığın sorun ise 'i' was not declared in this scope (Satır 461)

Cube_Make fonksiyonunda oyuncunun malzemeleri olup olmadığını kontrol etmeye çalışıyorsun ancak materialInfo.material ifadesindeki i değişkeni tanımlı değil.


Kodun bu kısmında, malzemeleri kontrol etmek için bir döngü (loop) kurmamışsın. Sistem "Hangi malzemenin sayısına bakayım?" diye soruyor çünkü i diye bir sayaç yok.

[CODE title="Bunu arat"]#ifdef CUBE_NO_ITEM
long long required = (long long)materialInfo.material.count * count_item;
if (required > 0x7FFFFFFF)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Invalid material count (overflow detected).");
return;
}
if (ch->CountSpecifyItem(materialInfo.material.vnum) < required)
#else
if (ch->CountSpecifyItem(materialInfo.mater#else].vnum) < (materialInfo.material.count * count_item))
#endif
[/CODE]


Şimdi bununla değiştir

Kod:
            // Malzemeleri kontrol etme döngüsü - DUZELTME BASLANGIC
            for (DWORD i = 0; i < materialInfo.material.size(); ++i)
            {
#ifdef CUBE_NO_ITEM
                long long required = (long long)materialInfo.material[i].count * count_item;
                if (required > 0x7FFFFFFF)
                {
                    ch->ChatPacket(CHAT_TYPE_INFO, "Invalid material count (overflow detected).");
                    return;
                }
                
                if (ch->CountSpecifyItem(materialInfo.material[i].vnum) < required)
                {
                    material_check = false;
                    break;
                }
#else
                if (ch->CountSpecifyItem(materialInfo.material[i].vnum) < (materialInfo.material[i].count * count_item))
                {
                    material_check = false;
                    break;
                }
#endif
            }
            // DUZELTME BITIS
#endif
 
Son düzenleme:
arkadaşlar merhaba cube item fix atıyorum ama böyle bir hata alıyorum girinti hatası diye uğraştım ama olmadı bilgisi olan varmıdır

YAZILAN KOD : #ifdef CUBE#ifdef long long required = (long long)materialInfo.material.count * count_item;
if (required > 0x7FFFFFFF)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Invalid material count (overflow detected).");
return;
}
if (ch->CountSpecifyItem(materialInfo.material.vnum) < required)
#else
#else if (ch->CountSpecifyItem(materialInfo.material.vnum) < (materialInfo.material.count * count_item))
#endif

ver#endifu hata ekte

cuberenewal.cpp:

https://dosya.co/vkkjgrno37kj/cuberenewal.cpp.html
Bu hata “girinti” gibi görünse de asıl sebep çoğunlukla preprocessor (ifdef/else/endif) bloklarının yanlış kurulması. Şu an gönderdiğin parçada #else iki kere var#else de #else if diye bir #elsenım var; C/C++ preprocessor’da #else if diye bir şey yok, onun adı #elif.

Bir de en başta şu var: #ifdef long long
Bu da ya#ifdef#ifdef sadece “macro” kontr#ifdefr. long long bir tip, macro değil. O satır yüzünden derleyicinin kafası tamamen karışıyor, devamı da saçmalıyor.

Senin yapmak istediğin şey belli:
CUBE açıkken “material.count * count_item” çarpımı taşarsa yakala, taşmıyorsa item kontrolünü long long ile yap. CUBE kapalıysa eski kontrol kalsın.

Bunu düzgün ve derlenecek şekilde şöyle toparla (en temiz hali):

#ifdef CUBE
long long required = (long long)materialInfo.mate#ifdefount * (long long)count_item;

if (required <= 0 || required > 0x7FFFFFFFLL)
{
ch->ChatPacket(CHAT_TYPE_INFO, "Invalid material count (overflow detected).");
return;
}

if (ch->CountSpecifyItem(materialInfo.material.vnum) < required)
#else
if (ch->CountSpecifyItem(materialInfo.material.vnum) < #elserialInfo.material.count * count_item))
#endif
{
// buraya senin eksik item durumunda yaptığı#endifm neyse onu koy
// return; / continue; vs.
}

Burada kritik noktalar:

  • #ifdef long long tamamen kalktı. Çünkü yanlış.
  • #else if yerine tek bir if yapısı kullanıldı; zaten senin amacın CUBE açık/kapalı diye iki farklı if koşulu.
  • required için 0x7FFFFFFFLL yazdım, long long sabiti olduğu belli olsun diye.
  • Blok düzeni net: #ifdef → CUBE’li if, #else → CUBE’siz if, #endif → ortak süslü parantez.
Eğer hâl#ifdefinti hatası” diyors#elsenelde şu iki şeyden #endif
  1. Bu kodun üst tarafında daha önce açılmış bir { kapanmamıştır.
  2. #ifdef/#endif sayısı dosyada uyuşmuyordur. Bir yerde #ifdef açılıp #endif unutulmuştur.
#ifdef#endif
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst