Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

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 88

mertcanayhan0606

"Yarın ölecekmiş gibi yaşa."
Telefon Numarası Onaylanmış Üye
Uzman
Katılım
22 Mar 2024
Konular
55
Mesajlar
470
Çözüm
6
Online süresi
24d 18h
Reaksiyon Skoru
218
Altın Konu
0
Başarım Puanı
81
Yaş
28
MmoLira
9,181
DevLira
18
Ticaret - 0%
0   0   0

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!

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:

 

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:

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