Çözülemedi Rank sistemi yardım

Ne yazık ki bu konuda sorulara çözüm bulunmuyor. Eğer konuda yorumlar varsa hepsini inceleyebilirsiniz. Belki sizlerin sorununuzu çözmek için için ipuçları bulabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

nexus2b

MT Üye
MT Üye
Mesaj
164
Çözümler
9
Beğeni
87
Puan
349
Ticaret Puanı
0
merhaba arkadaşlar bu iki fonksiyonu birlikte çalıştırmak istiyorum anlayan yardmcı olabilrmi rica etsem

1708517492627.png


Kod:
#ifdef ENABLE_RANK_SYSTEM
    int len;
    char chatbuf[CHAT_MAX_LEN + 1];
    char rank[64];
    snprintf(rank, sizeof(rank), "|rank|%s|", ch->RankConvert(ch->GetRank()));
    len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", rank, ch->GetName(), buf);
#else
    len = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf);
#endif
#if (defined ENABLE_PREMIUM_SYSTEM && defined ENABLE_PREMIUM_PREFIX_IN_CHAT)
    if(CPremiumSystem::instance().IsPremium2(ch))
        len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", premium_prefix, ch->GetName(), buf);
    else
        len = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf);
#else
    len = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf);
#endif
 
C++:
#ifdef ENABLE_RANK_SYSTEM
    int len;
    char chatbuf[CHAT_MAX_LEN + 1];
    char rank[64];
    snprintf(rank, sizeof(rank), "|rank|%s|", ch->RankConvert(ch->GetRank()));
#if (defined ENABLE_PREMIUM_SYSTEM && defined ENABLE_PREMIUM_PREFIX_IN_CHAT)
    if(CPremiumSystem::instance().IsPremium2(ch))
        len = snprintf(chatbuf, sizeof(chatbuf), "%s %s %s : %s", premium_prefix, rank, ch->GetName(), buf);
    else
        len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", rank, ch->GetName(), buf);
#else
    len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", rank, ch->GetName(), buf);
#endif
#else
    len = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf);
#endif

Bu şekilde deneyebilirsin.
 
C++:
#ifdef ENABLE_RANK_SYSTEM
    int len;
    char chatbuf[CHAT_MAX_LEN + 1];
    char rank[64];
    snprintf(rank, sizeof(rank), "|rank|%s|", ch->RankConvert(ch->GetRank()));
#if (defined ENABLE_PREMIUM_SYSTEM && defined ENABLE_PREMIUM_PREFIX_IN_CHAT)
    if(CPremiumSystem::instance().IsPremium2(ch))
        len = snprintf(chatbuf, sizeof(chatbuf), "%s %s %s : %s", premium_prefix, rank, ch->GetName(), buf);
    else
        len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", rank, ch->GetName(), buf);
#else
    len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", rank, ch->GetName(), buf);
#endif
#else
    len = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf);
#endif

Bu şekilde deneyebilirsin.
1708520550118.png




Olmadi malesef bu şekilde görünüyor
 
Sistemlerin diğer kodlarını ve bağlamlarını bilmediğimden daha fazlasını yapamam ancak ek olarak;

Eğer attığın görseldeki TL üzerindeki siyahlık bu sistemlerden birine ait bir icon ise verdiğim kodda şu an bu satırı çalıştırıyor demektir:
C++:
len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", rank, ch->GetName(), buf);

Bu durumda iki ihtimal söz konusu;
ya if(CPremiumSystem::instance().IsPremium2(ch)) şartı sağlanmıyor, ya da ENABLE_PREMIUM_SYSTEM ve ENABLE_PREMIUM_PREFIX_IN_CHAT makrolarından biri veya her ikisi tanımlı değil.

Son olarak bu tür sistemlerin genellikle client src tarafında da benzer kodları bulunuyor (PythonChat.cpp gibi)
O kısımlarda da aynı düzenlemeleri yapmak gerekebilir. Aksi takdirde sadece server tarafında dönen değerler client tarafında boşa düşecektir.
 
Sistemlerin diğer kodlarını ve bağlamlarını bilmediğimden daha fazlasını yapamam ancak ek olarak;

Eğer attığın görseldeki TL üzerindeki siyahlık bu sistemlerden birine ait bir icon ise verdiğim kodda şu an bu satırı çalıştırıyor demektir:
C++:
len = snprintf(chatbuf, sizeof(chatbuf), "%s %s : %s", rank, ch->GetName(), buf);

Bu durumda iki ihtimal söz konusu;
ya if(CPremiumSystem::instance().IsPremium2(ch)) şartı sağlanmıyor, ya da ENABLE_PREMIUM_SYSTEM ve ENABLE_PREMIUM_PREFIX_IN_CHAT makrolarından biri veya her ikisi tanımlı değil.

Son olarak bu tür sistemlerin genellikle client src tarafında da benzer kodları bulunuyor (PythonChat.cpp gibi)
O kısımlarda da aynı düzenlemeleri yapmak gerekebilir. Aksi takdirde sadece server tarafında dönen değerler client tarafında boşa düşecektir.
yardımınız ve yorumunuz için teşşekkürler 2 sisteminde client kısımlarını ekledim normalde [PREMIUM]NAME olarak gözüküyor
yani premium sistemi çalışıyor [PREMIUM] RANK NAME olarak gözükmesini istiyorum eklediğim kısımları tekrar kontrol edicem sağolun.
 
yardımınız ve yorumunuz için teşşekkürler 2 sisteminde client kısımlarını ekledim normalde [PREMIUM]NAME olarak gözüküyor
yani premium sistemi çalışıyor [PREMIUM] RANK NAME olarak gözükmesini istiyorum eklediğim kısımları tekrar kontrol edicem sağolun.
İkonun çıkması için diyorsan ekstra olarak onun için pengerin bir eklentisi olacak onu kurman gerekiyor
 
İkonun çıkması için diyorsan ekstra olarak onun için pengerin bir eklentisi olacak onu kurman gerekiyor
evet icon gözüküyor eklediğimde ama ben [PREMIUM]
1708527798616.png
NICK olarak ayarlamak istiyorum pengerin eklentisi bununla alakalımı acaba ismini biliyormusunuz premium yazısıyla yan yana gelmiyor premium sistemi çalışmıyor iconu eklediğimde

1708529122304.png
 
Son düzenleme:
C++:
int len;
char chatbuf[CHAT_MAX_LEN + 1];
char rank[64];
char premium_prefix[PREMIUM_PREFIX_MAX_LEN + 1];

#ifdef ENABLE_RANK_SYSTEM
    snprintf(rank, sizeof(rank), "|rank|%s|", ch->RankConvert(ch->GetRank()));
#else
    rank[0] = '\0';
#endif

#ifdef ENABLE_PREMIUM_SYSTEM
    if (CPremiumSystem::instance().IsPremium2(ch)) {
        snprintf(premium_prefix, sizeof(premium_prefix), "%s", get_premium_prefix_function());
    } else {
        premium_prefix[0] = '\0';
    }
#else
    premium_prefix[0] = '\0';
#endif

#ifdef ENABLE_RANK_SYSTEM
    len = snprintf(chatbuf, sizeof(chatbuf), "%s %s%s : %s", premium_prefix, rank, ch->GetName(), buf);
#else
    len = snprintf(chatbuf, sizeof(chatbuf), "%s%s : %s", premium_prefix, ch->GetName(), buf);
#endif
 
C++:
int len;
char chatbuf[CHAT_MAX_LEN + 1];
char rank[64];
char premium_prefix[PREMIUM_PREFIX_MAX_LEN + 1];

#ifdef ENABLE_RANK_SYSTEM
    snprintf(rank, sizeof(rank), "|rank|%s|", ch->RankConvert(ch->GetRank()));
#else
    rank[0] = '\0';
#endif

#ifdef ENABLE_PREMIUM_SYSTEM
    if (CPremiumSystem::instance().IsPremium2(ch)) {
        snprintf(premium_prefix, sizeof(premium_prefix), "%s", get_premium_prefix_function());
    } else {
        premium_prefix[0] = '\0';
    }
#else
    premium_prefix[0] = '\0';
#endif

#ifdef ENABLE_RANK_SYSTEM
    len = snprintf(chatbuf, sizeof(chatbuf), "%s %s%s : %s", premium_prefix, rank, ch->GetName(), buf);
#else
    len = snprintf(chatbuf, sizeof(chatbuf), "%s%s : %s", premium_prefix, ch->GetName(), buf);
#endif
Yardımınız için çok teşekkürler build alırken böyle bir hata alıyorum

1708533663643.png
 
bunu nereye eklemem gerekiyor bilginiz varmı
input_main.cpp:795:64: error: 'get_premium_prefix_function' was not declared in this scope


795 | snprintf(premium_prefix, sizeof(premium_prefix), "%s", get_premium_prefix_function());
büyük ihtimalle char.cpp'dir ama koda sahip değilsen nasıl yapacağını söylemem mümkün değil.
 
premium prefix yerine bu şekilde kullanabilirsin

C++:
#ifdef ENABLE_PREMIUM_SYSTEM
    if (CPremiumSystem::instance().IsPremium2(ch)) {
        snprintf(premium_prefix, sizeof(premium_prefix), "%s", get_premium_prefix_function());
    } else {
        premium_prefix[0] = '\0';
    }
#else
    premium_prefix[0] = '\0';
#endif

Bununla değiştir

C++:
#ifdef ENABLE_PREMIUM_SYSTEM
if (CPremiumSystem::instance().IsPremium2(ch))  {
    char chatbuf_vip[CHAT_MAX_LEN + 1];
    int len_vip = snprintf(len_vip, sizeof(chatbuf_vip, sizeof(chatbuf_vip), "%s%s","|Eemoji/premium_user|e", chatbuf);
else
{
    int len_vip = snprintf(chatbuf_vip, sizeof(chatbuf_vip), "%s", chatbuf);
}
#endif

Ve şimdilik bu kısmı yorum satırı haline getir

C++:
#ifdef ENABLE_RANK_SYSTEM
    len = snprintf(chatbuf, sizeof(chatbuf), "%s %s%s : %s", premium_prefix, rank, ch->GetName(), buf);
#else
    len = snprintf(chatbuf, sizeof(chatbuf), "%s%s : %s", premium_prefix, ch->GetName(), buf);
#endif
 
Bu şekildede hata alıyorum tekrardan hepinize yardımlarınız için teşekkürler eklemekten vaçgectim
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst